gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r828 - GNUnet GNUnet/src/applications/advertising GNUnet/sr


From: grothoff
Subject: [GNUnet-SVN] r828 - GNUnet GNUnet/src/applications/advertising GNUnet/src/applications/datastore GNUnet/src/applications/fs/fsui GNUnet/src/applications/gap GNUnet/src/applications/transport GNUnet/src/include GNUnet/src/util gnunet-gtk gnunet-gtk/src
Date: Sun, 29 May 2005 03:48:10 -0700 (PDT)

Author: grothoff
Date: 2005-05-29 03:47:47 -0700 (Sun, 29 May 2005)
New Revision: 828

Removed:
   gnunet-gtk/src/gtk26about.c
   gnunet-gtk/src/gtk26about.h
Modified:
   GNUnet/configure.ac
   GNUnet/src/applications/advertising/advertising.c
   GNUnet/src/applications/datastore/filter.c
   GNUnet/src/applications/fs/fsui/download.c
   GNUnet/src/applications/fs/fsui/fsui.c
   GNUnet/src/applications/fs/fsui/fsui.h
   GNUnet/src/applications/fs/fsui/namespace_info.c
   GNUnet/src/applications/fs/fsui/search.c
   GNUnet/src/applications/gap/gap.c
   GNUnet/src/applications/transport/transport.c
   GNUnet/src/include/gnunet_transport_service.h
   GNUnet/src/util/configuration.c
   GNUnet/todo
   gnunet-gtk/configure.ac
   gnunet-gtk/gnunet-gtk.glade
   gnunet-gtk/src/Makefile.am
   gnunet-gtk/src/about.c
   gnunet-gtk/src/fs.c
   gnunet-gtk/todo
Log:
hacking

Modified: GNUnet/configure.ac
===================================================================
--- GNUnet/configure.ac 2005-05-28 18:20:32 UTC (rev 827)
+++ GNUnet/configure.ac 2005-05-29 10:47:47 UTC (rev 828)
@@ -52,18 +52,7 @@
 AC_SYS_LARGEFILE
 AC_FUNC_FSEEKO
 
-# check for gtk >= 2.4.0
-AC_MSG_CHECKING(for gtk)
-AM_PATH_GTK_2_0(2.4.0,without_gtk=false,without_gtk=true)
-AM_CONDITIONAL(HAVE_GTK, test x$without_gtk != xtrue)
-if test $without_gtk != true
-then
- AC_DEFINE_UNQUOTED([HAVE_GTK], 1, [We have GTK])
-else
- AC_MSG_ERROR(Cannot find GTK: Is gtk-config in path?)
-fi
 
-
 if test "$enable_shared" = "no"
 then
  AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])

Modified: GNUnet/src/applications/advertising/advertising.c
===================================================================
--- GNUnet/src/applications/advertising/advertising.c   2005-05-28 18:20:32 UTC 
(rev 827)
+++ GNUnet/src/applications/advertising/advertising.c   2005-05-29 10:47:47 UTC 
(rev 828)
@@ -428,10 +428,12 @@
  */
 static void
 broadcastHELOTransport(TransportAPI * tapi,
-                      void * unused) {
+                      const int * prob) {
   SendData sd;
   cron_t now;
-
+  
+  if (0 != randomi(*prob))
+    return; /* ignore */
 #if DEBUG_HELOEXCHANGE
   LOG(LOG_CRON,
       "Enter '%s'.\n",
@@ -474,8 +476,12 @@
  * that we exist...
  */
 static void broadcastHELO(void * unused) {
+  unsigned int i;
+
+  i = transport->forEach(NULL,
+                        NULL);
   transport->forEach(&broadcastHELOTransport,
-                    NULL);
+                    &i);
 }
 
 typedef struct {

Modified: GNUnet/src/applications/datastore/filter.c
===================================================================
--- GNUnet/src/applications/datastore/filter.c  2005-05-28 18:20:32 UTC (rev 
827)
+++ GNUnet/src/applications/datastore/filter.c  2005-05-29 10:47:47 UTC (rev 
828)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2001, 2002, 2003, 2004 Christian Grothoff (and other contributing 
authors)
+     (C) 2001, 2002, 2003, 2004, 2005 Christian Grothoff (and other 
contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -63,7 +63,7 @@
   quota = getConfigurationInt("FS",
                              "QUOTA") * 1024;
 
-  bf_size = quota/8; /* 8 bit per entry, 1 bit per kb in DB */
+  bf_size = quota/8/32; /* 8 bit per entry, 1 bit per 32 kb in DB */
   filter
     = loadBloomfilter(bf,
                      bf_size,

Modified: GNUnet/src/applications/fs/fsui/download.c
===================================================================
--- GNUnet/src/applications/fs/fsui/download.c  2005-05-28 18:20:32 UTC (rev 
827)
+++ GNUnet/src/applications/fs/fsui/download.c  2005-05-29 10:47:47 UTC (rev 
828)
@@ -38,7 +38,7 @@
  *  if the disk does not have enough space).
  */
 static int startDownload(struct FSUI_Context * ctx,
-                        unsigned int anonymityLevel,                   
+                        unsigned int anonymityLevel,
                         const struct ECRS_URI * uri,
                         const char * filename,
                         int is_recursive,
@@ -166,7 +166,7 @@
 /**
  * Thread that downloads a file.
  */
-static void * downloadThread(FSUI_DownloadList * dl) {
+void * downloadThread(FSUI_DownloadList * dl) {
   int ret;
   FSUI_Event event;
   unsigned long long totalBytes;

Modified: GNUnet/src/applications/fs/fsui/fsui.c
===================================================================
--- GNUnet/src/applications/fs/fsui/fsui.c      2005-05-28 18:20:32 UTC (rev 
827)
+++ GNUnet/src/applications/fs/fsui/fsui.c      2005-05-29 10:47:47 UTC (rev 
828)
@@ -117,8 +117,12 @@
   ret->subDownloadsNext = readDownloadList(fd,
                                           ctx);
 
-  /* FIXME: start download thread! */
-  // PTHREAD_CREATE(&ret->handle);
+  /* start download thread! */
+  if (0 != PTHREAD_CREATE(&ret->handle,
+                         (PThreadMain)&downloadThread,
+                         ret,
+                         16 * 1024))
+    DIE_STRERROR("pthread_create");
   return ret;
  ERROR:
   FREE(ret);
@@ -168,7 +172,6 @@
   }
   WRITE(fd, &nonzero, sizeof(char));
 
-  /* FIXME: write rest of list */  
   WRITEINT(fd, list->is_recursive);
   WRITEINT(fd, list->is_directory);
   WRITEINT(fd, list->anonymityLevel);
@@ -277,11 +280,12 @@
 
   ret = MALLOC(sizeof(FSUI_Context));
   memset(ret, 0, sizeof(FSUI_Context));
-  fn = getConfigurationString("",
-                             "GNUNET_HOME");
-  gh = expandFileName(fn);
-  FREE(fn);
-  fn = MALLOC(strlen(gh) + strlen(name) + 2);
+  gh = getFileName("",
+                  "GNUNET_HOME",
+                  "You must specify a directory for "
+                  "user-data under '%s%s' at the beginning"
+                  " of the configuration file.\n");
+  fn = MALLOC(strlen(gh) + strlen(name) + 2 + 5);
   strcpy(fn, gh);
   FREE(gh);
   strcat(fn, DIR_SEPARATOR_STR);
@@ -296,7 +300,10 @@
     IPC_SEMAPHORE_DOWN(ret->ipc);
     LOG(LOG_INFO,
        "Aquired IPC lock.\n");
-    fd = fileopen(fn, O_RDONLY);
+    fd = -1;
+    strcat(fn, ".res");
+    if (0 == ACCESS(fn, R_OK))
+      fd = fileopen(fn, O_RDONLY);
     if (fd != -1) {
       char magic[8];
       unsigned int big;
@@ -456,16 +463,19 @@
          = NO;
        list->ctx
          = ret;
-       /* FIXME: start search threads! */
-       // PTHREAD_CREATE(&list->handle);
-
+       /* start search thread! */
+       if (0 != PTHREAD_CREATE(&list->handle,
+                               (PThreadMain)&searchThread,
+                               list,
+                               16 * 1024))
+         DIE_STRERROR("pthread_create");
        
        /* finally: prepend to list */
        list->next 
          = ret->activeSearches;
        ret->activeSearches
          = list;
-      }
+      } 
       ret->activeDownloads
        = readDownloadList(fd,
                           ret);
@@ -502,6 +512,11 @@
     END:
       CLOSE(fd);
       UNLINK(fn);
+    } else {
+      if (errno != ENOENT) 
+       LOG_FILE_STRERROR(LOG_ERROR,
+                         "open",
+                         fn);
     }
   } else
     ret->ipc = NULL;
@@ -561,13 +576,14 @@
     fd = fileopen(ctx->name, 
                  O_CREAT|O_TRUNC|O_WRONLY, 
                  S_IRUSR|S_IWUSR);
-    WRITE(fd, 
-         "FSUI00\n\0",
-         8); /* magic */
     if (fd == -1) {
       LOG_FILE_STRERROR(LOG_ERROR,
                        "open",
                        ctx->name);
+    } else {
+      WRITE(fd, 
+           "FSUI00\n\0",
+           8); /* magic */
     }
   } else {
     fd = -1;
@@ -633,12 +649,6 @@
              sizeof(HashCode512) * rp->matchingKeyCount);
       }
     }
-    if (fd != -1) {
-      big = htonl(strlen(0));     
-      WRITE(fd,
-           &big,
-           sizeof(unsigned int));
-    }
 
     ECRS_freeUri(spos->uri);
     for (i=spos->sizeResultsReceived-1;i>=0;i--) {
@@ -667,6 +677,11 @@
   }
 
   if (fd != -1) {
+    /* search list terminator */
+    big = htonl(0);     
+    WRITE(fd,
+         &big,
+         sizeof(unsigned int));
     writeDownloadList(fd,
                      ctx->activeDownloads);
   }

Modified: GNUnet/src/applications/fs/fsui/fsui.h
===================================================================
--- GNUnet/src/applications/fs/fsui/fsui.h      2005-05-28 18:20:32 UTC (rev 
827)
+++ GNUnet/src/applications/fs/fsui/fsui.h      2005-05-29 10:47:47 UTC (rev 
828)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2001, 2002, 2003, 2004 Christian Grothoff (and other contributing 
authors)
+     (C) 2001, 2002, 2003, 2004, 2005 Christian Grothoff (and other 
contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -273,5 +273,16 @@
 void cleanupFSUIThreadList(FSUI_Context * ctx);
 
 
+/* from download.c */
+/**
+ * Thread that downloads a file.
+ */
+void * downloadThread(FSUI_DownloadList * dl);
 
+/* from search.c */
+/**
+ * Thread that searches for data.
+ */
+void * searchThread(FSUI_SearchList * pos);
+
 #endif

Modified: GNUnet/src/applications/fs/fsui/namespace_info.c
===================================================================
--- GNUnet/src/applications/fs/fsui/namespace_info.c    2005-05-28 18:20:32 UTC 
(rev 827)
+++ GNUnet/src/applications/fs/fsui/namespace_info.c    2005-05-29 10:47:47 UTC 
(rev 828)
@@ -42,7 +42,7 @@
   char * fn;
   char * fnBase;
 
-  fn = getConfigurationString(NULL, "GNUNET_HOME");
+  fn = getConfigurationString("", "GNUNET_HOME");
   fnBase = expandFileName(fn);
   FREE(fn);
   fn = MALLOC(strlen(fnBase) +
@@ -83,7 +83,7 @@
   char * fnBase;
 
   *meta = NULL;
-  fn = getConfigurationString(NULL, "GNUNET_HOME");
+  fn = getConfigurationString("", "GNUNET_HOME");
   fnBase = expandFileName(fn);
   FREE(fn);
   fn = MALLOC(strlen(fnBase) +
@@ -93,6 +93,7 @@
   strcpy(fn, fnBase);
   strcat(fn, DIR_SEPARATOR_STR);
   strcat(fn, NS_DIR);
+  mkdirp(fn);
   strcat(fn, DIR_SEPARATOR_STR);
   strcat(fn, namespaceName);
   FREE(fnBase);
@@ -160,7 +161,9 @@
                             meta,
                             anonymityLevel,
                             getConfigurationInt("FS", "INSERT-PRIORITY"),
-                            getConfigurationInt("FS", "INSERT-EXPIRATION") * 
cronYEARS + cronTime(NULL),
+                            getConfigurationInt("FS", 
+                                                "INSERT-EXPIRATION") 
+                            * cronYEARS + cronTime(NULL),
                             advertisementURI,
                             rootEntry,
                             root);
@@ -292,7 +295,7 @@
     char * fn;
     char * fnBase;
 
-    fn = getConfigurationString(NULL, "GNUNET_HOME");
+    fn = getConfigurationString("", "GNUNET_HOME");
     fnBase = expandFileName(fn);
     FREE(fn);
     fn = MALLOC(strlen(fnBase) +
@@ -301,7 +304,7 @@
     strcpy(fn, fnBase);
     strcat(fn, DIR_SEPARATOR_STR);
     strcat(fn, NS_DIR);
-
+    mkdirp(fn);
     scanDirectory(fn,
                  &listNamespaceHelper,
                  &cls);
@@ -320,7 +323,7 @@
   char * tmp;
   char * ret;
 
-  ret = getConfigurationString(NULL, "GNUNET_HOME");
+  ret = getConfigurationString("", "GNUNET_HOME");
   tmp = expandFileName(ret);
   FREE(ret);
   ret = MALLOC(strlen(tmp) + strlen(NS_UPDATE_DIR) +
@@ -536,7 +539,8 @@
        }
        if (creationTime > cronTime(NULL) + 7 * cronDAYS) {
          LOG(LOG_WARNING,
-             _("Publishing update for periodically updated content more than a 
week ahead of schedule.\n"));
+             _("Publishing update for periodically updated "
+               "content more than a week ahead of schedule.\n"));
        }
        if (thisId != NULL)
          tid = *thisId; /* allow override! */
@@ -582,7 +586,9 @@
   ret = ECRS_addToNamespace(name,
                            anonymityLevel,
                            getConfigurationInt("FS", "INSERT-PRIORITY"),
-                           getConfigurationInt("FS", "INSERT-EXPIRATION") * 
cronYEARS + cronTime(NULL),
+                           getConfigurationInt("FS", 
+                                               "INSERT-EXPIRATION") 
+                           * cronYEARS + cronTime(NULL),
                            creationTime,
                            updateInterval,
                            &tid,
@@ -680,6 +686,7 @@
   cls.cnt = 0;
   dirName = getUpdateDataFilename(name,
                                  NULL);
+  mkdirp(dirName);
   scanDirectory(dirName,
                (DirectoryEntryCallback)&lNCHelper,
                &cls);

Modified: GNUnet/src/applications/fs/fsui/search.c
===================================================================
--- GNUnet/src/applications/fs/fsui/search.c    2005-05-28 18:20:32 UTC (rev 
827)
+++ GNUnet/src/applications/fs/fsui/search.c    2005-05-29 10:47:47 UTC (rev 
828)
@@ -133,7 +133,10 @@
     return SYSERR;
 }
 
-static void * searchThread(FSUI_SearchList * pos) {
+/**
+ * Thread that searches for data.
+ */
+void * searchThread(FSUI_SearchList * pos) {
   ECRS_search(pos->uri,
              pos->anonymityLevel,
              cronTime(NULL) + cronYEARS, /* timeout!?*/

Modified: GNUnet/src/applications/gap/gap.c
===================================================================
--- GNUnet/src/applications/gap/gap.c   2005-05-28 18:20:32 UTC (rev 827)
+++ GNUnet/src/applications/gap/gap.c   2005-05-29 10:47:47 UTC (rev 828)
@@ -248,19 +248,26 @@
   unsigned int sendCount;
 
   /**
+   * How many nodes were connected when we initated sending this
+   * query?
+   */
+  unsigned int activeConnections;
+
+  /**
+   * What is the total distance of the query to the connected nodes?
+   */
+  unsigned long long totalDistance;
+
+  /**
    * The message that we are sending.
    */
   GAP_QUERY * msg;
 
   /**
-   * Bit-map marking the hostIndices (computeIndex) of nodes that have
-   * received this query already.  Note that the bit-map has a maximum
-   * size, if the index is out-of-bounds, it is hashed into the
-   * smaller size of the bitmap. There may thus be nodes with
-   * identical indices, in that case, only one of the nodes will
-   * receive the query.
+   * How important would it be to send the message to all peers in
+   * this bucket?
    */
-  unsigned char bitmap[BITMAP_SIZE];
+  int * rankings;
 
   /**
    * When do we stop forwarding (!) this query?
@@ -268,37 +275,32 @@
   cron_t expires;
 
   /**
-   * How many nodes were connected when we initated sending this
-   * query?
+   * To which peer will we never send this message?
    */
-  unsigned int activeConnections;
+  PeerIdentity noTarget;
 
   /**
-   * What is the total distance of the query to the connected nodes?
+   * Bit-map marking the hostIndices (computeIndex) of nodes that have
+   * received this query already.  Note that the bit-map has a maximum
+   * size, if the index is out-of-bounds, it is hashed into the
+   * smaller size of the bitmap. There may thus be nodes with
+   * identical indices, in that case, only one of the nodes will
+   * receive the query.
    */
-  unsigned long long totalDistance;
+  unsigned char bitmap[BITMAP_SIZE];
 
   /**
    * To how many peers has / will this query be transmitted?
    */
   unsigned int transmissionCount;
 
-  /**
-   * To which peer will we never send this message?
-   */
-  PeerIdentity noTarget;
-
-  /**
-   * How important would it be to send the message to all peers in
-   * this bucket?
-   */
-  int * rankings;
-
 } QueryRecord;
 
 /**
  * Indirection table entry. Lists what we're looking for,
  * where to forward it, and how long to keep looking for it.
+ * Keep this struct as small as possible -- an array of these
+ * takes 80% of GNUnet's memory.
  */
 typedef struct {
   /**
@@ -312,11 +314,6 @@
   unsigned int type;
 
   /**
-   * When can we forget about this entry?
-   */
-  cron_t ttl;
-
-  /**
    * How much is this query worth to us, that is, how much would
    * this node be willing to "pay" for an answer that matches the
    * hash stored in this ITE? (This is NOT the inbound priority,
@@ -325,6 +322,11 @@
   unsigned int priority;
 
   /**
+   * When can we forget about this entry?
+   */
+  cron_t ttl;
+
+  /**
    * Which replies have we already seen?
    */
   unsigned int seenIndex;
@@ -337,17 +339,17 @@
   HashCode512 * seen;
 
   /**
+   * Who are these hosts?
+   */
+  PeerIdentity * destination;
+
+  /**
    * How many hosts are waiting for an answer to this query (length of
    * destination array)
    */
   unsigned int hostsWaiting;
 
   /**
-   * Who are these hosts?
-   */
-  PeerIdentity * destination;
-
-  /**
    * Do we currently have a response in the delay loop (delays are
    * introduced to make traffic analysis harder and thus enable
    * anonymity)?  This marker is set to avoid looking up content again
@@ -372,9 +374,9 @@
  * Linked list of peer ids with number of replies received.
  */
 typedef struct RL_ {
+  struct RL_ * next;
   PeerIdentity responder;
   unsigned int responseCount;
-  struct RL_ * next;
 } ResponseList;
 
 /**
@@ -382,17 +384,16 @@
  * which clients / other peers.
  */
 typedef struct RTD_ {
+
   /**
-   * For which client does this entry track replies?
+   * This is a linked list.
    */
-  PeerIdentity queryOrigin;
+  struct RTD_ * next;
 
   /**
-   * Time at which we received the last reply
-   * for this client.  Used to discard old entries
-   * eventually.
+   * For which client does this entry track replies?
    */
-  TIME_T lastReplyReceived;
+  PeerIdentity queryOrigin;
 
   /**
    * Linked list of peers that responded, with
@@ -401,9 +402,11 @@
   ResponseList * responseList;
 
   /**
-   * This is a linked list.
+   * Time at which we received the last reply
+   * for this client.  Used to discard old entries
+   * eventually.
    */
-  struct RTD_ * next;
+  TIME_T lastReplyReceived;
 } ReplyTrackData;
 
 /**

Modified: GNUnet/src/applications/transport/transport.c
===================================================================
--- GNUnet/src/applications/transport/transport.c       2005-05-28 18:20:32 UTC 
(rev 827)
+++ GNUnet/src/applications/transport/transport.c       2005-05-29 10:47:47 UTC 
(rev 828)
@@ -144,13 +144,20 @@
  * @param callback the method to call on each transport API implementation
  * @param data second argument to callback
  */
-static void forEachTransport(TransportCallback callback,
+static int forEachTransport(TransportCallback callback,
                             void * data) {
   int i;
+  int ret;
 
-  for (i=0;i<tapis_count;i++)
-    if (tapis[i] != NULL)
-      callback(tapis[i], data);
+  ret = 0;
+  for (i=0;i<tapis_count;i++) {
+    if (tapis[i] != NULL) {
+      ret++;
+      if (callback != NULL)
+       callback(tapis[i], data);
+    }
+  }
+  return ret;
 }
 
 /**

Modified: GNUnet/src/include/gnunet_transport_service.h
===================================================================
--- GNUnet/src/include/gnunet_transport_service.h       2005-05-28 18:20:32 UTC 
(rev 827)
+++ GNUnet/src/include/gnunet_transport_service.h       2005-05-29 10:47:47 UTC 
(rev 828)
@@ -66,8 +66,9 @@
    * Iterate over all available transport mechanisms.
    * @param callback the method to call on each transport API implementation
    * @param data second argument to callback
+   * @return number of transports, SYSERR on error
    */
-  void (*forEach)(TransportCallback callback,
+  int (*forEach)(TransportCallback callback,
                  void * data);
 
   /**

Modified: GNUnet/src/util/configuration.c
===================================================================
--- GNUnet/src/util/configuration.c     2005-05-28 18:20:32 UTC (rev 827)
+++ GNUnet/src/util/configuration.c     2005-05-29 10:47:47 UTC (rev 828)
@@ -594,6 +594,8 @@
   UserConf * pos;
   char * retval;
 
+  if ( !(section != NULL) && (option != NULL) )
+    BREAK();
   GNUNET_ASSERT( (section != NULL) && (option != NULL) );
   MUTEX_LOCK(&configLock);
   pos = userconfig;

Modified: GNUnet/todo
===================================================================
--- GNUnet/todo 2005-05-28 18:20:32 UTC (rev 827)
+++ GNUnet/todo 2005-05-29 10:47:47 UTC (rev 828)
@@ -1,12 +1,10 @@
 0.7.0 [6'05?] (aka "compatibility? what's that?"):
 - Missing Features:
-  * resolve "FIXME 0.7"
+  * resolve "FIXME 0.7": only sqlite magic factor missing!
   * fsui core (persistence) [ difficult ]
-    - some error handling
-    - actual starting of download/search threads
+    - testing and debugging!
   * #593 (gnunet-setup): php-ification for i18n, curses wizard; 
-    template path adjustment for non gconf setup
-  * #770? (use freedback (LOG) in gnunet-gtk via show-messages)
+    template path adjustment for non gconf setup [ Nils ]
 - Additional (automated, make check-style) testing:
   * gnunet-tracekit
   * gap and economy

Modified: gnunet-gtk/configure.ac
===================================================================
--- gnunet-gtk/configure.ac     2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/configure.ac     2005-05-29 10:47:47 UTC (rev 828)
@@ -44,9 +44,9 @@
 AC_SYS_LARGEFILE
 AC_FUNC_FSEEKO
 
-# check for gtk >= 2.4.0
+# check for gtk >= 2.6.0
 AC_MSG_CHECKING(for gtk)
-AM_PATH_GTK_2_0(2.4.0,without_gtk=false,without_gtk=true)
+AM_PATH_GTK_2_0(2.6.0,without_gtk=false,without_gtk=true)
 AM_CONDITIONAL(HAVE_GTK, test x$without_gtk != xtrue)
 if test $without_gtk != true
 then

Modified: gnunet-gtk/gnunet-gtk.glade
===================================================================
--- gnunet-gtk/gnunet-gtk.glade 2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/gnunet-gtk.glade 2005-05-29 10:47:47 UTC (rev 828)
@@ -17,6 +17,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <signal name="delete_event" handler="gtk_main_quit" after="yes"/>
 
   <child>
@@ -26,48 +27,6 @@
       <property name="spacing">0</property>
 
       <child>
-       <widget class="GtkMenuBar" id="main_app_menubar">
-         <property name="visible">True</property>
-
-         <child>
-           <widget class="GtkImageMenuItem" id="quit1">
-             <property name="visible">True</property>
-             <property name="label">gtk-quit</property>
-             <property name="use_stock">True</property>
-             <signal name="activate" handler="gtk_main_quit"/>
-           </widget>
-         </child>
-
-         <child>
-           <widget class="GtkImageMenuItem" id="help1">
-             <property name="visible">True</property>
-             <property name="label">gtk-help</property>
-             <property name="use_stock">True</property>
-
-             <child>
-               <widget class="GtkMenu" id="help1_menu">
-
-                 <child>
-                   <widget class="GtkImageMenuItem" id="about">
-                     <property name="visible">True</property>
-                     <property name="label">gtk-about</property>
-                     <property name="use_stock">True</property>
-                     <signal name="activate" handler="on_about_clicked"/>
-                   </widget>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-         </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">False</property>
-         <property name="fill">False</property>
-       </packing>
-      </child>
-
-      <child>
        <widget class="GtkNotebook" id="mainnotebook">
          <property name="visible">True</property>
          <property name="can_focus">True</property>
@@ -92,9 +51,72 @@
                  <property name="shadow_type">GTK_SHADOW_IN</property>
 
                  <child>
-                   <widget class="GtkLabel" id="label75">
+                   <widget class="GtkVBox" id="vbox14">
                      <property name="visible">True</property>
-                     <property name="label" translatable="yes">&lt;span 
size=&quot;x-large&quot;&gt;Welcome to gnunet-gtk 0.7.0&lt;/span&gt;
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkHBox" id="hbox24">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">0</property>
+
+                         <child>
+                           <widget class="GtkButton" id="aboutButton">
+                             <property name="visible">True</property>
+                             <property name="tooltip" translatable="yes">Show 
credits</property>
+                             <property name="can_focus">True</property>
+                             <property name="has_focus">True</property>
+                             <property name="label">gtk-about</property>
+                             <property name="use_stock">True</property>
+                             <property 
name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="focus_on_click">True</property>
+                             <signal name="clicked" handler="on_about_clicked" 
last_modification_time="Sat, 28 May 2005 14:28:13 GMT"/>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="titleLabel">
+                             <property name="visible">True</property>
+                             <property name="label" 
translatable="yes">&lt;span size=&quot;x-large&quot;&gt;Welcome to gnunet-gtk 
0.7.0&lt;/span&gt;</property>
+                             <property name="use_underline">False</property>
+                             <property name="use_markup">True</property>
+                             <property 
name="justify">GTK_JUSTIFY_CENTER</property>
+                             <property name="wrap">False</property>
+                             <property name="selectable">False</property>
+                             <property name="xalign">0.5</property>
+                             <property name="yalign">0.5</property>
+                             <property name="xpad">5</property>
+                             <property name="ypad">0</property>
+                             <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">True</property>
+                             <property name="angle">0</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">True</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+                       </widget>
+                       <packing>
+                         <property name="padding">0</property>
+                         <property name="expand">False</property>
+                         <property name="fill">False</property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="label75">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">
                                                                        
 gnunet-gtk is the GTK+ user interface for GNUnet. It is intended to eventually 
provide a universal, pluggable interface for all GNUnet services.
 
@@ -119,15 +141,26 @@
 
 
     The GNUnet Team</property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">True</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">True</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">0.5</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">0</property>
-                     <property name="ypad">0</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">True</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">True</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="padding">0</property>
+                         <property name="expand">False</property>
+                         <property name="fill">False</property>
+                       </packing>
+                     </child>
                    </widget>
                  </child>
                </widget>
@@ -152,9 +185,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
-             <accessibility>
-               <atkproperty name="AtkObject::accessible_name" 
translatable="yes">Splash Screen</atkproperty>
-             </accessibility>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">tab</property>
@@ -262,6 +296,10 @@
                                                      <property 
name="yalign">0.5</property>
                                                      <property 
name="xpad">0</property>
                                                      <property 
name="ypad">0</property>
+                                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                                     <property 
name="width_chars">-1</property>
+                                                     <property 
name="single_line_mode">False</property>
+                                                     <property 
name="angle">0</property>
                                                    </widget>
                                                    <packing>
                                                      <property 
name="padding">0</property>
@@ -338,6 +376,10 @@
                                                      <property 
name="yalign">0.5</property>
                                                      <property 
name="xpad">0</property>
                                                      <property 
name="ypad">0</property>
+                                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                                     <property 
name="width_chars">-1</property>
+                                                     <property 
name="single_line_mode">False</property>
+                                                     <property 
name="angle">0</property>
                                                    </widget>
                                                    <packing>
                                                      <property 
name="padding">0</property>
@@ -366,10 +408,6 @@
                                          <property name="yalign">0.5</property>
                                          <property name="xpad">0</property>
                                          <property name="ypad">0</property>
-                                         <accessibility>
-                                           <atkproperty 
name="AtkObject::accessible_name" translatable="yes">status</atkproperty>
-                                           <atkproperty 
name="AtkObject::accessible_description" translatable="yes">gnunetd status: not 
running</atkproperty>
-                                         </accessibility>
                                        </widget>
                                        <packing>
                                          <property name="padding">0</property>
@@ -388,10 +426,6 @@
                                          <property name="yalign">0.5</property>
                                          <property name="xpad">0</property>
                                          <property name="ypad">0</property>
-                                         <accessibility>
-                                           <atkproperty 
name="AtkObject::accessible_name" translatable="yes">status</atkproperty>
-                                           <atkproperty 
name="AtkObject::accessible_description" translatable="yes">gnunetd status: 
running</atkproperty>
-                                         </accessibility>
                                        </widget>
                                        <packing>
                                          <property name="padding">0</property>
@@ -415,6 +449,10 @@
                                      <property name="yalign">0.5</property>
                                      <property name="xpad">0</property>
                                      <property name="ypad">0</property>
+                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                     <property name="width_chars">-1</property>
+                                     <property 
name="single_line_mode">False</property>
+                                     <property name="angle">0</property>
                                    </widget>
                                    <packing>
                                      <property 
name="type">label_item</property>
@@ -430,7 +468,6 @@
 
                              <child>
                                <widget class="GtkFrame" id="frame2">
-                                 <property name="visible">True</property>
                                  <property name="label_xalign">0</property>
                                  <property name="label_yalign">0.5</property>
                                  <property 
name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
@@ -449,6 +486,10 @@
                                      <property name="yalign">0.5</property>
                                      <property name="xpad">0</property>
                                      <property name="ypad">0</property>
+                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                     <property name="width_chars">-1</property>
+                                     <property 
name="single_line_mode">False</property>
+                                     <property name="angle">0</property>
                                    </widget>
                                  </child>
 
@@ -465,6 +506,10 @@
                                      <property name="yalign">0.5</property>
                                      <property name="xpad">0</property>
                                      <property name="ypad">0</property>
+                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                     <property name="width_chars">-1</property>
+                                     <property 
name="single_line_mode">False</property>
+                                     <property name="angle">0</property>
                                    </widget>
                                    <packing>
                                      <property 
name="type">label_item</property>
@@ -480,7 +525,6 @@
 
                              <child>
                                <widget class="GtkFrame" id="frame1">
-                                 <property name="visible">True</property>
                                  <property name="label_xalign">0</property>
                                  <property name="label_yalign">0.5</property>
                                  <property 
name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
@@ -502,6 +546,9 @@
                                          <property 
name="rules_hint">False</property>
                                          <property 
name="reorderable">False</property>
                                          <property 
name="enable_search">True</property>
+                                         <property 
name="fixed_height_mode">True</property>
+                                         <property 
name="hover_selection">False</property>
+                                         <property 
name="hover_expand">False</property>
                                        </widget>
                                      </child>
                                    </widget>
@@ -520,6 +567,10 @@
                                      <property name="yalign">0.5</property>
                                      <property name="xpad">0</property>
                                      <property name="ypad">0</property>
+                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                     <property name="width_chars">-1</property>
+                                     <property 
name="single_line_mode">False</property>
+                                     <property name="angle">0</property>
                                    </widget>
                                    <packing>
                                      <property 
name="type">label_item</property>
@@ -560,6 +611,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">tab</property>
@@ -573,7 +628,7 @@
              <property name="show_tabs">True</property>
              <property name="show_border">True</property>
              <property name="tab_pos">GTK_POS_TOP</property>
-             <property name="scrollable">False</property>
+             <property name="scrollable">True</property>
              <property name="enable_popup">False</property>
 
              <child>
@@ -598,7 +653,7 @@
                          <property 
name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
                          <child>
-                           <widget class="GtkTreeView" id="clist7">
+                           <widget class="GtkTreeView" 
id="activeSearchesSummary">
                              <property agent="glademm" 
name="cxx_visibility">public</property>
                              <property name="visible">True</property>
                              <property name="can_focus">True</property>
@@ -606,6 +661,9 @@
                              <property name="rules_hint">False</property>
                              <property name="reorderable">False</property>
                              <property name="enable_search">True</property>
+                             <property 
name="fixed_height_mode">False</property>
+                             <property name="hover_selection">False</property>
+                             <property name="hover_expand">False</property>
                            </widget>
                          </child>
                        </widget>
@@ -614,7 +672,7 @@
                      <child>
                        <widget class="GtkLabel" id="label16">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">Search 
Results</property>
+                         <property name="label" translatable="yes">Search 
Overview</property>
                          <property name="use_underline">False</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -624,6 +682,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="type">label_item</property>
@@ -653,7 +715,7 @@
                          <property 
name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
                          <child>
-                           <widget class="GtkTreeView" id="clist5">
+                           <widget class="GtkTreeView" 
id="activeDownloadsList">
                              <property agent="glademm" 
name="cxx_visibility">public</property>
                              <property name="visible">True</property>
                              <property name="can_focus">True</property>
@@ -661,6 +723,9 @@
                              <property name="rules_hint">False</property>
                              <property name="reorderable">False</property>
                              <property name="enable_search">True</property>
+                             <property 
name="fixed_height_mode">False</property>
+                             <property name="hover_selection">False</property>
+                             <property name="hover_expand">False</property>
                            </widget>
                          </child>
                        </widget>
@@ -679,6 +744,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="type">label_item</property>
@@ -708,7 +777,7 @@
                          <property 
name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
                          <child>
-                           <widget class="GtkTreeView" id="clist6">
+                           <widget class="GtkTreeView" id="activeUploadsList">
                              <property agent="glademm" 
name="cxx_visibility">public</property>
                              <property name="visible">True</property>
                              <property name="can_focus">True</property>
@@ -716,6 +785,9 @@
                              <property name="rules_hint">False</property>
                              <property name="reorderable">False</property>
                              <property name="enable_search">True</property>
+                             <property 
name="fixed_height_mode">False</property>
+                             <property name="hover_selection">False</property>
+                             <property name="hover_expand">False</property>
                            </widget>
                          </child>
                        </widget>
@@ -734,6 +806,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="type">label_item</property>
@@ -755,7 +831,6 @@
 
              <child>
                <widget class="GtkLabel" id="statusfstab">
-                 <property name="visible">True</property>
                  <property name="label" translatable="yes">S_tatus</property>
                  <property name="use_underline">True</property>
                  <property name="use_markup">False</property>
@@ -766,6 +841,10 @@
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="type">tab</property>
@@ -779,18 +858,15 @@
                  <property name="spacing">0</property>
 
                  <child>
-                   <widget class="GtkNotebook" id="downloadNotebook">
-                     <property agent="glademm" 
name="cxx_visibility">public</property>
-                     <property name="can_focus">True</property>
-                     <property name="show_tabs">True</property>
-                     <property name="show_border">True</property>
-                     <property name="tab_pos">GTK_POS_TOP</property>
-                     <property name="scrollable">False</property>
-                     <property name="enable_popup">False</property>
+                   <widget class="GtkHBox" id="fssearchhbox">
+                     <property name="visible">True</property>
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">0</property>
 
                      <child>
-                       <widget class="GtkLabel" id="label61">
-                         <property name="label" 
translatable="yes">label61</property>
+                       <widget class="GtkLabel" id="searchkeywordlabel">
+                         <property name="visible">True</property>
+                         <property name="label" 
translatable="yes">Keyword:</property>
                          <property name="use_underline">False</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -798,102 +874,31 @@
                          <property name="selectable">False</property>
                          <property name="xalign">0.5</property>
                          <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
+                         <property name="xpad">5</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
-                         <property name="tab_expand">False</property>
-                         <property name="tab_fill">True</property>
+                         <property name="padding">0</property>
+                         <property name="expand">False</property>
+                         <property name="fill">False</property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="GtkLabel" id="label36">
-                         <property name="label" 
translatable="yes">label36</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">False</property>
-                         <property name="justify">GTK_JUSTIFY_CENTER</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">tab</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">True</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="fssearchhbox">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">0</property>
-
-                     <child>
-                       <widget class="GtkCombo" id="fsSearchStringInputLine">
+                       <widget class="GtkComboBoxEntry" 
id="fssearchKeywordComboBoxEntry">
+                         <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
-                         <property name="value_in_list">False</property>
-                         <property name="allow_empty">True</property>
-                         <property name="case_sensitive">False</property>
-                         <property name="enable_arrow_keys">True</property>
-                         <property name="enable_arrows_always">False</property>
-                         <accessibility>
-                           <atkproperty 
name="AtkObject::accessible_description" translatable="yes">Enter the keywords 
to search for in this line.</atkproperty>
-                         </accessibility>
-
-                         <child internal-child="entry">
-                           <widget class="GtkEntry" id="searchKeywordGtkEntry">
-                             <property agent="glademm" 
name="cxx_visibility">public</property>
-                             <property name="visible">True</property>
-                             <property name="can_focus">True</property>
-                             <property name="editable">True</property>
-                             <property name="visibility">True</property>
-                             <property name="max_length">0</property>
-                             <property name="text" 
translatable="yes"></property>
-                             <property name="has_frame">True</property>
-                             <property name="invisible_char">*</property>
-                             <property 
name="activates_default">False</property>
-                             <accelerator key="Return" modifiers="0" 
signal="activate"/>
-                           </widget>
-                         </child>
-
-                         <child internal-child="list">
-                           <widget class="GtkList" id="convertwidget13">
-                             <property name="visible">True</property>
-                             <property 
name="selection_mode">GTK_SELECTION_BROWSE</property>
-
-                             <child>
-                               <widget class="GtkListItem" 
id="convertwidget14">
-                                 <property name="visible">True</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" 
id="convertwidget15">
-                                     <property name="visible">True</property>
-                                     <property name="label" 
translatable="yes"></property>
-                                     <property 
name="use_underline">False</property>
-                                     <property 
name="use_markup">False</property>
-                                     <property 
name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property 
name="selectable">False</property>
-                                     <property name="xalign">0</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                   </widget>
-                                 </child>
-                               </widget>
-                             </child>
-                           </widget>
-                         </child>
+                         <property name="can_default">True</property>
+                         <property name="has_default">True</property>
+                         <property name="can_focus">True</property>
+                         <property name="has_focus">True</property>
+                         <property name="add_tearoffs">False</property>
+                         <property name="has_frame">True</property>
+                         <property name="focus_on_click">True</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -905,10 +910,11 @@
                      <child>
                        <widget class="GtkButton" id="fssearchbutton">
                          <property name="visible">True</property>
+                         <property name="tooltip" translatable="yes">Search 
GNUnet</property>
                          <property name="can_focus">True</property>
                          <property name="relief">GTK_RELIEF_NORMAL</property>
                          <property name="focus_on_click">True</property>
-                         <signal name="clicked" 
handler="on_fssearchbutton_clicked" object="fssearchhbox" 
last_modification_time="Mon, 23 May 2005 19:06:23 GMT"/>
+                         <signal name="clicked" 
handler="on_fssearchbutton_clicked" last_modification_time="Mon, 23 May 2005 
19:06:23 GMT"/>
                          <accelerator key="Return" modifiers="0" 
signal="activate"/>
 
                          <child>
@@ -959,6 +965,10 @@
                                      <property name="yalign">0.5</property>
                                      <property name="xpad">0</property>
                                      <property name="ypad">0</property>
+                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                     <property name="width_chars">-1</property>
+                                     <property 
name="single_line_mode">False</property>
+                                     <property name="angle">0</property>
                                    </widget>
                                    <packing>
                                      <property name="padding">0</property>
@@ -991,6 +1001,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">8</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -1003,11 +1017,14 @@
                        <widget class="GtkComboBoxEntry" 
id="searchNamespaceComboBoxEntry">
                          <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
+                         <property name="add_tearoffs">False</property>
+                         <property name="has_frame">True</property>
+                         <property name="focus_on_click">True</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="expand">True</property>
+                         <property name="fill">True</property>
                        </packing>
                      </child>
                    </widget>
@@ -1017,6 +1034,68 @@
                      <property name="fill">False</property>
                    </packing>
                  </child>
+
+                 <child>
+                   <widget class="GtkNotebook" id="downloadNotebook">
+                     <property agent="glademm" 
name="cxx_visibility">public</property>
+                     <property name="can_focus">True</property>
+                     <property name="show_tabs">True</property>
+                     <property name="show_border">True</property>
+                     <property name="tab_pos">GTK_POS_TOP</property>
+                     <property name="scrollable">True</property>
+                     <property name="enable_popup">False</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="label61">
+                         <property name="label" 
translatable="yes">label61</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">False</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="tab_expand">False</property>
+                         <property name="tab_fill">True</property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="label36">
+                         <property name="label" 
translatable="yes">label36</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">False</property>
+                         <property name="justify">GTK_JUSTIFY_CENTER</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="type">tab</property>
+                       </packing>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
                </widget>
                <packing>
                  <property name="tab_expand">False</property>
@@ -1037,6 +1116,10 @@
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">True</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="type">tab</property>
@@ -1069,6 +1152,10 @@
                          <property name="xpad">5</property>
                          <property name="ypad">0</property>
                          <property 
name="mnemonic_widget">indexbutton</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -1144,7 +1231,11 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">5</property>
                          <property name="ypad">0</property>
-                         <property 
name="mnemonic_widget">radiobutton2</property>
+                         <property 
name="mnemonic_widget">scopeFileOnlyButton</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -1154,7 +1245,7 @@
                      </child>
 
                      <child>
-                       <widget class="GtkRadioButton" id="radiobutton2">
+                       <widget class="GtkRadioButton" id="scopeFileOnlyButton">
                          <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
                          <property name="can_focus">True</property>
@@ -1174,7 +1265,7 @@
                      </child>
 
                      <child>
-                       <widget class="GtkRadioButton" id="radiobutton3">
+                       <widget class="GtkRadioButton" 
id="scopeRecursiveButton">
                          <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
                          <property name="can_focus">True</property>
@@ -1185,7 +1276,7 @@
                          <property name="active">False</property>
                          <property name="inconsistent">False</property>
                          <property name="draw_indicator">True</property>
-                         <property name="group">radiobutton2</property>
+                         <property name="group">scopeFileOnlyButton</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -1208,7 +1299,7 @@
                      <property name="spacing">0</property>
 
                      <child>
-                       <widget class="GtkLabel" id="label54">
+                       <widget class="GtkLabel" id="uploadFilenameLabel">
                          <property name="visible">True</property>
                          <property name="label" 
translatable="yes">_Filename:</property>
                          <property name="use_underline">True</property>
@@ -1220,7 +1311,11 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">5</property>
                          <property name="ypad">0</property>
-                         <property 
name="mnemonic_widget">combo-entry1</property>
+                         <property 
name="mnemonic_widget">uploadFilenameComboBoxEntry</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -1230,57 +1325,15 @@
                      </child>
 
                      <child>
-                       <widget class="GtkCombo" id="fsinsertfilenamecombo">
+                       <widget class="GtkComboBoxEntry" 
id="uploadFilenameComboBoxEntry">
+                         <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
-                         <property name="value_in_list">False</property>
-                         <property name="allow_empty">True</property>
-                         <property name="case_sensitive">False</property>
-                         <property name="enable_arrow_keys">True</property>
-                         <property name="enable_arrows_always">False</property>
-
-                         <child internal-child="entry">
-                           <widget class="GtkEntry" id="combo-entry1">
-                             <property agent="glademm" 
name="cxx_visibility">public</property>
-                             <property name="visible">True</property>
-                             <property name="can_focus">True</property>
-                             <property name="editable">True</property>
-                             <property name="visibility">True</property>
-                             <property name="max_length">0</property>
-                             <property name="text" 
translatable="yes"></property>
-                             <property name="has_frame">True</property>
-                             <property name="invisible_char">*</property>
-                             <property 
name="activates_default">False</property>
-                           </widget>
-                         </child>
-
-                         <child internal-child="list">
-                           <widget class="GtkList" id="convertwidget18">
-                             <property name="visible">True</property>
-                             <property 
name="selection_mode">GTK_SELECTION_BROWSE</property>
-
-                             <child>
-                               <widget class="GtkListItem" 
id="convertwidget19">
-                                 <property name="visible">True</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" 
id="convertwidget20">
-                                     <property name="visible">True</property>
-                                     <property name="label" 
translatable="yes"></property>
-                                     <property 
name="use_underline">False</property>
-                                     <property 
name="use_markup">False</property>
-                                     <property 
name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property 
name="selectable">False</property>
-                                     <property name="xalign">0</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                   </widget>
-                                 </child>
-                               </widget>
-                             </child>
-                           </widget>
-                         </child>
+                         <property name="can_focus">True</property>
+                         <property name="has_focus">True</property>
+                         <property name="add_tearoffs">False</property>
+                         <property name="has_frame">True</property>
+                         <property name="focus_on_click">True</property>
+                         <signal name="editing_done" 
handler="on_uploadFilenameComboBoxEntry_editing_done" 
last_modification_time="Sat, 28 May 2005 14:43:26 GMT"/>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -1292,6 +1345,7 @@
                      <child>
                        <widget class="GtkButton" 
id="mainFileSharingInsertBrowseButton">
                          <property name="visible">True</property>
+                         <property name="tooltip" translatable="yes">Browse 
local computer for files to upload.</property>
                          <property name="can_focus">True</property>
                          <property name="relief">GTK_RELIEF_NORMAL</property>
                          <property name="focus_on_click">True</property>
@@ -1345,6 +1399,10 @@
                                      <property name="yalign">0.5</property>
                                      <property name="xpad">0</property>
                                      <property name="ypad">0</property>
+                                     <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                     <property name="width_chars">-1</property>
+                                     <property 
name="single_line_mode">False</property>
+                                     <property name="angle">0</property>
                                    </widget>
                                    <packing>
                                      <property name="padding">0</property>
@@ -1427,6 +1485,10 @@
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property 
name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                                <packing>
                                  <property name="padding">0</property>
@@ -1465,6 +1527,10 @@
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="type">tab</property>
@@ -1478,52 +1544,63 @@
                  <property name="spacing">0</property>
 
                  <child>
-                   <widget class="GtkMenuBar" id="menubar2">
+                   <widget class="GtkMenuBar" id="advanced_fs_menubar">
                      <property name="visible">True</property>
 
                      <child>
-                       <widget class="GtkMenuItem" id="createNamespace">
+                       <widget class="GtkImageMenuItem" id="createNamespace">
                          <property name="visible">True</property>
                          <property name="label" 
translatable="yes">_create</property>
                          <property name="use_underline">True</property>
 
+                         <child internal-child="image">
+                           <widget class="GtkImage" id="image12">
+                             <property name="visible">True</property>
+                             <property name="stock">gtk-new</property>
+                             <property name="icon_size">1</property>
+                             <property name="xalign">0.5</property>
+                             <property name="yalign">0.5</property>
+                             <property name="xpad">0</property>
+                             <property name="ypad">0</property>
+                           </widget>
+                         </child>
+
                          <child>
                            <widget class="GtkMenu" id="createNamespace_menu">
-                             <property name="visible">True</property>
 
                              <child>
-                               <widget class="GtkMenuItem" id="namespace1">
+                               <widget class="GtkMenuItem" 
id="namespaceCreate">
                                  <property name="visible">True</property>
                                  <property name="label" 
translatable="yes">_Namespace</property>
                                  <property name="use_underline">True</property>
-                                 <signal name="activate_item" 
handler="on_create_namespace_clicked" last_modification_time="Mon, 23 May 2005 
19:13:47 GMT"/>
+                                 <signal name="activate" 
handler="create_namespace_clicked" last_modification_time="Sat, 28 May 2005 
14:39:59 GMT"/>
                                </widget>
                              </child>
 
                              <child>
-                               <widget class="GtkMenuItem" id="directory1">
+                               <widget class="GtkMenuItem" 
id="createDirectory">
                                  <property name="visible">True</property>
                                  <property name="label" 
translatable="yes">_Directory</property>
                                  <property name="use_underline">True</property>
-                                 <signal name="activate_item" 
handler="on_create_directory_clicked" last_modification_time="Mon, 23 May 2005 
19:13:40 GMT"/>
+                                 <signal name="activate" 
handler="createDirectory_clicked" last_modification_time="Sat, 28 May 2005 
14:39:59 GMT"/>
                                </widget>
                              </child>
 
                              <child>
-                               <widget class="GtkMenuItem" id="collection1">
+                               <widget class="GtkMenuItem" 
id="createCollection">
                                  <property name="visible">True</property>
                                  <property name="label" 
translatable="yes">_Collection</property>
                                  <property name="use_underline">True</property>
-                                 <signal name="activate_item" 
handler="on_create_collection_clicked" last_modification_time="Mon, 23 May 2005 
19:13:32 GMT"/>
+                                 <signal name="activate" 
handler="createCollection_clicked" last_modification_time="Sat, 28 May 2005 
14:39:59 GMT"/>
                                </widget>
                              </child>
 
                              <child>
-                               <widget class="GtkMenuItem" id="advertisement1">
+                               <widget class="GtkMenuItem" 
id="createAdvertisement">
                                  <property name="visible">True</property>
                                  <property name="label" 
translatable="yes">_Advertisement</property>
                                  <property name="use_underline">True</property>
-                                 <signal name="activate_item" 
handler="on_create_advertisement_clicked" last_modification_time="Mon, 23 May 
2005 19:13:53 GMT"/>
+                                 <signal name="activate" 
handler="createAdvertisement_clicked" last_modification_time="Sat, 28 May 2005 
14:39:59 GMT"/>
                                </widget>
                              </child>
                            </widget>
@@ -1532,32 +1609,43 @@
                      </child>
 
                      <child>
-                       <widget class="GtkMenuItem" id="delete1">
+                       <widget class="GtkImageMenuItem" id="delete1">
                          <property name="visible">True</property>
                          <property name="label" 
translatable="yes">_delete</property>
                          <property name="use_underline">True</property>
 
+                         <child internal-child="image">
+                           <widget class="GtkImage" id="image13">
+                             <property name="visible">True</property>
+                             <property name="stock">gtk-delete</property>
+                             <property name="icon_size">1</property>
+                             <property name="xalign">0.5</property>
+                             <property name="yalign">0.5</property>
+                             <property name="xpad">0</property>
+                             <property name="ypad">0</property>
+                           </widget>
+                         </child>
+
                          <child>
                            <widget class="GtkMenu" id="delete1_menu">
-                             <property name="visible">True</property>
 
                              <child>
-                               <widget class="GtkMenuItem" id="namespace2">
+                               <widget class="GtkMenuItem" 
id="namespaceDelete">
                                  <property name="visible">True</property>
                                  <property name="tooltip" 
translatable="yes">Will prevent future insertions into the namespace (will not 
delete content in the namespace)</property>
                                  <property name="label" 
translatable="yes">_Namespace</property>
                                  <property name="use_underline">True</property>
-                                 <signal name="activate_item" 
handler="on_namespace2_clicked" last_modification_time="Mon, 23 May 2005 
19:14:04 GMT"/>
+                                 <signal name="activate" 
handler="namespaceDelete_clicked" last_modification_time="Sat, 28 May 2005 
14:39:59 GMT"/>
                                </widget>
                              </child>
 
                              <child>
-                               <widget class="GtkMenuItem" id="collection2">
+                               <widget class="GtkMenuItem" 
id="deleteCollection">
                                  <property name="visible">True</property>
                                  <property name="tooltip" 
translatable="yes">end collection (will not delete content already in the 
collection)</property>
                                  <property name="label" 
translatable="yes">_Collection</property>
                                  <property name="use_underline">True</property>
-                                 <signal name="activate_item" 
handler="on_collection_delete_clicked" last_modification_time="Mon, 23 May 2005 
19:14:11 GMT"/>
+                                 <signal name="activate" 
handler="deleteCollection_clicked" last_modification_time="Sat, 28 May 2005 
14:39:59 GMT"/>
                                </widget>
                              </child>
                            </widget>
@@ -1573,12 +1661,13 @@
                  </child>
 
                  <child>
-                   <widget class="GtkNotebook" id="notebook4">
+                   <widget class="GtkNotebook" id="localNamespacesNotebook">
+                     <property agent="glademm" 
name="cxx_visibility">public</property>
                      <property name="can_focus">True</property>
                      <property name="show_tabs">True</property>
                      <property name="show_border">True</property>
                      <property name="tab_pos">GTK_POS_TOP</property>
-                     <property name="scrollable">False</property>
+                     <property name="scrollable">True</property>
                      <property name="enable_popup">False</property>
 
                      <child>
@@ -1593,6 +1682,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="tab_expand">False</property>
@@ -1612,6 +1705,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="type">tab</property>
@@ -1654,7 +1751,7 @@
                                  <property 
name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
                                  <child>
-                                   <widget class="GtkTreeView" id="clist1">
+                                   <widget class="GtkTreeView" 
id="availableContentList">
                                      <property agent="glademm" 
name="cxx_visibility">public</property>
                                      <property name="visible">True</property>
                                      <property name="can_focus">True</property>
@@ -1662,6 +1759,9 @@
                                      <property 
name="rules_hint">False</property>
                                      <property 
name="reorderable">False</property>
                                      <property 
name="enable_search">True</property>
+                                     <property 
name="fixed_height_mode">False</property>
+                                     <property 
name="hover_selection">False</property>
+                                     <property 
name="hover_expand">False</property>
                                    </widget>
                                  </child>
                                </widget>
@@ -1684,6 +1784,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="type">label_item</property>
@@ -1716,6 +1820,10 @@
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="type">tab</property>
@@ -1741,6 +1849,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">tab</property>
@@ -1766,6 +1878,10 @@
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
@@ -1793,6 +1909,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">tab</property>
@@ -1812,7 +1932,7 @@
                  <property name="show_tabs">True</property>
                  <property name="show_border">True</property>
                  <property name="tab_pos">GTK_POS_TOP</property>
-                 <property name="scrollable">False</property>
+                 <property name="scrollable">True</property>
                  <property name="enable_popup">False</property>
 
                  <child>
@@ -1827,6 +1947,10 @@
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="tab_expand">False</property>
@@ -1846,6 +1970,10 @@
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="type">tab</property>
@@ -1872,6 +2000,8 @@
                    <widget class="GtkEntry" id="chatMainEntryLine">
                      <property agent="glademm" 
name="cxx_visibility">public</property>
                      <property name="visible">True</property>
+                     <property name="can_default">True</property>
+                     <property name="has_default">True</property>
                      <property name="can_focus">True</property>
                      <property name="editable">True</property>
                      <property name="visibility">True</property>
@@ -1879,7 +2009,7 @@
                      <property name="text" translatable="yes"></property>
                      <property name="has_frame">True</property>
                      <property name="invisible_char">*</property>
-                     <property name="activates_default">False</property>
+                     <property name="activates_default">True</property>
                      <signal name="activate" 
handler="chatMainEntryLine_clicked" last_modification_time="Mon, 23 May 2005 
17:28:12 GMT"/>
                      <signal name="editing_done" 
handler="on_chatMainEntryLine_editing_done_clicked" 
last_modification_time="Mon, 23 May 2005 17:28:16 GMT"/>
                      <accelerator key="Return" modifiers="0" 
signal="activate"/>
@@ -1908,6 +2038,10 @@
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                          </child>
                        </widget>
@@ -1930,6 +2064,10 @@
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                          </child>
                        </widget>
@@ -1963,6 +2101,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">tab</property>
@@ -1979,7 +2121,6 @@
       <child>
        <widget class="GtkStatusbar" id="statusbar">
          <property name="visible">True</property>
-         <property name="sensitive">False</property>
          <property name="has_resize_grip">True</property>
        </widget>
        <packing>
@@ -2007,6 +2148,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
   <accessibility>
     <atkproperty name="AtkObject::accessible_name" translatable="yes">Edit 
File Information</atkproperty>
@@ -2101,6 +2243,10 @@
          <property name="yalign">0.5</property>
          <property name="xpad">9</property>
          <property name="ypad">5</property>
+         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+         <property name="width_chars">-1</property>
+         <property name="single_line_mode">False</property>
+         <property name="angle">0</property>
        </widget>
        <packing>
          <property name="padding">0</property>
@@ -2129,6 +2275,10 @@
              <property name="xpad">5</property>
              <property name="ypad">0</property>
              <property name="mnemonic_widget">optionmenu2</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
@@ -2179,6 +2329,10 @@
              <property name="xpad">5</property>
              <property name="ypad">0</property>
              <property 
name="mnemonic_widget">metaDataDialogValueEntry</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
@@ -2246,6 +2400,9 @@
                  <property name="rules_hint">True</property>
                  <property name="reorderable">False</property>
                  <property name="enable_search">True</property>
+                 <property name="fixed_height_mode">False</property>
+                 <property name="hover_selection">False</property>
+                 <property name="hover_expand">False</property>
                  <signal name="select_cursor_row" 
handler="on_metaDataDialogMetaDataList_select_cursor_row" 
object="metaDataDialog" last_modification_time="Mon, 23 May 2005 18:58:13 GMT"/>
                </widget>
              </child>
@@ -2265,6 +2422,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">label_item</property>
@@ -2298,6 +2459,10 @@
              <property name="xpad">5</property>
              <property name="ypad">0</property>
              <property 
name="mnemonic_widget">fileInformationKeywordEntry</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
@@ -2364,6 +2529,9 @@
                  <property name="rules_hint">True</property>
                  <property name="reorderable">False</property>
                  <property name="enable_search">True</property>
+                 <property name="fixed_height_mode">False</property>
+                 <property name="hover_selection">False</property>
+                 <property name="hover_expand">False</property>
                  <signal name="select_cursor_row" 
handler="on_metaDataDialogKeywordList_select_cursor_row" 
object="metaDataDialog" last_modification_time="Mon, 23 May 2005 18:58:34 GMT"/>
                </widget>
              </child>
@@ -2383,6 +2551,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">label_item</property>
@@ -2413,6 +2585,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
 
   <child internal-child="vbox">
@@ -2474,6 +2647,9 @@
                  <property name="rules_hint">False</property>
                  <property name="reorderable">False</property>
                  <property name="enable_search">True</property>
+                 <property name="fixed_height_mode">False</property>
+                 <property name="hover_selection">False</property>
+                 <property name="hover_expand">False</property>
                </widget>
              </child>
            </widget>
@@ -2492,6 +2668,10 @@
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="type">label_item</property>
@@ -2509,7 +2689,6 @@
 </widget>
 
 <widget class="GtkWindow" id="searchResultsFrame">
-  <property name="visible">True</property>
   <property name="title" translatable="yes">Search Results</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
@@ -2521,6 +2700,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
 
   <child>
     <widget class="GtkScrolledWindow" id="searchPageScrolledWindow">
@@ -2531,7 +2711,6 @@
       <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
       <property name="shadow_type">GTK_SHADOW_NONE</property>
       <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-      <signal name="destroy" handler="on_searchPageScrolledWindow_destroy" 
object="searchPageScrolledWindow" last_modification_time="Thu, 26 May 2005 
22:41:04 GMT"/>
 
       <child>
        <widget class="GtkViewport" id="viewport5">
@@ -2548,8 +2727,8 @@
                <widget class="GtkScrolledWindow" id="scrolledwindow15">
                  <property name="visible">True</property>
                  <property name="can_focus">True</property>
-                 <property 
name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
-                 <property 
name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+                 <property 
name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                 <property 
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
                  <property name="shadow_type">GTK_SHADOW_IN</property>
                  <property 
name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
@@ -2562,6 +2741,10 @@
                      <property name="rules_hint">False</property>
                      <property name="reorderable">False</property>
                      <property name="enable_search">True</property>
+                     <property name="fixed_height_mode">False</property>
+                     <property name="hover_selection">False</property>
+                     <property name="hover_expand">False</property>
+                     <signal name="destroy" handler="on_searchResults_destroy" 
object="searchResults" last_modification_time="Sat, 28 May 2005 13:55:09 GMT"/>
                    </widget>
                  </child>
                </widget>
@@ -2573,23 +2756,24 @@
              </child>
 
              <child>
-               <widget class="GtkButton" id="downloadButton">
+               <widget class="GtkHBox" id="hbox23">
                  <property name="visible">True</property>
-                 <property name="can_focus">True</property>
-                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                 <property name="focus_on_click">True</property>
-                 <signal name="clicked" handler="on_downloadButton_clicked" 
object="searchResults" last_modification_time="Mon, 23 May 2005 18:59:36 GMT"/>
-                 <signal name="activate" handler="on_downloadButton_clicked" 
object="searchResults" last_modification_time="Thu, 26 May 2005 09:26:15 GMT"/>
-                 <accelerator key="Return" modifiers="GDK_CONTROL_MASK" 
signal="activate"/>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">0</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox23">
+                   <widget class="GtkButton" id="downloadButton">
                      <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">0</property>
+                     <property name="tooltip" translatable="yes">Download 
selected files.</property>
+                     <property name="can_focus">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                     <signal name="clicked" 
handler="on_downloadButton_clicked" object="searchResults" 
last_modification_time="Mon, 23 May 2005 18:59:36 GMT"/>
+                     <signal name="activate" 
handler="on_downloadButton_clicked" object="searchResults" 
last_modification_time="Thu, 26 May 2005 09:26:15 GMT"/>
+                     <accelerator key="Return" modifiers="GDK_CONTROL_MASK" 
signal="activate"/>
 
                      <child>
-                       <widget class="GtkAlignment" id="alignment3">
+                       <widget class="GtkAlignment" id="alignment10">
                          <property name="visible">True</property>
                          <property name="xalign">0.5</property>
                          <property name="yalign">0.5</property>
@@ -2601,13 +2785,13 @@
                          <property name="right_padding">0</property>
 
                          <child>
-                           <widget class="GtkHBox" id="hbox13">
+                           <widget class="GtkHBox" id="hbox23">
                              <property name="visible">True</property>
                              <property name="homogeneous">False</property>
                              <property name="spacing">2</property>
 
                              <child>
-                               <widget class="GtkImage" id="image3">
+                               <widget class="GtkImage" id="image10">
                                  <property name="visible">True</property>
                                  <property name="stock">gtk-copy</property>
                                  <property name="icon_size">4</property>
@@ -2624,7 +2808,7 @@
                              </child>
 
                              <child>
-                               <widget class="GtkLabel" id="label65">
+                               <widget class="GtkLabel" id="label76">
                                  <property name="visible">True</property>
                                  <property name="label" 
translatable="yes">_Download</property>
                                  <property name="use_underline">True</property>
@@ -2636,6 +2820,10 @@
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property 
name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                                <packing>
                                  <property name="padding">0</property>
@@ -2646,30 +2834,33 @@
                            </widget>
                          </child>
                        </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">True</property>
-                         <property name="fill">True</property>
-                       </packing>
                      </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
 
-                     <child>
-                       <widget class="GtkButton" id="closeSearchButton">
-                         <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="label">gtk-close</property>
-                         <property name="use_stock">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="focus_on_click">True</property>
-                         <signal name="clicked" 
handler="on_closeSearchButton_clicked" object="searchPageScrolledWindow" 
last_modification_time="Thu, 26 May 2005 22:42:37 GMT"/>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">True</property>
-                         <property name="fill">True</property>
-                       </packing>
-                     </child>
+                 <child>
+                   <widget class="GtkButton" id="closeSearchButton">
+                     <property name="visible">True</property>
+                     <property name="tooltip" translatable="yes">Close this 
search.</property>
+                     <property name="can_focus">True</property>
+                     <property name="label">gtk-close</property>
+                     <property name="use_stock">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                     <signal name="clicked" 
handler="on_closeSearchButton_clicked" object="searchPageScrolledWindow" 
last_modification_time="Thu, 26 May 2005 22:42:37 GMT"/>
+                     <signal name="activate" 
handler="on_closeSearchButton_clicked" object="searchPageScrolledWindow" 
last_modification_time="Fri, 27 May 2005 13:14:33 GMT"/>
+                     <accelerator key="Escape" modifiers="0" 
signal="activate"/>
                    </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
                  </child>
                </widget>
                <packing>
@@ -2687,7 +2878,6 @@
 </widget>
 
 <widget class="GtkWindow" id="namespaceContentFrame">
-  <property name="visible">True</property>
   <property name="title" translatable="yes">Namespace Contents</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
@@ -2699,6 +2889,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
 
   <child>
     <widget class="GtkVBox" id="vbox12">
@@ -2724,6 +2915,9 @@
              <property name="rules_hint">False</property>
              <property name="reorderable">False</property>
              <property name="enable_search">True</property>
+             <property name="fixed_height_mode">False</property>
+             <property name="hover_selection">False</property>
+             <property name="hover_expand">False</property>
              <signal name="select_cursor_row" 
handler="on_namespaceContentFrameTreeView_select_cursor_row" 
object="namespaceContentFrame" last_modification_time="Mon, 23 May 2005 
19:02:36 GMT"/>
            </widget>
          </child>
@@ -2797,6 +2991,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -2874,6 +3072,10 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
@@ -2904,7 +3106,6 @@
 </widget>
 
 <widget class="GtkWindow" id="chatFrame">
-  <property name="visible">True</property>
   <property name="title" translatable="yes">Chat</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
@@ -2916,6 +3117,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
 
   <child>
     <widget class="GtkHBox" id="hbox17">
@@ -2943,12 +3145,12 @@
                  <property agent="glademm" 
name="cxx_visibility">public</property>
                  <property name="visible">True</property>
                  <property name="can_focus">True</property>
-                 <property name="editable">True</property>
+                 <property name="editable">False</property>
                  <property name="overwrite">False</property>
-                 <property name="accepts_tab">True</property>
+                 <property name="accepts_tab">False</property>
                  <property name="justification">GTK_JUSTIFY_LEFT</property>
-                 <property name="wrap_mode">GTK_WRAP_NONE</property>
-                 <property name="cursor_visible">True</property>
+                 <property name="wrap_mode">GTK_WRAP_WORD</property>
+                 <property name="cursor_visible">False</property>
                  <property name="pixels_above_lines">0</property>
                  <property name="pixels_below_lines">0</property>
                  <property name="pixels_inside_wrap">0</property>
@@ -2976,7 +3178,14 @@
                <widget class="GtkComboBoxEntry" id="chatLineTextEntry">
                  <property agent="glademm" 
name="cxx_visibility">public</property>
                  <property name="visible">True</property>
-                 <property name="items" translatable="yes">/join 
#gnunet</property>
+                 <property name="can_default">True</property>
+                 <property name="has_default">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="has_focus">True</property>
+                 <property name="items" translatable="yes">Hello!</property>
+                 <property name="add_tearoffs">False</property>
+                 <property name="has_frame">True</property>
+                 <property name="focus_on_click">False</property>
                  <signal name="editing_done" 
handler="on_chatLineTextEntry_editing_done" last_modification_time="Mon, 23 May 
2005 17:18:48 GMT"/>
                </widget>
                <packing>
@@ -3044,6 +3253,10 @@
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                            <packing>
                              <property name="padding">0</property>
@@ -3095,6 +3308,9 @@
              <property name="rules_hint">False</property>
              <property name="reorderable">False</property>
              <property name="enable_search">True</property>
+             <property name="fixed_height_mode">False</property>
+             <property name="hover_selection">False</property>
+             <property name="hover_expand">False</property>
            </widget>
          </child>
        </widget>
@@ -3108,4 +3324,331 @@
   </child>
 </widget>
 
+<widget class="GtkAboutDialog" id="aboutDialog">
+  <property agent="glademm" name="cxx_visibility">public</property>
+  <property name="visible">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="name" translatable="yes">gnunet-gtk</property>
+  <property name="copyright" translatable="yes">(C) 2001-2005 Christian 
Grothoff (and other contributing authors)</property>
+  <property name="license" translatable="yes">                    GNU GENERAL 
PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The &quot;Program&quot;, 
below,
+refers to any such program or work, and a &quot;work based on the Program&quot;
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term &quot;modification&quot;.)  Each licensee is addressed as 
&quot;you&quot;.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and &quot;any
+later version&quot;, you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER 
EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+</property>
+  <property name="website">http://www.gnu.org/software/gnunet/</property>
+  <property name="website_label" translatable="yes">GNUnet Website</property>
+  <property name="authors">Juergen Appel &lt;address@hidden&gt;
+Krista Bennett &lt;address@hidden&gt;
+James Blackwell &lt;address@hidden&gt;
+Ludovic Courtes &lt;address@hidden&gt;
+Nils Durner &lt;address@hidden&gt;
+Renaldo Ferreira &lt;address@hidden&gt;
+Christian Grothoff &lt;address@hidden&gt;
+Eric Haumant
+Tzvetan Horozov &lt;address@hidden&gt;
+Gerd Knorr &lt;address@hidden&gt;
+Werner Koch &lt;address@hidden&gt;
+Uli Luckas &lt;address@hidden&gt;
+Blake Matheny &lt;address@hidden&gt;
+Glenn McGrath &lt;address@hidden&gt;
+Hendrik Pagenhardt &lt;address@hidden&gt;
+Ioana Patrascu &lt;address@hidden&gt;
+Marko Raeihae
+Paul Ruth &lt;address@hidden&gt;
+Risto Saarelma
+Antti Salonen
+Tiberius Stef &lt;address@hidden&gt;
+Tuomas Toivonen
+Tomi Tukiainen
+Kevin Vandersloot &lt;address@hidden&gt;
+Simo Viitanen
+Larry Waldo
+Igor Wronsky &lt;address@hidden&gt;
+&lt;address@hidden&gt;
+</property>
+  <property name="documenters">Christian Grothoff &lt;address@hidden&gt;
+Nils Durner &lt;address@hidden&gt;</property>
+  <property name="artists">Christian Muellner &lt;address@hidden&gt;
+Alex Jones &lt;address@hidden&gt;</property>
+  <property name="translator_credits" translatable="yes" 
comments="TRANSLATORS: Replace this string with your names, one name per 
line.">translator-credits</property>
+  <property name="logo">gnunet_logo.png</property>
+</widget>
+
 </glade-interface>

Modified: gnunet-gtk/src/Makefile.am
===================================================================
--- gnunet-gtk/src/Makefile.am  2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/src/Makefile.am  2005-05-29 10:47:47 UTC (rev 828)
@@ -13,7 +13,6 @@
   daemon.c daemon.h \
   fs.c fs.h \
   gettext.h \
-  gtk26about.c gtk26about.h \
   helper.c helper.h \
   main.c main.h \
   platform.h plibc.h \

Modified: gnunet-gtk/src/about.c
===================================================================
--- gnunet-gtk/src/about.c      2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/src/about.c      2005-05-29 10:47:47 UTC (rev 828)
@@ -18,7 +18,7 @@
 */
 
 /**
- * @file src/applications/afs/gtkui/about.c
+ * @file src/about.c
  * @author Christian Grothoff
  * @author Igor Wronsky
  *
@@ -26,100 +26,25 @@
  */
 
 #include "config.h"
-#include "gettext.h"
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include "gtk26about.h"
+#include "main.h"
 
-#include "helper.h"
-
 /**
  * This displays an about window
- *
- * Todo: the GTK demo can do links.
  */
 void on_about_clicked(GtkWidget *dummy,
                      gpointer data) {
-  const gchar * authors[] = {
-    "Juergen Appel <address@hidden>",
-    "Krista Bennett <address@hidden>",
-    "James Blackwell <address@hidden>",
-    "Ludovic Courtes <address@hidden>",
-    "Nils Durner <address@hidden>",
-    "Renaldo Ferreira <address@hidden>",
-    "Christian Grothoff <address@hidden>",
-    "Eric Haumant",
-    "Tzvetan Horozov <address@hidden>",
-    "Gerd Knorr <address@hidden>",
-    "Werner Koch <address@hidden>",
-    "Uli Luckas <address@hidden>",
-    "Blake Matheny <address@hidden>",
-    "Glenn McGrath <address@hidden>",
-    "Hendrik Pagenhardt <address@hidden>",
-    "Ioana Patrascu <address@hidden>",
-    "Marko Raeihae",
-    "Paul Ruth <address@hidden>",
-    "Risto Saarelma",
-    "Antti Salonen",
-    "Tiberius Stef <address@hidden>",
-    "Tuomas Toivonen",
-    "Tomi Tukiainen",
-    "Kevin Vandersloot <address@hidden>",
-    "Simo Viitanen",
-    "Larry Waldo", 
-    "Igor Wronsky <address@hidden>",
-    "<address@hidden>",
-    NULL,
-  };
-  const gchar * artists[] = {
-    "Christian Muellner <address@hidden>",
-    "Alex Jones <address@hidden>",
-    NULL,
-  };
-  const char * trans = _("translator-credits");
-  const char * license = "GNUnet is free software; you can redistribute it 
and/or modify\n"
-                        "it under the terms of the GNU General Public License 
as published\n"
-                        "by the Free Software Foundation; either version 2, or 
(at your\n"
-                        "option) any later version.\n\n"
-                        "GNUnet is distributed in the hope that it will be 
useful, but\n"
-                        "WITHOUT ANY WARRANTY; without even the implied 
warranty of\n"
-                        "MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.\n"
-                         "See the GNU General Public License for more 
details.\n\n"
-                        "You should have received a copy of the GNU General 
Public License\n"
-                        "along with GNUnet; see the file COPYING.  If not, 
write to the\n"
-                        "Free Software Foundation, Inc., 59 Temple Place - 
Suite 330,\n"
-                         "Boston, MA 02111-1307, USA.\n";
-
-  GdkPixbuf * logo;
-  GError * error;
-
-  error = NULL;
-  logo = gdk_pixbuf_new_from_file("gnunet_logo.png",
-                                 &error);
-  if (logo != NULL) {
-    gtk_show_about_dialog(NULL, 
-                         "logo", logo,
-                         "name", "gnunet-gtk",
-                         "version", VERSION,
-                         "copyright" , "(C) 2001-2005 Christian Grothoff (and 
other contributing authors)",
-                         "website", "http://www.gnu.org/software/gnunet/";,
-                         "license", license,             
-                         "authors", authors,
-                         "artists", artists,
-                         (0 == strcmp(trans,"translator-credits")) ? NULL : 
"translator_credits", trans,
-                         NULL);
-    g_object_unref(G_OBJECT(logo));
-  } else {
-    gtk_show_about_dialog(NULL, 
-                         "name", "gnunet-gtk",
-                         "version", VERSION,
-                         "copyright" , "(C) 2001-2005 Christian Grothoff (and 
other contributing authors)",
-                         "website", "http://www.gnu.org/software/gnunet/";,
-                         "license", license,             
-                         "authors", authors,
-                         "artists", artists,
-                         (0 == strcmp(trans,"translator-credits")) ? NULL : 
"translator_credits", trans,
-                         NULL);
-  }
+  GtkWidget * ad;
+  GladeXML * axml;
+  
+  axml
+    = glade_xml_new(GLADE_FILE,
+                   "aboutDialog", 
+                   NULL);
+  ad
+    = glade_xml_get_widget(axml,
+                          "aboutDialog");
+  gtk_dialog_run(GTK_DIALOG(ad));
+  g_object_unref(axml);
 }
 
 /* end of about.c */

Modified: gnunet-gtk/src/fs.c
===================================================================
--- gnunet-gtk/src/fs.c 2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/src/fs.c 2005-05-29 10:47:47 UTC (rev 828)
@@ -25,8 +25,8 @@
  */
 
 #include "fs.h"
+#include "search.h"
 
-
 struct FSUI_Context * ctx;
 
 /**

Deleted: gnunet-gtk/src/gtk26about.c
===================================================================
--- gnunet-gtk/src/gtk26about.c 2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/src/gtk26about.c 2005-05-29 10:47:47 UTC (rev 828)
@@ -1,1846 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 2001 CodeFactory AB
- * Copyright (C) 2001, 2002 Anders Carlsson
- * Copyright (C) 2003, 2004 Matthias Clasen <address@hidden>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public 
- * License as published by the Free Software Foundation; either 
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the 
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Author: Anders Carlsson <address@hidden>
- *
- * Modified by the GTK+ Team and others 1997-2004.  See the AUTHORS
- * file for a list of people on the GTK+ Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#include "platform.h"
-#include "gtk26about.h"
-#include <string.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-#include <gtk/gtktext.h>
-
-typedef struct _GtkAboutDialogPrivate GtkAboutDialogPrivate;
-struct _GtkAboutDialogPrivate 
-{
-  gchar *name;
-  gchar *version;
-  gchar *copyright;
-  gchar *comments;
-  gchar *website;
-  gchar *website_label;
-  gchar *translator_credits;
-  gchar *license;
-  
-  gchar **authors;
-  gchar **documenters;
-  gchar **artists;
-  
-  GtkWidget *logo_image;
-  GtkWidget *name_label;
-  GtkWidget *comments_label;
-  GtkWidget *copyright_label;
-  GtkWidget *website_button;
-
-  GtkWidget *credits_button;
-  GtkWidget *credits_dialog;
-  GtkWidget *license_button;
-  GtkWidget *license_dialog;
-  
-  GdkCursor *hand_cursor;
-  GdkCursor *regular_cursor;
-  gboolean hovering_over_link;
-};
-
-#define GTK_ABOUT_DIALOG_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), 
GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogPrivate))
-
-
-enum 
-{
-  PROP_0,
-  PROP_NAME,
-  PROP_VERSION,
-  PROP_COPYRIGHT,
-  PROP_COMMENTS,
-  PROP_WEBSITE,
-  PROP_WEBSITE_LABEL,
-  PROP_LICENSE,
-  PROP_AUTHORS,
-  PROP_DOCUMENTERS,
-  PROP_TRANSLATOR_CREDITS,
-  PROP_ARTISTS,
-  PROP_LOGO
-};
-
-static void                 gtk_about_dialog_finalize       (GObject           
 *object);
-static void                 gtk_about_dialog_get_property   (GObject           
 *object,
-                                                            guint              
 prop_id,
-                                                            GValue             
*value,
-                                                            GParamSpec         
*pspec);
-static void                 gtk_about_dialog_set_property   (GObject           
 *object,
-                                                            guint              
 prop_id,
-                                                            const GValue       
*value,
-                                                            GParamSpec         
*pspec);
-static void                 update_name_version             (GtkAboutDialog    
 *about);
-static GtkIconSet *         icon_set_new_from_pixbufs       (GList             
 *pixbufs);
-static void                 activate_url                    (GtkWidget         
 *widget,
-                                                            gpointer           
 data);
-static void                 set_link_button_text            (GtkWidget         
 *about,
-                                                            GtkWidget          
*button,
-                                                            gchar              
*text);
-static GtkWidget *          create_link_button              (GtkWidget         
 *about,
-                                                            gchar              
*text,
-                                                            gchar              
*url,
-                                                            GCallback          
 callback,
-                                                            gpointer           
 data);
-static void                 follow_if_link                  (GtkAboutDialog    
 *about,
-                                                            GtkTextIter        
*iter);
-static void                 set_cursor_if_appropriate       (GtkAboutDialog    
 *about,
-                                                            GtkTextView        
*text_view,
-                                                            gint               
 x,
-                                                            gint               
 y);
-static void                 add_credits_page                (GtkAboutDialog    
 *about,
-                                                            GtkWidget          
*notebook,
-                                                            gchar              
*title,
-                                                            gchar             
**people);
-static gboolean             credits_key_press_event         (GtkWidget         
 *text_view,
-                                                            GdkEventKey        
*event,
-                                                            GtkAboutDialog     
*about);
-static gboolean             credits_event_after             (GtkWidget         
 *text_view,
-                                                            GdkEvent           
*event,
-                                                            GtkAboutDialog     
*about);
-static gboolean             credits_motion_notify_event     (GtkWidget         
 *text_view,
-                                                            GdkEventMotion     
*event,
-                                                            GtkAboutDialog     
*about);
-static gboolean             credits_visibility_notify_event (GtkWidget         
 *text_view,
-                                                            GdkEventVisibility 
*event,
-                                                            GtkAboutDialog     
*about);
-static void                 display_credits_dialog          (GtkWidget         
 *button,
-                                                            gpointer           
 data);
-static void                 display_license_dialog          (GtkWidget         
 *button,
-                                                            gpointer           
 data);
-                                
-                                                                      
-static GtkAboutDialogActivateLinkFunc activate_email_hook = NULL;
-static GtkAboutDialogActivateLinkFunc activate_url_hook = NULL;
-
-G_DEFINE_TYPE (GtkAboutDialog, gtk_about_dialog, GTK_TYPE_DIALOG);
-
-static void
-gtk_about_dialog_class_init (GtkAboutDialogClass *klass)
-{
-  GObjectClass *object_class;
-  GtkWidgetClass *widget_class;
-  GtkDialogClass *dialog_class;
-       
-  object_class = (GObjectClass *)klass;
-  widget_class = (GtkWidgetClass *)klass;
-  dialog_class = (GtkDialogClass *)klass;
-       
-  object_class->set_property = gtk_about_dialog_set_property;
-  object_class->get_property = gtk_about_dialog_get_property;
-
-  object_class->finalize = gtk_about_dialog_finalize;
-
-  g_object_class_install_property (object_class,
-                                  PROP_NAME,
-                                  g_param_spec_string ("name",
-                                                       gettext_noop("Program 
name"),
-                                                       gettext_noop("The name 
of the program. If this is not set, it defaults to g_get_application_name()"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-
-  g_object_class_install_property (object_class,
-                                  PROP_VERSION,
-                                  g_param_spec_string ("version",
-                                                       gettext_noop("Program 
version"),
-                                                       gettext_noop("The 
version of the program"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-  g_object_class_install_property (object_class,
-                                  PROP_COPYRIGHT,
-                                  g_param_spec_string ("copyright",
-                                                       gettext_noop("Copyright 
string"),
-                                                       gettext_noop("Copyright 
information for the program"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-       
-  g_object_class_install_property (object_class,
-                                  PROP_COMMENTS,
-                                  g_param_spec_string ("comments",
-                                                       gettext_noop("Comments 
string"),
-                                                       gettext_noop("Comments 
about the program"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-  g_object_class_install_property (object_class,
-                                  PROP_LICENSE,
-                                  g_param_spec_string ("license",
-                                                       gettext_noop("License"),
-                                                       gettext_noop("The 
license of the program"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-
-  g_object_class_install_property (object_class,
-                                  PROP_WEBSITE,
-                                  g_param_spec_string ("website",
-                                                       gettext_noop("Website 
URL"),
-                                                       gettext_noop("The URL 
for the link to the website of the program"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-
-  g_object_class_install_property (object_class,
-                                  PROP_WEBSITE_LABEL,
-                                  g_param_spec_string ("website_label",
-                                                       gettext_noop("Website 
label"),
-                                                       gettext_noop("The label 
for the link to the website of the program. If this is not set, it defaults to 
the URL"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-
-  g_object_class_install_property (object_class,
-                                  PROP_AUTHORS,
-                                  g_param_spec_boxed ("authors",
-                                                      gettext_noop("Authors"),
-                                                      gettext_noop("List of 
authors of the programs"),
-                                                      G_TYPE_STRV,
-                                                      G_PARAM_READWRITE));
-  g_object_class_install_property (object_class,
-                                  PROP_DOCUMENTERS,
-                                  g_param_spec_boxed ("documenters",
-                                                      
gettext_noop("Documenters"),
-                                                      gettext_noop("List of 
people documenting the program"),
-                                                      G_TYPE_STRV,
-                                                      G_PARAM_READWRITE));
-
-  g_object_class_install_property (object_class,
-                                  PROP_ARTISTS,
-                                  g_param_spec_boxed ("artists",
-                                                      gettext_noop("Artists"),
-                                                      gettext_noop("List of 
people who have contributed artwork to the program"),
-                                                      G_TYPE_STRV,
-                                                      G_PARAM_READWRITE));
-
-  g_object_class_install_property (object_class,
-                                  PROP_TRANSLATOR_CREDITS,
-                                  g_param_spec_string ("translator_credits",
-                                                       
gettext_noop("Translator credits"),
-                                                       gettext_noop("Credits 
to the translators. This string should be marked as translatable"),
-                                                       NULL,
-                                                       G_PARAM_READWRITE));
-       
-  g_object_class_install_property (object_class,
-                                  PROP_LOGO,
-                                  g_param_spec_object ("logo",
-                                                       gettext_noop("Logo"),
-                                                       gettext_noop("A logo 
for the about box. If this is not set, it defaults to 
gtk_window_get_default_icon_list()"),
-                                                       GDK_TYPE_PIXBUF,
-                                                       G_PARAM_READWRITE));
-
-  /* Style properties */
-  gtk_widget_class_install_style_property (widget_class,
-                                           g_param_spec_boxed ("link_color",
-                                                               
gettext_noop("Link Color"),
-                                                               
gettext_noop("Color of hyperlinks"),
-                                                               GDK_TYPE_COLOR,
-                                                               
G_PARAM_READABLE));
-
-  g_type_class_add_private (object_class, sizeof (GtkAboutDialogPrivate));
-}
-
-static void
-gtk_about_dialog_init (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  GtkWidget *vbox, *hbox, *button;
-
-  /* Data */
-  priv = GTK_ABOUT_DIALOG_GET_PRIVATE (about);
-  about->private_data = priv;
-
-  priv->name = NULL;
-  priv->version = NULL;
-  priv->copyright = NULL;
-  priv->comments = NULL;
-  priv->website = NULL;
-  priv->website_label = NULL;
-  priv->translator_credits = NULL;
-  priv->authors = NULL;
-  priv->documenters = NULL;
-  priv->artists = NULL;
-
-  priv->hand_cursor = gdk_cursor_new (GDK_HAND2);
-  priv->regular_cursor = gdk_cursor_new (GDK_XTERM);
-  priv->hovering_over_link = FALSE;
-
-  /* Widgets */
-  gtk_widget_push_composite_child ();
-  vbox = gtk_vbox_new (FALSE, 8);
-  gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
-
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (about)->vbox), vbox, TRUE, TRUE, 0);
-
-  priv->logo_image = gtk_image_new ();
-  gtk_box_pack_start (GTK_BOX (vbox), priv->logo_image, FALSE, FALSE, 0);
-
-  priv->name_label = gtk_label_new (NULL);
-  gtk_label_set_selectable (GTK_LABEL (priv->name_label), TRUE);
-  gtk_label_set_justify (GTK_LABEL (priv->name_label), GTK_JUSTIFY_CENTER);
-  gtk_box_pack_start (GTK_BOX (vbox), priv->name_label, FALSE, FALSE, 0);
-
-  priv->comments_label = gtk_label_new (NULL);
-  gtk_label_set_selectable (GTK_LABEL (priv->comments_label), TRUE);
-  gtk_label_set_justify (GTK_LABEL (priv->comments_label), GTK_JUSTIFY_CENTER);
-  gtk_label_set_line_wrap (GTK_LABEL (priv->comments_label), TRUE);
-  gtk_box_pack_start (GTK_BOX (vbox), priv->comments_label, FALSE, FALSE, 0);
-
-  priv->copyright_label = gtk_label_new (NULL);
-  gtk_label_set_selectable (GTK_LABEL (priv->copyright_label), TRUE);  
-  gtk_label_set_justify (GTK_LABEL (priv->copyright_label), 
GTK_JUSTIFY_CENTER);
-  gtk_box_pack_start (GTK_BOX (vbox), priv->copyright_label, FALSE, FALSE, 0);
-
-  button = create_link_button (GTK_WIDGET (about), "", "", 
-                              G_CALLBACK (activate_url), about);
-
-  hbox = gtk_hbox_new (TRUE, 0);
-  gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0); 
-  priv->website_button = button;
-  
-  gtk_widget_show (vbox);
-  gtk_widget_show (priv->logo_image);
-  gtk_widget_show (priv->name_label);
-  gtk_widget_show (hbox);
-
-  /* Add the OK button */
-  gtk_dialog_add_button (GTK_DIALOG (about), GTK_STOCK_OK, GTK_RESPONSE_OK);
-  gtk_dialog_set_default_response (GTK_DIALOG (about), GTK_RESPONSE_OK);
-
-  /* Add the credits button */
-  button = gtk_button_new_from_stock (gettext_noop("_Credits"));
-  gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area), 
-                   button, FALSE, TRUE, 0); 
-  gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG 
(about)->action_area), button, TRUE);
-  g_signal_connect (button, "clicked", G_CALLBACK (display_credits_dialog), 
about);
-  priv->credits_button = button;
-  priv->credits_dialog = NULL;
-
-  /* Add the license button */
-  button = gtk_button_new_from_stock (gettext_noop("_License"));
-  gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area), 
-                   button, FALSE, TRUE, 0); 
-  gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG 
(about)->action_area), button, TRUE);
-  g_signal_connect (button, "clicked", G_CALLBACK (display_license_dialog), 
about);
-  priv->license_button = button;
-  priv->license_dialog = NULL;
-
-  gtk_window_set_resizable (GTK_WINDOW (about), FALSE);
-
-  gtk_widget_pop_composite_child ();
-}
-
-static void
-gtk_about_dialog_finalize (GObject *object)
-{
-  GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
-  GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  g_free (priv->name);
-  g_free (priv->version);
-  g_free (priv->copyright);
-  g_free (priv->comments);
-  g_free (priv->license);
-  g_free (priv->website);
-  g_free (priv->website_label);
-  g_free (priv->translator_credits);
-
-  g_strfreev (priv->authors);
-  g_strfreev (priv->documenters);
-  g_strfreev (priv->artists);
-
-  g_free (priv);
-  about->private_data = NULL;
-
-  G_OBJECT_CLASS (gtk_about_dialog_parent_class)->finalize (object);
-}
-
-static void
-gtk_about_dialog_set_property (GObject      *object, 
-                              guint         prop_id, 
-                              const GValue *value, 
-                              GParamSpec   *pspec)
-{
-  GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
-
-  switch (prop_id) 
-    {
-    case PROP_NAME:
-      gtk_about_dialog_set_name (about, g_value_get_string (value));
-      break;
-    case PROP_VERSION:
-      gtk_about_dialog_set_version (about, g_value_get_string (value));
-      break;
-    case PROP_COMMENTS:
-      gtk_about_dialog_set_comments (about, g_value_get_string (value));
-      break;
-    case PROP_WEBSITE:
-      gtk_about_dialog_set_website (about, g_value_get_string (value));
-      break;
-    case PROP_WEBSITE_LABEL:
-      gtk_about_dialog_set_website_label (about, g_value_get_string (value));
-      break;
-    case PROP_LICENSE:
-      gtk_about_dialog_set_license (about, g_value_get_string (value));
-      break;
-    case PROP_COPYRIGHT:
-      gtk_about_dialog_set_copyright (about, g_value_get_string (value));
-      break;
-    case PROP_LOGO:
-      gtk_about_dialog_set_logo (about, g_value_get_object (value));
-      break; 
-    case PROP_AUTHORS:
-      gtk_about_dialog_set_authors (about, (gchar**)g_value_get_boxed (value));
-      break;
-    case PROP_DOCUMENTERS:
-      gtk_about_dialog_set_documenters (about, (gchar**)g_value_get_boxed 
(value));
-      break;   
-    case PROP_ARTISTS:
-      gtk_about_dialog_set_artists (about, (gchar**)g_value_get_boxed (value));
-      break;   
-    case PROP_TRANSLATOR_CREDITS:
-      gtk_about_dialog_set_translator_credits (about, g_value_get_string 
(value));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-gtk_about_dialog_get_property (GObject    *object, 
-                              guint       prop_id, 
-                              GValue     *value, 
-                              GParamSpec *pspec)
-{
-  GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
-  GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
-       
-  switch (prop_id) 
-    {
-    case PROP_NAME:
-      g_value_set_string (value, priv->name);
-      break;
-    case PROP_VERSION:
-      g_value_set_string (value, priv->version);
-      break;
-    case PROP_COPYRIGHT:
-      g_value_set_string (value, priv->copyright);
-      break;
-    case PROP_COMMENTS:
-      g_value_set_string (value, priv->comments);
-      break;
-    case PROP_WEBSITE:
-      g_value_set_string (value, priv->website);
-      break;
-    case PROP_WEBSITE_LABEL:
-      g_value_set_string (value, priv->website_label);
-      break;
-    case PROP_LICENSE:
-      g_value_set_string (value, priv->license);
-      break;
-    case PROP_TRANSLATOR_CREDITS:
-      g_value_set_string (value, priv->translator_credits);
-      break;
-    case PROP_AUTHORS:
-      g_value_set_boxed (value, priv->authors);
-      break;
-    case PROP_DOCUMENTERS:
-      g_value_set_boxed (value, priv->documenters);
-      break;
-    case PROP_ARTISTS:
-      g_value_set_boxed (value, priv->artists);
-      break;
-    case PROP_LOGO:
-      g_value_set_object (value, gtk_image_get_pixbuf (GTK_IMAGE 
(priv->logo_image)));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-/**
- * gtk_about_dialog_get_name:
- * @about: a #GtkAboutDialog
- * 
- * Returns the program name displayed in the about dialog.
- * 
- * Return value: The program name. The string is owned by the about
- *  dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_name (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->name;
-}
-
-static void
-update_name_version (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *title_string, *name_string;
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  title_string = g_strdup_printf (gettext_noop("About %s"), priv->name);
-  gtk_window_set_title (GTK_WINDOW (about), title_string);
-  g_free (title_string);
-
-  if (priv->version != NULL) 
-    name_string = g_markup_printf_escaped ("<span size=\"xx-large\" 
weight=\"bold\">%s %s</span>", 
-                                            priv->name, priv->version);
-  else
-    name_string = g_markup_printf_escaped ("<span size=\"xx-large\" 
weight=\"bold\">%s</span>", 
-                                          priv->name);
-
-  gtk_label_set_markup (GTK_LABEL (priv->name_label), name_string);
-
-  g_free (name_string);
-}
-
-/**
- * gtk_about_dialog_set_name:
- * @about: a #GtkAboutDialog
- * @name: the program name
- *
- * Sets the name to display in the about dialog. 
- * If this is not set, it defaults to g_get_application_name().
- * 
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_name (GtkAboutDialog *about, 
-                          const gchar    *name)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-       
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-  tmp = priv->name;
-  priv->name = g_strdup (name ? name : g_get_application_name ());
-  g_free (tmp);
-
-  update_name_version (about);
-
-  g_object_notify (G_OBJECT (about), "name");
-}
-
-/**
- * gtk_about_dialog_get_version:
- * @about: a #GtkAboutDialog
- * 
- * Returns the version string.
- * 
- * Return value: The version string. The string is owned by the about
- *  dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_version (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->version;
-}
-
-/**
- * gtk_about_dialog_set_version:
- * @about: a #GtkAboutDialog
- * @version: the version string 
- *
- * Sets the version string to display in the about dialog.
- * 
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_version (GtkAboutDialog *about, 
-                             const gchar    *version)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-  
-  tmp = priv->version;
-  priv->version = version ? g_strdup (version) : NULL;
-  g_free (tmp);
-
-  update_name_version (about);
-
-  g_object_notify (G_OBJECT (about), "version");
-}
-
-/**
- * gtk_about_dialog_get_copyright:
- * @about: a #GtkAboutDialog
- * 
- * Returns the copyright string.
- * 
- * Return value: The copyright string. The string is owned by the about
- *  dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_copyright (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->copyright;
-}
-
-/**
- * gtk_about_dialog_set_copyright:
- * @about: a #GtkAboutDialog
- * @copyright: the copyright string
- * 
- * Sets the copyright string to display in the about dialog.
- * This should be a short string of one or two lines. 
- *
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_copyright (GtkAboutDialog *about, 
-                               const gchar    *copyright)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *copyright_string, *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-       
-  tmp = priv->copyright;
-  priv->copyright = copyright ? g_strdup (copyright) : NULL;
-  g_free (tmp);
-  
-  if (priv->copyright != NULL) 
-    {
-      copyright_string = g_markup_printf_escaped ("<span 
size=\"small\">%s</span>", 
-                                                 priv->copyright);
-      gtk_label_set_markup (GTK_LABEL (priv->copyright_label), 
copyright_string);
-      g_free (copyright_string);
-  
-      gtk_widget_show (priv->copyright_label);
-    }
-  else 
-    gtk_widget_hide (priv->copyright_label);
-  
-  g_object_notify (G_OBJECT (about), "copyright");
-}
-
-/**
- * gtk_about_dialog_get_comments:
- * @about: a #GtkAboutDialog
- * 
- * Returns the comments string.
- * 
- * Return value: The comments. The string is owned by the about
- *  dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_comments (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->comments;
-}
-
-/**
- * gtk_about_dialog_set_comments:
- * @about: a #GtkAboutDialog
- * @comments: a comments string
- * 
- * Sets the comments string to display in the about 
- * dialog. This should be a short string of one or
- * two lines.
- *
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_comments (GtkAboutDialog *about, 
-                              const gchar    *comments)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-  
-  tmp = priv->comments;
-  if (comments) 
-    {
-      priv->comments = g_strdup (comments);
-      gtk_label_set_text (GTK_LABEL (priv->comments_label), priv->comments);
-      gtk_widget_show (priv->comments_label);
-    }
-  else
-    {
-      priv->comments = NULL;
-      gtk_widget_hide (priv->comments_label);
-    }
-  g_free (tmp);
-
-  g_object_notify (G_OBJECT (about), "comments");
-}
-
-/**
- * gtk_about_dialog_get_license:
- * @about: a #GtkAboutDialog
- * 
- * Returns the license information.
- * 
- * Return value: The license information. The string is owned by the about
- *  dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_license (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->license;
-}
-
-/**
- * gtk_about_dialog_set_license:
- * @about: a #GtkAboutDialog
- * @license: the license information or %NULL
- *
- * Sets the license information to be displayed in the secondary
- * license dialog. If @license is %NULL, the license button is
- * hidden.
- * 
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_license (GtkAboutDialog *about, 
-                             const gchar    *license)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  tmp = priv->license;
-  if (license) 
-    {
-      priv->license = g_strdup (license);
-      gtk_widget_show (priv->license_button);
-    }
-  else
-    {
-      priv->license = NULL;
-      gtk_widget_hide (priv->license_button);
-    }
-  g_free (tmp);
-
-  g_object_notify (G_OBJECT (about), "license");
-}
-
-/**
- * gtk_about_dialog_get_website:
- * @about: a #GtkAboutDialog
- * 
- * Returns the website URL.
- * 
- * Return value: The website URL. The string is owned by the about
- *  dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_website (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->website;
-}
-
-/**
- * gtk_about_dialog_set_website:
- * @about: a #GtkAboutDialog
- * @website: a URL string starting with "http://";
- * 
- * Sets the URL to use for the website link.
- *
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_website (GtkAboutDialog *about, 
-                             const gchar    *website)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-  
-  tmp = priv->website;
-  if (website != NULL)
-    {
-      priv->website = g_strdup (website);
-      if (activate_url_hook != NULL)
-       {
-         g_object_set_data_full (G_OBJECT (priv->website_button), 
-                                 "url", g_strdup (website), g_free);  
-         if (priv->website_label == NULL) 
-           gtk_about_dialog_set_website_label (about, website);
-       }
-      else 
-       {
-         GtkWidget *hbox = priv->website_button->parent;
-         gtk_widget_destroy (priv->website_button);
-         priv->website_button = gtk_label_new (website);
-         gtk_label_set_selectable (GTK_LABEL (priv->website_button), TRUE);
-         gtk_container_add (GTK_CONTAINER (hbox), priv->website_button);
-         gtk_widget_show (priv->website_button);
-       }
-    }
-  else 
-    {
-      priv->website = NULL;
-      g_object_set_data (G_OBJECT (priv->website_button), "url", NULL);
-    }
-  g_free (tmp);
-
-  g_object_notify (G_OBJECT (about), "website");
-}
-
-/**
- * gtk_about_dialog_get_website_label:
- * @about: a #GtkAboutDialog
- * 
- * Returns the label used for the website link. 
- * 
- * Return value: The label used for the website link. The string is owned by 
the about
- *  dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_website_label (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->website_label;
-}
-
-/**
- * gtk_about_dialog_set_website_label:
- * @about: a #GtkAboutDialog
- * @website_label: the label used for the website link
- * 
- * Sets the label to be used for the website link.
- * It defaults to the website URL.
- *
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_website_label (GtkAboutDialog *about, 
-                                   const gchar    *website_label)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  tmp = priv->website_label;
-  if (activate_url_hook != NULL)
-    {
-      if (website_label != NULL) 
-       {
-         priv->website_label = g_strdup (website_label);
-         set_link_button_text (GTK_WIDGET (about),
-                               priv->website_button, 
-                               priv->website_label);
-         gtk_widget_show (priv->website_button);
-       }
-      else 
-       {
-         priv->website_label = NULL;
-         gtk_widget_hide (priv->website_button);
-       }
-    }
-  g_free (tmp);
-
-  g_object_notify (G_OBJECT (about), "website_label");
-}
-
-/**
- * gtk_about_dialog_get_authors:
- * @about: a #GtkAboutDialog
- * 
- * Returns the string which are displayed in the authors tab
- * of the secondary credits dialog.
- * 
- * Return value: A %NULL-terminated string array containing
- *  the authors. The array is owned by the about dialog 
- *  and must not be modified.
- *
- * Since: 2.6
- **/
-gchar **
-gtk_about_dialog_get_authors (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->authors;
-}
-
-/**
- * gtk_about_dialog_set_authors:
- * @about: a #GtkAboutDialog
- * @authors: a %NULL-terminated array of strings 
- *
- * Sets the strings which are displayed in the authors tab
- * of the secondary credits dialog. 
- * 
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_authors (GtkAboutDialog  *about, 
-                             gchar          **authors)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar **tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  tmp = priv->authors;
-  priv->authors = g_strdupv (authors);
-  g_strfreev (tmp);
-
-  if (priv->authors != NULL)
-    gtk_widget_show (priv->credits_button);
-
-  g_object_notify (G_OBJECT (about), "authors");
-}
-
-/**
- * gtk_about_dialog_get_documenters:
- * @about: a #GtkAboutDialog
- * 
- * Returns the string which are displayed in the documenters 
- * tab of the secondary credits dialog.
- * 
- * Return value: A %NULL-terminated string array containing
- *  the documenters. The array is owned by the about dialog 
- *  and must not be modified.
- *
- * Since: 2.6
- **/
-gchar **
-gtk_about_dialog_get_documenters (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->documenters;
-}
-
-/**
- * gtk_about_dialog_set_documenters:
- * @about: a #GtkAboutDialog
- * @authors: a %NULL-terminated array of strings 
- *
- * Sets the strings which are displayed in the documenters tab
- * of the secondary credits dialog. 
- * 
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_documenters (GtkAboutDialog *about, 
-                                 gchar         **documenters)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar **tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-  
-  tmp = priv->documenters;
-  priv->documenters = g_strdupv (documenters);
-  g_strfreev (tmp);
-
-  if (priv->documenters != NULL)
-    gtk_widget_show (priv->credits_button);
-
-  g_object_notify (G_OBJECT (about), "documenters");
-}
-
-/**
- * gtk_about_dialog_get_artists:
- * @about: a #GtkAboutDialog
- * 
- * Returns the string which are displayed in the artists tab
- * of the secondary credits dialog.
- * 
- * Return value: A %NULL-terminated string array containing
- *  the artists. The array is owned by the about dialog 
- *  and must not be modified.
- *
- * Since: 2.6
- **/
-gchar **
-gtk_about_dialog_get_artists (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->artists;
-}
-
-/**
- * gtk_about_dialog_set_artists:
- * @about: a #GtkAboutDialog
- * @authors: a %NULL-terminated array of strings 
- *
- * Sets the strings which are displayed in the artists tab
- * of the secondary credits dialog. 
- * 
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_artists (GtkAboutDialog *about, 
-                             gchar         **artists)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar **tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-  
-  tmp = priv->artists;
-  priv->artists = g_strdupv (artists);
-  g_strfreev (tmp);
-
-  if (priv->artists != NULL)
-    gtk_widget_show (priv->credits_button);
-
-  g_object_notify (G_OBJECT (about), "artists");
-}
-
-/**
- * gtk_about_dialog_get_translator_credits:
- * @about: a #GtkAboutDialog
- * 
- * Returns the translator credits string which is displayed
- * in the translators tab of the secondary credits dialog.
- * 
- * Return value: The translator credits string. The string is
- *   owned by the about dialog and must not be modified.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar *
-gtk_about_dialog_get_translator_credits (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return priv->translator_credits;
-}
-
-/**
- * gtk_about_dialog_set_translator_credits:
- * @about: a #GtkAboutDialog
- * @translator_credits: the translator credits
- * 
- * Sets the translator credits string which is displayed in
- * the translators tab of the secondary credits dialog.
- * 
- * The intended use for this string is to display the translator
- * of the language which is currently used in the user interface.
- * Using gettext(), a simple way to achieve that is to mark the
- * string for translation:
- * <informalexample><programlisting>
- *  gtk_about_dialog_set_translator_credits (about, _("translator-credits"));
- * </programlisting></informalexample>
- *
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_translator_credits (GtkAboutDialog *about, 
-                                        const gchar    *translator_credits)
-{
-  GtkAboutDialogPrivate *priv;
-  gchar *tmp;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  tmp = priv->translator_credits;
-  priv->translator_credits = g_strdup (translator_credits);
-  g_free (tmp);
-
-  if (priv->translator_credits != NULL)
-    gtk_widget_show (priv->credits_button);
-
-  g_object_notify (G_OBJECT (about), "translator-credits");
-}
-
-/**
- * gtk_about_dialog_get_logo:
- * @about: a #GtkAboutDialog
- * 
- * Returns the pixbuf displayed as logo in the about dialog.
- * 
- * Return value: the pixbuf displayed as logo. The pixbuf is
- *   owned by the about dialog. If you want to keep a reference
- *   to it, you have to call g_object_ref() on it.
- *
- * Since: 2.6
- **/
-GdkPixbuf *
-gtk_about_dialog_get_logo (GtkAboutDialog *about)
-{
-  GtkAboutDialogPrivate *priv;
-  
-  g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  return gtk_image_get_pixbuf (GTK_IMAGE (priv->logo_image));
-}
-
-static GtkIconSet *
-icon_set_new_from_pixbufs (GList *pixbufs)
-{
-  GtkIconSet *icon_set = gtk_icon_set_new ();
-  
-  for (; pixbufs; pixbufs = pixbufs->next)
-    {
-      GdkPixbuf *pixbuf = GDK_PIXBUF (pixbufs->data);
-
-      GtkIconSource *icon_source = gtk_icon_source_new ();
-      gtk_icon_source_set_pixbuf (icon_source, pixbuf);
-      gtk_icon_set_add_source (icon_set, icon_source);
-    }
-  
-  return icon_set;
-}
-
-/**
- * gtk_about_dialog_set_logo:
- * @about: a #GtkAboutDialog
- * @pixbuf: a #GdkPixbuf, or %NULL
- * 
- * Sets the pixbuf to be displayed as logo in 
- * the about dialog. If it is %NULL, the default
- * window icon set with gtk_window_set_default_icon ()
- * will be used.
- *
- * Since: 2.6
- **/
-void
-gtk_about_dialog_set_logo (GtkAboutDialog *about,
-                          GdkPixbuf      *pixbuf)
-{
-  GtkAboutDialogPrivate *priv;
-
-  g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
-
-  priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  if (pixbuf != NULL) 
-    gtk_image_set_from_pixbuf (GTK_IMAGE (priv->logo_image), pixbuf);
-  else 
-    {
-      GList *pixbufs = gtk_window_get_default_icon_list ();
-
-      if (pixbufs != NULL)
-       {
-         GtkIconSet *icon_set = icon_set_new_from_pixbufs (pixbufs); 
-         
-         gtk_image_set_from_icon_set (GTK_IMAGE (priv->logo_image),
-                                      icon_set, GTK_ICON_SIZE_DIALOG);
-         
-         gtk_icon_set_unref (icon_set);
-         g_list_free (pixbufs);
-       }
-    }
-
-  g_object_notify (G_OBJECT (about), "logo");
-}
-
-static void
-activate_url (GtkWidget *widget, 
-             gpointer   data)
-{
-  GtkAboutDialog *about = GTK_ABOUT_DIALOG (data);
-  gchar *url = g_object_get_data (G_OBJECT (widget), "url");
-  
-  if (activate_url_hook != NULL)
-    (* activate_url_hook) (about, url);
-}
-
-static void
-set_link_button_text (GtkWidget *about,
-                     GtkWidget *button, 
-                     gchar     *text)
-{
-  GtkWidget *label;
-  gchar *link;
-  GdkColor *style_link_color;
-  GdkColor link_color = { 0, 0, 0, 0xffff };
-
-  gtk_widget_ensure_style (about);
-  gtk_widget_style_get (about, "link_color", &style_link_color, NULL);
-  if (style_link_color)
-    {
-      link_color = *style_link_color;
-      gdk_color_free (style_link_color);
-    }
-
-  link = g_markup_printf_escaped ("<span foreground=\"#%04x%04x%04x\" 
underline=\"single\">%s</span>", 
-                                 link_color.red, link_color.green, 
link_color.blue, text);
-
-  label = gtk_bin_get_child (GTK_BIN (button));  
-  gtk_label_set_markup (GTK_LABEL (label), link);
-  g_free (link);
-}
-
-static GtkWidget *
-create_link_button (GtkWidget *about,
-                   gchar     *text,
-                   gchar     *url, 
-                   GCallback  callback, 
-                   gpointer   data)
-{
-  GtkWidget *button;
-
-  button = gtk_button_new_with_label ("");
-  GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT);
-  gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
-
-  g_object_set_data_full (G_OBJECT (button), "url", g_strdup (url), g_free);
-  set_link_button_text (about, button, text);
-  
-  g_signal_connect (G_OBJECT (button), "clicked", callback, data);
-
-  return button;
-}
-
-static void
-follow_if_link (GtkAboutDialog *about,
-               GtkTextIter    *iter)
-{
-  GSList *tags = NULL, *tagp = NULL;
-
-  tags = gtk_text_iter_get_tags (iter);
-  for (tagp = tags;  tagp != NULL;  tagp = tagp->next)
-    {
-      GtkTextTag *tag = tagp->data;
-      gchar *email = g_object_get_data (G_OBJECT (tag), "email");
-      gchar *url = g_object_get_data (G_OBJECT (tag), "url");
-
-      if (email != NULL && activate_email_hook != NULL)
-        {
-         (* activate_email_hook) (about, email);
-         break;
-        }
-
-      if (url != NULL && activate_url_hook != NULL)
-        {
-         (* activate_url_hook) (about, url);
-         break;
-        }
-    }
-
-  if (tags) 
-    g_slist_free (tags);
-}
-
-static gboolean
-credits_key_press_event (GtkWidget      *text_view,
-                        GdkEventKey    *event,
-                        GtkAboutDialog *about)
-{
-  GtkTextIter iter;
-  GtkTextBuffer *buffer;
-
-  switch (event->keyval)
-    {
-      case GDK_Return: 
-      case GDK_KP_Enter:
-        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
-        gtk_text_buffer_get_iter_at_mark (buffer, &iter, 
-                                          gtk_text_buffer_get_insert (buffer));
-        follow_if_link (about, &iter);
-        break;
-
-      default:
-        break;
-    }
-
-  return FALSE;
-}
-
-static gboolean
-credits_event_after (GtkWidget      *text_view,
-                    GdkEvent       *event,
-                    GtkAboutDialog *about)
-{
-  GtkTextIter start, end, iter;
-  GtkTextBuffer *buffer;
-  GdkEventButton *button_event;
-  gint x, y;
-
-  if (event->type != GDK_BUTTON_RELEASE)
-    return FALSE;
-
-  button_event = (GdkEventButton *)event;
-
-  if (button_event->button != 1)
-    return FALSE;
-
-  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
-
-  /* we shouldn't follow a link if the user has selected something */
-  gtk_text_buffer_get_selection_bounds (buffer, &start, &end);
-  if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end))
-    return FALSE;
-
-  gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view), 
-                                         GTK_TEXT_WINDOW_WIDGET,
-                                         button_event->x, button_event->y, &x, 
&y);
-
-  gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (text_view), &iter, x, y);
-
-  follow_if_link (about, &iter);
-
-  return FALSE;
-}
-
-static void
-set_cursor_if_appropriate (GtkAboutDialog *about,
-                          GtkTextView    *text_view,
-                          gint            x,
-                          gint            y)
-{
-  GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
-  GSList *tags = NULL, *tagp = NULL;
-  GtkTextBuffer *buffer;
-  GtkTextIter iter;
-  gboolean hovering_over_link = FALSE;
-
-  buffer = gtk_text_view_get_buffer (text_view);
-
-  gtk_text_view_get_iter_at_location (text_view, &iter, x, y);
-  
-  tags = gtk_text_iter_get_tags (&iter);
-  for (tagp = tags;  tagp != NULL;  tagp = tagp->next)
-    {
-      GtkTextTag *tag = tagp->data;
-      gchar *email = g_object_get_data (G_OBJECT (tag), "email");
-      gchar *url = g_object_get_data (G_OBJECT (tag), "url");
-
-      if (email != NULL || url != NULL) 
-        {
-          hovering_over_link = TRUE;
-          break;
-        }
-    }
-
-  if (hovering_over_link != priv->hovering_over_link)
-    {
-      priv->hovering_over_link = hovering_over_link;
-
-      if (hovering_over_link)
-        gdk_window_set_cursor (gtk_text_view_get_window (text_view, 
GTK_TEXT_WINDOW_TEXT), priv->hand_cursor);
-      else
-        gdk_window_set_cursor (gtk_text_view_get_window (text_view, 
GTK_TEXT_WINDOW_TEXT), priv->regular_cursor);
-    }
-
-  if (tags) 
-    g_slist_free (tags);
-}
-
-static gboolean
-credits_motion_notify_event (GtkWidget *text_view,
-                            GdkEventMotion *event,
-                            GtkAboutDialog *about)
-{
-  gint x, y;
-
-  gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view), 
-                                         GTK_TEXT_WINDOW_WIDGET,
-                                         event->x, event->y, &x, &y);
-
-  set_cursor_if_appropriate (about, GTK_TEXT_VIEW (text_view), x, y);
-
-  gdk_window_get_pointer (text_view->window, NULL, NULL, NULL);
-
-  return FALSE;
-}
-
-
-static gboolean
-credits_visibility_notify_event (GtkWidget          *text_view,
-                                GdkEventVisibility *event,
-                                GtkAboutDialog     *about)
-{
-  gint wx, wy, bx, by;
-
-  gdk_window_get_pointer (text_view->window, &wx, &wy, NULL);
-
-  gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view), 
-                                         GTK_TEXT_WINDOW_WIDGET,
-                                         wx, wy, &bx, &by);
-
-  set_cursor_if_appropriate (about, GTK_TEXT_VIEW (text_view), bx, by);
-
-  return FALSE;
-}
-
-static void
-add_credits_page (GtkAboutDialog *about, 
-                 GtkWidget      *notebook,
-                 gchar          *title,
-                 gchar         **people)
-{
-  gchar **p;
-  gchar *q0, *q1, *q2, *r1, *r2;
-  GtkWidget *sw, *view;
-  GtkTextBuffer *buffer;
-  GtkStyle *style;
-  gboolean linkify_email, linkify_urls;
-  GdkColor *style_link_color;
-  GdkColor link_color = { 0, 0, 0, 0xffff };
-
-  linkify_email = (activate_email_hook != NULL);
-  linkify_urls = (activate_url_hook != NULL);
-
-  gtk_widget_ensure_style (GTK_WIDGET (about));
-  gtk_widget_style_get (GTK_WIDGET (about), "link_color", &style_link_color, 
NULL);
-  if (style_link_color)
-    {
-      link_color = *style_link_color;
-      gdk_color_free (style_link_color);
-    }
-
-  view = gtk_text_view_new ();
-  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-  gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
-  gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
-  gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 8);
-  gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 8);
-
-  g_signal_connect (G_OBJECT (view), "key-press-event",
-                    G_CALLBACK (credits_key_press_event), about);
-  g_signal_connect (G_OBJECT (view), "event-after",
-                    G_CALLBACK (credits_event_after), about);
-  g_signal_connect (G_OBJECT (view), "motion-notify-event", 
-                    G_CALLBACK (credits_motion_notify_event), about);
-  g_signal_connect (G_OBJECT (view), "visibility-notify-event", 
-                    G_CALLBACK (credits_visibility_notify_event), about);
-
-  style = gtk_widget_get_style (view);
-  gtk_widget_modify_base (view, GTK_STATE_NORMAL, 
-                         &style->base[GTK_STATE_INSENSITIVE]);
-
-  sw = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
-                                 GTK_POLICY_AUTOMATIC,
-                                 GTK_POLICY_AUTOMATIC);
-  gtk_container_add (GTK_CONTAINER (sw), view);
-  
-  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), 
-                           sw, gtk_label_new (title));
-
-  if (people == NULL) 
-    {
-      gtk_widget_hide (view);
-      return;
-    }
-  else 
-    gtk_widget_show (view);
-  
-  for (p = people; *p; p++) 
-    {
-      q0  = *p;
-      while (*q0) 
-       {
-         q1 = linkify_email ? strchr (q0, '<') : NULL;
-         q2 = q1 ? strchr (q1, '>') : NULL;
-         r1 = linkify_urls ? strstr (q0, "http://";) : NULL;
-         r2 = r1 ? (strpbrk (r1, " \n\t") ? : strchr (r1, '\0')) : NULL;
-
-         if (r1 && r2 && (!q1 || !q2 || (r1 < q1))) 
-           {
-             q1 = r1;
-             q2 = r2;
-           }
-
-         if (q1 && q2) 
-           {
-             GtkTextIter end;
-             gchar *link;
-             gchar *link_type;
-             GtkTextTag *tag;
-             
-             gtk_text_buffer_insert_at_cursor (buffer, q0, q1 - q0);
-             gtk_text_buffer_get_end_iter (buffer, &end);
-
-             q0 = q2;
-
-             if (*q1 == '<') 
-               {
-                 q1++;
-                 q0++;
-                 link_type = "email";
-               }
-             else 
-               link_type = "url";
-             
-             link = g_strndup (q1, q2 - q1);
-             tag = gtk_text_buffer_create_tag (buffer, NULL, 
-                                               "foreground_gdk", &link_color, 
-                                               "underline", 
PANGO_UNDERLINE_SINGLE, 
-                                               NULL);
-             g_object_set_data_full (G_OBJECT (tag), link_type, g_strdup 
(link), g_free);
-             gtk_text_buffer_insert_with_tags (buffer, &end, link, -1, tag, 
NULL);
-
-             g_free (link);
-           }
-         else
-           {
-             gtk_text_buffer_insert_at_cursor (buffer, q0, -1);
-             break;
-           }
-       }
-      
-      if (p[1])
-       gtk_text_buffer_insert_at_cursor (buffer, "\n", 1);
-    }
-}
-
-static void
-display_credits_dialog (GtkWidget *button, 
-                       gpointer   data)
-{
-  GtkAboutDialog *about = (GtkAboutDialog *)data;
-  GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
-  GtkWidget *dialog, *notebook;
-
-  if (priv->credits_dialog != NULL)
-    {
-      gtk_window_present (GTK_WINDOW (priv->credits_dialog));
-      return;
-    }
-       
-  dialog = gtk_dialog_new_with_buttons (gettext_noop("Credits"),
-                                       GTK_WINDOW (about),
-                                       GTK_DIALOG_DESTROY_WITH_PARENT,
-                                       GTK_STOCK_OK, GTK_RESPONSE_OK,
-                                       NULL);
-  priv->credits_dialog = dialog;
-  gtk_window_set_default_size (GTK_WINDOW (dialog), 360, 260);
-  gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
-  gtk_window_set_modal (GTK_WINDOW (dialog), 
-                       gtk_window_get_modal (GTK_WINDOW (about)));
-
-  g_signal_connect (dialog, "response",
-                   G_CALLBACK (gtk_widget_destroy), dialog);
-  g_signal_connect (dialog, "destroy",
-                   G_CALLBACK (gtk_widget_destroyed),
-                   &(priv->credits_dialog));
-
-  notebook = gtk_notebook_new ();
-  gtk_container_set_border_width (GTK_CONTAINER (notebook), 8);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), notebook, TRUE, 
TRUE, 0);
-
-  if (priv->authors != NULL) 
-    add_credits_page (about, notebook, gettext_noop("Written by"), 
priv->authors);
-  
-  if (priv->documenters != NULL)
-    add_credits_page (about, notebook, gettext_noop("Documented by"), 
priv->documenters);
-    
-  if (priv->translator_credits != NULL) 
-    {
-      gchar *translators[2];
-      
-      translators[0] = priv->translator_credits;
-      translators[1] = NULL;
-
-      add_credits_page (about, notebook, gettext_noop("Translated by"), 
translators);
-    }
-
-  if (priv->artists != NULL) 
-    add_credits_page (about, notebook, gettext_noop("Artwork by"), 
priv->artists);
-  
-  gtk_widget_show_all (dialog);
-}
-
-static void
-display_license_dialog (GtkWidget *button, 
-                       gpointer   data)
-{
-  GtkAboutDialog *about = (GtkAboutDialog *)data;
-  GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
-  GtkWidget *dialog, *view, *sw;
-
-  if (priv->license_dialog != NULL)
-    {
-      gtk_window_present (GTK_WINDOW (priv->license_dialog));
-      return;
-    }
-       
-  dialog = gtk_dialog_new_with_buttons (gettext_noop("License"),
-                                       GTK_WINDOW (about),
-                                       GTK_DIALOG_DESTROY_WITH_PARENT,
-                                       GTK_STOCK_OK, GTK_RESPONSE_OK,
-                                       NULL);
-  priv->license_dialog = dialog;
-  gtk_window_set_default_size (GTK_WINDOW (dialog), 420, 320);
-  gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
-  gtk_window_set_modal (GTK_WINDOW (dialog), 
-                       gtk_window_get_modal (GTK_WINDOW (about)));
-
-  g_signal_connect (dialog, "response",
-                   G_CALLBACK (gtk_widget_destroy), dialog);
-  g_signal_connect (dialog, "destroy",
-                   G_CALLBACK (gtk_widget_destroyed),
-                   &(priv->license_dialog));
-
-  sw = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
-                                 GTK_POLICY_AUTOMATIC,
-                                 GTK_POLICY_AUTOMATIC);
-  gtk_container_set_border_width (GTK_CONTAINER (sw), 8);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), sw, TRUE, TRUE, 0);
-
-  view = gtk_text_view_new ();
-  gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)), 
-                           priv->license, -1);
-
-  gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
-  gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
-  gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 8);
-  gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 8);
-
-  gtk_container_add (GTK_CONTAINER (sw), view);
-
-  gtk_widget_show_all (dialog);
-}
-
-/**
- * gtk_about_dialog_new:
- *
- * Creates a new #GtkAboutDialog.
- *
- * Returns: a newly created #GtkAboutDialog
- *
- * Since: 2.6
- */
-GtkWidget *
-gtk_about_dialog_new (void)
-{
-  GtkAboutDialog *dialog = GTK_ABOUT_DIALOG (g_object_new 
(GTK_TYPE_ABOUT_DIALOG, NULL));
-
-  /* force defaults */
-  gtk_about_dialog_set_name (dialog, NULL);
-  gtk_about_dialog_set_logo (dialog, NULL);
-
-  /* Close dialog on user response */
-  g_signal_connect (G_OBJECT (dialog),
-                    "response",
-                    G_CALLBACK (gtk_widget_hide),
-                    NULL);
-
-  return GTK_WIDGET (dialog);
-}
-
-/**
- * gtk_about_dialog_set_email_hook:
- * @func: a function to call when an email link is activated.
- * 
- * Installs a global function to be called whenever the user activates an
- * email link in an about dialog. 
- * 
- * Return value: the previous email hook.
- *
- * Since: 2.6
- */
-GtkAboutDialogActivateLinkFunc      
-gtk_about_dialog_set_email_hook (GtkAboutDialogActivateLinkFunc func)
-{
-  GtkAboutDialogActivateLinkFunc old;
-
-  old = activate_email_hook;
-
-  activate_email_hook = func;
-
-  return old;
-}
-
-/**
- * gtk_about_dialog_set_email_hook:
- * @func: a function to call when a URL link is activated.
- * 
- * Installs a global function to be called whenever the user activates a
- * URL link in an about dialog.
- * 
- * Return value: the previous URL hook.
- *
- * Since: 2.6
- */
-GtkAboutDialogActivateLinkFunc      
-gtk_about_dialog_set_url_hook (GtkAboutDialogActivateLinkFunc func)
-{
-  GtkAboutDialogActivateLinkFunc old;
-
-  old = activate_url_hook;
-
-  activate_url_hook = func;
-
-  return old;
-}
-
-/**
- * gtk_show_about_dialog:
- * @parent: transient parent, or %NULL for none
- * @first_property_name: the name of the first property 
- * @Varargs: value of first property, followed by more properties, 
%NULL-terminated
- *
- * This is a convenience function for showing an application's about box.
- *
- * Since: 2.6
- */
-void
-gtk_show_about_dialog (GtkWindow   *parent,
-                      const gchar *first_property_name,
-                      ...)
-{
-  static GtkWidget *global_about_dialog = NULL;
-  GtkWidget *dialog = NULL;
-  va_list var_args;
-
-  if (parent)
-    dialog = g_object_get_data (G_OBJECT (parent), "gtk-about-dialog");
-  else 
-    dialog = global_about_dialog;
-
-  if (!dialog) 
-    {
-      dialog = gtk_about_dialog_new ();
-
-      g_object_ref (G_OBJECT (dialog));
-      gtk_object_sink (GTK_OBJECT (dialog));
-
-      g_signal_connect (dialog, "delete_event", G_CALLBACK 
(gtk_widget_hide_on_delete), NULL);
-
-      va_start (var_args, first_property_name);
-      g_object_set_valist (G_OBJECT (dialog), first_property_name, var_args);
-      va_end (var_args);
-
-      if (parent) 
-       {
-         gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
-         g_object_set_data_full (G_OBJECT (parent), "gtk-about-dialog", 
-                                 dialog, g_object_unref);
-       }
-      else 
-       global_about_dialog = dialog;
-      
-    }
-  
-  gtk_window_present (GTK_WINDOW (dialog));
-}
-
-
-
-
-
-
-

Deleted: gnunet-gtk/src/gtk26about.h
===================================================================
--- gnunet-gtk/src/gtk26about.h 2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/src/gtk26about.h 2005-05-29 10:47:47 UTC (rev 828)
@@ -1,117 +0,0 @@
-/* This code was copied from GTK (2.6/CVS).
-
-   GTK - The GIMP Toolkit
-
-   Copyright (C) 2001 CodeFactory AB
-   Copyright (C) 2001 Anders Carlsson <address@hidden>
-   Copyright (C) 2003, 2004 Matthias Clasen <address@hidden>
-
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the Gnome Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.
-
-   Author: Anders Carlsson <address@hidden>
-
-*/
-
-#ifndef __GTK_ABOUT_DIALOG_H__
-#define __GTK_ABOUT_DIALOG_H__
-
-#include <gtk/gtkdialog.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_ABOUT_DIALOG            (gtk_about_dialog_get_type ())
-#define GTK_ABOUT_DIALOG(object)         (G_TYPE_CHECK_INSTANCE_CAST 
((object), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialog))
-#define GTK_ABOUT_DIALOG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), 
GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogClass))
-#define GTK_IS_ABOUT_DIALOG(object)      (G_TYPE_CHECK_INSTANCE_TYPE 
((object), GTK_TYPE_ABOUT_DIALOG))
-#define GTK_IS_ABOUT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
GTK_TYPE_ABOUT_DIALOG))
-#define GTK_ABOUT_DIALOG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), 
GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogClass))
-
-typedef struct _GtkAboutDialog        GtkAboutDialog;
-typedef struct _GtkAboutDialogClass   GtkAboutDialogClass;
-
-struct _GtkAboutDialog 
-{
-  GtkDialog parent_instance;
-
-  /*< private >*/
-  gpointer private_data;
-};
-
-struct _GtkAboutDialogClass 
-{
-  GtkDialogClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gtk_reserved1) (void);
-  void (*_gtk_reserved2) (void);
-  void (*_gtk_reserved3) (void);
-  void (*_gtk_reserved4) (void);
-};
-
-GType                  gtk_about_dialog_get_type               (void) 
G_GNUC_CONST;
-GtkWidget             *gtk_about_dialog_new                    (void);
-void                   gtk_show_about_dialog                   (GtkWindow      
 *parent,
-                                                               const gchar     
*first_property_name,
-                                                               ...);
-
-G_CONST_RETURN gchar  *gtk_about_dialog_get_name               (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_name               (GtkAboutDialog 
 *about,
-                                                               const gchar     
*name);
-G_CONST_RETURN gchar  *gtk_about_dialog_get_version            (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_version            (GtkAboutDialog 
 *about,
-                                                               const gchar     
*version);
-G_CONST_RETURN gchar  *gtk_about_dialog_get_copyright          (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_copyright          (GtkAboutDialog 
 *about,
-                                                               const gchar     
*copyright);
-G_CONST_RETURN gchar  *gtk_about_dialog_get_comments           (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_comments           (GtkAboutDialog 
 *about,
-                                                               const gchar     
*comments);
-G_CONST_RETURN gchar  *gtk_about_dialog_get_license            (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_license            (GtkAboutDialog 
 *about,
-                                                               const gchar     
*license);
-G_CONST_RETURN gchar  *gtk_about_dialog_get_website            (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_website            (GtkAboutDialog 
 *about,
-                                                               const gchar     
*website);
-G_CONST_RETURN gchar  *gtk_about_dialog_get_website_label      (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_website_label      (GtkAboutDialog 
 *about,
-                                                               const gchar     
*website_label);
-gchar                **gtk_about_dialog_get_authors            (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_authors            (GtkAboutDialog 
 *about,
-                                                               gchar          
**authors);
-gchar                **gtk_about_dialog_get_documenters        (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_documenters        (GtkAboutDialog 
 *about,
-                                                               gchar          
**documenters);
-gchar **               gtk_about_dialog_get_artists            (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_artists            (GtkAboutDialog 
 *about,
-                                                               gchar          
**artists);
-G_CONST_RETURN gchar  *gtk_about_dialog_get_translator_credits (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_translator_credits (GtkAboutDialog 
 *about,
-                                                               const gchar     
*translator_credits);
-GdkPixbuf             *gtk_about_dialog_get_logo               (GtkAboutDialog 
 *about);
-void                   gtk_about_dialog_set_logo               (GtkAboutDialog 
 *about,
-                                                               GdkPixbuf       
*logo);
-
-typedef void (* GtkAboutDialogActivateLinkFunc) (GtkAboutDialog *about,
-                                                const gchar    *link);
-
-GtkAboutDialogActivateLinkFunc gtk_about_dialog_set_email_hook 
(GtkAboutDialogActivateLinkFunc func);
-GtkAboutDialogActivateLinkFunc gtk_about_dialog_set_url_hook   
(GtkAboutDialogActivateLinkFunc func);
-
-G_END_DECLS
-
-#endif /* __GTK_ABOUT_DIALOG_H__ */
-
-

Modified: gnunet-gtk/todo
===================================================================
--- gnunet-gtk/todo     2005-05-28 18:20:32 UTC (rev 827)
+++ gnunet-gtk/todo     2005-05-29 10:47:47 UTC (rev 828)
@@ -2,10 +2,8 @@
 * figure out how list views work
 * basic FS integration:
   - search:
-    + properly get page from glade window
-    + properly initialize tree view
     + process search result events
-    + process search frame close event
+    + process search frame close event (memory leak)
     + support namespace URIs
     + update namespace list combo box
   - insert 
@@ -17,6 +15,7 @@
 * available apps
 
 Later:
+* add widgets to allow anonymity level specification
 * more help-texts
 * pop-up dialogs
 * chat
@@ -24,7 +23,8 @@
 
 
 gnunet-gtk wishlist (from pre-0.7.0 days):
-
+- #770? (use freedback (LOG) in gnunet-gtk via show-messages)
+  (is this not working nicely already?)
 - while (!) downloading directory, display already received results
   for download (now supported by libecrs!)
 - add option to list all indexed files and perhaps delete from them





reply via email to

[Prev in Thread] Current Thread [Next in Thread]