aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac4
-rw-r--r--gnunet-gtk.glade1139
-rw-r--r--src/Makefile.am1
-rw-r--r--src/about.c103
-rw-r--r--src/fs.c2
-rw-r--r--src/gtk26about.c1846
-rw-r--r--src/gtk26about.h117
-rw-r--r--todo8
8 files changed, 862 insertions, 2358 deletions
diff --git a/configure.ac b/configure.ac
index 294d0e1a..aafd3abd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -44,9 +44,9 @@ AC_CANONICAL_HOST
44AC_SYS_LARGEFILE 44AC_SYS_LARGEFILE
45AC_FUNC_FSEEKO 45AC_FUNC_FSEEKO
46 46
47# check for gtk >= 2.4.0 47# check for gtk >= 2.6.0
48AC_MSG_CHECKING(for gtk) 48AC_MSG_CHECKING(for gtk)
49AM_PATH_GTK_2_0(2.4.0,without_gtk=false,without_gtk=true) 49AM_PATH_GTK_2_0(2.6.0,without_gtk=false,without_gtk=true)
50AM_CONDITIONAL(HAVE_GTK, test x$without_gtk != xtrue) 50AM_CONDITIONAL(HAVE_GTK, test x$without_gtk != xtrue)
51if test $without_gtk != true 51if test $without_gtk != true
52then 52then
diff --git a/gnunet-gtk.glade b/gnunet-gtk.glade
index ec7193bc..1d38e805 100644
--- a/gnunet-gtk.glade
+++ b/gnunet-gtk.glade
@@ -17,6 +17,7 @@
17 <property name="skip_pager_hint">False</property> 17 <property name="skip_pager_hint">False</property>
18 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> 18 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
19 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> 19 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
20 <property name="focus_on_map">True</property>
20 <signal name="delete_event" handler="gtk_main_quit" after="yes"/> 21 <signal name="delete_event" handler="gtk_main_quit" after="yes"/>
21 22
22 <child> 23 <child>
@@ -26,48 +27,6 @@
26 <property name="spacing">0</property> 27 <property name="spacing">0</property>
27 28
28 <child> 29 <child>
29 <widget class="GtkMenuBar" id="main_app_menubar">
30 <property name="visible">True</property>
31
32 <child>
33 <widget class="GtkImageMenuItem" id="quit1">
34 <property name="visible">True</property>
35 <property name="label">gtk-quit</property>
36 <property name="use_stock">True</property>
37 <signal name="activate" handler="gtk_main_quit"/>
38 </widget>
39 </child>
40
41 <child>
42 <widget class="GtkImageMenuItem" id="help1">
43 <property name="visible">True</property>
44 <property name="label">gtk-help</property>
45 <property name="use_stock">True</property>
46
47 <child>
48 <widget class="GtkMenu" id="help1_menu">
49
50 <child>
51 <widget class="GtkImageMenuItem" id="about">
52 <property name="visible">True</property>
53 <property name="label">gtk-about</property>
54 <property name="use_stock">True</property>
55 <signal name="activate" handler="on_about_clicked"/>
56 </widget>
57 </child>
58 </widget>
59 </child>
60 </widget>
61 </child>
62 </widget>
63 <packing>
64 <property name="padding">0</property>
65 <property name="expand">False</property>
66 <property name="fill">False</property>
67 </packing>
68 </child>
69
70 <child>
71 <widget class="GtkNotebook" id="mainnotebook"> 30 <widget class="GtkNotebook" id="mainnotebook">
72 <property name="visible">True</property> 31 <property name="visible">True</property>
73 <property name="can_focus">True</property> 32 <property name="can_focus">True</property>
@@ -92,9 +51,72 @@
92 <property name="shadow_type">GTK_SHADOW_IN</property> 51 <property name="shadow_type">GTK_SHADOW_IN</property>
93 52
94 <child> 53 <child>
95 <widget class="GtkLabel" id="label75"> 54 <widget class="GtkVBox" id="vbox14">
96 <property name="visible">True</property> 55 <property name="visible">True</property>
97 <property name="label" translatable="yes">&lt;span size=&quot;x-large&quot;&gt;Welcome to gnunet-gtk 0.7.0&lt;/span&gt; 56 <property name="homogeneous">False</property>
57 <property name="spacing">0</property>
58
59 <child>
60 <widget class="GtkHBox" id="hbox24">
61 <property name="visible">True</property>
62 <property name="homogeneous">False</property>
63 <property name="spacing">0</property>
64
65 <child>
66 <widget class="GtkButton" id="aboutButton">
67 <property name="visible">True</property>
68 <property name="tooltip" translatable="yes">Show credits</property>
69 <property name="can_focus">True</property>
70 <property name="has_focus">True</property>
71 <property name="label">gtk-about</property>
72 <property name="use_stock">True</property>
73 <property name="relief">GTK_RELIEF_NORMAL</property>
74 <property name="focus_on_click">True</property>
75 <signal name="clicked" handler="on_about_clicked" last_modification_time="Sat, 28 May 2005 14:28:13 GMT"/>
76 </widget>
77 <packing>
78 <property name="padding">0</property>
79 <property name="expand">False</property>
80 <property name="fill">False</property>
81 </packing>
82 </child>
83
84 <child>
85 <widget class="GtkLabel" id="titleLabel">
86 <property name="visible">True</property>
87 <property name="label" translatable="yes">&lt;span size=&quot;x-large&quot;&gt;Welcome to gnunet-gtk 0.7.0&lt;/span&gt;</property>
88 <property name="use_underline">False</property>
89 <property name="use_markup">True</property>
90 <property name="justify">GTK_JUSTIFY_CENTER</property>
91 <property name="wrap">False</property>
92 <property name="selectable">False</property>
93 <property name="xalign">0.5</property>
94 <property name="yalign">0.5</property>
95 <property name="xpad">5</property>
96 <property name="ypad">0</property>
97 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
98 <property name="width_chars">-1</property>
99 <property name="single_line_mode">True</property>
100 <property name="angle">0</property>
101 </widget>
102 <packing>
103 <property name="padding">0</property>
104 <property name="expand">True</property>
105 <property name="fill">True</property>
106 </packing>
107 </child>
108 </widget>
109 <packing>
110 <property name="padding">0</property>
111 <property name="expand">False</property>
112 <property name="fill">False</property>
113 </packing>
114 </child>
115
116 <child>
117 <widget class="GtkLabel" id="label75">
118 <property name="visible">True</property>
119 <property name="label" translatable="yes">
98 120
99gnunet-gtk is the GTK+ user interface for GNUnet. It is intended to eventually provide a universal, pluggable interface for all GNUnet services. 121gnunet-gtk is the GTK+ user interface for GNUnet. It is intended to eventually provide a universal, pluggable interface for all GNUnet services.
100 122
@@ -119,15 +141,26 @@ Thank you,
119 141
120 142
121 The GNUnet Team</property> 143 The GNUnet Team</property>
122 <property name="use_underline">False</property> 144 <property name="use_underline">False</property>
123 <property name="use_markup">True</property> 145 <property name="use_markup">True</property>
124 <property name="justify">GTK_JUSTIFY_LEFT</property> 146 <property name="justify">GTK_JUSTIFY_LEFT</property>
125 <property name="wrap">True</property> 147 <property name="wrap">True</property>
126 <property name="selectable">False</property> 148 <property name="selectable">False</property>
127 <property name="xalign">0.5</property> 149 <property name="xalign">0.5</property>
128 <property name="yalign">0.5</property> 150 <property name="yalign">0.5</property>
129 <property name="xpad">0</property> 151 <property name="xpad">0</property>
130 <property name="ypad">0</property> 152 <property name="ypad">0</property>
153 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
154 <property name="width_chars">-1</property>
155 <property name="single_line_mode">False</property>
156 <property name="angle">0</property>
157 </widget>
158 <packing>
159 <property name="padding">0</property>
160 <property name="expand">False</property>
161 <property name="fill">False</property>
162 </packing>
163 </child>
131 </widget> 164 </widget>
132 </child> 165 </child>
133 </widget> 166 </widget>
@@ -152,9 +185,10 @@ Thank you,
152 <property name="yalign">0.5</property> 185 <property name="yalign">0.5</property>
153 <property name="xpad">0</property> 186 <property name="xpad">0</property>
154 <property name="ypad">0</property> 187 <property name="ypad">0</property>
155 <accessibility> 188 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
156 <atkproperty name="AtkObject::accessible_name" translatable="yes">Splash Screen</atkproperty> 189 <property name="width_chars">-1</property>
157 </accessibility> 190 <property name="single_line_mode">False</property>
191 <property name="angle">0</property>
158 </widget> 192 </widget>
159 <packing> 193 <packing>
160 <property name="type">tab</property> 194 <property name="type">tab</property>
@@ -262,6 +296,10 @@ Thank you,
262 <property name="yalign">0.5</property> 296 <property name="yalign">0.5</property>
263 <property name="xpad">0</property> 297 <property name="xpad">0</property>
264 <property name="ypad">0</property> 298 <property name="ypad">0</property>
299 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
300 <property name="width_chars">-1</property>
301 <property name="single_line_mode">False</property>
302 <property name="angle">0</property>
265 </widget> 303 </widget>
266 <packing> 304 <packing>
267 <property name="padding">0</property> 305 <property name="padding">0</property>
@@ -338,6 +376,10 @@ Thank you,
338 <property name="yalign">0.5</property> 376 <property name="yalign">0.5</property>
339 <property name="xpad">0</property> 377 <property name="xpad">0</property>
340 <property name="ypad">0</property> 378 <property name="ypad">0</property>
379 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
380 <property name="width_chars">-1</property>
381 <property name="single_line_mode">False</property>
382 <property name="angle">0</property>
341 </widget> 383 </widget>
342 <packing> 384 <packing>
343 <property name="padding">0</property> 385 <property name="padding">0</property>
@@ -366,10 +408,6 @@ Thank you,
366 <property name="yalign">0.5</property> 408 <property name="yalign">0.5</property>
367 <property name="xpad">0</property> 409 <property name="xpad">0</property>
368 <property name="ypad">0</property> 410 <property name="ypad">0</property>
369 <accessibility>
370 <atkproperty name="AtkObject::accessible_name" translatable="yes">status</atkproperty>
371 <atkproperty name="AtkObject::accessible_description" translatable="yes">gnunetd status: not running</atkproperty>
372 </accessibility>
373 </widget> 411 </widget>
374 <packing> 412 <packing>
375 <property name="padding">0</property> 413 <property name="padding">0</property>
@@ -388,10 +426,6 @@ Thank you,
388 <property name="yalign">0.5</property> 426 <property name="yalign">0.5</property>
389 <property name="xpad">0</property> 427 <property name="xpad">0</property>
390 <property name="ypad">0</property> 428 <property name="ypad">0</property>
391 <accessibility>
392 <atkproperty name="AtkObject::accessible_name" translatable="yes">status</atkproperty>
393 <atkproperty name="AtkObject::accessible_description" translatable="yes">gnunetd status: running</atkproperty>
394 </accessibility>
395 </widget> 429 </widget>
396 <packing> 430 <packing>
397 <property name="padding">0</property> 431 <property name="padding">0</property>
@@ -415,6 +449,10 @@ Thank you,
415 <property name="yalign">0.5</property> 449 <property name="yalign">0.5</property>
416 <property name="xpad">0</property> 450 <property name="xpad">0</property>
417 <property name="ypad">0</property> 451 <property name="ypad">0</property>
452 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
453 <property name="width_chars">-1</property>
454 <property name="single_line_mode">False</property>
455 <property name="angle">0</property>
418 </widget> 456 </widget>
419 <packing> 457 <packing>
420 <property name="type">label_item</property> 458 <property name="type">label_item</property>
@@ -430,7 +468,6 @@ Thank you,
430 468
431 <child> 469 <child>
432 <widget class="GtkFrame" id="frame2"> 470 <widget class="GtkFrame" id="frame2">
433 <property name="visible">True</property>
434 <property name="label_xalign">0</property> 471 <property name="label_xalign">0</property>
435 <property name="label_yalign">0.5</property> 472 <property name="label_yalign">0.5</property>
436 <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> 473 <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
@@ -449,6 +486,10 @@ Thank you,
449 <property name="yalign">0.5</property> 486 <property name="yalign">0.5</property>
450 <property name="xpad">0</property> 487 <property name="xpad">0</property>
451 <property name="ypad">0</property> 488 <property name="ypad">0</property>
489 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
490 <property name="width_chars">-1</property>
491 <property name="single_line_mode">False</property>
492 <property name="angle">0</property>
452 </widget> 493 </widget>
453 </child> 494 </child>
454 495
@@ -465,6 +506,10 @@ Thank you,
465 <property name="yalign">0.5</property> 506 <property name="yalign">0.5</property>
466 <property name="xpad">0</property> 507 <property name="xpad">0</property>
467 <property name="ypad">0</property> 508 <property name="ypad">0</property>
509 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
510 <property name="width_chars">-1</property>
511 <property name="single_line_mode">False</property>
512 <property name="angle">0</property>
468 </widget> 513 </widget>
469 <packing> 514 <packing>
470 <property name="type">label_item</property> 515 <property name="type">label_item</property>
@@ -480,7 +525,6 @@ Thank you,
480 525
481 <child> 526 <child>
482 <widget class="GtkFrame" id="frame1"> 527 <widget class="GtkFrame" id="frame1">
483 <property name="visible">True</property>
484 <property name="label_xalign">0</property> 528 <property name="label_xalign">0</property>
485 <property name="label_yalign">0.5</property> 529 <property name="label_yalign">0.5</property>
486 <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> 530 <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
@@ -502,6 +546,9 @@ Thank you,
502 <property name="rules_hint">False</property> 546 <property name="rules_hint">False</property>
503 <property name="reorderable">False</property> 547 <property name="reorderable">False</property>
504 <property name="enable_search">True</property> 548 <property name="enable_search">True</property>
549 <property name="fixed_height_mode">True</property>
550 <property name="hover_selection">False</property>
551 <property name="hover_expand">False</property>
505 </widget> 552 </widget>
506 </child> 553 </child>
507 </widget> 554 </widget>
@@ -520,6 +567,10 @@ Thank you,
520 <property name="yalign">0.5</property> 567 <property name="yalign">0.5</property>
521 <property name="xpad">0</property> 568 <property name="xpad">0</property>
522 <property name="ypad">0</property> 569 <property name="ypad">0</property>
570 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
571 <property name="width_chars">-1</property>
572 <property name="single_line_mode">False</property>
573 <property name="angle">0</property>
523 </widget> 574 </widget>
524 <packing> 575 <packing>
525 <property name="type">label_item</property> 576 <property name="type">label_item</property>
@@ -560,6 +611,10 @@ Thank you,
560 <property name="yalign">0.5</property> 611 <property name="yalign">0.5</property>
561 <property name="xpad">0</property> 612 <property name="xpad">0</property>
562 <property name="ypad">0</property> 613 <property name="ypad">0</property>
614 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
615 <property name="width_chars">-1</property>
616 <property name="single_line_mode">False</property>
617 <property name="angle">0</property>
563 </widget> 618 </widget>
564 <packing> 619 <packing>
565 <property name="type">tab</property> 620 <property name="type">tab</property>
@@ -573,7 +628,7 @@ Thank you,
573 <property name="show_tabs">True</property> 628 <property name="show_tabs">True</property>
574 <property name="show_border">True</property> 629 <property name="show_border">True</property>
575 <property name="tab_pos">GTK_POS_TOP</property> 630 <property name="tab_pos">GTK_POS_TOP</property>
576 <property name="scrollable">False</property> 631 <property name="scrollable">True</property>
577 <property name="enable_popup">False</property> 632 <property name="enable_popup">False</property>
578 633
579 <child> 634 <child>
@@ -598,7 +653,7 @@ Thank you,
598 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 653 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
599 654
600 <child> 655 <child>
601 <widget class="GtkTreeView" id="clist7"> 656 <widget class="GtkTreeView" id="activeSearchesSummary">
602 <property agent="glademm" name="cxx_visibility">public</property> 657 <property agent="glademm" name="cxx_visibility">public</property>
603 <property name="visible">True</property> 658 <property name="visible">True</property>
604 <property name="can_focus">True</property> 659 <property name="can_focus">True</property>
@@ -606,6 +661,9 @@ Thank you,
606 <property name="rules_hint">False</property> 661 <property name="rules_hint">False</property>
607 <property name="reorderable">False</property> 662 <property name="reorderable">False</property>
608 <property name="enable_search">True</property> 663 <property name="enable_search">True</property>
664 <property name="fixed_height_mode">False</property>
665 <property name="hover_selection">False</property>
666 <property name="hover_expand">False</property>
609 </widget> 667 </widget>
610 </child> 668 </child>
611 </widget> 669 </widget>
@@ -614,7 +672,7 @@ Thank you,
614 <child> 672 <child>
615 <widget class="GtkLabel" id="label16"> 673 <widget class="GtkLabel" id="label16">
616 <property name="visible">True</property> 674 <property name="visible">True</property>
617 <property name="label" translatable="yes">Search Results</property> 675 <property name="label" translatable="yes">Search Overview</property>
618 <property name="use_underline">False</property> 676 <property name="use_underline">False</property>
619 <property name="use_markup">False</property> 677 <property name="use_markup">False</property>
620 <property name="justify">GTK_JUSTIFY_LEFT</property> 678 <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -624,6 +682,10 @@ Thank you,
624 <property name="yalign">0.5</property> 682 <property name="yalign">0.5</property>
625 <property name="xpad">0</property> 683 <property name="xpad">0</property>
626 <property name="ypad">0</property> 684 <property name="ypad">0</property>
685 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
686 <property name="width_chars">-1</property>
687 <property name="single_line_mode">False</property>
688 <property name="angle">0</property>
627 </widget> 689 </widget>
628 <packing> 690 <packing>
629 <property name="type">label_item</property> 691 <property name="type">label_item</property>
@@ -653,7 +715,7 @@ Thank you,
653 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 715 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
654 716
655 <child> 717 <child>
656 <widget class="GtkTreeView" id="clist5"> 718 <widget class="GtkTreeView" id="activeDownloadsList">
657 <property agent="glademm" name="cxx_visibility">public</property> 719 <property agent="glademm" name="cxx_visibility">public</property>
658 <property name="visible">True</property> 720 <property name="visible">True</property>
659 <property name="can_focus">True</property> 721 <property name="can_focus">True</property>
@@ -661,6 +723,9 @@ Thank you,
661 <property name="rules_hint">False</property> 723 <property name="rules_hint">False</property>
662 <property name="reorderable">False</property> 724 <property name="reorderable">False</property>
663 <property name="enable_search">True</property> 725 <property name="enable_search">True</property>
726 <property name="fixed_height_mode">False</property>
727 <property name="hover_selection">False</property>
728 <property name="hover_expand">False</property>
664 </widget> 729 </widget>
665 </child> 730 </child>
666 </widget> 731 </widget>
@@ -679,6 +744,10 @@ Thank you,
679 <property name="yalign">0.5</property> 744 <property name="yalign">0.5</property>
680 <property name="xpad">0</property> 745 <property name="xpad">0</property>
681 <property name="ypad">0</property> 746 <property name="ypad">0</property>
747 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
748 <property name="width_chars">-1</property>
749 <property name="single_line_mode">False</property>
750 <property name="angle">0</property>
682 </widget> 751 </widget>
683 <packing> 752 <packing>
684 <property name="type">label_item</property> 753 <property name="type">label_item</property>
@@ -708,7 +777,7 @@ Thank you,
708 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 777 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
709 778
710 <child> 779 <child>
711 <widget class="GtkTreeView" id="clist6"> 780 <widget class="GtkTreeView" id="activeUploadsList">
712 <property agent="glademm" name="cxx_visibility">public</property> 781 <property agent="glademm" name="cxx_visibility">public</property>
713 <property name="visible">True</property> 782 <property name="visible">True</property>
714 <property name="can_focus">True</property> 783 <property name="can_focus">True</property>
@@ -716,6 +785,9 @@ Thank you,
716 <property name="rules_hint">False</property> 785 <property name="rules_hint">False</property>
717 <property name="reorderable">False</property> 786 <property name="reorderable">False</property>
718 <property name="enable_search">True</property> 787 <property name="enable_search">True</property>
788 <property name="fixed_height_mode">False</property>
789 <property name="hover_selection">False</property>
790 <property name="hover_expand">False</property>
719 </widget> 791 </widget>
720 </child> 792 </child>
721 </widget> 793 </widget>
@@ -734,6 +806,10 @@ Thank you,
734 <property name="yalign">0.5</property> 806 <property name="yalign">0.5</property>
735 <property name="xpad">0</property> 807 <property name="xpad">0</property>
736 <property name="ypad">0</property> 808 <property name="ypad">0</property>
809 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
810 <property name="width_chars">-1</property>
811 <property name="single_line_mode">False</property>
812 <property name="angle">0</property>
737 </widget> 813 </widget>
738 <packing> 814 <packing>
739 <property name="type">label_item</property> 815 <property name="type">label_item</property>
@@ -755,7 +831,6 @@ Thank you,
755 831
756 <child> 832 <child>
757 <widget class="GtkLabel" id="statusfstab"> 833 <widget class="GtkLabel" id="statusfstab">
758 <property name="visible">True</property>
759 <property name="label" translatable="yes">S_tatus</property> 834 <property name="label" translatable="yes">S_tatus</property>
760 <property name="use_underline">True</property> 835 <property name="use_underline">True</property>
761 <property name="use_markup">False</property> 836 <property name="use_markup">False</property>
@@ -766,6 +841,10 @@ Thank you,
766 <property name="yalign">0.5</property> 841 <property name="yalign">0.5</property>
767 <property name="xpad">0</property> 842 <property name="xpad">0</property>
768 <property name="ypad">0</property> 843 <property name="ypad">0</property>
844 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
845 <property name="width_chars">-1</property>
846 <property name="single_line_mode">False</property>
847 <property name="angle">0</property>
769 </widget> 848 </widget>
770 <packing> 849 <packing>
771 <property name="type">tab</property> 850 <property name="type">tab</property>
@@ -779,18 +858,15 @@ Thank you,
779 <property name="spacing">0</property> 858 <property name="spacing">0</property>
780 859
781 <child> 860 <child>
782 <widget class="GtkNotebook" id="downloadNotebook"> 861 <widget class="GtkHBox" id="fssearchhbox">
783 <property agent="glademm" name="cxx_visibility">public</property> 862 <property name="visible">True</property>
784 <property name="can_focus">True</property> 863 <property name="homogeneous">False</property>
785 <property name="show_tabs">True</property> 864 <property name="spacing">0</property>
786 <property name="show_border">True</property>
787 <property name="tab_pos">GTK_POS_TOP</property>
788 <property name="scrollable">False</property>
789 <property name="enable_popup">False</property>
790 865
791 <child> 866 <child>
792 <widget class="GtkLabel" id="label61"> 867 <widget class="GtkLabel" id="searchkeywordlabel">
793 <property name="label" translatable="yes">label61</property> 868 <property name="visible">True</property>
869 <property name="label" translatable="yes">Keyword:</property>
794 <property name="use_underline">False</property> 870 <property name="use_underline">False</property>
795 <property name="use_markup">False</property> 871 <property name="use_markup">False</property>
796 <property name="justify">GTK_JUSTIFY_LEFT</property> 872 <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -798,102 +874,31 @@ Thank you,
798 <property name="selectable">False</property> 874 <property name="selectable">False</property>
799 <property name="xalign">0.5</property> 875 <property name="xalign">0.5</property>
800 <property name="yalign">0.5</property> 876 <property name="yalign">0.5</property>
801 <property name="xpad">0</property> 877 <property name="xpad">5</property>
802 <property name="ypad">0</property>
803 </widget>
804 <packing>
805 <property name="tab_expand">False</property>
806 <property name="tab_fill">True</property>
807 </packing>
808 </child>
809
810 <child>
811 <widget class="GtkLabel" id="label36">
812 <property name="label" translatable="yes">label36</property>
813 <property name="use_underline">False</property>
814 <property name="use_markup">False</property>
815 <property name="justify">GTK_JUSTIFY_CENTER</property>
816 <property name="wrap">False</property>
817 <property name="selectable">False</property>
818 <property name="xalign">0.5</property>
819 <property name="yalign">0.5</property>
820 <property name="xpad">0</property>
821 <property name="ypad">0</property> 878 <property name="ypad">0</property>
879 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
880 <property name="width_chars">-1</property>
881 <property name="single_line_mode">False</property>
882 <property name="angle">0</property>
822 </widget> 883 </widget>
823 <packing> 884 <packing>
824 <property name="type">tab</property> 885 <property name="padding">0</property>
886 <property name="expand">False</property>
887 <property name="fill">False</property>
825 </packing> 888 </packing>
826 </child> 889 </child>
827 </widget>
828 <packing>
829 <property name="padding">0</property>
830 <property name="expand">True</property>
831 <property name="fill">True</property>
832 </packing>
833 </child>
834
835 <child>
836 <widget class="GtkHBox" id="fssearchhbox">
837 <property name="visible">True</property>
838 <property name="homogeneous">False</property>
839 <property name="spacing">0</property>
840 890
841 <child> 891 <child>
842 <widget class="GtkCombo" id="fsSearchStringInputLine"> 892 <widget class="GtkComboBoxEntry" id="fssearchKeywordComboBoxEntry">
893 <property agent="glademm" name="cxx_visibility">public</property>
843 <property name="visible">True</property> 894 <property name="visible">True</property>
844 <property name="value_in_list">False</property> 895 <property name="can_default">True</property>
845 <property name="allow_empty">True</property> 896 <property name="has_default">True</property>
846 <property name="case_sensitive">False</property> 897 <property name="can_focus">True</property>
847 <property name="enable_arrow_keys">True</property> 898 <property name="has_focus">True</property>
848 <property name="enable_arrows_always">False</property> 899 <property name="add_tearoffs">False</property>
849 <accessibility> 900 <property name="has_frame">True</property>
850 <atkproperty name="AtkObject::accessible_description" translatable="yes">Enter the keywords to search for in this line.</atkproperty> 901 <property name="focus_on_click">True</property>
851 </accessibility>
852
853 <child internal-child="entry">
854 <widget class="GtkEntry" id="searchKeywordGtkEntry">
855 <property agent="glademm" name="cxx_visibility">public</property>
856 <property name="visible">True</property>
857 <property name="can_focus">True</property>
858 <property name="editable">True</property>
859 <property name="visibility">True</property>
860 <property name="max_length">0</property>
861 <property name="text" translatable="yes"></property>
862 <property name="has_frame">True</property>
863 <property name="invisible_char">*</property>
864 <property name="activates_default">False</property>
865 <accelerator key="Return" modifiers="0" signal="activate"/>
866 </widget>
867 </child>
868
869 <child internal-child="list">
870 <widget class="GtkList" id="convertwidget13">
871 <property name="visible">True</property>
872 <property name="selection_mode">GTK_SELECTION_BROWSE</property>
873
874 <child>
875 <widget class="GtkListItem" id="convertwidget14">
876 <property name="visible">True</property>
877
878 <child>
879 <widget class="GtkLabel" id="convertwidget15">
880 <property name="visible">True</property>
881 <property name="label" translatable="yes"></property>
882 <property name="use_underline">False</property>
883 <property name="use_markup">False</property>
884 <property name="justify">GTK_JUSTIFY_LEFT</property>
885 <property name="wrap">False</property>
886 <property name="selectable">False</property>
887 <property name="xalign">0</property>
888 <property name="yalign">0.5</property>
889 <property name="xpad">0</property>
890 <property name="ypad">0</property>
891 </widget>
892 </child>
893 </widget>
894 </child>
895 </widget>
896 </child>
897 </widget> 902 </widget>
898 <packing> 903 <packing>
899 <property name="padding">0</property> 904 <property name="padding">0</property>
@@ -905,10 +910,11 @@ Thank you,
905 <child> 910 <child>
906 <widget class="GtkButton" id="fssearchbutton"> 911 <widget class="GtkButton" id="fssearchbutton">
907 <property name="visible">True</property> 912 <property name="visible">True</property>
913 <property name="tooltip" translatable="yes">Search GNUnet</property>
908 <property name="can_focus">True</property> 914 <property name="can_focus">True</property>
909 <property name="relief">GTK_RELIEF_NORMAL</property> 915 <property name="relief">GTK_RELIEF_NORMAL</property>
910 <property name="focus_on_click">True</property> 916 <property name="focus_on_click">True</property>
911 <signal name="clicked" handler="on_fssearchbutton_clicked" object="fssearchhbox" last_modification_time="Mon, 23 May 2005 19:06:23 GMT"/> 917 <signal name="clicked" handler="on_fssearchbutton_clicked" last_modification_time="Mon, 23 May 2005 19:06:23 GMT"/>
912 <accelerator key="Return" modifiers="0" signal="activate"/> 918 <accelerator key="Return" modifiers="0" signal="activate"/>
913 919
914 <child> 920 <child>
@@ -959,6 +965,10 @@ Thank you,
959 <property name="yalign">0.5</property> 965 <property name="yalign">0.5</property>
960 <property name="xpad">0</property> 966 <property name="xpad">0</property>
961 <property name="ypad">0</property> 967 <property name="ypad">0</property>
968 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
969 <property name="width_chars">-1</property>
970 <property name="single_line_mode">False</property>
971 <property name="angle">0</property>
962 </widget> 972 </widget>
963 <packing> 973 <packing>
964 <property name="padding">0</property> 974 <property name="padding">0</property>
@@ -991,6 +1001,10 @@ Thank you,
991 <property name="yalign">0.5</property> 1001 <property name="yalign">0.5</property>
992 <property name="xpad">8</property> 1002 <property name="xpad">8</property>
993 <property name="ypad">0</property> 1003 <property name="ypad">0</property>
1004 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1005 <property name="width_chars">-1</property>
1006 <property name="single_line_mode">False</property>
1007 <property name="angle">0</property>
994 </widget> 1008 </widget>
995 <packing> 1009 <packing>
996 <property name="padding">0</property> 1010 <property name="padding">0</property>
@@ -1003,11 +1017,14 @@ Thank you,
1003 <widget class="GtkComboBoxEntry" id="searchNamespaceComboBoxEntry"> 1017 <widget class="GtkComboBoxEntry" id="searchNamespaceComboBoxEntry">
1004 <property agent="glademm" name="cxx_visibility">public</property> 1018 <property agent="glademm" name="cxx_visibility">public</property>
1005 <property name="visible">True</property> 1019 <property name="visible">True</property>
1020 <property name="add_tearoffs">False</property>
1021 <property name="has_frame">True</property>
1022 <property name="focus_on_click">True</property>
1006 </widget> 1023 </widget>
1007 <packing> 1024 <packing>
1008 <property name="padding">0</property> 1025 <property name="padding">0</property>
1009 <property name="expand">False</property> 1026 <property name="expand">True</property>
1010 <property name="fill">False</property> 1027 <property name="fill">True</property>
1011 </packing> 1028 </packing>
1012 </child> 1029 </child>
1013 </widget> 1030 </widget>
@@ -1017,6 +1034,68 @@ Thank you,
1017 <property name="fill">False</property> 1034 <property name="fill">False</property>
1018 </packing> 1035 </packing>
1019 </child> 1036 </child>
1037
1038 <child>
1039 <widget class="GtkNotebook" id="downloadNotebook">
1040 <property agent="glademm" name="cxx_visibility">public</property>
1041 <property name="can_focus">True</property>
1042 <property name="show_tabs">True</property>
1043 <property name="show_border">True</property>
1044 <property name="tab_pos">GTK_POS_TOP</property>
1045 <property name="scrollable">True</property>
1046 <property name="enable_popup">False</property>
1047
1048 <child>
1049 <widget class="GtkLabel" id="label61">
1050 <property name="label" translatable="yes">label61</property>
1051 <property name="use_underline">False</property>
1052 <property name="use_markup">False</property>
1053 <property name="justify">GTK_JUSTIFY_LEFT</property>
1054 <property name="wrap">False</property>
1055 <property name="selectable">False</property>
1056 <property name="xalign">0.5</property>
1057 <property name="yalign">0.5</property>
1058 <property name="xpad">0</property>
1059 <property name="ypad">0</property>
1060 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1061 <property name="width_chars">-1</property>
1062 <property name="single_line_mode">False</property>
1063 <property name="angle">0</property>
1064 </widget>
1065 <packing>
1066 <property name="tab_expand">False</property>
1067 <property name="tab_fill">True</property>
1068 </packing>
1069 </child>
1070
1071 <child>
1072 <widget class="GtkLabel" id="label36">
1073 <property name="label" translatable="yes">label36</property>
1074 <property name="use_underline">False</property>
1075 <property name="use_markup">False</property>
1076 <property name="justify">GTK_JUSTIFY_CENTER</property>
1077 <property name="wrap">False</property>
1078 <property name="selectable">False</property>
1079 <property name="xalign">0.5</property>
1080 <property name="yalign">0.5</property>
1081 <property name="xpad">0</property>
1082 <property name="ypad">0</property>
1083 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1084 <property name="width_chars">-1</property>
1085 <property name="single_line_mode">False</property>
1086 <property name="angle">0</property>
1087 </widget>
1088 <packing>
1089 <property name="type">tab</property>
1090 </packing>
1091 </child>
1092 </widget>
1093 <packing>
1094 <property name="padding">0</property>
1095 <property name="expand">True</property>
1096 <property name="fill">True</property>
1097 </packing>
1098 </child>
1020 </widget> 1099 </widget>
1021 <packing> 1100 <packing>
1022 <property name="tab_expand">False</property> 1101 <property name="tab_expand">False</property>
@@ -1037,6 +1116,10 @@ Thank you,
1037 <property name="yalign">0.5</property> 1116 <property name="yalign">0.5</property>
1038 <property name="xpad">0</property> 1117 <property name="xpad">0</property>
1039 <property name="ypad">0</property> 1118 <property name="ypad">0</property>
1119 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1120 <property name="width_chars">-1</property>
1121 <property name="single_line_mode">True</property>
1122 <property name="angle">0</property>
1040 </widget> 1123 </widget>
1041 <packing> 1124 <packing>
1042 <property name="type">tab</property> 1125 <property name="type">tab</property>
@@ -1069,6 +1152,10 @@ Thank you,
1069 <property name="xpad">5</property> 1152 <property name="xpad">5</property>
1070 <property name="ypad">0</property> 1153 <property name="ypad">0</property>
1071 <property name="mnemonic_widget">indexbutton</property> 1154 <property name="mnemonic_widget">indexbutton</property>
1155 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1156 <property name="width_chars">-1</property>
1157 <property name="single_line_mode">False</property>
1158 <property name="angle">0</property>
1072 </widget> 1159 </widget>
1073 <packing> 1160 <packing>
1074 <property name="padding">0</property> 1161 <property name="padding">0</property>
@@ -1144,7 +1231,11 @@ Thank you,
1144 <property name="yalign">0.5</property> 1231 <property name="yalign">0.5</property>
1145 <property name="xpad">5</property> 1232 <property name="xpad">5</property>
1146 <property name="ypad">0</property> 1233 <property name="ypad">0</property>
1147 <property name="mnemonic_widget">radiobutton2</property> 1234 <property name="mnemonic_widget">scopeFileOnlyButton</property>
1235 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1236 <property name="width_chars">-1</property>
1237 <property name="single_line_mode">False</property>
1238 <property name="angle">0</property>
1148 </widget> 1239 </widget>
1149 <packing> 1240 <packing>
1150 <property name="padding">0</property> 1241 <property name="padding">0</property>
@@ -1154,7 +1245,7 @@ Thank you,
1154 </child> 1245 </child>
1155 1246
1156 <child> 1247 <child>
1157 <widget class="GtkRadioButton" id="radiobutton2"> 1248 <widget class="GtkRadioButton" id="scopeFileOnlyButton">
1158 <property agent="glademm" name="cxx_visibility">public</property> 1249 <property agent="glademm" name="cxx_visibility">public</property>
1159 <property name="visible">True</property> 1250 <property name="visible">True</property>
1160 <property name="can_focus">True</property> 1251 <property name="can_focus">True</property>
@@ -1174,7 +1265,7 @@ Thank you,
1174 </child> 1265 </child>
1175 1266
1176 <child> 1267 <child>
1177 <widget class="GtkRadioButton" id="radiobutton3"> 1268 <widget class="GtkRadioButton" id="scopeRecursiveButton">
1178 <property agent="glademm" name="cxx_visibility">public</property> 1269 <property agent="glademm" name="cxx_visibility">public</property>
1179 <property name="visible">True</property> 1270 <property name="visible">True</property>
1180 <property name="can_focus">True</property> 1271 <property name="can_focus">True</property>
@@ -1185,7 +1276,7 @@ Thank you,
1185 <property name="active">False</property> 1276 <property name="active">False</property>
1186 <property name="inconsistent">False</property> 1277 <property name="inconsistent">False</property>
1187 <property name="draw_indicator">True</property> 1278 <property name="draw_indicator">True</property>
1188 <property name="group">radiobutton2</property> 1279 <property name="group">scopeFileOnlyButton</property>
1189 </widget> 1280 </widget>
1190 <packing> 1281 <packing>
1191 <property name="padding">0</property> 1282 <property name="padding">0</property>
@@ -1208,7 +1299,7 @@ Thank you,
1208 <property name="spacing">0</property> 1299 <property name="spacing">0</property>
1209 1300
1210 <child> 1301 <child>
1211 <widget class="GtkLabel" id="label54"> 1302 <widget class="GtkLabel" id="uploadFilenameLabel">
1212 <property name="visible">True</property> 1303 <property name="visible">True</property>
1213 <property name="label" translatable="yes">_Filename:</property> 1304 <property name="label" translatable="yes">_Filename:</property>
1214 <property name="use_underline">True</property> 1305 <property name="use_underline">True</property>
@@ -1220,7 +1311,11 @@ Thank you,
1220 <property name="yalign">0.5</property> 1311 <property name="yalign">0.5</property>
1221 <property name="xpad">5</property> 1312 <property name="xpad">5</property>
1222 <property name="ypad">0</property> 1313 <property name="ypad">0</property>
1223 <property name="mnemonic_widget">combo-entry1</property> 1314 <property name="mnemonic_widget">uploadFilenameComboBoxEntry</property>
1315 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1316 <property name="width_chars">-1</property>
1317 <property name="single_line_mode">False</property>
1318 <property name="angle">0</property>
1224 </widget> 1319 </widget>
1225 <packing> 1320 <packing>
1226 <property name="padding">0</property> 1321 <property name="padding">0</property>
@@ -1230,57 +1325,15 @@ Thank you,
1230 </child> 1325 </child>
1231 1326
1232 <child> 1327 <child>
1233 <widget class="GtkCombo" id="fsinsertfilenamecombo"> 1328 <widget class="GtkComboBoxEntry" id="uploadFilenameComboBoxEntry">
1329 <property agent="glademm" name="cxx_visibility">public</property>
1234 <property name="visible">True</property> 1330 <property name="visible">True</property>
1235 <property name="value_in_list">False</property> 1331 <property name="can_focus">True</property>
1236 <property name="allow_empty">True</property> 1332 <property name="has_focus">True</property>
1237 <property name="case_sensitive">False</property> 1333 <property name="add_tearoffs">False</property>
1238 <property name="enable_arrow_keys">True</property> 1334 <property name="has_frame">True</property>
1239 <property name="enable_arrows_always">False</property> 1335 <property name="focus_on_click">True</property>
1240 1336 <signal name="editing_done" handler="on_uploadFilenameComboBoxEntry_editing_done" last_modification_time="Sat, 28 May 2005 14:43:26 GMT"/>
1241 <child internal-child="entry">
1242 <widget class="GtkEntry" id="combo-entry1">
1243 <property agent="glademm" name="cxx_visibility">public</property>
1244 <property name="visible">True</property>
1245 <property name="can_focus">True</property>
1246 <property name="editable">True</property>
1247 <property name="visibility">True</property>
1248 <property name="max_length">0</property>
1249 <property name="text" translatable="yes"></property>
1250 <property name="has_frame">True</property>
1251 <property name="invisible_char">*</property>
1252 <property name="activates_default">False</property>
1253 </widget>
1254 </child>
1255
1256 <child internal-child="list">
1257 <widget class="GtkList" id="convertwidget18">
1258 <property name="visible">True</property>
1259 <property name="selection_mode">GTK_SELECTION_BROWSE</property>
1260
1261 <child>
1262 <widget class="GtkListItem" id="convertwidget19">
1263 <property name="visible">True</property>
1264
1265 <child>
1266 <widget class="GtkLabel" id="convertwidget20">
1267 <property name="visible">True</property>
1268 <property name="label" translatable="yes"></property>
1269 <property name="use_underline">False</property>
1270 <property name="use_markup">False</property>
1271 <property name="justify">GTK_JUSTIFY_LEFT</property>
1272 <property name="wrap">False</property>
1273 <property name="selectable">False</property>
1274 <property name="xalign">0</property>
1275 <property name="yalign">0.5</property>
1276 <property name="xpad">0</property>
1277 <property name="ypad">0</property>
1278 </widget>
1279 </child>
1280 </widget>
1281 </child>
1282 </widget>
1283 </child>
1284 </widget> 1337 </widget>
1285 <packing> 1338 <packing>
1286 <property name="padding">0</property> 1339 <property name="padding">0</property>
@@ -1292,6 +1345,7 @@ Thank you,
1292 <child> 1345 <child>
1293 <widget class="GtkButton" id="mainFileSharingInsertBrowseButton"> 1346 <widget class="GtkButton" id="mainFileSharingInsertBrowseButton">
1294 <property name="visible">True</property> 1347 <property name="visible">True</property>
1348 <property name="tooltip" translatable="yes">Browse local computer for files to upload.</property>
1295 <property name="can_focus">True</property> 1349 <property name="can_focus">True</property>
1296 <property name="relief">GTK_RELIEF_NORMAL</property> 1350 <property name="relief">GTK_RELIEF_NORMAL</property>
1297 <property name="focus_on_click">True</property> 1351 <property name="focus_on_click">True</property>
@@ -1345,6 +1399,10 @@ Thank you,
1345 <property name="yalign">0.5</property> 1399 <property name="yalign">0.5</property>
1346 <property name="xpad">0</property> 1400 <property name="xpad">0</property>
1347 <property name="ypad">0</property> 1401 <property name="ypad">0</property>
1402 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1403 <property name="width_chars">-1</property>
1404 <property name="single_line_mode">False</property>
1405 <property name="angle">0</property>
1348 </widget> 1406 </widget>
1349 <packing> 1407 <packing>
1350 <property name="padding">0</property> 1408 <property name="padding">0</property>
@@ -1427,6 +1485,10 @@ Thank you,
1427 <property name="yalign">0.5</property> 1485 <property name="yalign">0.5</property>
1428 <property name="xpad">0</property> 1486 <property name="xpad">0</property>
1429 <property name="ypad">0</property> 1487 <property name="ypad">0</property>
1488 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1489 <property name="width_chars">-1</property>
1490 <property name="single_line_mode">False</property>
1491 <property name="angle">0</property>
1430 </widget> 1492 </widget>
1431 <packing> 1493 <packing>
1432 <property name="padding">0</property> 1494 <property name="padding">0</property>
@@ -1465,6 +1527,10 @@ Thank you,
1465 <property name="yalign">0.5</property> 1527 <property name="yalign">0.5</property>
1466 <property name="xpad">0</property> 1528 <property name="xpad">0</property>
1467 <property name="ypad">0</property> 1529 <property name="ypad">0</property>
1530 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1531 <property name="width_chars">-1</property>
1532 <property name="single_line_mode">False</property>
1533 <property name="angle">0</property>
1468 </widget> 1534 </widget>
1469 <packing> 1535 <packing>
1470 <property name="type">tab</property> 1536 <property name="type">tab</property>
@@ -1478,52 +1544,63 @@ Thank you,
1478 <property name="spacing">0</property> 1544 <property name="spacing">0</property>
1479 1545
1480 <child> 1546 <child>
1481 <widget class="GtkMenuBar" id="menubar2"> 1547 <widget class="GtkMenuBar" id="advanced_fs_menubar">
1482 <property name="visible">True</property> 1548 <property name="visible">True</property>
1483 1549
1484 <child> 1550 <child>
1485 <widget class="GtkMenuItem" id="createNamespace"> 1551 <widget class="GtkImageMenuItem" id="createNamespace">
1486 <property name="visible">True</property> 1552 <property name="visible">True</property>
1487 <property name="label" translatable="yes">_create</property> 1553 <property name="label" translatable="yes">_create</property>
1488 <property name="use_underline">True</property> 1554 <property name="use_underline">True</property>
1489 1555
1556 <child internal-child="image">
1557 <widget class="GtkImage" id="image12">
1558 <property name="visible">True</property>
1559 <property name="stock">gtk-new</property>
1560 <property name="icon_size">1</property>
1561 <property name="xalign">0.5</property>
1562 <property name="yalign">0.5</property>
1563 <property name="xpad">0</property>
1564 <property name="ypad">0</property>
1565 </widget>
1566 </child>
1567
1490 <child> 1568 <child>
1491 <widget class="GtkMenu" id="createNamespace_menu"> 1569 <widget class="GtkMenu" id="createNamespace_menu">
1492 <property name="visible">True</property>
1493 1570
1494 <child> 1571 <child>
1495 <widget class="GtkMenuItem" id="namespace1"> 1572 <widget class="GtkMenuItem" id="namespaceCreate">
1496 <property name="visible">True</property> 1573 <property name="visible">True</property>
1497 <property name="label" translatable="yes">_Namespace</property> 1574 <property name="label" translatable="yes">_Namespace</property>
1498 <property name="use_underline">True</property> 1575 <property name="use_underline">True</property>
1499 <signal name="activate_item" handler="on_create_namespace_clicked" last_modification_time="Mon, 23 May 2005 19:13:47 GMT"/> 1576 <signal name="activate" handler="create_namespace_clicked" last_modification_time="Sat, 28 May 2005 14:39:59 GMT"/>
1500 </widget> 1577 </widget>
1501 </child> 1578 </child>
1502 1579
1503 <child> 1580 <child>
1504 <widget class="GtkMenuItem" id="directory1"> 1581 <widget class="GtkMenuItem" id="createDirectory">
1505 <property name="visible">True</property> 1582 <property name="visible">True</property>
1506 <property name="label" translatable="yes">_Directory</property> 1583 <property name="label" translatable="yes">_Directory</property>
1507 <property name="use_underline">True</property> 1584 <property name="use_underline">True</property>
1508 <signal name="activate_item" handler="on_create_directory_clicked" last_modification_time="Mon, 23 May 2005 19:13:40 GMT"/> 1585 <signal name="activate" handler="createDirectory_clicked" last_modification_time="Sat, 28 May 2005 14:39:59 GMT"/>
1509 </widget> 1586 </widget>
1510 </child> 1587 </child>
1511 1588
1512 <child> 1589 <child>
1513 <widget class="GtkMenuItem" id="collection1"> 1590 <widget class="GtkMenuItem" id="createCollection">
1514 <property name="visible">True</property> 1591 <property name="visible">True</property>
1515 <property name="label" translatable="yes">_Collection</property> 1592 <property name="label" translatable="yes">_Collection</property>
1516 <property name="use_underline">True</property> 1593 <property name="use_underline">True</property>
1517 <signal name="activate_item" handler="on_create_collection_clicked" last_modification_time="Mon, 23 May 2005 19:13:32 GMT"/> 1594 <signal name="activate" handler="createCollection_clicked" last_modification_time="Sat, 28 May 2005 14:39:59 GMT"/>
1518 </widget> 1595 </widget>
1519 </child> 1596 </child>
1520 1597
1521 <child> 1598 <child>
1522 <widget class="GtkMenuItem" id="advertisement1"> 1599 <widget class="GtkMenuItem" id="createAdvertisement">
1523 <property name="visible">True</property> 1600 <property name="visible">True</property>
1524 <property name="label" translatable="yes">_Advertisement</property> 1601 <property name="label" translatable="yes">_Advertisement</property>
1525 <property name="use_underline">True</property> 1602 <property name="use_underline">True</property>
1526 <signal name="activate_item" handler="on_create_advertisement_clicked" last_modification_time="Mon, 23 May 2005 19:13:53 GMT"/> 1603 <signal name="activate" handler="createAdvertisement_clicked" last_modification_time="Sat, 28 May 2005 14:39:59 GMT"/>
1527 </widget> 1604 </widget>
1528 </child> 1605 </child>
1529 </widget> 1606 </widget>
@@ -1532,32 +1609,43 @@ Thank you,
1532 </child> 1609 </child>
1533 1610
1534 <child> 1611 <child>
1535 <widget class="GtkMenuItem" id="delete1"> 1612 <widget class="GtkImageMenuItem" id="delete1">
1536 <property name="visible">True</property> 1613 <property name="visible">True</property>
1537 <property name="label" translatable="yes">_delete</property> 1614 <property name="label" translatable="yes">_delete</property>
1538 <property name="use_underline">True</property> 1615 <property name="use_underline">True</property>
1539 1616
1617 <child internal-child="image">
1618 <widget class="GtkImage" id="image13">
1619 <property name="visible">True</property>
1620 <property name="stock">gtk-delete</property>
1621 <property name="icon_size">1</property>
1622 <property name="xalign">0.5</property>
1623 <property name="yalign">0.5</property>
1624 <property name="xpad">0</property>
1625 <property name="ypad">0</property>
1626 </widget>
1627 </child>
1628
1540 <child> 1629 <child>
1541 <widget class="GtkMenu" id="delete1_menu"> 1630 <widget class="GtkMenu" id="delete1_menu">
1542 <property name="visible">True</property>
1543 1631
1544 <child> 1632 <child>
1545 <widget class="GtkMenuItem" id="namespace2"> 1633 <widget class="GtkMenuItem" id="namespaceDelete">
1546 <property name="visible">True</property> 1634 <property name="visible">True</property>
1547 <property name="tooltip" translatable="yes">Will prevent future insertions into the namespace (will not delete content in the namespace)</property> 1635 <property name="tooltip" translatable="yes">Will prevent future insertions into the namespace (will not delete content in the namespace)</property>
1548 <property name="label" translatable="yes">_Namespace</property> 1636 <property name="label" translatable="yes">_Namespace</property>
1549 <property name="use_underline">True</property> 1637 <property name="use_underline">True</property>
1550 <signal name="activate_item" handler="on_namespace2_clicked" last_modification_time="Mon, 23 May 2005 19:14:04 GMT"/> 1638 <signal name="activate" handler="namespaceDelete_clicked" last_modification_time="Sat, 28 May 2005 14:39:59 GMT"/>
1551 </widget> 1639 </widget>
1552 </child> 1640 </child>
1553 1641
1554 <child> 1642 <child>
1555 <widget class="GtkMenuItem" id="collection2"> 1643 <widget class="GtkMenuItem" id="deleteCollection">
1556 <property name="visible">True</property> 1644 <property name="visible">True</property>
1557 <property name="tooltip" translatable="yes">end collection (will not delete content already in the collection)</property> 1645 <property name="tooltip" translatable="yes">end collection (will not delete content already in the collection)</property>
1558 <property name="label" translatable="yes">_Collection</property> 1646 <property name="label" translatable="yes">_Collection</property>
1559 <property name="use_underline">True</property> 1647 <property name="use_underline">True</property>
1560 <signal name="activate_item" handler="on_collection_delete_clicked" last_modification_time="Mon, 23 May 2005 19:14:11 GMT"/> 1648 <signal name="activate" handler="deleteCollection_clicked" last_modification_time="Sat, 28 May 2005 14:39:59 GMT"/>
1561 </widget> 1649 </widget>
1562 </child> 1650 </child>
1563 </widget> 1651 </widget>
@@ -1573,12 +1661,13 @@ Thank you,
1573 </child> 1661 </child>
1574 1662
1575 <child> 1663 <child>
1576 <widget class="GtkNotebook" id="notebook4"> 1664 <widget class="GtkNotebook" id="localNamespacesNotebook">
1665 <property agent="glademm" name="cxx_visibility">public</property>
1577 <property name="can_focus">True</property> 1666 <property name="can_focus">True</property>
1578 <property name="show_tabs">True</property> 1667 <property name="show_tabs">True</property>
1579 <property name="show_border">True</property> 1668 <property name="show_border">True</property>
1580 <property name="tab_pos">GTK_POS_TOP</property> 1669 <property name="tab_pos">GTK_POS_TOP</property>
1581 <property name="scrollable">False</property> 1670 <property name="scrollable">True</property>
1582 <property name="enable_popup">False</property> 1671 <property name="enable_popup">False</property>
1583 1672
1584 <child> 1673 <child>
@@ -1593,6 +1682,10 @@ Thank you,
1593 <property name="yalign">0.5</property> 1682 <property name="yalign">0.5</property>
1594 <property name="xpad">0</property> 1683 <property name="xpad">0</property>
1595 <property name="ypad">0</property> 1684 <property name="ypad">0</property>
1685 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1686 <property name="width_chars">-1</property>
1687 <property name="single_line_mode">False</property>
1688 <property name="angle">0</property>
1596 </widget> 1689 </widget>
1597 <packing> 1690 <packing>
1598 <property name="tab_expand">False</property> 1691 <property name="tab_expand">False</property>
@@ -1612,6 +1705,10 @@ Thank you,
1612 <property name="yalign">0.5</property> 1705 <property name="yalign">0.5</property>
1613 <property name="xpad">0</property> 1706 <property name="xpad">0</property>
1614 <property name="ypad">0</property> 1707 <property name="ypad">0</property>
1708 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1709 <property name="width_chars">-1</property>
1710 <property name="single_line_mode">False</property>
1711 <property name="angle">0</property>
1615 </widget> 1712 </widget>
1616 <packing> 1713 <packing>
1617 <property name="type">tab</property> 1714 <property name="type">tab</property>
@@ -1654,7 +1751,7 @@ Thank you,
1654 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 1751 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
1655 1752
1656 <child> 1753 <child>
1657 <widget class="GtkTreeView" id="clist1"> 1754 <widget class="GtkTreeView" id="availableContentList">
1658 <property agent="glademm" name="cxx_visibility">public</property> 1755 <property agent="glademm" name="cxx_visibility">public</property>
1659 <property name="visible">True</property> 1756 <property name="visible">True</property>
1660 <property name="can_focus">True</property> 1757 <property name="can_focus">True</property>
@@ -1662,6 +1759,9 @@ Thank you,
1662 <property name="rules_hint">False</property> 1759 <property name="rules_hint">False</property>
1663 <property name="reorderable">False</property> 1760 <property name="reorderable">False</property>
1664 <property name="enable_search">True</property> 1761 <property name="enable_search">True</property>
1762 <property name="fixed_height_mode">False</property>
1763 <property name="hover_selection">False</property>
1764 <property name="hover_expand">False</property>
1665 </widget> 1765 </widget>
1666 </child> 1766 </child>
1667 </widget> 1767 </widget>
@@ -1684,6 +1784,10 @@ Thank you,
1684 <property name="yalign">0.5</property> 1784 <property name="yalign">0.5</property>
1685 <property name="xpad">0</property> 1785 <property name="xpad">0</property>
1686 <property name="ypad">0</property> 1786 <property name="ypad">0</property>
1787 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1788 <property name="width_chars">-1</property>
1789 <property name="single_line_mode">False</property>
1790 <property name="angle">0</property>
1687 </widget> 1791 </widget>
1688 <packing> 1792 <packing>
1689 <property name="type">label_item</property> 1793 <property name="type">label_item</property>
@@ -1716,6 +1820,10 @@ Thank you,
1716 <property name="yalign">0.5</property> 1820 <property name="yalign">0.5</property>
1717 <property name="xpad">0</property> 1821 <property name="xpad">0</property>
1718 <property name="ypad">0</property> 1822 <property name="ypad">0</property>
1823 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1824 <property name="width_chars">-1</property>
1825 <property name="single_line_mode">False</property>
1826 <property name="angle">0</property>
1719 </widget> 1827 </widget>
1720 <packing> 1828 <packing>
1721 <property name="type">tab</property> 1829 <property name="type">tab</property>
@@ -1741,6 +1849,10 @@ Thank you,
1741 <property name="yalign">0.5</property> 1849 <property name="yalign">0.5</property>
1742 <property name="xpad">0</property> 1850 <property name="xpad">0</property>
1743 <property name="ypad">0</property> 1851 <property name="ypad">0</property>
1852 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1853 <property name="width_chars">-1</property>
1854 <property name="single_line_mode">False</property>
1855 <property name="angle">0</property>
1744 </widget> 1856 </widget>
1745 <packing> 1857 <packing>
1746 <property name="type">tab</property> 1858 <property name="type">tab</property>
@@ -1766,6 +1878,10 @@ Thank you,
1766 <property name="yalign">0.5</property> 1878 <property name="yalign">0.5</property>
1767 <property name="xpad">0</property> 1879 <property name="xpad">0</property>
1768 <property name="ypad">0</property> 1880 <property name="ypad">0</property>
1881 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1882 <property name="width_chars">-1</property>
1883 <property name="single_line_mode">False</property>
1884 <property name="angle">0</property>
1769 </widget> 1885 </widget>
1770 <packing> 1886 <packing>
1771 <property name="padding">0</property> 1887 <property name="padding">0</property>
@@ -1793,6 +1909,10 @@ Thank you,
1793 <property name="yalign">0.5</property> 1909 <property name="yalign">0.5</property>
1794 <property name="xpad">0</property> 1910 <property name="xpad">0</property>
1795 <property name="ypad">0</property> 1911 <property name="ypad">0</property>
1912 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1913 <property name="width_chars">-1</property>
1914 <property name="single_line_mode">False</property>
1915 <property name="angle">0</property>
1796 </widget> 1916 </widget>
1797 <packing> 1917 <packing>
1798 <property name="type">tab</property> 1918 <property name="type">tab</property>
@@ -1812,7 +1932,7 @@ Thank you,
1812 <property name="show_tabs">True</property> 1932 <property name="show_tabs">True</property>
1813 <property name="show_border">True</property> 1933 <property name="show_border">True</property>
1814 <property name="tab_pos">GTK_POS_TOP</property> 1934 <property name="tab_pos">GTK_POS_TOP</property>
1815 <property name="scrollable">False</property> 1935 <property name="scrollable">True</property>
1816 <property name="enable_popup">False</property> 1936 <property name="enable_popup">False</property>
1817 1937
1818 <child> 1938 <child>
@@ -1827,6 +1947,10 @@ Thank you,
1827 <property name="yalign">0.5</property> 1947 <property name="yalign">0.5</property>
1828 <property name="xpad">0</property> 1948 <property name="xpad">0</property>
1829 <property name="ypad">0</property> 1949 <property name="ypad">0</property>
1950 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1951 <property name="width_chars">-1</property>
1952 <property name="single_line_mode">False</property>
1953 <property name="angle">0</property>
1830 </widget> 1954 </widget>
1831 <packing> 1955 <packing>
1832 <property name="tab_expand">False</property> 1956 <property name="tab_expand">False</property>
@@ -1846,6 +1970,10 @@ Thank you,
1846 <property name="yalign">0.5</property> 1970 <property name="yalign">0.5</property>
1847 <property name="xpad">0</property> 1971 <property name="xpad">0</property>
1848 <property name="ypad">0</property> 1972 <property name="ypad">0</property>
1973 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1974 <property name="width_chars">-1</property>
1975 <property name="single_line_mode">False</property>
1976 <property name="angle">0</property>
1849 </widget> 1977 </widget>
1850 <packing> 1978 <packing>
1851 <property name="type">tab</property> 1979 <property name="type">tab</property>
@@ -1872,6 +2000,8 @@ Thank you,
1872 <widget class="GtkEntry" id="chatMainEntryLine"> 2000 <widget class="GtkEntry" id="chatMainEntryLine">
1873 <property agent="glademm" name="cxx_visibility">public</property> 2001 <property agent="glademm" name="cxx_visibility">public</property>
1874 <property name="visible">True</property> 2002 <property name="visible">True</property>
2003 <property name="can_default">True</property>
2004 <property name="has_default">True</property>
1875 <property name="can_focus">True</property> 2005 <property name="can_focus">True</property>
1876 <property name="editable">True</property> 2006 <property name="editable">True</property>
1877 <property name="visibility">True</property> 2007 <property name="visibility">True</property>
@@ -1879,7 +2009,7 @@ Thank you,
1879 <property name="text" translatable="yes"></property> 2009 <property name="text" translatable="yes"></property>
1880 <property name="has_frame">True</property> 2010 <property name="has_frame">True</property>
1881 <property name="invisible_char">*</property> 2011 <property name="invisible_char">*</property>
1882 <property name="activates_default">False</property> 2012 <property name="activates_default">True</property>
1883 <signal name="activate" handler="chatMainEntryLine_clicked" last_modification_time="Mon, 23 May 2005 17:28:12 GMT"/> 2013 <signal name="activate" handler="chatMainEntryLine_clicked" last_modification_time="Mon, 23 May 2005 17:28:12 GMT"/>
1884 <signal name="editing_done" handler="on_chatMainEntryLine_editing_done_clicked" last_modification_time="Mon, 23 May 2005 17:28:16 GMT"/> 2014 <signal name="editing_done" handler="on_chatMainEntryLine_editing_done_clicked" last_modification_time="Mon, 23 May 2005 17:28:16 GMT"/>
1885 <accelerator key="Return" modifiers="0" signal="activate"/> 2015 <accelerator key="Return" modifiers="0" signal="activate"/>
@@ -1908,6 +2038,10 @@ Thank you,
1908 <property name="yalign">0.5</property> 2038 <property name="yalign">0.5</property>
1909 <property name="xpad">0</property> 2039 <property name="xpad">0</property>
1910 <property name="ypad">0</property> 2040 <property name="ypad">0</property>
2041 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2042 <property name="width_chars">-1</property>
2043 <property name="single_line_mode">False</property>
2044 <property name="angle">0</property>
1911 </widget> 2045 </widget>
1912 </child> 2046 </child>
1913 </widget> 2047 </widget>
@@ -1930,6 +2064,10 @@ Thank you,
1930 <property name="yalign">0.5</property> 2064 <property name="yalign">0.5</property>
1931 <property name="xpad">0</property> 2065 <property name="xpad">0</property>
1932 <property name="ypad">0</property> 2066 <property name="ypad">0</property>
2067 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2068 <property name="width_chars">-1</property>
2069 <property name="single_line_mode">False</property>
2070 <property name="angle">0</property>
1933 </widget> 2071 </widget>
1934 </child> 2072 </child>
1935 </widget> 2073 </widget>
@@ -1963,6 +2101,10 @@ Thank you,
1963 <property name="yalign">0.5</property> 2101 <property name="yalign">0.5</property>
1964 <property name="xpad">0</property> 2102 <property name="xpad">0</property>
1965 <property name="ypad">0</property> 2103 <property name="ypad">0</property>
2104 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2105 <property name="width_chars">-1</property>
2106 <property name="single_line_mode">False</property>
2107 <property name="angle">0</property>
1966 </widget> 2108 </widget>
1967 <packing> 2109 <packing>
1968 <property name="type">tab</property> 2110 <property name="type">tab</property>
@@ -1979,7 +2121,6 @@ Thank you,
1979 <child> 2121 <child>
1980 <widget class="GtkStatusbar" id="statusbar"> 2122 <widget class="GtkStatusbar" id="statusbar">
1981 <property name="visible">True</property> 2123 <property name="visible">True</property>
1982 <property name="sensitive">False</property>
1983 <property name="has_resize_grip">True</property> 2124 <property name="has_resize_grip">True</property>
1984 </widget> 2125 </widget>
1985 <packing> 2126 <packing>
@@ -2007,6 +2148,7 @@ Thank you,
2007 <property name="skip_pager_hint">False</property> 2148 <property name="skip_pager_hint">False</property>
2008 <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> 2149 <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
2009 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> 2150 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
2151 <property name="focus_on_map">True</property>
2010 <property name="has_separator">True</property> 2152 <property name="has_separator">True</property>
2011 <accessibility> 2153 <accessibility>
2012 <atkproperty name="AtkObject::accessible_name" translatable="yes">Edit File Information</atkproperty> 2154 <atkproperty name="AtkObject::accessible_name" translatable="yes">Edit File Information</atkproperty>
@@ -2101,6 +2243,10 @@ Thank you,
2101 <property name="yalign">0.5</property> 2243 <property name="yalign">0.5</property>
2102 <property name="xpad">9</property> 2244 <property name="xpad">9</property>
2103 <property name="ypad">5</property> 2245 <property name="ypad">5</property>
2246 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2247 <property name="width_chars">-1</property>
2248 <property name="single_line_mode">False</property>
2249 <property name="angle">0</property>
2104 </widget> 2250 </widget>
2105 <packing> 2251 <packing>
2106 <property name="padding">0</property> 2252 <property name="padding">0</property>
@@ -2129,6 +2275,10 @@ Thank you,
2129 <property name="xpad">5</property> 2275 <property name="xpad">5</property>
2130 <property name="ypad">0</property> 2276 <property name="ypad">0</property>
2131 <property name="mnemonic_widget">optionmenu2</property> 2277 <property name="mnemonic_widget">optionmenu2</property>
2278 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2279 <property name="width_chars">-1</property>
2280 <property name="single_line_mode">False</property>
2281 <property name="angle">0</property>
2132 </widget> 2282 </widget>
2133 <packing> 2283 <packing>
2134 <property name="padding">0</property> 2284 <property name="padding">0</property>
@@ -2179,6 +2329,10 @@ Thank you,
2179 <property name="xpad">5</property> 2329 <property name="xpad">5</property>
2180 <property name="ypad">0</property> 2330 <property name="ypad">0</property>
2181 <property name="mnemonic_widget">metaDataDialogValueEntry</property> 2331 <property name="mnemonic_widget">metaDataDialogValueEntry</property>
2332 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2333 <property name="width_chars">-1</property>
2334 <property name="single_line_mode">False</property>
2335 <property name="angle">0</property>
2182 </widget> 2336 </widget>
2183 <packing> 2337 <packing>
2184 <property name="padding">0</property> 2338 <property name="padding">0</property>
@@ -2246,6 +2400,9 @@ Press ENTER to add the data.</atkproperty>
2246 <property name="rules_hint">True</property> 2400 <property name="rules_hint">True</property>
2247 <property name="reorderable">False</property> 2401 <property name="reorderable">False</property>
2248 <property name="enable_search">True</property> 2402 <property name="enable_search">True</property>
2403 <property name="fixed_height_mode">False</property>
2404 <property name="hover_selection">False</property>
2405 <property name="hover_expand">False</property>
2249 <signal name="select_cursor_row" handler="on_metaDataDialogMetaDataList_select_cursor_row" object="metaDataDialog" last_modification_time="Mon, 23 May 2005 18:58:13 GMT"/> 2406 <signal name="select_cursor_row" handler="on_metaDataDialogMetaDataList_select_cursor_row" object="metaDataDialog" last_modification_time="Mon, 23 May 2005 18:58:13 GMT"/>
2250 </widget> 2407 </widget>
2251 </child> 2408 </child>
@@ -2265,6 +2422,10 @@ Press ENTER to add the data.</atkproperty>
2265 <property name="yalign">0.5</property> 2422 <property name="yalign">0.5</property>
2266 <property name="xpad">0</property> 2423 <property name="xpad">0</property>
2267 <property name="ypad">0</property> 2424 <property name="ypad">0</property>
2425 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2426 <property name="width_chars">-1</property>
2427 <property name="single_line_mode">False</property>
2428 <property name="angle">0</property>
2268 </widget> 2429 </widget>
2269 <packing> 2430 <packing>
2270 <property name="type">label_item</property> 2431 <property name="type">label_item</property>
@@ -2298,6 +2459,10 @@ Press ENTER to add the data.</atkproperty>
2298 <property name="xpad">5</property> 2459 <property name="xpad">5</property>
2299 <property name="ypad">0</property> 2460 <property name="ypad">0</property>
2300 <property name="mnemonic_widget">fileInformationKeywordEntry</property> 2461 <property name="mnemonic_widget">fileInformationKeywordEntry</property>
2462 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2463 <property name="width_chars">-1</property>
2464 <property name="single_line_mode">False</property>
2465 <property name="angle">0</property>
2301 </widget> 2466 </widget>
2302 <packing> 2467 <packing>
2303 <property name="padding">0</property> 2468 <property name="padding">0</property>
@@ -2364,6 +2529,9 @@ Press ENTER to add the data.</atkproperty>
2364 <property name="rules_hint">True</property> 2529 <property name="rules_hint">True</property>
2365 <property name="reorderable">False</property> 2530 <property name="reorderable">False</property>
2366 <property name="enable_search">True</property> 2531 <property name="enable_search">True</property>
2532 <property name="fixed_height_mode">False</property>
2533 <property name="hover_selection">False</property>
2534 <property name="hover_expand">False</property>
2367 <signal name="select_cursor_row" handler="on_metaDataDialogKeywordList_select_cursor_row" object="metaDataDialog" last_modification_time="Mon, 23 May 2005 18:58:34 GMT"/> 2535 <signal name="select_cursor_row" handler="on_metaDataDialogKeywordList_select_cursor_row" object="metaDataDialog" last_modification_time="Mon, 23 May 2005 18:58:34 GMT"/>
2368 </widget> 2536 </widget>
2369 </child> 2537 </child>
@@ -2383,6 +2551,10 @@ Press ENTER to add the data.</atkproperty>
2383 <property name="yalign">0.5</property> 2551 <property name="yalign">0.5</property>
2384 <property name="xpad">0</property> 2552 <property name="xpad">0</property>
2385 <property name="ypad">0</property> 2553 <property name="ypad">0</property>
2554 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2555 <property name="width_chars">-1</property>
2556 <property name="single_line_mode">False</property>
2557 <property name="angle">0</property>
2386 </widget> 2558 </widget>
2387 <packing> 2559 <packing>
2388 <property name="type">label_item</property> 2560 <property name="type">label_item</property>
@@ -2413,6 +2585,7 @@ Press ENTER to add the data.</atkproperty>
2413 <property name="skip_pager_hint">False</property> 2585 <property name="skip_pager_hint">False</property>
2414 <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> 2586 <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
2415 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> 2587 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
2588 <property name="focus_on_map">True</property>
2416 <property name="has_separator">True</property> 2589 <property name="has_separator">True</property>
2417 2590
2418 <child internal-child="vbox"> 2591 <child internal-child="vbox">
@@ -2474,6 +2647,9 @@ Press ENTER to add the data.</atkproperty>
2474 <property name="rules_hint">False</property> 2647 <property name="rules_hint">False</property>
2475 <property name="reorderable">False</property> 2648 <property name="reorderable">False</property>
2476 <property name="enable_search">True</property> 2649 <property name="enable_search">True</property>
2650 <property name="fixed_height_mode">False</property>
2651 <property name="hover_selection">False</property>
2652 <property name="hover_expand">False</property>
2477 </widget> 2653 </widget>
2478 </child> 2654 </child>
2479 </widget> 2655 </widget>
@@ -2492,6 +2668,10 @@ Press ENTER to add the data.</atkproperty>
2492 <property name="yalign">0.5</property> 2668 <property name="yalign">0.5</property>
2493 <property name="xpad">0</property> 2669 <property name="xpad">0</property>
2494 <property name="ypad">0</property> 2670 <property name="ypad">0</property>
2671 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2672 <property name="width_chars">-1</property>
2673 <property name="single_line_mode">False</property>
2674 <property name="angle">0</property>
2495 </widget> 2675 </widget>
2496 <packing> 2676 <packing>
2497 <property name="type">label_item</property> 2677 <property name="type">label_item</property>
@@ -2509,7 +2689,6 @@ Press ENTER to add the data.</atkproperty>
2509</widget> 2689</widget>
2510 2690
2511<widget class="GtkWindow" id="searchResultsFrame"> 2691<widget class="GtkWindow" id="searchResultsFrame">
2512 <property name="visible">True</property>
2513 <property name="title" translatable="yes">Search Results</property> 2692 <property name="title" translatable="yes">Search Results</property>
2514 <property name="type">GTK_WINDOW_TOPLEVEL</property> 2693 <property name="type">GTK_WINDOW_TOPLEVEL</property>
2515 <property name="window_position">GTK_WIN_POS_NONE</property> 2694 <property name="window_position">GTK_WIN_POS_NONE</property>
@@ -2521,6 +2700,7 @@ Press ENTER to add the data.</atkproperty>
2521 <property name="skip_pager_hint">False</property> 2700 <property name="skip_pager_hint">False</property>
2522 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> 2701 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
2523 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> 2702 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
2703 <property name="focus_on_map">True</property>
2524 2704
2525 <child> 2705 <child>
2526 <widget class="GtkScrolledWindow" id="searchPageScrolledWindow"> 2706 <widget class="GtkScrolledWindow" id="searchPageScrolledWindow">
@@ -2531,7 +2711,6 @@ Press ENTER to add the data.</atkproperty>
2531 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 2711 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2532 <property name="shadow_type">GTK_SHADOW_NONE</property> 2712 <property name="shadow_type">GTK_SHADOW_NONE</property>
2533 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 2713 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
2534 <signal name="destroy" handler="on_searchPageScrolledWindow_destroy" object="searchPageScrolledWindow" last_modification_time="Thu, 26 May 2005 22:41:04 GMT"/>
2535 2714
2536 <child> 2715 <child>
2537 <widget class="GtkViewport" id="viewport5"> 2716 <widget class="GtkViewport" id="viewport5">
@@ -2548,8 +2727,8 @@ Press ENTER to add the data.</atkproperty>
2548 <widget class="GtkScrolledWindow" id="scrolledwindow15"> 2727 <widget class="GtkScrolledWindow" id="scrolledwindow15">
2549 <property name="visible">True</property> 2728 <property name="visible">True</property>
2550 <property name="can_focus">True</property> 2729 <property name="can_focus">True</property>
2551 <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> 2730 <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2552 <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> 2731 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2553 <property name="shadow_type">GTK_SHADOW_IN</property> 2732 <property name="shadow_type">GTK_SHADOW_IN</property>
2554 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 2733 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
2555 2734
@@ -2562,6 +2741,10 @@ Press ENTER to add the data.</atkproperty>
2562 <property name="rules_hint">False</property> 2741 <property name="rules_hint">False</property>
2563 <property name="reorderable">False</property> 2742 <property name="reorderable">False</property>
2564 <property name="enable_search">True</property> 2743 <property name="enable_search">True</property>
2744 <property name="fixed_height_mode">False</property>
2745 <property name="hover_selection">False</property>
2746 <property name="hover_expand">False</property>
2747 <signal name="destroy" handler="on_searchResults_destroy" object="searchResults" last_modification_time="Sat, 28 May 2005 13:55:09 GMT"/>
2565 </widget> 2748 </widget>
2566 </child> 2749 </child>
2567 </widget> 2750 </widget>
@@ -2573,23 +2756,24 @@ Press ENTER to add the data.</atkproperty>
2573 </child> 2756 </child>
2574 2757
2575 <child> 2758 <child>
2576 <widget class="GtkButton" id="downloadButton"> 2759 <widget class="GtkHBox" id="hbox23">
2577 <property name="visible">True</property> 2760 <property name="visible">True</property>
2578 <property name="can_focus">True</property> 2761 <property name="homogeneous">False</property>
2579 <property name="relief">GTK_RELIEF_NORMAL</property> 2762 <property name="spacing">0</property>
2580 <property name="focus_on_click">True</property>
2581 <signal name="clicked" handler="on_downloadButton_clicked" object="searchResults" last_modification_time="Mon, 23 May 2005 18:59:36 GMT"/>
2582 <signal name="activate" handler="on_downloadButton_clicked" object="searchResults" last_modification_time="Thu, 26 May 2005 09:26:15 GMT"/>
2583 <accelerator key="Return" modifiers="GDK_CONTROL_MASK" signal="activate"/>
2584 2763
2585 <child> 2764 <child>
2586 <widget class="GtkHBox" id="hbox23"> 2765 <widget class="GtkButton" id="downloadButton">
2587 <property name="visible">True</property> 2766 <property name="visible">True</property>
2588 <property name="homogeneous">False</property> 2767 <property name="tooltip" translatable="yes">Download selected files.</property>
2589 <property name="spacing">0</property> 2768 <property name="can_focus">True</property>
2769 <property name="relief">GTK_RELIEF_NORMAL</property>
2770 <property name="focus_on_click">True</property>
2771 <signal name="clicked" handler="on_downloadButton_clicked" object="searchResults" last_modification_time="Mon, 23 May 2005 18:59:36 GMT"/>
2772 <signal name="activate" handler="on_downloadButton_clicked" object="searchResults" last_modification_time="Thu, 26 May 2005 09:26:15 GMT"/>
2773 <accelerator key="Return" modifiers="GDK_CONTROL_MASK" signal="activate"/>
2590 2774
2591 <child> 2775 <child>
2592 <widget class="GtkAlignment" id="alignment3"> 2776 <widget class="GtkAlignment" id="alignment10">
2593 <property name="visible">True</property> 2777 <property name="visible">True</property>
2594 <property name="xalign">0.5</property> 2778 <property name="xalign">0.5</property>
2595 <property name="yalign">0.5</property> 2779 <property name="yalign">0.5</property>
@@ -2601,13 +2785,13 @@ Press ENTER to add the data.</atkproperty>
2601 <property name="right_padding">0</property> 2785 <property name="right_padding">0</property>
2602 2786
2603 <child> 2787 <child>
2604 <widget class="GtkHBox" id="hbox13"> 2788 <widget class="GtkHBox" id="hbox23">
2605 <property name="visible">True</property> 2789 <property name="visible">True</property>
2606 <property name="homogeneous">False</property> 2790 <property name="homogeneous">False</property>
2607 <property name="spacing">2</property> 2791 <property name="spacing">2</property>
2608 2792
2609 <child> 2793 <child>
2610 <widget class="GtkImage" id="image3"> 2794 <widget class="GtkImage" id="image10">
2611 <property name="visible">True</property> 2795 <property name="visible">True</property>
2612 <property name="stock">gtk-copy</property> 2796 <property name="stock">gtk-copy</property>
2613 <property name="icon_size">4</property> 2797 <property name="icon_size">4</property>
@@ -2624,7 +2808,7 @@ Press ENTER to add the data.</atkproperty>
2624 </child> 2808 </child>
2625 2809
2626 <child> 2810 <child>
2627 <widget class="GtkLabel" id="label65"> 2811 <widget class="GtkLabel" id="label76">
2628 <property name="visible">True</property> 2812 <property name="visible">True</property>
2629 <property name="label" translatable="yes">_Download</property> 2813 <property name="label" translatable="yes">_Download</property>
2630 <property name="use_underline">True</property> 2814 <property name="use_underline">True</property>
@@ -2636,6 +2820,10 @@ Press ENTER to add the data.</atkproperty>
2636 <property name="yalign">0.5</property> 2820 <property name="yalign">0.5</property>
2637 <property name="xpad">0</property> 2821 <property name="xpad">0</property>
2638 <property name="ypad">0</property> 2822 <property name="ypad">0</property>
2823 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2824 <property name="width_chars">-1</property>
2825 <property name="single_line_mode">False</property>
2826 <property name="angle">0</property>
2639 </widget> 2827 </widget>
2640 <packing> 2828 <packing>
2641 <property name="padding">0</property> 2829 <property name="padding">0</property>
@@ -2646,30 +2834,33 @@ Press ENTER to add the data.</atkproperty>
2646 </widget> 2834 </widget>
2647 </child> 2835 </child>
2648 </widget> 2836 </widget>
2649 <packing>
2650 <property name="padding">0</property>
2651 <property name="expand">True</property>
2652 <property name="fill">True</property>
2653 </packing>
2654 </child> 2837 </child>
2838 </widget>
2839 <packing>
2840 <property name="padding">0</property>
2841 <property name="expand">True</property>
2842 <property name="fill">True</property>
2843 </packing>
2844 </child>
2655 2845
2656 <child> 2846 <child>
2657 <widget class="GtkButton" id="closeSearchButton"> 2847 <widget class="GtkButton" id="closeSearchButton">
2658 <property name="visible">True</property> 2848 <property name="visible">True</property>
2659 <property name="can_focus">True</property> 2849 <property name="tooltip" translatable="yes">Close this search.</property>
2660 <property name="label">gtk-close</property> 2850 <property name="can_focus">True</property>
2661 <property name="use_stock">True</property> 2851 <property name="label">gtk-close</property>
2662 <property name="relief">GTK_RELIEF_NORMAL</property> 2852 <property name="use_stock">True</property>
2663 <property name="focus_on_click">True</property> 2853 <property name="relief">GTK_RELIEF_NORMAL</property>
2664 <signal name="clicked" handler="on_closeSearchButton_clicked" object="searchPageScrolledWindow" last_modification_time="Thu, 26 May 2005 22:42:37 GMT"/> 2854 <property name="focus_on_click">True</property>
2665 </widget> 2855 <signal name="clicked" handler="on_closeSearchButton_clicked" object="searchPageScrolledWindow" last_modification_time="Thu, 26 May 2005 22:42:37 GMT"/>
2666 <packing> 2856 <signal name="activate" handler="on_closeSearchButton_clicked" object="searchPageScrolledWindow" last_modification_time="Fri, 27 May 2005 13:14:33 GMT"/>
2667 <property name="padding">0</property> 2857 <accelerator key="Escape" modifiers="0" signal="activate"/>
2668 <property name="expand">True</property>
2669 <property name="fill">True</property>
2670 </packing>
2671 </child>
2672 </widget> 2858 </widget>
2859 <packing>
2860 <property name="padding">0</property>
2861 <property name="expand">True</property>
2862 <property name="fill">True</property>
2863 </packing>
2673 </child> 2864 </child>
2674 </widget> 2865 </widget>
2675 <packing> 2866 <packing>
@@ -2687,7 +2878,6 @@ Press ENTER to add the data.</atkproperty>
2687</widget> 2878</widget>
2688 2879
2689<widget class="GtkWindow" id="namespaceContentFrame"> 2880<widget class="GtkWindow" id="namespaceContentFrame">
2690 <property name="visible">True</property>
2691 <property name="title" translatable="yes">Namespace Contents</property> 2881 <property name="title" translatable="yes">Namespace Contents</property>
2692 <property name="type">GTK_WINDOW_TOPLEVEL</property> 2882 <property name="type">GTK_WINDOW_TOPLEVEL</property>
2693 <property name="window_position">GTK_WIN_POS_NONE</property> 2883 <property name="window_position">GTK_WIN_POS_NONE</property>
@@ -2699,6 +2889,7 @@ Press ENTER to add the data.</atkproperty>
2699 <property name="skip_pager_hint">False</property> 2889 <property name="skip_pager_hint">False</property>
2700 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> 2890 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
2701 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> 2891 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
2892 <property name="focus_on_map">True</property>
2702 2893
2703 <child> 2894 <child>
2704 <widget class="GtkVBox" id="vbox12"> 2895 <widget class="GtkVBox" id="vbox12">
@@ -2724,6 +2915,9 @@ Press ENTER to add the data.</atkproperty>
2724 <property name="rules_hint">False</property> 2915 <property name="rules_hint">False</property>
2725 <property name="reorderable">False</property> 2916 <property name="reorderable">False</property>
2726 <property name="enable_search">True</property> 2917 <property name="enable_search">True</property>
2918 <property name="fixed_height_mode">False</property>
2919 <property name="hover_selection">False</property>
2920 <property name="hover_expand">False</property>
2727 <signal name="select_cursor_row" handler="on_namespaceContentFrameTreeView_select_cursor_row" object="namespaceContentFrame" last_modification_time="Mon, 23 May 2005 19:02:36 GMT"/> 2921 <signal name="select_cursor_row" handler="on_namespaceContentFrameTreeView_select_cursor_row" object="namespaceContentFrame" last_modification_time="Mon, 23 May 2005 19:02:36 GMT"/>
2728 </widget> 2922 </widget>
2729 </child> 2923 </child>
@@ -2797,6 +2991,10 @@ Press ENTER to add the data.</atkproperty>
2797 <property name="yalign">0.5</property> 2991 <property name="yalign">0.5</property>
2798 <property name="xpad">0</property> 2992 <property name="xpad">0</property>
2799 <property name="ypad">0</property> 2993 <property name="ypad">0</property>
2994 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2995 <property name="width_chars">-1</property>
2996 <property name="single_line_mode">False</property>
2997 <property name="angle">0</property>
2800 </widget> 2998 </widget>
2801 <packing> 2999 <packing>
2802 <property name="padding">0</property> 3000 <property name="padding">0</property>
@@ -2874,6 +3072,10 @@ Press ENTER to add the data.</atkproperty>
2874 <property name="yalign">0.5</property> 3072 <property name="yalign">0.5</property>
2875 <property name="xpad">0</property> 3073 <property name="xpad">0</property>
2876 <property name="ypad">0</property> 3074 <property name="ypad">0</property>
3075 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3076 <property name="width_chars">-1</property>
3077 <property name="single_line_mode">False</property>
3078 <property name="angle">0</property>
2877 </widget> 3079 </widget>
2878 <packing> 3080 <packing>
2879 <property name="padding">0</property> 3081 <property name="padding">0</property>
@@ -2904,7 +3106,6 @@ Press ENTER to add the data.</atkproperty>
2904</widget> 3106</widget>
2905 3107
2906<widget class="GtkWindow" id="chatFrame"> 3108<widget class="GtkWindow" id="chatFrame">
2907 <property name="visible">True</property>
2908 <property name="title" translatable="yes">Chat</property> 3109 <property name="title" translatable="yes">Chat</property>
2909 <property name="type">GTK_WINDOW_TOPLEVEL</property> 3110 <property name="type">GTK_WINDOW_TOPLEVEL</property>
2910 <property name="window_position">GTK_WIN_POS_NONE</property> 3111 <property name="window_position">GTK_WIN_POS_NONE</property>
@@ -2916,6 +3117,7 @@ Press ENTER to add the data.</atkproperty>
2916 <property name="skip_pager_hint">False</property> 3117 <property name="skip_pager_hint">False</property>
2917 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> 3118 <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
2918 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> 3119 <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
3120 <property name="focus_on_map">True</property>
2919 3121
2920 <child> 3122 <child>
2921 <widget class="GtkHBox" id="hbox17"> 3123 <widget class="GtkHBox" id="hbox17">
@@ -2943,12 +3145,12 @@ Press ENTER to add the data.</atkproperty>
2943 <property agent="glademm" name="cxx_visibility">public</property> 3145 <property agent="glademm" name="cxx_visibility">public</property>
2944 <property name="visible">True</property> 3146 <property name="visible">True</property>
2945 <property name="can_focus">True</property> 3147 <property name="can_focus">True</property>
2946 <property name="editable">True</property> 3148 <property name="editable">False</property>
2947 <property name="overwrite">False</property> 3149 <property name="overwrite">False</property>
2948 <property name="accepts_tab">True</property> 3150 <property name="accepts_tab">False</property>
2949 <property name="justification">GTK_JUSTIFY_LEFT</property> 3151 <property name="justification">GTK_JUSTIFY_LEFT</property>
2950 <property name="wrap_mode">GTK_WRAP_NONE</property> 3152 <property name="wrap_mode">GTK_WRAP_WORD</property>
2951 <property name="cursor_visible">True</property> 3153 <property name="cursor_visible">False</property>
2952 <property name="pixels_above_lines">0</property> 3154 <property name="pixels_above_lines">0</property>
2953 <property name="pixels_below_lines">0</property> 3155 <property name="pixels_below_lines">0</property>
2954 <property name="pixels_inside_wrap">0</property> 3156 <property name="pixels_inside_wrap">0</property>
@@ -2976,7 +3178,14 @@ Press ENTER to add the data.</atkproperty>
2976 <widget class="GtkComboBoxEntry" id="chatLineTextEntry"> 3178 <widget class="GtkComboBoxEntry" id="chatLineTextEntry">
2977 <property agent="glademm" name="cxx_visibility">public</property> 3179 <property agent="glademm" name="cxx_visibility">public</property>
2978 <property name="visible">True</property> 3180 <property name="visible">True</property>
2979 <property name="items" translatable="yes">/join #gnunet</property> 3181 <property name="can_default">True</property>
3182 <property name="has_default">True</property>
3183 <property name="can_focus">True</property>
3184 <property name="has_focus">True</property>
3185 <property name="items" translatable="yes">Hello!</property>
3186 <property name="add_tearoffs">False</property>
3187 <property name="has_frame">True</property>
3188 <property name="focus_on_click">False</property>
2980 <signal name="editing_done" handler="on_chatLineTextEntry_editing_done" last_modification_time="Mon, 23 May 2005 17:18:48 GMT"/> 3189 <signal name="editing_done" handler="on_chatLineTextEntry_editing_done" last_modification_time="Mon, 23 May 2005 17:18:48 GMT"/>
2981 </widget> 3190 </widget>
2982 <packing> 3191 <packing>
@@ -3044,6 +3253,10 @@ Press ENTER to add the data.</atkproperty>
3044 <property name="yalign">0.5</property> 3253 <property name="yalign">0.5</property>
3045 <property name="xpad">0</property> 3254 <property name="xpad">0</property>
3046 <property name="ypad">0</property> 3255 <property name="ypad">0</property>
3256 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3257 <property name="width_chars">-1</property>
3258 <property name="single_line_mode">False</property>
3259 <property name="angle">0</property>
3047 </widget> 3260 </widget>
3048 <packing> 3261 <packing>
3049 <property name="padding">0</property> 3262 <property name="padding">0</property>
@@ -3095,6 +3308,9 @@ Press ENTER to add the data.</atkproperty>
3095 <property name="rules_hint">False</property> 3308 <property name="rules_hint">False</property>
3096 <property name="reorderable">False</property> 3309 <property name="reorderable">False</property>
3097 <property name="enable_search">True</property> 3310 <property name="enable_search">True</property>
3311 <property name="fixed_height_mode">False</property>
3312 <property name="hover_selection">False</property>
3313 <property name="hover_expand">False</property>
3098 </widget> 3314 </widget>
3099 </child> 3315 </child>
3100 </widget> 3316 </widget>
@@ -3108,4 +3324,331 @@ Press ENTER to add the data.</atkproperty>
3108 </child> 3324 </child>
3109</widget> 3325</widget>
3110 3326
3327<widget class="GtkAboutDialog" id="aboutDialog">
3328 <property agent="glademm" name="cxx_visibility">public</property>
3329 <property name="visible">True</property>
3330 <property name="destroy_with_parent">False</property>
3331 <property name="name" translatable="yes">gnunet-gtk</property>
3332 <property name="copyright" translatable="yes">(C) 2001-2005 Christian Grothoff (and other contributing authors)</property>
3333 <property name="license" translatable="yes"> GNU GENERAL PUBLIC LICENSE
3334 Version 2, June 1991
3335
3336 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
3337 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3338 Everyone is permitted to copy and distribute verbatim copies
3339 of this license document, but changing it is not allowed.
3340
3341 Preamble
3342
3343 The licenses for most software are designed to take away your
3344freedom to share and change it. By contrast, the GNU General Public
3345License is intended to guarantee your freedom to share and change free
3346software--to make sure the software is free for all its users. This
3347General Public License applies to most of the Free Software
3348Foundation's software and to any other program whose authors commit to
3349using it. (Some other Free Software Foundation software is covered by
3350the GNU Library General Public License instead.) You can apply it to
3351your programs, too.
3352
3353 When we speak of free software, we are referring to freedom, not
3354price. Our General Public Licenses are designed to make sure that you
3355have the freedom to distribute copies of free software (and charge for
3356this service if you wish), that you receive source code or can get it
3357if you want it, that you can change the software or use pieces of it
3358in new free programs; and that you know you can do these things.
3359
3360 To protect your rights, we need to make restrictions that forbid
3361anyone to deny you these rights or to ask you to surrender the rights.
3362These restrictions translate to certain responsibilities for you if you
3363distribute copies of the software, or if you modify it.
3364
3365 For example, if you distribute copies of such a program, whether
3366gratis or for a fee, you must give the recipients all the rights that
3367you have. You must make sure that they, too, receive or can get the
3368source code. And you must show them these terms so they know their
3369rights.
3370
3371 We protect your rights with two steps: (1) copyright the software, and
3372(2) offer you this license which gives you legal permission to copy,
3373distribute and/or modify the software.
3374
3375 Also, for each author's protection and ours, we want to make certain
3376that everyone understands that there is no warranty for this free
3377software. If the software is modified by someone else and passed on, we
3378want its recipients to know that what they have is not the original, so
3379that any problems introduced by others will not reflect on the original
3380authors' reputations.
3381
3382 Finally, any free program is threatened constantly by software
3383patents. We wish to avoid the danger that redistributors of a free
3384program will individually obtain patent licenses, in effect making the
3385program proprietary. To prevent this, we have made it clear that any
3386patent must be licensed for everyone's free use or not licensed at all.
3387
3388 The precise terms and conditions for copying, distribution and
3389modification follow.
3390
3391 GNU GENERAL PUBLIC LICENSE
3392 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
3393
3394 0. This License applies to any program or other work which contains
3395a notice placed by the copyright holder saying it may be distributed
3396under the terms of this General Public License. The &quot;Program&quot;, below,
3397refers to any such program or work, and a &quot;work based on the Program&quot;
3398means either the Program or any derivative work under copyright law:
3399that is to say, a work containing the Program or a portion of it,
3400either verbatim or with modifications and/or translated into another
3401language. (Hereinafter, translation is included without limitation in
3402the term &quot;modification&quot;.) Each licensee is addressed as &quot;you&quot;.
3403
3404Activities other than copying, distribution and modification are not
3405covered by this License; they are outside its scope. The act of
3406running the Program is not restricted, and the output from the Program
3407is covered only if its contents constitute a work based on the
3408Program (independent of having been made by running the Program).
3409Whether that is true depends on what the Program does.
3410
3411 1. You may copy and distribute verbatim copies of the Program's
3412source code as you receive it, in any medium, provided that you
3413conspicuously and appropriately publish on each copy an appropriate
3414copyright notice and disclaimer of warranty; keep intact all the
3415notices that refer to this License and to the absence of any warranty;
3416and give any other recipients of the Program a copy of this License
3417along with the Program.
3418
3419You may charge a fee for the physical act of transferring a copy, and
3420you may at your option offer warranty protection in exchange for a fee.
3421
3422 2. You may modify your copy or copies of the Program or any portion
3423of it, thus forming a work based on the Program, and copy and
3424distribute such modifications or work under the terms of Section 1
3425above, provided that you also meet all of these conditions:
3426
3427 a) You must cause the modified files to carry prominent notices
3428 stating that you changed the files and the date of any change.
3429
3430 b) You must cause any work that you distribute or publish, that in
3431 whole or in part contains or is derived from the Program or any
3432 part thereof, to be licensed as a whole at no charge to all third
3433 parties under the terms of this License.
3434
3435 c) If the modified program normally reads commands interactively
3436 when run, you must cause it, when started running for such
3437 interactive use in the most ordinary way, to print or display an
3438 announcement including an appropriate copyright notice and a
3439
3440 notice that there is no warranty (or else, saying that you provide
3441 a warranty) and that users may redistribute the program under
3442 these conditions, and telling the user how to view a copy of this
3443 License. (Exception: if the Program itself is interactive but
3444 does not normally print such an announcement, your work based on
3445 the Program is not required to print an announcement.)
3446
3447These requirements apply to the modified work as a whole. If
3448identifiable sections of that work are not derived from the Program,
3449and can be reasonably considered independent and separate works in
3450themselves, then this License, and its terms, do not apply to those
3451sections when you distribute them as separate works. But when you
3452distribute the same sections as part of a whole which is a work based
3453on the Program, the distribution of the whole must be on the terms of
3454this License, whose permissions for other licensees extend to the
3455entire whole, and thus to each and every part regardless of who wrote it.
3456
3457Thus, it is not the intent of this section to claim rights or contest
3458your rights to work written entirely by you; rather, the intent is to
3459exercise the right to control the distribution of derivative or
3460collective works based on the Program.
3461
3462In addition, mere aggregation of another work not based on the Program
3463with the Program (or with a work based on the Program) on a volume of
3464a storage or distribution medium does not bring the other work under
3465the scope of this License.
3466
3467 3. You may copy and distribute the Program (or a work based on it,
3468under Section 2) in object code or executable form under the terms of
3469Sections 1 and 2 above provided that you also do one of the following:
3470
3471 a) Accompany it with the complete corresponding machine-readable
3472 source code, which must be distributed under the terms of Sections
3473 1 and 2 above on a medium customarily used for software interchange; or,
3474
3475 b) Accompany it with a written offer, valid for at least three
3476 years, to give any third party, for a charge no more than your
3477 cost of physically performing source distribution, a complete
3478 machine-readable copy of the corresponding source code, to be
3479 distributed under the terms of Sections 1 and 2 above on a medium
3480 customarily used for software interchange; or,
3481
3482 c) Accompany it with the information you received as to the offer
3483 to distribute corresponding source code. (This alternative is
3484 allowed only for noncommercial distribution and only if you
3485 received the program in object code or executable form with such
3486 an offer, in accord with Subsection b above.)
3487
3488The source code for a work means the preferred form of the work for
3489making modifications to it. For an executable work, complete source
3490code means all the source code for all modules it contains, plus any
3491associated interface definition files, plus the scripts used to
3492control compilation and installation of the executable. However, as a
3493special exception, the source code distributed need not include
3494anything that is normally distributed (in either source or binary
3495form) with the major components (compiler, kernel, and so on) of the
3496operating system on which the executable runs, unless that component
3497itself accompanies the executable.
3498
3499If distribution of executable or object code is made by offering
3500access to copy from a designated place, then offering equivalent
3501access to copy the source code from the same place counts as
3502distribution of the source code, even though third parties are not
3503compelled to copy the source along with the object code.
3504
3505 4. You may not copy, modify, sublicense, or distribute the Program
3506except as expressly provided under this License. Any attempt
3507otherwise to copy, modify, sublicense or distribute the Program is
3508void, and will automatically terminate your rights under this License.
3509However, parties who have received copies, or rights, from you under
3510this License will not have their licenses terminated so long as such
3511parties remain in full compliance.
3512
3513 5. You are not required to accept this License, since you have not
3514signed it. However, nothing else grants you permission to modify or
3515distribute the Program or its derivative works. These actions are
3516prohibited by law if you do not accept this License. Therefore, by
3517modifying or distributing the Program (or any work based on the
3518Program), you indicate your acceptance of this License to do so, and
3519all its terms and conditions for copying, distributing or modifying
3520the Program or works based on it.
3521
3522 6. Each time you redistribute the Program (or any work based on the
3523Program), the recipient automatically receives a license from the
3524original licensor to copy, distribute or modify the Program subject to
3525these terms and conditions. You may not impose any further
3526restrictions on the recipients' exercise of the rights granted herein.
3527You are not responsible for enforcing compliance by third parties to
3528this License.
3529
3530 7. If, as a consequence of a court judgment or allegation of patent
3531infringement or for any other reason (not limited to patent issues),
3532conditions are imposed on you (whether by court order, agreement or
3533otherwise) that contradict the conditions of this License, they do not
3534excuse you from the conditions of this License. If you cannot
3535distribute so as to satisfy simultaneously your obligations under this
3536License and any other pertinent obligations, then as a consequence you
3537may not distribute the Program at all. For example, if a patent
3538license would not permit royalty-free redistribution of the Program by
3539all those who receive copies directly or indirectly through you, then
3540the only way you could satisfy both it and this License would be to
3541refrain entirely from distribution of the Program.
3542
3543If any portion of this section is held invalid or unenforceable under
3544any particular circumstance, the balance of the section is intended to
3545apply and the section as a whole is intended to apply in other
3546circumstances.
3547
3548It is not the purpose of this section to induce you to infringe any
3549patents or other property right claims or to contest validity of any
3550such claims; this section has the sole purpose of protecting the
3551integrity of the free software distribution system, which is
3552implemented by public license practices. Many people have made
3553generous contributions to the wide range of software distributed
3554through that system in reliance on consistent application of that
3555system; it is up to the author/donor to decide if he or she is willing
3556to distribute software through any other system and a licensee cannot
3557impose that choice.
3558
3559This section is intended to make thoroughly clear what is believed to
3560be a consequence of the rest of this License.
3561
3562 8. If the distribution and/or use of the Program is restricted in
3563certain countries either by patents or by copyrighted interfaces, the
3564original copyright holder who places the Program under this License
3565may add an explicit geographical distribution limitation excluding
3566those countries, so that distribution is permitted only in or among
3567countries not thus excluded. In such case, this License incorporates
3568the limitation as if written in the body of this License.
3569
3570 9. The Free Software Foundation may publish revised and/or new versions
3571of the General Public License from time to time. Such new versions will
3572be similar in spirit to the present version, but may differ in detail to
3573address new problems or concerns.
3574
3575Each version is given a distinguishing version number. If the Program
3576specifies a version number of this License which applies to it and &quot;any
3577later version&quot;, you have the option of following the terms and conditions
3578either of that version or of any later version published by the Free
3579Software Foundation. If the Program does not specify a version number of
3580this License, you may choose any version ever published by the Free Software
3581Foundation.
3582
3583 10. If you wish to incorporate parts of the Program into other free
3584programs whose distribution conditions are different, write to the author
3585to ask for permission. For software which is copyrighted by the Free
3586Software Foundation, write to the Free Software Foundation; we sometimes
3587make exceptions for this. Our decision will be guided by the two goals
3588of preserving the free status of all derivatives of our free software and
3589of promoting the sharing and reuse of software generally.
3590
3591 NO WARRANTY
3592
3593 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
3594FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
3595OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
3596PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
3597OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
3598MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
3599TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
3600PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
3601REPAIR OR CORRECTION.
3602
3603 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
3604WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
3605REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
3606INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
3607OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
3608TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
3609YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
3610PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
3611POSSIBILITY OF SUCH DAMAGES.
3612
3613 END OF TERMS AND CONDITIONS
3614</property>
3615 <property name="website">http://www.gnu.org/software/gnunet/</property>
3616 <property name="website_label" translatable="yes">GNUnet Website</property>
3617 <property name="authors">Juergen Appel &lt;jappel@linux01.gwdg.de&gt;
3618Krista Bennett &lt;kbennett@cerias.purdue.edu&gt;
3619James Blackwell &lt;jblack@linuxguru.net&gt;
3620Ludovic Courtes &lt;ludo@chbouib.org&gt;
3621Nils Durner &lt;N.Durner@t-online.de&gt;
3622Renaldo Ferreira &lt;rf@cs.purdue.edu&gt;
3623Christian Grothoff &lt;christian@grothoff.org&gt;
3624Eric Haumant
3625Tzvetan Horozov &lt;horozov@motorola.com&gt;
3626Gerd Knorr &lt;kraxel@bytesex.org&gt;
3627Werner Koch &lt;libgcrypt@g10code.com&gt;
3628Uli Luckas &lt;luckas@musoft.de&gt;
3629Blake Matheny &lt;bmatheny@purdue.edu&gt;
3630Glenn McGrath &lt;bug1@iinet.net.au&gt;
3631Hendrik Pagenhardt &lt;Hendrik.Pagenhardt@gmx.net&gt;
3632Ioana Patrascu &lt;ioanapatrascu@yahoo.com&gt;
3633Marko Raeihae
3634Paul Ruth &lt;ruth@cs.purdue.edu&gt;
3635Risto Saarelma
3636Antti Salonen
3637Tiberius Stef &lt;tstef@cs.purdue.edu&gt;
3638Tuomas Toivonen
3639Tomi Tukiainen
3640Kevin Vandersloot &lt;kfv101@psu.edu&gt;
3641Simo Viitanen
3642Larry Waldo
3643Igor Wronsky &lt;iwronsky@users.sourceforge.net&gt;
3644&lt;january@hushmail.com&gt;
3645</property>
3646 <property name="documenters">Christian Grothoff &lt;christian@grothoff.org&gt;
3647Nils Durner &lt;nils@gnunet.org&gt;</property>
3648 <property name="artists">Christian Muellner &lt;chris@flop.de&gt;
3649Alex Jones &lt;alexrjones@ntlworld.com&gt;</property>
3650 <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
3651 <property name="logo">gnunet_logo.png</property>
3652</widget>
3653
3111</glade-interface> 3654</glade-interface>
diff --git a/src/Makefile.am b/src/Makefile.am
index 1f37d08e..55a697d2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -13,7 +13,6 @@ gnunet_gtk_SOURCES = \
13 daemon.c daemon.h \ 13 daemon.c daemon.h \
14 fs.c fs.h \ 14 fs.c fs.h \
15 gettext.h \ 15 gettext.h \
16 gtk26about.c gtk26about.h \
17 helper.c helper.h \ 16 helper.c helper.h \
18 main.c main.h \ 17 main.c main.h \
19 platform.h plibc.h \ 18 platform.h plibc.h \
diff --git a/src/about.c b/src/about.c
index bd41cbac..2a56256a 100644
--- a/src/about.c
+++ b/src/about.c
@@ -18,7 +18,7 @@
18*/ 18*/
19 19
20/** 20/**
21 * @file src/applications/afs/gtkui/about.c 21 * @file src/about.c
22 * @author Christian Grothoff 22 * @author Christian Grothoff
23 * @author Igor Wronsky 23 * @author Igor Wronsky
24 * 24 *
@@ -26,100 +26,25 @@
26 */ 26 */
27 27
28#include "config.h" 28#include "config.h"
29#include "gettext.h" 29#include "main.h"
30#include <gdk-pixbuf/gdk-pixbuf.h>
31#include "gtk26about.h"
32
33#include "helper.h"
34 30
35/** 31/**
36 * This displays an about window 32 * This displays an about window
37 *
38 * Todo: the GTK demo can do links.
39 */ 33 */
40void on_about_clicked(GtkWidget *dummy, 34void on_about_clicked(GtkWidget *dummy,
41 gpointer data) { 35 gpointer data) {
42 const gchar * authors[] = { 36 GtkWidget * ad;
43 "Juergen Appel <jappel@linux01.gwdg.de>", 37 GladeXML * axml;
44 "Krista Bennett <kbennett@cerias.purdue.edu>", 38
45 "James Blackwell <jblack@linuxguru.net>", 39 axml
46 "Ludovic Courtes <ludo@chbouib.org>", 40 = glade_xml_new(GLADE_FILE,
47 "Nils Durner <N.Durner@t-online.de>", 41 "aboutDialog",
48 "Renaldo Ferreira <rf@cs.purdue.edu>", 42 NULL);
49 "Christian Grothoff <christian@grothoff.org>", 43 ad
50 "Eric Haumant", 44 = glade_xml_get_widget(axml,
51 "Tzvetan Horozov <horozov@motorola.com>", 45 "aboutDialog");
52 "Gerd Knorr <kraxel@bytesex.org>", 46 gtk_dialog_run(GTK_DIALOG(ad));
53 "Werner Koch <libgcrypt@g10code.com>", 47 g_object_unref(axml);
54 "Uli Luckas <luckas@musoft.de>",
55 "Blake Matheny <bmatheny@purdue.edu>",
56 "Glenn McGrath <bug1@iinet.net.au>",
57 "Hendrik Pagenhardt <Hendrik.Pagenhardt@gmx.net>",
58 "Ioana Patrascu <ioanapatrascu@yahoo.com>",
59 "Marko Raeihae",
60 "Paul Ruth <ruth@cs.purdue.edu>",
61 "Risto Saarelma",
62 "Antti Salonen",
63 "Tiberius Stef <tstef@cs.purdue.edu>",
64 "Tuomas Toivonen",
65 "Tomi Tukiainen",
66 "Kevin Vandersloot <kfv101@psu.edu>",
67 "Simo Viitanen",
68 "Larry Waldo",
69 "Igor Wronsky <iwronsky@users.sourceforge.net>",
70 "<january@hushmail.com>",
71 NULL,
72 };
73 const gchar * artists[] = {
74 "Christian Muellner <chris@flop.de>",
75 "Alex Jones <alexrjones@ntlworld.com>",
76 NULL,
77 };
78 const char * trans = _("translator-credits");
79 const char * license = "GNUnet is free software; you can redistribute it and/or modify\n"
80 "it under the terms of the GNU General Public License as published\n"
81 "by the Free Software Foundation; either version 2, or (at your\n"
82 "option) any later version.\n\n"
83 "GNUnet is distributed in the hope that it will be useful, but\n"
84 "WITHOUT ANY WARRANTY; without even the implied warranty of\n"
85 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
86 "See the GNU General Public License for more details.\n\n"
87 "You should have received a copy of the GNU General Public License\n"
88 "along with GNUnet; see the file COPYING. If not, write to the\n"
89 "Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
90 "Boston, MA 02111-1307, USA.\n";
91
92 GdkPixbuf * logo;
93 GError * error;
94
95 error = NULL;
96 logo = gdk_pixbuf_new_from_file("gnunet_logo.png",
97 &error);
98 if (logo != NULL) {
99 gtk_show_about_dialog(NULL,
100 "logo", logo,
101 "name", "gnunet-gtk",
102 "version", VERSION,
103 "copyright" , "(C) 2001-2005 Christian Grothoff (and other contributing authors)",
104 "website", "http://www.gnu.org/software/gnunet/",
105 "license", license,
106 "authors", authors,
107 "artists", artists,
108 (0 == strcmp(trans,"translator-credits")) ? NULL : "translator_credits", trans,
109 NULL);
110 g_object_unref(G_OBJECT(logo));
111 } else {
112 gtk_show_about_dialog(NULL,
113 "name", "gnunet-gtk",
114 "version", VERSION,
115 "copyright" , "(C) 2001-2005 Christian Grothoff (and other contributing authors)",
116 "website", "http://www.gnu.org/software/gnunet/",
117 "license", license,
118 "authors", authors,
119 "artists", artists,
120 (0 == strcmp(trans,"translator-credits")) ? NULL : "translator_credits", trans,
121 NULL);
122 }
123} 48}
124 49
125/* end of about.c */ 50/* end of about.c */
diff --git a/src/fs.c b/src/fs.c
index d59879f7..f1c0f98f 100644
--- a/src/fs.c
+++ b/src/fs.c
@@ -25,7 +25,7 @@
25 */ 25 */
26 26
27#include "fs.h" 27#include "fs.h"
28 28#include "search.h"
29 29
30struct FSUI_Context * ctx; 30struct FSUI_Context * ctx;
31 31
diff --git a/src/gtk26about.c b/src/gtk26about.c
deleted file mode 100644
index 9228caa2..00000000
--- a/src/gtk26about.c
+++ /dev/null
@@ -1,1846 +0,0 @@
1/* GTK - The GIMP Toolkit
2 * Copyright (C) 2001 CodeFactory AB
3 * Copyright (C) 2001, 2002 Anders Carlsson
4 * Copyright (C) 2003, 2004 Matthias Clasen <mclasen@redhat.com>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 */
21
22/*
23 * Author: Anders Carlsson <andersca@gnu.org>
24 *
25 * Modified by the GTK+ Team and others 1997-2004. See the AUTHORS
26 * file for a list of people on the GTK+ Team. See the ChangeLog
27 * files for a list of changes. These files are distributed with
28 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
29 */
30
31#include "platform.h"
32#include "gtk26about.h"
33#include <string.h>
34#include <gdk/gdkkeysyms.h>
35#include <gtk/gtk.h>
36#include <gtk/gtktext.h>
37
38typedef struct _GtkAboutDialogPrivate GtkAboutDialogPrivate;
39struct _GtkAboutDialogPrivate
40{
41 gchar *name;
42 gchar *version;
43 gchar *copyright;
44 gchar *comments;
45 gchar *website;
46 gchar *website_label;
47 gchar *translator_credits;
48 gchar *license;
49
50 gchar **authors;
51 gchar **documenters;
52 gchar **artists;
53
54 GtkWidget *logo_image;
55 GtkWidget *name_label;
56 GtkWidget *comments_label;
57 GtkWidget *copyright_label;
58 GtkWidget *website_button;
59
60 GtkWidget *credits_button;
61 GtkWidget *credits_dialog;
62 GtkWidget *license_button;
63 GtkWidget *license_dialog;
64
65 GdkCursor *hand_cursor;
66 GdkCursor *regular_cursor;
67 gboolean hovering_over_link;
68};
69
70#define GTK_ABOUT_DIALOG_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogPrivate))
71
72
73enum
74{
75 PROP_0,
76 PROP_NAME,
77 PROP_VERSION,
78 PROP_COPYRIGHT,
79 PROP_COMMENTS,
80 PROP_WEBSITE,
81 PROP_WEBSITE_LABEL,
82 PROP_LICENSE,
83 PROP_AUTHORS,
84 PROP_DOCUMENTERS,
85 PROP_TRANSLATOR_CREDITS,
86 PROP_ARTISTS,
87 PROP_LOGO
88};
89
90static void gtk_about_dialog_finalize (GObject *object);
91static void gtk_about_dialog_get_property (GObject *object,
92 guint prop_id,
93 GValue *value,
94 GParamSpec *pspec);
95static void gtk_about_dialog_set_property (GObject *object,
96 guint prop_id,
97 const GValue *value,
98 GParamSpec *pspec);
99static void update_name_version (GtkAboutDialog *about);
100static GtkIconSet * icon_set_new_from_pixbufs (GList *pixbufs);
101static void activate_url (GtkWidget *widget,
102 gpointer data);
103static void set_link_button_text (GtkWidget *about,
104 GtkWidget *button,
105 gchar *text);
106static GtkWidget * create_link_button (GtkWidget *about,
107 gchar *text,
108 gchar *url,
109 GCallback callback,
110 gpointer data);
111static void follow_if_link (GtkAboutDialog *about,
112 GtkTextIter *iter);
113static void set_cursor_if_appropriate (GtkAboutDialog *about,
114 GtkTextView *text_view,
115 gint x,
116 gint y);
117static void add_credits_page (GtkAboutDialog *about,
118 GtkWidget *notebook,
119 gchar *title,
120 gchar **people);
121static gboolean credits_key_press_event (GtkWidget *text_view,
122 GdkEventKey *event,
123 GtkAboutDialog *about);
124static gboolean credits_event_after (GtkWidget *text_view,
125 GdkEvent *event,
126 GtkAboutDialog *about);
127static gboolean credits_motion_notify_event (GtkWidget *text_view,
128 GdkEventMotion *event,
129 GtkAboutDialog *about);
130static gboolean credits_visibility_notify_event (GtkWidget *text_view,
131 GdkEventVisibility *event,
132 GtkAboutDialog *about);
133static void display_credits_dialog (GtkWidget *button,
134 gpointer data);
135static void display_license_dialog (GtkWidget *button,
136 gpointer data);
137
138
139static GtkAboutDialogActivateLinkFunc activate_email_hook = NULL;
140static GtkAboutDialogActivateLinkFunc activate_url_hook = NULL;
141
142G_DEFINE_TYPE (GtkAboutDialog, gtk_about_dialog, GTK_TYPE_DIALOG);
143
144static void
145gtk_about_dialog_class_init (GtkAboutDialogClass *klass)
146{
147 GObjectClass *object_class;
148 GtkWidgetClass *widget_class;
149 GtkDialogClass *dialog_class;
150
151 object_class = (GObjectClass *)klass;
152 widget_class = (GtkWidgetClass *)klass;
153 dialog_class = (GtkDialogClass *)klass;
154
155 object_class->set_property = gtk_about_dialog_set_property;
156 object_class->get_property = gtk_about_dialog_get_property;
157
158 object_class->finalize = gtk_about_dialog_finalize;
159
160 g_object_class_install_property (object_class,
161 PROP_NAME,
162 g_param_spec_string ("name",
163 gettext_noop("Program name"),
164 gettext_noop("The name of the program. If this is not set, it defaults to g_get_application_name()"),
165 NULL,
166 G_PARAM_READWRITE));
167
168 g_object_class_install_property (object_class,
169 PROP_VERSION,
170 g_param_spec_string ("version",
171 gettext_noop("Program version"),
172 gettext_noop("The version of the program"),
173 NULL,
174 G_PARAM_READWRITE));
175 g_object_class_install_property (object_class,
176 PROP_COPYRIGHT,
177 g_param_spec_string ("copyright",
178 gettext_noop("Copyright string"),
179 gettext_noop("Copyright information for the program"),
180 NULL,
181 G_PARAM_READWRITE));
182
183 g_object_class_install_property (object_class,
184 PROP_COMMENTS,
185 g_param_spec_string ("comments",
186 gettext_noop("Comments string"),
187 gettext_noop("Comments about the program"),
188 NULL,
189 G_PARAM_READWRITE));
190 g_object_class_install_property (object_class,
191 PROP_LICENSE,
192 g_param_spec_string ("license",
193 gettext_noop("License"),
194 gettext_noop("The license of the program"),
195 NULL,
196 G_PARAM_READWRITE));
197
198 g_object_class_install_property (object_class,
199 PROP_WEBSITE,
200 g_param_spec_string ("website",
201 gettext_noop("Website URL"),
202 gettext_noop("The URL for the link to the website of the program"),
203 NULL,
204 G_PARAM_READWRITE));
205
206 g_object_class_install_property (object_class,
207 PROP_WEBSITE_LABEL,
208 g_param_spec_string ("website_label",
209 gettext_noop("Website label"),
210 gettext_noop("The label for the link to the website of the program. If this is not set, it defaults to the URL"),
211 NULL,
212 G_PARAM_READWRITE));
213
214 g_object_class_install_property (object_class,
215 PROP_AUTHORS,
216 g_param_spec_boxed ("authors",
217 gettext_noop("Authors"),
218 gettext_noop("List of authors of the programs"),
219 G_TYPE_STRV,
220 G_PARAM_READWRITE));
221 g_object_class_install_property (object_class,
222 PROP_DOCUMENTERS,
223 g_param_spec_boxed ("documenters",
224 gettext_noop("Documenters"),
225 gettext_noop("List of people documenting the program"),
226 G_TYPE_STRV,
227 G_PARAM_READWRITE));
228
229 g_object_class_install_property (object_class,
230 PROP_ARTISTS,
231 g_param_spec_boxed ("artists",
232 gettext_noop("Artists"),
233 gettext_noop("List of people who have contributed artwork to the program"),
234 G_TYPE_STRV,
235 G_PARAM_READWRITE));
236
237 g_object_class_install_property (object_class,
238 PROP_TRANSLATOR_CREDITS,
239 g_param_spec_string ("translator_credits",
240 gettext_noop("Translator credits"),
241 gettext_noop("Credits to the translators. This string should be marked as translatable"),
242 NULL,
243 G_PARAM_READWRITE));
244
245 g_object_class_install_property (object_class,
246 PROP_LOGO,
247 g_param_spec_object ("logo",
248 gettext_noop("Logo"),
249 gettext_noop("A logo for the about box. If this is not set, it defaults to gtk_window_get_default_icon_list()"),
250 GDK_TYPE_PIXBUF,
251 G_PARAM_READWRITE));
252
253 /* Style properties */
254 gtk_widget_class_install_style_property (widget_class,
255 g_param_spec_boxed ("link_color",
256 gettext_noop("Link Color"),
257 gettext_noop("Color of hyperlinks"),
258 GDK_TYPE_COLOR,
259 G_PARAM_READABLE));
260
261 g_type_class_add_private (object_class, sizeof (GtkAboutDialogPrivate));
262}
263
264static void
265gtk_about_dialog_init (GtkAboutDialog *about)
266{
267 GtkAboutDialogPrivate *priv;
268 GtkWidget *vbox, *hbox, *button;
269
270 /* Data */
271 priv = GTK_ABOUT_DIALOG_GET_PRIVATE (about);
272 about->private_data = priv;
273
274 priv->name = NULL;
275 priv->version = NULL;
276 priv->copyright = NULL;
277 priv->comments = NULL;
278 priv->website = NULL;
279 priv->website_label = NULL;
280 priv->translator_credits = NULL;
281 priv->authors = NULL;
282 priv->documenters = NULL;
283 priv->artists = NULL;
284
285 priv->hand_cursor = gdk_cursor_new (GDK_HAND2);
286 priv->regular_cursor = gdk_cursor_new (GDK_XTERM);
287 priv->hovering_over_link = FALSE;
288
289 /* Widgets */
290 gtk_widget_push_composite_child ();
291 vbox = gtk_vbox_new (FALSE, 8);
292 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
293
294 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (about)->vbox), vbox, TRUE, TRUE, 0);
295
296 priv->logo_image = gtk_image_new ();
297 gtk_box_pack_start (GTK_BOX (vbox), priv->logo_image, FALSE, FALSE, 0);
298
299 priv->name_label = gtk_label_new (NULL);
300 gtk_label_set_selectable (GTK_LABEL (priv->name_label), TRUE);
301 gtk_label_set_justify (GTK_LABEL (priv->name_label), GTK_JUSTIFY_CENTER);
302 gtk_box_pack_start (GTK_BOX (vbox), priv->name_label, FALSE, FALSE, 0);
303
304 priv->comments_label = gtk_label_new (NULL);
305 gtk_label_set_selectable (GTK_LABEL (priv->comments_label), TRUE);
306 gtk_label_set_justify (GTK_LABEL (priv->comments_label), GTK_JUSTIFY_CENTER);
307 gtk_label_set_line_wrap (GTK_LABEL (priv->comments_label), TRUE);
308 gtk_box_pack_start (GTK_BOX (vbox), priv->comments_label, FALSE, FALSE, 0);
309
310 priv->copyright_label = gtk_label_new (NULL);
311 gtk_label_set_selectable (GTK_LABEL (priv->copyright_label), TRUE);
312 gtk_label_set_justify (GTK_LABEL (priv->copyright_label), GTK_JUSTIFY_CENTER);
313 gtk_box_pack_start (GTK_BOX (vbox), priv->copyright_label, FALSE, FALSE, 0);
314
315 button = create_link_button (GTK_WIDGET (about), "", "",
316 G_CALLBACK (activate_url), about);
317
318 hbox = gtk_hbox_new (TRUE, 0);
319 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
320 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0);
321 priv->website_button = button;
322
323 gtk_widget_show (vbox);
324 gtk_widget_show (priv->logo_image);
325 gtk_widget_show (priv->name_label);
326 gtk_widget_show (hbox);
327
328 /* Add the OK button */
329 gtk_dialog_add_button (GTK_DIALOG (about), GTK_STOCK_OK, GTK_RESPONSE_OK);
330 gtk_dialog_set_default_response (GTK_DIALOG (about), GTK_RESPONSE_OK);
331
332 /* Add the credits button */
333 button = gtk_button_new_from_stock (gettext_noop("_Credits"));
334 gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area),
335 button, FALSE, TRUE, 0);
336 gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (about)->action_area), button, TRUE);
337 g_signal_connect (button, "clicked", G_CALLBACK (display_credits_dialog), about);
338 priv->credits_button = button;
339 priv->credits_dialog = NULL;
340
341 /* Add the license button */
342 button = gtk_button_new_from_stock (gettext_noop("_License"));
343 gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area),
344 button, FALSE, TRUE, 0);
345 gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (about)->action_area), button, TRUE);
346 g_signal_connect (button, "clicked", G_CALLBACK (display_license_dialog), about);
347 priv->license_button = button;
348 priv->license_dialog = NULL;
349
350 gtk_window_set_resizable (GTK_WINDOW (about), FALSE);
351
352 gtk_widget_pop_composite_child ();
353}
354
355static void
356gtk_about_dialog_finalize (GObject *object)
357{
358 GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
359 GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
360
361 g_free (priv->name);
362 g_free (priv->version);
363 g_free (priv->copyright);
364 g_free (priv->comments);
365 g_free (priv->license);
366 g_free (priv->website);
367 g_free (priv->website_label);
368 g_free (priv->translator_credits);
369
370 g_strfreev (priv->authors);
371 g_strfreev (priv->documenters);
372 g_strfreev (priv->artists);
373
374 g_free (priv);
375 about->private_data = NULL;
376
377 G_OBJECT_CLASS (gtk_about_dialog_parent_class)->finalize (object);
378}
379
380static void
381gtk_about_dialog_set_property (GObject *object,
382 guint prop_id,
383 const GValue *value,
384 GParamSpec *pspec)
385{
386 GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
387
388 switch (prop_id)
389 {
390 case PROP_NAME:
391 gtk_about_dialog_set_name (about, g_value_get_string (value));
392 break;
393 case PROP_VERSION:
394 gtk_about_dialog_set_version (about, g_value_get_string (value));
395 break;
396 case PROP_COMMENTS:
397 gtk_about_dialog_set_comments (about, g_value_get_string (value));
398 break;
399 case PROP_WEBSITE:
400 gtk_about_dialog_set_website (about, g_value_get_string (value));
401 break;
402 case PROP_WEBSITE_LABEL:
403 gtk_about_dialog_set_website_label (about, g_value_get_string (value));
404 break;
405 case PROP_LICENSE:
406 gtk_about_dialog_set_license (about, g_value_get_string (value));
407 break;
408 case PROP_COPYRIGHT:
409 gtk_about_dialog_set_copyright (about, g_value_get_string (value));
410 break;
411 case PROP_LOGO:
412 gtk_about_dialog_set_logo (about, g_value_get_object (value));
413 break;
414 case PROP_AUTHORS:
415 gtk_about_dialog_set_authors (about, (gchar**)g_value_get_boxed (value));
416 break;
417 case PROP_DOCUMENTERS:
418 gtk_about_dialog_set_documenters (about, (gchar**)g_value_get_boxed (value));
419 break;
420 case PROP_ARTISTS:
421 gtk_about_dialog_set_artists (about, (gchar**)g_value_get_boxed (value));
422 break;
423 case PROP_TRANSLATOR_CREDITS:
424 gtk_about_dialog_set_translator_credits (about, g_value_get_string (value));
425 break;
426 default:
427 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
428 break;
429 }
430}
431
432static void
433gtk_about_dialog_get_property (GObject *object,
434 guint prop_id,
435 GValue *value,
436 GParamSpec *pspec)
437{
438 GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
439 GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
440
441 switch (prop_id)
442 {
443 case PROP_NAME:
444 g_value_set_string (value, priv->name);
445 break;
446 case PROP_VERSION:
447 g_value_set_string (value, priv->version);
448 break;
449 case PROP_COPYRIGHT:
450 g_value_set_string (value, priv->copyright);
451 break;
452 case PROP_COMMENTS:
453 g_value_set_string (value, priv->comments);
454 break;
455 case PROP_WEBSITE:
456 g_value_set_string (value, priv->website);
457 break;
458 case PROP_WEBSITE_LABEL:
459 g_value_set_string (value, priv->website_label);
460 break;
461 case PROP_LICENSE:
462 g_value_set_string (value, priv->license);
463 break;
464 case PROP_TRANSLATOR_CREDITS:
465 g_value_set_string (value, priv->translator_credits);
466 break;
467 case PROP_AUTHORS:
468 g_value_set_boxed (value, priv->authors);
469 break;
470 case PROP_DOCUMENTERS:
471 g_value_set_boxed (value, priv->documenters);
472 break;
473 case PROP_ARTISTS:
474 g_value_set_boxed (value, priv->artists);
475 break;
476 case PROP_LOGO:
477 g_value_set_object (value, gtk_image_get_pixbuf (GTK_IMAGE (priv->logo_image)));
478 break;
479 default:
480 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
481 break;
482 }
483}
484
485/**
486 * gtk_about_dialog_get_name:
487 * @about: a #GtkAboutDialog
488 *
489 * Returns the program name displayed in the about dialog.
490 *
491 * Return value: The program name. The string is owned by the about
492 * dialog and must not be modified.
493 *
494 * Since: 2.6
495 **/
496G_CONST_RETURN gchar *
497gtk_about_dialog_get_name (GtkAboutDialog *about)
498{
499 GtkAboutDialogPrivate *priv;
500
501 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
502
503 priv = (GtkAboutDialogPrivate *)about->private_data;
504
505 return priv->name;
506}
507
508static void
509update_name_version (GtkAboutDialog *about)
510{
511 GtkAboutDialogPrivate *priv;
512 gchar *title_string, *name_string;
513
514 priv = (GtkAboutDialogPrivate *)about->private_data;
515
516 title_string = g_strdup_printf (gettext_noop("About %s"), priv->name);
517 gtk_window_set_title (GTK_WINDOW (about), title_string);
518 g_free (title_string);
519
520 if (priv->version != NULL)
521 name_string = g_markup_printf_escaped ("<span size=\"xx-large\" weight=\"bold\">%s %s</span>",
522 priv->name, priv->version);
523 else
524 name_string = g_markup_printf_escaped ("<span size=\"xx-large\" weight=\"bold\">%s</span>",
525 priv->name);
526
527 gtk_label_set_markup (GTK_LABEL (priv->name_label), name_string);
528
529 g_free (name_string);
530}
531
532/**
533 * gtk_about_dialog_set_name:
534 * @about: a #GtkAboutDialog
535 * @name: the program name
536 *
537 * Sets the name to display in the about dialog.
538 * If this is not set, it defaults to g_get_application_name().
539 *
540 * Since: 2.6
541 **/
542void
543gtk_about_dialog_set_name (GtkAboutDialog *about,
544 const gchar *name)
545{
546 GtkAboutDialogPrivate *priv;
547 gchar *tmp;
548
549 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
550
551 priv = (GtkAboutDialogPrivate *)about->private_data;
552 tmp = priv->name;
553 priv->name = g_strdup (name ? name : g_get_application_name ());
554 g_free (tmp);
555
556 update_name_version (about);
557
558 g_object_notify (G_OBJECT (about), "name");
559}
560
561/**
562 * gtk_about_dialog_get_version:
563 * @about: a #GtkAboutDialog
564 *
565 * Returns the version string.
566 *
567 * Return value: The version string. The string is owned by the about
568 * dialog and must not be modified.
569 *
570 * Since: 2.6
571 **/
572G_CONST_RETURN gchar *
573gtk_about_dialog_get_version (GtkAboutDialog *about)
574{
575 GtkAboutDialogPrivate *priv;
576
577 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
578
579 priv = (GtkAboutDialogPrivate *)about->private_data;
580
581 return priv->version;
582}
583
584/**
585 * gtk_about_dialog_set_version:
586 * @about: a #GtkAboutDialog
587 * @version: the version string
588 *
589 * Sets the version string to display in the about dialog.
590 *
591 * Since: 2.6
592 **/
593void
594gtk_about_dialog_set_version (GtkAboutDialog *about,
595 const gchar *version)
596{
597 GtkAboutDialogPrivate *priv;
598 gchar *tmp;
599
600 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
601
602 priv = (GtkAboutDialogPrivate *)about->private_data;
603
604 tmp = priv->version;
605 priv->version = version ? g_strdup (version) : NULL;
606 g_free (tmp);
607
608 update_name_version (about);
609
610 g_object_notify (G_OBJECT (about), "version");
611}
612
613/**
614 * gtk_about_dialog_get_copyright:
615 * @about: a #GtkAboutDialog
616 *
617 * Returns the copyright string.
618 *
619 * Return value: The copyright string. The string is owned by the about
620 * dialog and must not be modified.
621 *
622 * Since: 2.6
623 **/
624G_CONST_RETURN gchar *
625gtk_about_dialog_get_copyright (GtkAboutDialog *about)
626{
627 GtkAboutDialogPrivate *priv;
628
629 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
630
631 priv = (GtkAboutDialogPrivate *)about->private_data;
632
633 return priv->copyright;
634}
635
636/**
637 * gtk_about_dialog_set_copyright:
638 * @about: a #GtkAboutDialog
639 * @copyright: the copyright string
640 *
641 * Sets the copyright string to display in the about dialog.
642 * This should be a short string of one or two lines.
643 *
644 * Since: 2.6
645 **/
646void
647gtk_about_dialog_set_copyright (GtkAboutDialog *about,
648 const gchar *copyright)
649{
650 GtkAboutDialogPrivate *priv;
651 gchar *copyright_string, *tmp;
652
653 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
654
655 priv = (GtkAboutDialogPrivate *)about->private_data;
656
657 tmp = priv->copyright;
658 priv->copyright = copyright ? g_strdup (copyright) : NULL;
659 g_free (tmp);
660
661 if (priv->copyright != NULL)
662 {
663 copyright_string = g_markup_printf_escaped ("<span size=\"small\">%s</span>",
664 priv->copyright);
665 gtk_label_set_markup (GTK_LABEL (priv->copyright_label), copyright_string);
666 g_free (copyright_string);
667
668 gtk_widget_show (priv->copyright_label);
669 }
670 else
671 gtk_widget_hide (priv->copyright_label);
672
673 g_object_notify (G_OBJECT (about), "copyright");
674}
675
676/**
677 * gtk_about_dialog_get_comments:
678 * @about: a #GtkAboutDialog
679 *
680 * Returns the comments string.
681 *
682 * Return value: The comments. The string is owned by the about
683 * dialog and must not be modified.
684 *
685 * Since: 2.6
686 **/
687G_CONST_RETURN gchar *
688gtk_about_dialog_get_comments (GtkAboutDialog *about)
689{
690 GtkAboutDialogPrivate *priv;
691
692 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
693
694 priv = (GtkAboutDialogPrivate *)about->private_data;
695
696 return priv->comments;
697}
698
699/**
700 * gtk_about_dialog_set_comments:
701 * @about: a #GtkAboutDialog
702 * @comments: a comments string
703 *
704 * Sets the comments string to display in the about
705 * dialog. This should be a short string of one or
706 * two lines.
707 *
708 * Since: 2.6
709 **/
710void
711gtk_about_dialog_set_comments (GtkAboutDialog *about,
712 const gchar *comments)
713{
714 GtkAboutDialogPrivate *priv;
715 gchar *tmp;
716
717 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
718
719 priv = (GtkAboutDialogPrivate *)about->private_data;
720
721 tmp = priv->comments;
722 if (comments)
723 {
724 priv->comments = g_strdup (comments);
725 gtk_label_set_text (GTK_LABEL (priv->comments_label), priv->comments);
726 gtk_widget_show (priv->comments_label);
727 }
728 else
729 {
730 priv->comments = NULL;
731 gtk_widget_hide (priv->comments_label);
732 }
733 g_free (tmp);
734
735 g_object_notify (G_OBJECT (about), "comments");
736}
737
738/**
739 * gtk_about_dialog_get_license:
740 * @about: a #GtkAboutDialog
741 *
742 * Returns the license information.
743 *
744 * Return value: The license information. The string is owned by the about
745 * dialog and must not be modified.
746 *
747 * Since: 2.6
748 **/
749G_CONST_RETURN gchar *
750gtk_about_dialog_get_license (GtkAboutDialog *about)
751{
752 GtkAboutDialogPrivate *priv;
753
754 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
755
756 priv = (GtkAboutDialogPrivate *)about->private_data;
757
758 return priv->license;
759}
760
761/**
762 * gtk_about_dialog_set_license:
763 * @about: a #GtkAboutDialog
764 * @license: the license information or %NULL
765 *
766 * Sets the license information to be displayed in the secondary
767 * license dialog. If @license is %NULL, the license button is
768 * hidden.
769 *
770 * Since: 2.6
771 **/
772void
773gtk_about_dialog_set_license (GtkAboutDialog *about,
774 const gchar *license)
775{
776 GtkAboutDialogPrivate *priv;
777 gchar *tmp;
778
779 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
780
781 priv = (GtkAboutDialogPrivate *)about->private_data;
782
783 tmp = priv->license;
784 if (license)
785 {
786 priv->license = g_strdup (license);
787 gtk_widget_show (priv->license_button);
788 }
789 else
790 {
791 priv->license = NULL;
792 gtk_widget_hide (priv->license_button);
793 }
794 g_free (tmp);
795
796 g_object_notify (G_OBJECT (about), "license");
797}
798
799/**
800 * gtk_about_dialog_get_website:
801 * @about: a #GtkAboutDialog
802 *
803 * Returns the website URL.
804 *
805 * Return value: The website URL. The string is owned by the about
806 * dialog and must not be modified.
807 *
808 * Since: 2.6
809 **/
810G_CONST_RETURN gchar *
811gtk_about_dialog_get_website (GtkAboutDialog *about)
812{
813 GtkAboutDialogPrivate *priv;
814
815 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
816
817 priv = (GtkAboutDialogPrivate *)about->private_data;
818
819 return priv->website;
820}
821
822/**
823 * gtk_about_dialog_set_website:
824 * @about: a #GtkAboutDialog
825 * @website: a URL string starting with "http://"
826 *
827 * Sets the URL to use for the website link.
828 *
829 * Since: 2.6
830 **/
831void
832gtk_about_dialog_set_website (GtkAboutDialog *about,
833 const gchar *website)
834{
835 GtkAboutDialogPrivate *priv;
836 gchar *tmp;
837
838 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
839
840 priv = (GtkAboutDialogPrivate *)about->private_data;
841
842 tmp = priv->website;
843 if (website != NULL)
844 {
845 priv->website = g_strdup (website);
846 if (activate_url_hook != NULL)
847 {
848 g_object_set_data_full (G_OBJECT (priv->website_button),
849 "url", g_strdup (website), g_free);
850 if (priv->website_label == NULL)
851 gtk_about_dialog_set_website_label (about, website);
852 }
853 else
854 {
855 GtkWidget *hbox = priv->website_button->parent;
856 gtk_widget_destroy (priv->website_button);
857 priv->website_button = gtk_label_new (website);
858 gtk_label_set_selectable (GTK_LABEL (priv->website_button), TRUE);
859 gtk_container_add (GTK_CONTAINER (hbox), priv->website_button);
860 gtk_widget_show (priv->website_button);
861 }
862 }
863 else
864 {
865 priv->website = NULL;
866 g_object_set_data (G_OBJECT (priv->website_button), "url", NULL);
867 }
868 g_free (tmp);
869
870 g_object_notify (G_OBJECT (about), "website");
871}
872
873/**
874 * gtk_about_dialog_get_website_label:
875 * @about: a #GtkAboutDialog
876 *
877 * Returns the label used for the website link.
878 *
879 * Return value: The label used for the website link. The string is owned by the about
880 * dialog and must not be modified.
881 *
882 * Since: 2.6
883 **/
884G_CONST_RETURN gchar *
885gtk_about_dialog_get_website_label (GtkAboutDialog *about)
886{
887 GtkAboutDialogPrivate *priv;
888
889 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
890
891 priv = (GtkAboutDialogPrivate *)about->private_data;
892
893 return priv->website_label;
894}
895
896/**
897 * gtk_about_dialog_set_website_label:
898 * @about: a #GtkAboutDialog
899 * @website_label: the label used for the website link
900 *
901 * Sets the label to be used for the website link.
902 * It defaults to the website URL.
903 *
904 * Since: 2.6
905 **/
906void
907gtk_about_dialog_set_website_label (GtkAboutDialog *about,
908 const gchar *website_label)
909{
910 GtkAboutDialogPrivate *priv;
911 gchar *tmp;
912
913 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
914
915 priv = (GtkAboutDialogPrivate *)about->private_data;
916
917 tmp = priv->website_label;
918 if (activate_url_hook != NULL)
919 {
920 if (website_label != NULL)
921 {
922 priv->website_label = g_strdup (website_label);
923 set_link_button_text (GTK_WIDGET (about),
924 priv->website_button,
925 priv->website_label);
926 gtk_widget_show (priv->website_button);
927 }
928 else
929 {
930 priv->website_label = NULL;
931 gtk_widget_hide (priv->website_button);
932 }
933 }
934 g_free (tmp);
935
936 g_object_notify (G_OBJECT (about), "website_label");
937}
938
939/**
940 * gtk_about_dialog_get_authors:
941 * @about: a #GtkAboutDialog
942 *
943 * Returns the string which are displayed in the authors tab
944 * of the secondary credits dialog.
945 *
946 * Return value: A %NULL-terminated string array containing
947 * the authors. The array is owned by the about dialog
948 * and must not be modified.
949 *
950 * Since: 2.6
951 **/
952gchar **
953gtk_about_dialog_get_authors (GtkAboutDialog *about)
954{
955 GtkAboutDialogPrivate *priv;
956
957 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
958
959 priv = (GtkAboutDialogPrivate *)about->private_data;
960
961 return priv->authors;
962}
963
964/**
965 * gtk_about_dialog_set_authors:
966 * @about: a #GtkAboutDialog
967 * @authors: a %NULL-terminated array of strings
968 *
969 * Sets the strings which are displayed in the authors tab
970 * of the secondary credits dialog.
971 *
972 * Since: 2.6
973 **/
974void
975gtk_about_dialog_set_authors (GtkAboutDialog *about,
976 gchar **authors)
977{
978 GtkAboutDialogPrivate *priv;
979 gchar **tmp;
980
981 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
982
983 priv = (GtkAboutDialogPrivate *)about->private_data;
984
985 tmp = priv->authors;
986 priv->authors = g_strdupv (authors);
987 g_strfreev (tmp);
988
989 if (priv->authors != NULL)
990 gtk_widget_show (priv->credits_button);
991
992 g_object_notify (G_OBJECT (about), "authors");
993}
994
995/**
996 * gtk_about_dialog_get_documenters:
997 * @about: a #GtkAboutDialog
998 *
999 * Returns the string which are displayed in the documenters
1000 * tab of the secondary credits dialog.
1001 *
1002 * Return value: A %NULL-terminated string array containing
1003 * the documenters. The array is owned by the about dialog
1004 * and must not be modified.
1005 *
1006 * Since: 2.6
1007 **/
1008gchar **
1009gtk_about_dialog_get_documenters (GtkAboutDialog *about)
1010{
1011 GtkAboutDialogPrivate *priv;
1012
1013 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
1014
1015 priv = (GtkAboutDialogPrivate *)about->private_data;
1016
1017 return priv->documenters;
1018}
1019
1020/**
1021 * gtk_about_dialog_set_documenters:
1022 * @about: a #GtkAboutDialog
1023 * @authors: a %NULL-terminated array of strings
1024 *
1025 * Sets the strings which are displayed in the documenters tab
1026 * of the secondary credits dialog.
1027 *
1028 * Since: 2.6
1029 **/
1030void
1031gtk_about_dialog_set_documenters (GtkAboutDialog *about,
1032 gchar **documenters)
1033{
1034 GtkAboutDialogPrivate *priv;
1035 gchar **tmp;
1036
1037 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
1038
1039 priv = (GtkAboutDialogPrivate *)about->private_data;
1040
1041 tmp = priv->documenters;
1042 priv->documenters = g_strdupv (documenters);
1043 g_strfreev (tmp);
1044
1045 if (priv->documenters != NULL)
1046 gtk_widget_show (priv->credits_button);
1047
1048 g_object_notify (G_OBJECT (about), "documenters");
1049}
1050
1051/**
1052 * gtk_about_dialog_get_artists:
1053 * @about: a #GtkAboutDialog
1054 *
1055 * Returns the string which are displayed in the artists tab
1056 * of the secondary credits dialog.
1057 *
1058 * Return value: A %NULL-terminated string array containing
1059 * the artists. The array is owned by the about dialog
1060 * and must not be modified.
1061 *
1062 * Since: 2.6
1063 **/
1064gchar **
1065gtk_about_dialog_get_artists (GtkAboutDialog *about)
1066{
1067 GtkAboutDialogPrivate *priv;
1068
1069 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
1070
1071 priv = (GtkAboutDialogPrivate *)about->private_data;
1072
1073 return priv->artists;
1074}
1075
1076/**
1077 * gtk_about_dialog_set_artists:
1078 * @about: a #GtkAboutDialog
1079 * @authors: a %NULL-terminated array of strings
1080 *
1081 * Sets the strings which are displayed in the artists tab
1082 * of the secondary credits dialog.
1083 *
1084 * Since: 2.6
1085 **/
1086void
1087gtk_about_dialog_set_artists (GtkAboutDialog *about,
1088 gchar **artists)
1089{
1090 GtkAboutDialogPrivate *priv;
1091 gchar **tmp;
1092
1093 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
1094
1095 priv = (GtkAboutDialogPrivate *)about->private_data;
1096
1097 tmp = priv->artists;
1098 priv->artists = g_strdupv (artists);
1099 g_strfreev (tmp);
1100
1101 if (priv->artists != NULL)
1102 gtk_widget_show (priv->credits_button);
1103
1104 g_object_notify (G_OBJECT (about), "artists");
1105}
1106
1107/**
1108 * gtk_about_dialog_get_translator_credits:
1109 * @about: a #GtkAboutDialog
1110 *
1111 * Returns the translator credits string which is displayed
1112 * in the translators tab of the secondary credits dialog.
1113 *
1114 * Return value: The translator credits string. The string is
1115 * owned by the about dialog and must not be modified.
1116 *
1117 * Since: 2.6
1118 **/
1119G_CONST_RETURN gchar *
1120gtk_about_dialog_get_translator_credits (GtkAboutDialog *about)
1121{
1122 GtkAboutDialogPrivate *priv;
1123
1124 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
1125
1126 priv = (GtkAboutDialogPrivate *)about->private_data;
1127
1128 return priv->translator_credits;
1129}
1130
1131/**
1132 * gtk_about_dialog_set_translator_credits:
1133 * @about: a #GtkAboutDialog
1134 * @translator_credits: the translator credits
1135 *
1136 * Sets the translator credits string which is displayed in
1137 * the translators tab of the secondary credits dialog.
1138 *
1139 * The intended use for this string is to display the translator
1140 * of the language which is currently used in the user interface.
1141 * Using gettext(), a simple way to achieve that is to mark the
1142 * string for translation:
1143 * <informalexample><programlisting>
1144 * gtk_about_dialog_set_translator_credits (about, _("translator-credits"));
1145 * </programlisting></informalexample>
1146 *
1147 * Since: 2.6
1148 **/
1149void
1150gtk_about_dialog_set_translator_credits (GtkAboutDialog *about,
1151 const gchar *translator_credits)
1152{
1153 GtkAboutDialogPrivate *priv;
1154 gchar *tmp;
1155
1156 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
1157
1158 priv = (GtkAboutDialogPrivate *)about->private_data;
1159
1160 tmp = priv->translator_credits;
1161 priv->translator_credits = g_strdup (translator_credits);
1162 g_free (tmp);
1163
1164 if (priv->translator_credits != NULL)
1165 gtk_widget_show (priv->credits_button);
1166
1167 g_object_notify (G_OBJECT (about), "translator-credits");
1168}
1169
1170/**
1171 * gtk_about_dialog_get_logo:
1172 * @about: a #GtkAboutDialog
1173 *
1174 * Returns the pixbuf displayed as logo in the about dialog.
1175 *
1176 * Return value: the pixbuf displayed as logo. The pixbuf is
1177 * owned by the about dialog. If you want to keep a reference
1178 * to it, you have to call g_object_ref() on it.
1179 *
1180 * Since: 2.6
1181 **/
1182GdkPixbuf *
1183gtk_about_dialog_get_logo (GtkAboutDialog *about)
1184{
1185 GtkAboutDialogPrivate *priv;
1186
1187 g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), NULL);
1188
1189 priv = (GtkAboutDialogPrivate *)about->private_data;
1190
1191 return gtk_image_get_pixbuf (GTK_IMAGE (priv->logo_image));
1192}
1193
1194static GtkIconSet *
1195icon_set_new_from_pixbufs (GList *pixbufs)
1196{
1197 GtkIconSet *icon_set = gtk_icon_set_new ();
1198
1199 for (; pixbufs; pixbufs = pixbufs->next)
1200 {
1201 GdkPixbuf *pixbuf = GDK_PIXBUF (pixbufs->data);
1202
1203 GtkIconSource *icon_source = gtk_icon_source_new ();
1204 gtk_icon_source_set_pixbuf (icon_source, pixbuf);
1205 gtk_icon_set_add_source (icon_set, icon_source);
1206 }
1207
1208 return icon_set;
1209}
1210
1211/**
1212 * gtk_about_dialog_set_logo:
1213 * @about: a #GtkAboutDialog
1214 * @pixbuf: a #GdkPixbuf, or %NULL
1215 *
1216 * Sets the pixbuf to be displayed as logo in
1217 * the about dialog. If it is %NULL, the default
1218 * window icon set with gtk_window_set_default_icon ()
1219 * will be used.
1220 *
1221 * Since: 2.6
1222 **/
1223void
1224gtk_about_dialog_set_logo (GtkAboutDialog *about,
1225 GdkPixbuf *pixbuf)
1226{
1227 GtkAboutDialogPrivate *priv;
1228
1229 g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
1230
1231 priv = (GtkAboutDialogPrivate *)about->private_data;
1232
1233 if (pixbuf != NULL)
1234 gtk_image_set_from_pixbuf (GTK_IMAGE (priv->logo_image), pixbuf);
1235 else
1236 {
1237 GList *pixbufs = gtk_window_get_default_icon_list ();
1238
1239 if (pixbufs != NULL)
1240 {
1241 GtkIconSet *icon_set = icon_set_new_from_pixbufs (pixbufs);
1242
1243 gtk_image_set_from_icon_set (GTK_IMAGE (priv->logo_image),
1244 icon_set, GTK_ICON_SIZE_DIALOG);
1245
1246 gtk_icon_set_unref (icon_set);
1247 g_list_free (pixbufs);
1248 }
1249 }
1250
1251 g_object_notify (G_OBJECT (about), "logo");
1252}
1253
1254static void
1255activate_url (GtkWidget *widget,
1256 gpointer data)
1257{
1258 GtkAboutDialog *about = GTK_ABOUT_DIALOG (data);
1259 gchar *url = g_object_get_data (G_OBJECT (widget), "url");
1260
1261 if (activate_url_hook != NULL)
1262 (* activate_url_hook) (about, url);
1263}
1264
1265static void
1266set_link_button_text (GtkWidget *about,
1267 GtkWidget *button,
1268 gchar *text)
1269{
1270 GtkWidget *label;
1271 gchar *link;
1272 GdkColor *style_link_color;
1273 GdkColor link_color = { 0, 0, 0, 0xffff };
1274
1275 gtk_widget_ensure_style (about);
1276 gtk_widget_style_get (about, "link_color", &style_link_color, NULL);
1277 if (style_link_color)
1278 {
1279 link_color = *style_link_color;
1280 gdk_color_free (style_link_color);
1281 }
1282
1283 link = g_markup_printf_escaped ("<span foreground=\"#%04x%04x%04x\" underline=\"single\">%s</span>",
1284 link_color.red, link_color.green, link_color.blue, text);
1285
1286 label = gtk_bin_get_child (GTK_BIN (button));
1287 gtk_label_set_markup (GTK_LABEL (label), link);
1288 g_free (link);
1289}
1290
1291static GtkWidget *
1292create_link_button (GtkWidget *about,
1293 gchar *text,
1294 gchar *url,
1295 GCallback callback,
1296 gpointer data)
1297{
1298 GtkWidget *button;
1299
1300 button = gtk_button_new_with_label ("");
1301 GTK_WIDGET_UNSET_FLAGS (button, GTK_RECEIVES_DEFAULT);
1302 gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
1303
1304 g_object_set_data_full (G_OBJECT (button), "url", g_strdup (url), g_free);
1305 set_link_button_text (about, button, text);
1306
1307 g_signal_connect (G_OBJECT (button), "clicked", callback, data);
1308
1309 return button;
1310}
1311
1312static void
1313follow_if_link (GtkAboutDialog *about,
1314 GtkTextIter *iter)
1315{
1316 GSList *tags = NULL, *tagp = NULL;
1317
1318 tags = gtk_text_iter_get_tags (iter);
1319 for (tagp = tags; tagp != NULL; tagp = tagp->next)
1320 {
1321 GtkTextTag *tag = tagp->data;
1322 gchar *email = g_object_get_data (G_OBJECT (tag), "email");
1323 gchar *url = g_object_get_data (G_OBJECT (tag), "url");
1324
1325 if (email != NULL && activate_email_hook != NULL)
1326 {
1327 (* activate_email_hook) (about, email);
1328 break;
1329 }
1330
1331 if (url != NULL && activate_url_hook != NULL)
1332 {
1333 (* activate_url_hook) (about, url);
1334 break;
1335 }
1336 }
1337
1338 if (tags)
1339 g_slist_free (tags);
1340}
1341
1342static gboolean
1343credits_key_press_event (GtkWidget *text_view,
1344 GdkEventKey *event,
1345 GtkAboutDialog *about)
1346{
1347 GtkTextIter iter;
1348 GtkTextBuffer *buffer;
1349
1350 switch (event->keyval)
1351 {
1352 case GDK_Return:
1353 case GDK_KP_Enter:
1354 buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
1355 gtk_text_buffer_get_iter_at_mark (buffer, &iter,
1356 gtk_text_buffer_get_insert (buffer));
1357 follow_if_link (about, &iter);
1358 break;
1359
1360 default:
1361 break;
1362 }
1363
1364 return FALSE;
1365}
1366
1367static gboolean
1368credits_event_after (GtkWidget *text_view,
1369 GdkEvent *event,
1370 GtkAboutDialog *about)
1371{
1372 GtkTextIter start, end, iter;
1373 GtkTextBuffer *buffer;
1374 GdkEventButton *button_event;
1375 gint x, y;
1376
1377 if (event->type != GDK_BUTTON_RELEASE)
1378 return FALSE;
1379
1380 button_event = (GdkEventButton *)event;
1381
1382 if (button_event->button != 1)
1383 return FALSE;
1384
1385 buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
1386
1387 /* we shouldn't follow a link if the user has selected something */
1388 gtk_text_buffer_get_selection_bounds (buffer, &start, &end);
1389 if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end))
1390 return FALSE;
1391
1392 gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
1393 GTK_TEXT_WINDOW_WIDGET,
1394 button_event->x, button_event->y, &x, &y);
1395
1396 gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (text_view), &iter, x, y);
1397
1398 follow_if_link (about, &iter);
1399
1400 return FALSE;
1401}
1402
1403static void
1404set_cursor_if_appropriate (GtkAboutDialog *about,
1405 GtkTextView *text_view,
1406 gint x,
1407 gint y)
1408{
1409 GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
1410 GSList *tags = NULL, *tagp = NULL;
1411 GtkTextBuffer *buffer;
1412 GtkTextIter iter;
1413 gboolean hovering_over_link = FALSE;
1414
1415 buffer = gtk_text_view_get_buffer (text_view);
1416
1417 gtk_text_view_get_iter_at_location (text_view, &iter, x, y);
1418
1419 tags = gtk_text_iter_get_tags (&iter);
1420 for (tagp = tags; tagp != NULL; tagp = tagp->next)
1421 {
1422 GtkTextTag *tag = tagp->data;
1423 gchar *email = g_object_get_data (G_OBJECT (tag), "email");
1424 gchar *url = g_object_get_data (G_OBJECT (tag), "url");
1425
1426 if (email != NULL || url != NULL)
1427 {
1428 hovering_over_link = TRUE;
1429 break;
1430 }
1431 }
1432
1433 if (hovering_over_link != priv->hovering_over_link)
1434 {
1435 priv->hovering_over_link = hovering_over_link;
1436
1437 if (hovering_over_link)
1438 gdk_window_set_cursor (gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT), priv->hand_cursor);
1439 else
1440 gdk_window_set_cursor (gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT), priv->regular_cursor);
1441 }
1442
1443 if (tags)
1444 g_slist_free (tags);
1445}
1446
1447static gboolean
1448credits_motion_notify_event (GtkWidget *text_view,
1449 GdkEventMotion *event,
1450 GtkAboutDialog *about)
1451{
1452 gint x, y;
1453
1454 gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
1455 GTK_TEXT_WINDOW_WIDGET,
1456 event->x, event->y, &x, &y);
1457
1458 set_cursor_if_appropriate (about, GTK_TEXT_VIEW (text_view), x, y);
1459
1460 gdk_window_get_pointer (text_view->window, NULL, NULL, NULL);
1461
1462 return FALSE;
1463}
1464
1465
1466static gboolean
1467credits_visibility_notify_event (GtkWidget *text_view,
1468 GdkEventVisibility *event,
1469 GtkAboutDialog *about)
1470{
1471 gint wx, wy, bx, by;
1472
1473 gdk_window_get_pointer (text_view->window, &wx, &wy, NULL);
1474
1475 gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
1476 GTK_TEXT_WINDOW_WIDGET,
1477 wx, wy, &bx, &by);
1478
1479 set_cursor_if_appropriate (about, GTK_TEXT_VIEW (text_view), bx, by);
1480
1481 return FALSE;
1482}
1483
1484static void
1485add_credits_page (GtkAboutDialog *about,
1486 GtkWidget *notebook,
1487 gchar *title,
1488 gchar **people)
1489{
1490 gchar **p;
1491 gchar *q0, *q1, *q2, *r1, *r2;
1492 GtkWidget *sw, *view;
1493 GtkTextBuffer *buffer;
1494 GtkStyle *style;
1495 gboolean linkify_email, linkify_urls;
1496 GdkColor *style_link_color;
1497 GdkColor link_color = { 0, 0, 0, 0xffff };
1498
1499 linkify_email = (activate_email_hook != NULL);
1500 linkify_urls = (activate_url_hook != NULL);
1501
1502 gtk_widget_ensure_style (GTK_WIDGET (about));
1503 gtk_widget_style_get (GTK_WIDGET (about), "link_color", &style_link_color, NULL);
1504 if (style_link_color)
1505 {
1506 link_color = *style_link_color;
1507 gdk_color_free (style_link_color);
1508 }
1509
1510 view = gtk_text_view_new ();
1511 buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
1512 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
1513 gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
1514 gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 8);
1515 gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 8);
1516
1517 g_signal_connect (G_OBJECT (view), "key-press-event",
1518 G_CALLBACK (credits_key_press_event), about);
1519 g_signal_connect (G_OBJECT (view), "event-after",
1520 G_CALLBACK (credits_event_after), about);
1521 g_signal_connect (G_OBJECT (view), "motion-notify-event",
1522 G_CALLBACK (credits_motion_notify_event), about);
1523 g_signal_connect (G_OBJECT (view), "visibility-notify-event",
1524 G_CALLBACK (credits_visibility_notify_event), about);
1525
1526 style = gtk_widget_get_style (view);
1527 gtk_widget_modify_base (view, GTK_STATE_NORMAL,
1528 &style->base[GTK_STATE_INSENSITIVE]);
1529
1530 sw = gtk_scrolled_window_new (NULL, NULL);
1531 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
1532 GTK_POLICY_AUTOMATIC,
1533 GTK_POLICY_AUTOMATIC);
1534 gtk_container_add (GTK_CONTAINER (sw), view);
1535
1536 gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
1537 sw, gtk_label_new (title));
1538
1539 if (people == NULL)
1540 {
1541 gtk_widget_hide (view);
1542 return;
1543 }
1544 else
1545 gtk_widget_show (view);
1546
1547 for (p = people; *p; p++)
1548 {
1549 q0 = *p;
1550 while (*q0)
1551 {
1552 q1 = linkify_email ? strchr (q0, '<') : NULL;
1553 q2 = q1 ? strchr (q1, '>') : NULL;
1554 r1 = linkify_urls ? strstr (q0, "http://") : NULL;
1555 r2 = r1 ? (strpbrk (r1, " \n\t") ? : strchr (r1, '\0')) : NULL;
1556
1557 if (r1 && r2 && (!q1 || !q2 || (r1 < q1)))
1558 {
1559 q1 = r1;
1560 q2 = r2;
1561 }
1562
1563 if (q1 && q2)
1564 {
1565 GtkTextIter end;
1566 gchar *link;
1567 gchar *link_type;
1568 GtkTextTag *tag;
1569
1570 gtk_text_buffer_insert_at_cursor (buffer, q0, q1 - q0);
1571 gtk_text_buffer_get_end_iter (buffer, &end);
1572
1573 q0 = q2;
1574
1575 if (*q1 == '<')
1576 {
1577 q1++;
1578 q0++;
1579 link_type = "email";
1580 }
1581 else
1582 link_type = "url";
1583
1584 link = g_strndup (q1, q2 - q1);
1585 tag = gtk_text_buffer_create_tag (buffer, NULL,
1586 "foreground_gdk", &link_color,
1587 "underline", PANGO_UNDERLINE_SINGLE,
1588 NULL);
1589 g_object_set_data_full (G_OBJECT (tag), link_type, g_strdup (link), g_free);
1590 gtk_text_buffer_insert_with_tags (buffer, &end, link, -1, tag, NULL);
1591
1592 g_free (link);
1593 }
1594 else
1595 {
1596 gtk_text_buffer_insert_at_cursor (buffer, q0, -1);
1597 break;
1598 }
1599 }
1600
1601 if (p[1])
1602 gtk_text_buffer_insert_at_cursor (buffer, "\n", 1);
1603 }
1604}
1605
1606static void
1607display_credits_dialog (GtkWidget *button,
1608 gpointer data)
1609{
1610 GtkAboutDialog *about = (GtkAboutDialog *)data;
1611 GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
1612 GtkWidget *dialog, *notebook;
1613
1614 if (priv->credits_dialog != NULL)
1615 {
1616 gtk_window_present (GTK_WINDOW (priv->credits_dialog));
1617 return;
1618 }
1619
1620 dialog = gtk_dialog_new_with_buttons (gettext_noop("Credits"),
1621 GTK_WINDOW (about),
1622 GTK_DIALOG_DESTROY_WITH_PARENT,
1623 GTK_STOCK_OK, GTK_RESPONSE_OK,
1624 NULL);
1625 priv->credits_dialog = dialog;
1626 gtk_window_set_default_size (GTK_WINDOW (dialog), 360, 260);
1627 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
1628
1629 gtk_window_set_modal (GTK_WINDOW (dialog),
1630 gtk_window_get_modal (GTK_WINDOW (about)));
1631
1632 g_signal_connect (dialog, "response",
1633 G_CALLBACK (gtk_widget_destroy), dialog);
1634 g_signal_connect (dialog, "destroy",
1635 G_CALLBACK (gtk_widget_destroyed),
1636 &(priv->credits_dialog));
1637
1638 notebook = gtk_notebook_new ();
1639 gtk_container_set_border_width (GTK_CONTAINER (notebook), 8);
1640 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), notebook, TRUE, TRUE, 0);
1641
1642 if (priv->authors != NULL)
1643 add_credits_page (about, notebook, gettext_noop("Written by"), priv->authors);
1644
1645 if (priv->documenters != NULL)
1646 add_credits_page (about, notebook, gettext_noop("Documented by"), priv->documenters);
1647
1648 if (priv->translator_credits != NULL)
1649 {
1650 gchar *translators[2];
1651
1652 translators[0] = priv->translator_credits;
1653 translators[1] = NULL;
1654
1655 add_credits_page (about, notebook, gettext_noop("Translated by"), translators);
1656 }
1657
1658 if (priv->artists != NULL)
1659 add_credits_page (about, notebook, gettext_noop("Artwork by"), priv->artists);
1660
1661 gtk_widget_show_all (dialog);
1662}
1663
1664static void
1665display_license_dialog (GtkWidget *button,
1666 gpointer data)
1667{
1668 GtkAboutDialog *about = (GtkAboutDialog *)data;
1669 GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
1670 GtkWidget *dialog, *view, *sw;
1671
1672 if (priv->license_dialog != NULL)
1673 {
1674 gtk_window_present (GTK_WINDOW (priv->license_dialog));
1675 return;
1676 }
1677
1678 dialog = gtk_dialog_new_with_buttons (gettext_noop("License"),
1679 GTK_WINDOW (about),
1680 GTK_DIALOG_DESTROY_WITH_PARENT,
1681 GTK_STOCK_OK, GTK_RESPONSE_OK,
1682 NULL);
1683 priv->license_dialog = dialog;
1684 gtk_window_set_default_size (GTK_WINDOW (dialog), 420, 320);
1685 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
1686
1687 gtk_window_set_modal (GTK_WINDOW (dialog),
1688 gtk_window_get_modal (GTK_WINDOW (about)));
1689
1690 g_signal_connect (dialog, "response",
1691 G_CALLBACK (gtk_widget_destroy), dialog);
1692 g_signal_connect (dialog, "destroy",
1693 G_CALLBACK (gtk_widget_destroyed),
1694 &(priv->license_dialog));
1695
1696 sw = gtk_scrolled_window_new (NULL, NULL);
1697 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
1698 GTK_POLICY_AUTOMATIC,
1699 GTK_POLICY_AUTOMATIC);
1700 gtk_container_set_border_width (GTK_CONTAINER (sw), 8);
1701 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), sw, TRUE, TRUE, 0);
1702
1703 view = gtk_text_view_new ();
1704 gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)),
1705 priv->license, -1);
1706
1707 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
1708 gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
1709 gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 8);
1710 gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 8);
1711
1712 gtk_container_add (GTK_CONTAINER (sw), view);
1713
1714 gtk_widget_show_all (dialog);
1715}
1716
1717/**
1718 * gtk_about_dialog_new:
1719 *
1720 * Creates a new #GtkAboutDialog.
1721 *
1722 * Returns: a newly created #GtkAboutDialog
1723 *
1724 * Since: 2.6
1725 */
1726GtkWidget *
1727gtk_about_dialog_new (void)
1728{
1729 GtkAboutDialog *dialog = GTK_ABOUT_DIALOG (g_object_new (GTK_TYPE_ABOUT_DIALOG, NULL));
1730
1731 /* force defaults */
1732 gtk_about_dialog_set_name (dialog, NULL);
1733 gtk_about_dialog_set_logo (dialog, NULL);
1734
1735 /* Close dialog on user response */
1736 g_signal_connect (G_OBJECT (dialog),
1737 "response",
1738 G_CALLBACK (gtk_widget_hide),
1739 NULL);
1740
1741 return GTK_WIDGET (dialog);
1742}
1743
1744/**
1745 * gtk_about_dialog_set_email_hook:
1746 * @func: a function to call when an email link is activated.
1747 *
1748 * Installs a global function to be called whenever the user activates an
1749 * email link in an about dialog.
1750 *
1751 * Return value: the previous email hook.
1752 *
1753 * Since: 2.6
1754 */
1755GtkAboutDialogActivateLinkFunc
1756gtk_about_dialog_set_email_hook (GtkAboutDialogActivateLinkFunc func)
1757{
1758 GtkAboutDialogActivateLinkFunc old;
1759
1760 old = activate_email_hook;
1761
1762 activate_email_hook = func;
1763
1764 return old;
1765}
1766
1767/**
1768 * gtk_about_dialog_set_email_hook:
1769 * @func: a function to call when a URL link is activated.
1770 *
1771 * Installs a global function to be called whenever the user activates a
1772 * URL link in an about dialog.
1773 *
1774 * Return value: the previous URL hook.
1775 *
1776 * Since: 2.6
1777 */
1778GtkAboutDialogActivateLinkFunc
1779gtk_about_dialog_set_url_hook (GtkAboutDialogActivateLinkFunc func)
1780{
1781 GtkAboutDialogActivateLinkFunc old;
1782
1783 old = activate_url_hook;
1784
1785 activate_url_hook = func;
1786
1787 return old;
1788}
1789
1790/**
1791 * gtk_show_about_dialog:
1792 * @parent: transient parent, or %NULL for none
1793 * @first_property_name: the name of the first property
1794 * @Varargs: value of first property, followed by more properties, %NULL-terminated
1795 *
1796 * This is a convenience function for showing an application's about box.
1797 *
1798 * Since: 2.6
1799 */
1800void
1801gtk_show_about_dialog (GtkWindow *parent,
1802 const gchar *first_property_name,
1803 ...)
1804{
1805 static GtkWidget *global_about_dialog = NULL;
1806 GtkWidget *dialog = NULL;
1807 va_list var_args;
1808
1809 if (parent)
1810 dialog = g_object_get_data (G_OBJECT (parent), "gtk-about-dialog");
1811 else
1812 dialog = global_about_dialog;
1813
1814 if (!dialog)
1815 {
1816 dialog = gtk_about_dialog_new ();
1817
1818 g_object_ref (G_OBJECT (dialog));
1819 gtk_object_sink (GTK_OBJECT (dialog));
1820
1821 g_signal_connect (dialog, "delete_event", G_CALLBACK (gtk_widget_hide_on_delete), NULL);
1822
1823 va_start (var_args, first_property_name);
1824 g_object_set_valist (G_OBJECT (dialog), first_property_name, var_args);
1825 va_end (var_args);
1826
1827 if (parent)
1828 {
1829 gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
1830 g_object_set_data_full (G_OBJECT (parent), "gtk-about-dialog",
1831 dialog, g_object_unref);
1832 }
1833 else
1834 global_about_dialog = dialog;
1835
1836 }
1837
1838 gtk_window_present (GTK_WINDOW (dialog));
1839}
1840
1841
1842
1843
1844
1845
1846
diff --git a/src/gtk26about.h b/src/gtk26about.h
deleted file mode 100644
index 1f986302..00000000
--- a/src/gtk26about.h
+++ /dev/null
@@ -1,117 +0,0 @@
1/* This code was copied from GTK (2.6/CVS).
2
3 GTK - The GIMP Toolkit
4
5 Copyright (C) 2001 CodeFactory AB
6 Copyright (C) 2001 Anders Carlsson <andersca@codefactory.se>
7 Copyright (C) 2003, 2004 Matthias Clasen <mclasen@redhat.com>
8
9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Library General Public License as
11 published by the Free Software Foundation; either version 2 of the
12 License, or (at your option) any later version.
13
14 This library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Library General Public License for more details.
18
19 You should have received a copy of the GNU Library General Public
20 License along with the Gnome Library; see the file COPYING.LIB. If not,
21 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA.
23
24 Author: Anders Carlsson <andersca@codefactory.se>
25
26*/
27
28#ifndef __GTK_ABOUT_DIALOG_H__
29#define __GTK_ABOUT_DIALOG_H__
30
31#include <gtk/gtkdialog.h>
32
33G_BEGIN_DECLS
34
35#define GTK_TYPE_ABOUT_DIALOG (gtk_about_dialog_get_type ())
36#define GTK_ABOUT_DIALOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialog))
37#define GTK_ABOUT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogClass))
38#define GTK_IS_ABOUT_DIALOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_ABOUT_DIALOG))
39#define GTK_IS_ABOUT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ABOUT_DIALOG))
40#define GTK_ABOUT_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogClass))
41
42typedef struct _GtkAboutDialog GtkAboutDialog;
43typedef struct _GtkAboutDialogClass GtkAboutDialogClass;
44
45struct _GtkAboutDialog
46{
47 GtkDialog parent_instance;
48
49 /*< private >*/
50 gpointer private_data;
51};
52
53struct _GtkAboutDialogClass
54{
55 GtkDialogClass parent_class;
56
57 /* Padding for future expansion */
58 void (*_gtk_reserved1) (void);
59 void (*_gtk_reserved2) (void);
60 void (*_gtk_reserved3) (void);
61 void (*_gtk_reserved4) (void);
62};
63
64GType gtk_about_dialog_get_type (void) G_GNUC_CONST;
65GtkWidget *gtk_about_dialog_new (void);
66void gtk_show_about_dialog (GtkWindow *parent,
67 const gchar *first_property_name,
68 ...);
69
70G_CONST_RETURN gchar *gtk_about_dialog_get_name (GtkAboutDialog *about);
71void gtk_about_dialog_set_name (GtkAboutDialog *about,
72 const gchar *name);
73G_CONST_RETURN gchar *gtk_about_dialog_get_version (GtkAboutDialog *about);
74void gtk_about_dialog_set_version (GtkAboutDialog *about,
75 const gchar *version);
76G_CONST_RETURN gchar *gtk_about_dialog_get_copyright (GtkAboutDialog *about);
77void gtk_about_dialog_set_copyright (GtkAboutDialog *about,
78 const gchar *copyright);
79G_CONST_RETURN gchar *gtk_about_dialog_get_comments (GtkAboutDialog *about);
80void gtk_about_dialog_set_comments (GtkAboutDialog *about,
81 const gchar *comments);
82G_CONST_RETURN gchar *gtk_about_dialog_get_license (GtkAboutDialog *about);
83void gtk_about_dialog_set_license (GtkAboutDialog *about,
84 const gchar *license);
85G_CONST_RETURN gchar *gtk_about_dialog_get_website (GtkAboutDialog *about);
86void gtk_about_dialog_set_website (GtkAboutDialog *about,
87 const gchar *website);
88G_CONST_RETURN gchar *gtk_about_dialog_get_website_label (GtkAboutDialog *about);
89void gtk_about_dialog_set_website_label (GtkAboutDialog *about,
90 const gchar *website_label);
91gchar **gtk_about_dialog_get_authors (GtkAboutDialog *about);
92void gtk_about_dialog_set_authors (GtkAboutDialog *about,
93 gchar **authors);
94gchar **gtk_about_dialog_get_documenters (GtkAboutDialog *about);
95void gtk_about_dialog_set_documenters (GtkAboutDialog *about,
96 gchar **documenters);
97gchar ** gtk_about_dialog_get_artists (GtkAboutDialog *about);
98void gtk_about_dialog_set_artists (GtkAboutDialog *about,
99 gchar **artists);
100G_CONST_RETURN gchar *gtk_about_dialog_get_translator_credits (GtkAboutDialog *about);
101void gtk_about_dialog_set_translator_credits (GtkAboutDialog *about,
102 const gchar *translator_credits);
103GdkPixbuf *gtk_about_dialog_get_logo (GtkAboutDialog *about);
104void gtk_about_dialog_set_logo (GtkAboutDialog *about,
105 GdkPixbuf *logo);
106
107typedef void (* GtkAboutDialogActivateLinkFunc) (GtkAboutDialog *about,
108 const gchar *link);
109
110GtkAboutDialogActivateLinkFunc gtk_about_dialog_set_email_hook (GtkAboutDialogActivateLinkFunc func);
111GtkAboutDialogActivateLinkFunc gtk_about_dialog_set_url_hook (GtkAboutDialogActivateLinkFunc func);
112
113G_END_DECLS
114
115#endif /* __GTK_ABOUT_DIALOG_H__ */
116
117
diff --git a/todo b/todo
index 61826fe4..dd5b6f28 100644
--- a/todo
+++ b/todo
@@ -2,10 +2,8 @@ High priority:
2* figure out how list views work 2* figure out how list views work
3* basic FS integration: 3* basic FS integration:
4 - search: 4 - search:
5 + properly get page from glade window
6 + properly initialize tree view
7 + process search result events 5 + process search result events
8 + process search frame close event 6 + process search frame close event (memory leak)
9 + support namespace URIs 7 + support namespace URIs
10 + update namespace list combo box 8 + update namespace list combo box
11 - insert 9 - insert
@@ -17,6 +15,7 @@ Important:
17* available apps 15* available apps
18 16
19Later: 17Later:
18* add widgets to allow anonymity level specification
20* more help-texts 19* more help-texts
21* pop-up dialogs 20* pop-up dialogs
22* chat 21* chat
@@ -24,7 +23,8 @@ Later:
24 23
25 24
26gnunet-gtk wishlist (from pre-0.7.0 days): 25gnunet-gtk wishlist (from pre-0.7.0 days):
27 26- #770? (use freedback (LOG) in gnunet-gtk via show-messages)
27 (is this not working nicely already?)
28- while (!) downloading directory, display already received results 28- while (!) downloading directory, display already received results
29 for download (now supported by libecrs!) 29 for download (now supported by libecrs!)
30- add option to list all indexed files and perhaps delete from them 30- add option to list all indexed files and perhaps delete from them