[Top][All Lists]
[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"><span
size="x-large">Welcome to gnunet-gtk 0.7.0</span>
+ <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"><span size="x-large">Welcome to gnunet-gtk
0.7.0</span></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 "Program",
below,
+refers to any such program or work, and a "work based on the Program"
+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 "modification".) Each licensee is addressed as
"you".
+
+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 "any
+later version", 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 "AS IS" 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 <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>
+</property>
+ <property name="documenters">Christian Grothoff <address@hidden>
+Nils Durner <address@hidden></property>
+ <property name="artists">Christian Muellner <address@hidden>
+Alex Jones <address@hidden></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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [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,
grothoff <=