[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r18561 - in gnunet-gtk: contrib src/fs
From: |
gnunet |
Subject: |
[GNUnet-SVN] r18561 - in gnunet-gtk: contrib src/fs |
Date: |
Mon, 12 Dec 2011 16:35:53 +0100 |
Author: grothoff
Date: 2011-12-12 16:35:53 +0100 (Mon, 12 Dec 2011)
New Revision: 18561
Modified:
gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
gnunet-gtk/contrib/gnunet_fs_gtk_search_tab.glade
gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_view_toggles.c
gnunet-gtk/src/fs/gnunet-fs-gtk.c
Log:
applying patches from #1759 towards making the GUI nicer; specifically, this
covers 0004-new-search-bar, 0001-lump-and-tweaks, 2-get-text-from-combo,
3-do-not-use-new-search-tab, 4-fix-search-tab-label, 1-make-tabs-smaller,
2-remove-has-entry, 3-revert-get-text-from-combobox
Modified: gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade 2011-12-12 13:58:33 UTC
(rev 18560)
+++ gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade 2011-12-12 15:35:53 UTC
(rev 18561)
@@ -2,54 +2,54 @@
<interface>
<requires lib="gtk+" version="2.20"/>
<!-- interface-naming-policy project-wide -->
- <object class="GtkImage" id="image5">
- <property name="visible">True</property>
- <property name="stock">gtk-go-down</property>
- </object>
- <object class="GtkImage" id="image4">
- <property name="visible">True</property>
- <property name="stock">gtk-find</property>
- </object>
- <object class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="stock">gtk-open</property>
- </object>
- <object class="GtkImage" id="image3">
- <property name="visible">True</property>
- <property name="stock">gtk-new</property>
- </object>
- <object class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="stock">gtk-go-up</property>
- </object>
<object class="GtkWindow" id="GNUNET_GTK_main_window">
+ <property name="can_focus">False</property>
<property name="title" translatable="yes">gnunet-fs-gtk</property>
<property name="window_position">center</property>
<property name="default_width">700</property>
<property name="default_height">500</property>
<property name="icon_name">gnunet-gtk</property>
<signal name="delete-event" handler="GNUNET_GTK_quit_cb" after="yes"
swapped="no"/>
+ <signal name="realize" handler="GNUNET_GTK_main_window_realize_cb"
swapped="no"/>
<child>
<object class="GtkVBox" id="GNUNET_GTK_main_window_vbox">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
+ <object class="GtkStatusbar" id="GNUNET_GTK_status_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkMenuBar" id="GNUNET_GTK_main_menu">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkMenuItem"
id="GNUNET_GTK_main_menu_file_sharing">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_File
sharing</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu"
id="GNUNET_GTK_main_menu_file_sharing_box">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_file_create_pseudonym">
<property name="label" translatable="yes">_Create
pseudonym</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text"
translatable="yes">Create a pseudonym for publishing content. Note that you
can also publish content anonymously (without using a pseudonym).</property>
- <property name="use_action_appearance">False</property>
<property name="accel_path"><gnunet-fs-gtk>/File
sharing/Create pseudonym</property>
<property name="use_underline">True</property>
<property name="image">image3</property>
@@ -61,8 +61,9 @@
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_file_advertise_pseudonym">
<property name="label" translatable="yes">_Advertise
Pseudonym</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="image">image6</property>
<property name="use_stock">False</property>
@@ -72,9 +73,10 @@
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_file_publish">
<property name="label"
translatable="yes">_Publish</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text"
translatable="yes">Publish files or directories on GNUnet</property>
- <property name="use_action_appearance">False</property>
<property name="accel_path"><gnunet-fs-gtk>/File
sharing/Publish</property>
<property name="use_underline">True</property>
<property name="image">image2</property>
@@ -85,16 +87,18 @@
</child>
<child>
<object class="GtkSeparatorMenuItem"
id="GNUNET_GTK_main_menu_file_sep1">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_file_search">
<property name="label"
translatable="yes">_Search</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text"
translatable="yes">Search GNUnet for files</property>
- <property name="use_action_appearance">False</property>
<property name="accel_path"><gnunet-fs-gtk>/File
sharing/Search</property>
<property name="use_underline">True</property>
<property name="image">image4</property>
@@ -105,16 +109,18 @@
</child>
<child>
<object class="GtkSeparatorMenuItem"
id="GNUNET_GTK_main_menu_file_sep2">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_file_download_uri">
<property name="label"
translatable="yes">_Download</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text"
translatable="yes">Download a file or directory with a known URI.</property>
- <property name="use_action_appearance">False</property>
<property name="accel_path"><gnunet-fs-gtk>/File
sharing/Download</property>
<property name="use_underline">True</property>
<property name="image">image5</property>
@@ -126,9 +132,10 @@
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_file_open_gnunet_directory">
<property name="label" translatable="yes">_Open GNUnet
directory</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Use
this option to browse a GNUnet directory file that has been previously
downloaded.</property>
- <property name="use_action_appearance">False</property>
<property name="accel_path"><gnunet-fs-gtk>/File
sharing/Open directory</property>
<property name="use_underline">True</property>
<property name="image">image1</property>
@@ -139,16 +146,18 @@
</child>
<child>
<object class="GtkSeparatorMenuItem"
id="GNUNET_GTK_main_menu_file_sep3">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_file_quit">
<property name="label">gtk-quit</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Exit
gnunet-fs-gtk. Active file-sharing operations will resume upon
restart.</property>
- <property name="use_action_appearance">False</property>
<property
name="accel_path"><gnunet-fs-gtk>/Quit</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
@@ -163,17 +172,20 @@
<child>
<object class="GtkMenuItem" id="GNUNET_GTK_main_menu_edit">
<property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="GNUNET_GTK_main_menu_edit_box">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_edit_preferences">
<property name="label">gtk-preferences</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Edit
the system configuration.</property>
- <property name="use_action_appearance">False</property>
<property
name="accel_path"><gnunet-fs-gtk>/Edit/Preferences</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
@@ -185,18 +197,21 @@
</child>
<child>
<object class="GtkMenuItem" id="GNUNET_GTK_main_menu_view">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_View</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="GNUNET_GTK_main_menu_view_box">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkCheckMenuItem"
id="GNUNET_GTK_main_menu_view_metadata">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Show
meta data in main window</property>
- <property name="use_action_appearance">False</property>
<property name="label"
translatable="yes">Metadata</property>
<property name="use_underline">True</property>
<property name="active">True</property>
@@ -205,34 +220,50 @@
</child>
<child>
<object class="GtkCheckMenuItem"
id="GNUNET_GTK_main_menu_view_preview">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Show
preview (when available)</property>
- <property name="use_action_appearance">False</property>
<property name="label"
translatable="yes">Preview</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<signal name="toggled"
handler="GNUNET_GTK_main_menu_view_preview_toggled_cb" swapped="no"/>
</object>
</child>
+ <child>
+ <object class="GtkCheckMenuItem"
id="GNUNET_GTK_main_menu_search_preview">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Show
search box in main window</property>
+ <property name="label"
translatable="yes">Search</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <signal name="toggled"
handler="GNUNET_GTK_main_menu_view_search_toggled_cb" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem" id="GNUNET_GTK_main_menu_help">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Help</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="GNUNET_GTK_main_menu_help_abou">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem"
id="GNUNET_GTK_main_menu_help_about">
<property name="label">gtk-about</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="tooltip_text"
translatable="yes">Display information about this version of
gnunet-fs-gtk</property>
- <property name="use_action_appearance">False</property>
<property
name="accel_path"><gnunet-fs-gtk>/Help/About</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
@@ -252,11 +283,13 @@
</child>
<child>
<object class="GtkToolbar" id="GNUNET_GTK_main_window_toolbar">
+ <property name="can_focus">False</property>
<property name="toolbar_style">icons</property>
<child>
<object class="GtkToolButton" id="GNUNET_GTK_toolbar_search">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Search</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-find</property>
@@ -274,13 +307,246 @@
</packing>
</child>
<child>
+ <object class="GtkHBox" id="main_window_search_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">3</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="main_window_search_namespace_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Namespace:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel"
id="main_window_search_selected_namespace_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"><none></property>
+ <property name="single_line_mode">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment"
id="main_window_search_namespace_combobox_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkToggleButton"
id="main_window_search_namespace_dropdown_button">
+ <property name="use_action_appearance">False</property>
+ <property name="width_request">21</property>
+ <property name="height_request">21</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
+ <property name="image_position">right</property>
+ <signal name="toggled"
handler="main_window_search_namespace_dropdown_button_toggled_cb" swapped="no"/>
+ <signal name="enter-notify-event"
handler="main_window_search_namespace_dropdown_button_enter_notify_event_cb"
swapped="no"/>
+ <signal name="leave-notify-event"
handler="namespace_selector_window_leave_notify_event_cb" swapped="no"/>
+ <child>
+ <object class="GtkArrow" id="arrow1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="arrow_type">down</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkAlignment"
id="main_window_search_button_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkButton" id="main_window_search_button">
+ <property name="label" translatable="yes">Find:</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked"
handler="main_window_search_button_clicked_cb" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="main_window_search_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_stock">gtk-find</property>
+ <property name="primary_icon_activatable">True</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="main_window_search_anonymity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Anonymity:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment"
id="main_window_search_anonymity_combobox_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkComboBox"
id="main_window_search_anonymity_combobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property
name="model">main_window_search_anonymity_liststore</property>
+ <property name="active">1</property>
+ <child>
+ <object class="GtkCellRendererText"
id="main_window_search_anonymity_combobox_renderer"/>
+ <attributes>
+ <attribute name="foreground">2</attribute>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText"
id="main_window_search_anonymity_combobox_renerer_level"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="main_window_search_mime_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Type:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment"
id="main_window_search_mime_combobox_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkComboBox"
id="main_window_search_mime_combobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property
name="model">main_window_search_mime_liststore</property>
+ <property name="active">0</property>
+ <child>
+ <object class="GtkCellRendererText"
id="main_window_search_mime_renderer_description"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText"
id="main_window_search_mime_renderer_type">
+ <property name="visible">False</property>
+ </object>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText"
id="main_window_search_mime_renderer_extension"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText"
id="main_window_search_mime_renderer_lossyness">
+ <property name="visible">False</property>
+ </object>
+ <attributes>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText"
id="main_window_search_mime_renderer_freedom">
+ <property name="visible">False</property>
+ </object>
+ <attributes>
+ <attribute name="text">4</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkHBox" id="GNUNET_GTK_main_window_hbox">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkNotebook" id="GNUNET_GTK_main_window_notebook">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="scrollable">True</property>
+ <property name="tab_border">0</property>
+ <property name="tab_hborder">0</property>
+ <property name="tab_vborder">0</property>
<signal name="switch-page"
handler="GNUNET_GTK_main_window_notebook_switch_page_cb" after="yes"
swapped="no"/>
</object>
<packing>
@@ -292,6 +558,7 @@
<child>
<object class="GtkVSeparator"
id="GNUNET_GTK_main_window_separator">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
@@ -302,12 +569,14 @@
<child>
<object class="GtkVBox" id="GNUNET_GTK_main_window_extras_vbox">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImage"
id="GNUNET_GTK_main_window_preview_image">
<property name="width_request">128</property>
<property name="height_request">128</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
+ <property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes">Thumbnail
associated with the currently selected content</property>
<property name="pixel_size">256</property>
@@ -389,21 +658,9 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">3</property>
+ <property name="position">4</property>
</packing>
</child>
- <child>
- <object class="GtkStatusbar" id="GNUNET_GTK_status_bar">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
</object>
</child>
</object>
@@ -419,6 +676,38 @@
<column type="gchararray"/>
</columns>
</object>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <property name="page_size">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <property name="page_size">10</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-new</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-find</property>
+ </object>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-go-down</property>
+ </object>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-index</property>
+ </object>
<object class="GtkListStore" id="GNUNET_GTK_peer_info_list_store">
<columns>
<!-- column-name peer_identity -->
@@ -433,22 +722,6 @@
<column type="guint64"/>
</columns>
</object>
- <object class="GtkImage" id="image6">
- <property name="visible">True</property>
- <property name="stock">gtk-index</property>
- </object>
- <object class="GtkAdjustment" id="adjustment1">
- <property name="upper">100</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- <property name="page_size">10</property>
- </object>
- <object class="GtkAdjustment" id="adjustment2">
- <property name="upper">100</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- <property name="page_size">10</property>
- </object>
<object class="GtkAdjustment" id="adjustment3">
<property name="upper">100</property>
<property name="step_increment">1</property>
@@ -461,4 +734,172 @@
<property name="page_increment">10</property>
<property name="page_size">10</property>
</object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-open</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-go-up</property>
+ </object>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-index</property>
+ </object>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-index</property>
+ </object>
+ <object class="GtkImage" id="image9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-index</property>
+ </object>
+ <object class="GtkListStore" id="main_window_search_anonymity_liststore">
+ <columns>
+ <!-- column-name Name -->
+ <column type="gchararray"/>
+ <!-- column-name Level -->
+ <column type="guint"/>
+ <!-- column-name Color -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">None</col>
+ <col id="1">0</col>
+ <col id="2" translatable="yes">#AAAA00000000</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Normal</col>
+ <col id="1">1</col>
+ <col id="2" translatable="yes">#000000000000</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Paranoid</col>
+ <col id="1">10</col>
+ <col id="2" translatable="yes">#0000AAAA0000</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="main_window_search_mime_liststore">
+ <columns>
+ <!-- column-name MIME -->
+ <column type="gchararray"/>
+ <!-- column-name Type -->
+ <column type="gchararray"/>
+ <!-- column-name Extension -->
+ <column type="gchararray"/>
+ <!-- column-name Lossyness -->
+ <column type="gchararray"/>
+ <!-- column-name Freedom -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0"> </col>
+ <col id="1" translatable="yes">Any</col>
+ <col id="2" translatable="yes"> </col>
+ <col id="3" translatable="yes"> </col>
+ <col id="4" translatable="yes"> </col>
+ </row>
+ <row>
+ <col id="0">plain/text</col>
+ <col id="1" translatable="yes">Text</col>
+ <col id="2">txt</col>
+ <col id="3" translatable="yes">N/A</col>
+ <col id="4" translatable="yes">N/A</col>
+ </row>
+ <row>
+ <col id="0">application/zip</col>
+ <col id="1" translatable="yes">Zip</col>
+ <col id="2">zip</col>
+ <col id="3" translatable="yes">lossless</col>
+ <col id="4" translatable="yes">free</col>
+ </row>
+ <row>
+ <col id="0">audio/mpeg</col>
+ <col id="1" translatable="yes">MPEG audio</col>
+ <col id="2">mp3, mp2, mpeg</col>
+ <col id="3" translatable="yes">lossy</col>
+ <col id="4" translatable="yes">non-free</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkSizeGroup" id="enties_and_comboboxes_sizegroup">
+ <property name="mode">vertical</property>
+ <widgets>
+ <widget name="main_window_search_entry"/>
+ <widget name="main_window_search_anonymity_combobox"/>
+ <widget name="main_window_search_mime_combobox"/>
+ </widgets>
+ </object>
+ <object class="GtkTreeStore" id="main_window_search_namespace_treestore">
+ <columns>
+ <!-- column-name Name -->
+ <column type="gchararray"/>
+ <!-- column-name Key -->
+ <column type="gpointer"/>
+ <!-- column-name KeyTextual -->
+ <column type="gchararray"/>
+ <!-- column-name Tooltip -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkWindow" id="namespace_selector_window">
+ <property name="can_focus">False</property>
+ <property name="events">GDK_LEAVE_NOTIFY_MASK |
GDK_STRUCTURE_MASK</property>
+ <property name="type">popup</property>
+ <property name="resizable">False</property>
+ <property name="type_hint">dropdown-menu</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="urgency_hint">True</property>
+ <property name="decorated">False</property>
+ <property name="deletable">False</property>
+ <property name="transient_for">GNUNET_GTK_main_window</property>
+ <property name="mnemonics_visible">False</property>
+ <signal name="leave-notify-event"
handler="namespace_selector_window_leave_notify_event_cb" swapped="no"/>
+ <signal name="enter-notify-event"
handler="main_window_search_namespace_dropdown_button_enter_notify_event_cb"
swapped="no"/>
+ <child>
+ <object class="GtkTreeView" id="namespace_selector_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="model">main_window_search_namespace_treestore</property>
+ <property name="headers_clickable">False</property>
+ <property name="search_column">0</property>
+ <property name="hover_expand">True</property>
+ <property name="tooltip_column">3</property>
+ <signal name="cursor-changed"
handler="namespace_selector_treeview_cursor_changed_cb" swapped="no"/>
+ <child>
+ <object class="GtkTreeViewColumn" id="name_column">
+ <property name="sizing">autosize</property>
+ <property name="title" translatable="yes">Name</property>
+ <child>
+ <object class="GtkCellRendererText"
id="namespace_selector_name_column_text_cell"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="key_column">
+ <property name="sizing">autosize</property>
+ <property name="title" translatable="yes">Key</property>
+ <child>
+ <object class="GtkCellRendererText"
id="namespace_selector_key_column_text_cell"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
</interface>
Modified: gnunet-gtk/contrib/gnunet_fs_gtk_search_tab.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_fs_gtk_search_tab.glade 2011-12-12 13:58:33 UTC
(rev 18560)
+++ gnunet-gtk/contrib/gnunet_fs_gtk_search_tab.glade 2011-12-12 15:35:53 UTC
(rev 18561)
@@ -35,140 +35,167 @@
</columns>
</object>
<object class="GtkWindow" id="_search_result_frame_window">
+ <property name="can_focus">False</property>
+ <property name="type">popup</property>
<property name="title">You should never see this</property>
- <child>
- <object class="GtkScrolledWindow"
id="_search_frame_scrolled_window">
- <property name="height_request">100</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
-
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="focus_on_map">False</property>
+ <property name="decorated">False</property>
+ <property name="deletable">False</property>
<child>
- <object class="GtkTreeView" id="_search_result_frame">
+ <object class="GtkScrolledWindow" id="_search_frame_scrolled_window">
+ <property name="height_request">100</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property
name="model">GNUNET_GTK_file_sharing_result_tree_store</property>
- <property name="reorderable">True</property>
- <property name="enable_grid_lines">horizontal</property>
- <property name="enable_tree_lines">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
<child>
- <object class="GtkTreeViewColumn"
id="search_result_description_column">
- <property name="resizable">True</property>
- <property name="sizing">autosize</property>
- <property name="title" translatable="yes">Description</property>
- <property name="expand">True</property>
- <property name="clickable">True</property>
+ <object class="GtkTreeView" id="_search_result_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="model">GNUNET_GTK_file_sharing_result_tree_store</property>
<property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">6</property>
+ <property name="enable_grid_lines">horizontal</property>
+ <property name="enable_tree_lines">True</property>
<child>
- <object class="GtkCellRendererProgress"
id="search_result_description_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">6</attribute>
- <attribute name="value">5</attribute>
- </attributes>
+ <object class="GtkTreeViewColumn"
id="search_result_description_column">
+ <property name="resizable">True</property>
+ <property name="sizing">autosize</property>
+ <property name="title"
translatable="yes">Description</property>
+ <property name="expand">True</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">6</property>
+ <child>
+ <object class="GtkCellRendererProgress"
id="search_result_description_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">6</attribute>
+ <attribute name="value">5</attribute>
+ </attributes>
+ </child>
+ </object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="search_result_mime_column">
- <property name="sizing">autosize</property>
- <property name="title" translatable="yes">Format</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">10</property>
<child>
- <object class="GtkCellRendererText"
id="search_result_mime_renderer"/>
- <attributes>
- <attribute name="background">8</attribute>
- <attribute name="text">10</attribute>
- </attributes>
+ <object class="GtkTreeViewColumn" id="search_result_mime_column">
+ <property name="sizing">autosize</property>
+ <property name="title" translatable="yes">Format</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">10</property>
+ <child>
+ <object class="GtkCellRendererText"
id="search_result_mime_renderer"/>
+ <attributes>
+ <attribute name="background">8</attribute>
+ <attribute name="text">10</attribute>
+ </attributes>
+ </child>
+ </object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="search_result_size_column">
- <property name="sizing">autosize</property>
- <property name="title" translatable="yes">Size</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">2</property>
<child>
- <object class="GtkCellRendererProgress"
id="search_result_size_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">2</attribute>
- <attribute name="value">4</attribute>
- </attributes>
+ <object class="GtkTreeViewColumn" id="search_result_size_column">
+ <property name="sizing">autosize</property>
+ <property name="title" translatable="yes">Size</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">2</property>
+ <child>
+ <object class="GtkCellRendererProgress"
id="search_result_size_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">2</attribute>
+ <attribute name="value">4</attribute>
+ </attributes>
+ </child>
+ </object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn"
id="search_result_applicability_column">
- <property name="sizing">autosize</property>
- <property name="title">#</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_order">descending</property>
- <property name="sort_column_id">11</property>
<child>
- <object class="GtkCellRendererText"
id="search_result_applicability_renderer"/>
- <attributes>
- <attribute name="background">8</attribute>
- <attribute name="text">11</attribute>
- </attributes>
+ <object class="GtkTreeViewColumn"
id="search_result_applicability_column">
+ <property name="sizing">autosize</property>
+ <property name="title">#</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_order">descending</property>
+ <property name="sort_column_id">11</property>
+ <child>
+ <object class="GtkCellRendererText"
id="search_result_applicability_renderer"/>
+ <attributes>
+ <attribute name="background">8</attribute>
+ <attribute name="text">11</attribute>
+ </attributes>
+ </child>
+ </object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="search_result_preview_column">
- <property name="min_width">128</property>
- <property name="max_width">128</property>
- <property name="title" translatable="yes">Preview</property>
- <property name="reorderable">True</property>
<child>
- <object class="GtkCellRendererPixbuf"
id="search_result_preview_renderer"/>
- <attributes>
- <attribute name="pixbuf">3</attribute>
- </attributes>
+ <object class="GtkTreeViewColumn"
id="search_result_preview_column">
+ <property name="min_width">128</property>
+ <property name="max_width">128</property>
+ <property name="title" translatable="yes">Preview</property>
+ <property name="reorderable">True</property>
+ <child>
+ <object class="GtkCellRendererPixbuf"
id="search_result_preview_renderer"/>
+ <attributes>
+ <attribute name="pixbuf">3</attribute>
+ </attributes>
+ </child>
+ </object>
</child>
</object>
</child>
</object>
</child>
</object>
- </child>
- </object>
<object class="GtkWindow" id="_search_result_label_window">
+ <property name="can_focus">False</property>
+ <property name="type">popup</property>
+ <property name="title" translatable="yes">You shouldn't see this
also</property>
+ <property name="type_hint">dock</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="focus_on_map">False</property>
+ <property name="decorated">False</property>
+ <property name="deletable">False</property>
<child>
<object class="GtkHBox" id="_search_result_label_hbox">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="border_width">5</property>
<child>
<object class="GtkLabel" id="_search_result_label_window_label">
<property name="height_request">30</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">query</property>
</object>
<packing>
- <property name="fill">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkButton" id="_search_result_label_play_button">
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
+ <object class="GtkAlignment"
id="_search_result_label_play_button_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <object class="GtkImage" id="play_icon_stock_image">
- <property name="visible">True</property>
- <property name="stock">gtk-media-play</property>
- <property name="icon-size">2</property>
+ <object class="GtkButton" id="_search_result_label_play_button">
+ <property name="use_action_appearance">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <child>
+ <object class="GtkImage" id="play_icon_stock_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-media-play</property>
+ <property name="icon-size">2</property>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -179,16 +206,25 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="_search_result_label_pause_button">
+ <object class="GtkAlignment"
id="_search_result_label_pause_button_alignment">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <object class="GtkImage" id="pause_icon_stock_image">
+ <object class="GtkButton" id="_search_result_label_pause_button">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="stock">gtk-media-pause</property>
- <property name="icon-size">2</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <child>
+ <object class="GtkImage" id="pause_icon_stock_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-media-pause</property>
+ <property name="icon-size">2</property>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -199,15 +235,24 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="_search_result_label_clear_button">
+ <object class="GtkAlignment"
id="_search_result_label_clear_button_alignment">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <object class="GtkImage" id="clear_icon_stock_image">
+ <object class="GtkButton" id="_search_result_label_clear_button">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="stock">gtk-clear</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <child>
+ <object class="GtkImage" id="clear_icon_stock_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-clear</property>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -219,17 +264,26 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="_search_result_label_close_button">
+ <object class="GtkAlignment"
id="_search_result_label_close_button_alignment">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <property name="relief">half</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <object class="GtkImage" id="close_icon_stock_image">
+ <object class="GtkButton" id="_search_result_label_close_button">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="stock">gtk-close</property>
- <property name="icon-size">2</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">half</property>
+ <child>
+ <object class="GtkImage" id="close_icon_stock_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-close</property>
+ <property name="icon-size">2</property>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -242,4 +296,13 @@
</object>
</child>
</object>
+ <object class="GtkSizeGroup" id="_search_result_label_buttons_size_group">
+ <property name="mode">both</property>
+ <widgets>
+ <widget name="_search_result_label_play_button"/>
+ <widget name="_search_result_label_pause_button"/>
+ <widget name="_search_result_label_clear_button"/>
+ <widget name="_search_result_label_close_button"/>
+ </widgets>
+ </object>
</interface>
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_view_toggles.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_view_toggles.c 2011-12-12
13:58:33 UTC (rev 18560)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_view_toggles.c 2011-12-12
15:35:53 UTC (rev 18561)
@@ -71,5 +71,14 @@
"GNUNET_GTK_main_menu_view_metadata");
}
+/**
+ * Preview view is toggled.
+ */
+void
+GNUNET_GTK_main_menu_view_search_toggled_cb (GtkWidget * dummy, gpointer data)
+{
+ toggle_view ("main_window_search_hbox",
+ "GNUNET_GTK_main_menu_search_preview");
+}
/* end of gnunet-fs-gtk-main_window_view_toggles.c */
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk.c 2011-12-12 13:58:33 UTC (rev 18560)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk.c 2011-12-12 15:35:53 UTC (rev 18561)
@@ -46,6 +46,7 @@
*/
static struct EXTRACTOR_PluginList *plugins;
+guint namespace_selector_window_leave_timeout_source = 0;
/**
* Return handle for file-sharing operations.
@@ -129,45 +130,390 @@
GNUNET_GTK_main_menu_file_search_activate_cb (GtkWidget * dummy, gpointer
data);
+void
+main_window_search_namespace_dropdown_button_toggled_cb (GtkToggleButton
*togglebutton,
+ gpointer user_data)
+{
+ gboolean active;
+ GtkBuilder *builder = GTK_BUILDER (user_data);
+ GtkWidget *namespace_selector_window;
+ namespace_selector_window = GTK_WIDGET (gtk_builder_get_object (builder,
"namespace_selector_window"));
+ g_object_get (G_OBJECT (togglebutton), "active", &active, NULL);
+ if (active)
+ {
+ GtkAllocation togglebutton_allocation;
+ GdkWindow *main_window_gdk;
+ gint mwg_x, mwg_y, tgb_x, tgb_y, popup_x, popup_y;
+
+ gtk_widget_get_allocation (GTK_WIDGET (togglebutton),
&togglebutton_allocation);
+
+ main_window_gdk = gtk_widget_get_window (GTK_WIDGET (togglebutton));
+
+ gdk_window_get_origin (main_window_gdk, &mwg_x, &mwg_y);
+
+ /* FIXME: this might become a problem in other window managers,
+ * where reference point is not in the top-left corner.
+ * We want to show the window below the button.
+ */
+ tgb_x = mwg_x + togglebutton_allocation.x;
+ tgb_y = mwg_y + togglebutton_allocation.y;
+ popup_x = tgb_x;
+ popup_y = tgb_y + togglebutton_allocation.height;
+
+ gtk_window_move (GTK_WINDOW (namespace_selector_window), popup_x, popup_y);
+
+ gtk_widget_show (namespace_selector_window);
+ }
+ else
+ gtk_widget_hide (namespace_selector_window);
+}
+
+gboolean
+namespace_selector_window_leave_timeout_cb (gpointer user_data)
+{
+ GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (user_data);
+ /* This will eventually hide the namespace selector */
+ gtk_toggle_button_set_active (toggle_button, FALSE);
+ return FALSE;
+}
+
+gboolean
+main_window_search_namespace_dropdown_button_enter_notify_event_cb (
+ GtkWidget *widget, GdkEvent *event, gpointer user_data)
+{
+ if (namespace_selector_window_leave_timeout_source > 0)
+ g_source_remove (namespace_selector_window_leave_timeout_source);
+ return FALSE;
+}
+
+
+gboolean
+namespace_selector_window_leave_notify_event_cb (GtkWidget *widget,
+ GdkEvent *event, gpointer user_data)
+{
+ GtkBuilder *builder;
+ GtkToggleButton *toggle_button;
+ guint timeout_id;
+
+ builder = GTK_BUILDER (user_data);
+
+ toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder,
"main_window_search_namespace_dropdown_button"));
+
+ /* Place a timeout to hide the window. It will be cancelled if the cursor
+ * enters the namespace selector window or the toggle button within 100ms.
+ */
+ timeout_id = g_timeout_add (100,
&namespace_selector_window_leave_timeout_cb, toggle_button);
+ if (namespace_selector_window_leave_timeout_source > 0)
+ g_source_remove (namespace_selector_window_leave_timeout_source);
+ namespace_selector_window_leave_timeout_source = timeout_id;
+
+ return FALSE;
+}
+
+gboolean
+GNUNET_GTK_get_tree_string (GtkTreeView *treeview, GtkTreePath *treepath,
+ guint column, gchar **value)
+{
+ gboolean ok;
+ GtkTreeModel *model;
+
+ model = gtk_tree_view_get_model (treeview);
+ if (!model)
+ return FALSE;
+
+ GtkTreeIter iter;
+ ok = gtk_tree_model_get_iter (model, &iter, treepath);
+ if (!ok)
+ return FALSE;
+
+ *value = NULL;
+ gtk_tree_model_get (model, &iter, column, value, -1);
+ if (*value == NULL)
+ return FALSE;
+ return TRUE;
+}
+
+gboolean
+get_selected_anonymity_level (GtkBuilder *builder, guint *p_level)
+{
+ GtkComboBox *combo;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ guint level;
+
+ combo = GTK_COMBO_BOX(gtk_builder_get_object (builder,
+ "main_window_search_anonymity_combobox"));
+ if (!combo)
+ return FALSE;
+
+ if (!gtk_combo_box_get_active_iter (combo, &iter))
+ return FALSE;
+
+ model = gtk_combo_box_get_model (combo);
+ if (!model)
+ return FALSE;
+
+ gtk_tree_model_get (model, &iter, 1, &level, -1);
+ if (p_level)
+ *p_level = level;
+ return TRUE;
+}
+
+gboolean
+get_selected_namespace_treepath_iter_model_widget (GtkBuilder *builder,
+ GtkTreePath **p_treepath, GtkTreeIter *p_iter, GtkTreeModel **p_model,
+ GtkWidget **p_widget)
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GList *selected;
+ GtkTreePath *treepath;
+ GtkWidget *widget;
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder,
"namespace_selector_treeview"));
+ if (!widget)
+ return FALSE;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
+ if (!selection || !model)
+ return FALSE;
+
+ selected = gtk_tree_selection_get_selected_rows (selection, NULL);
+ if (!selected)
+ return FALSE;
+ if (selected->data == NULL)
+ {
+ g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (selected);
+ return FALSE;
+ }
+ /* Free everything except the first path, keep it */
+ treepath = (GtkTreePath *) selected->data;
+ selected = g_list_remove (selected, selected->data);
+ g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (selected);
+
+ if (p_iter && !gtk_tree_model_get_iter (model, p_iter, treepath))
+ {
+ gtk_tree_path_free (treepath);
+ return FALSE;
+ }
+ *p_treepath = treepath;
+ if (p_model)
+ *p_model = model;
+ if (p_widget)
+ *p_widget = widget;
+ return TRUE;
+}
+
+void
+namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget,
+ gpointer user_data)
+{
+ GtkBuilder *builder;
+ GtkToggleButton *toggle_button;
+ GtkLabel *sel_namespace_label;
+ gchar *value;
+ GtkTreePath *treepath;
+
+ builder = GTK_BUILDER (user_data);
+
+ if (!get_selected_namespace_treepath_iter_model_widget (builder, &treepath,
NULL, NULL, NULL))
+ return;
+
+ toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder,
"main_window_search_namespace_dropdown_button"));
+ if (!toggle_button)
+ return;
+
+ sel_namespace_label = GTK_LABEL (gtk_builder_get_object (builder,
"main_window_search_selected_namespace_label"));
+ if (!sel_namespace_label)
+ return;
+
+ if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 0,
+ &value))
+ gtk_label_set_text (sel_namespace_label, value);
+
+ gtk_tree_path_free (treepath);
+
+ /* This will eventually hide the namespace selector */
+ gtk_toggle_button_set_active (toggle_button, FALSE);
+}
+
+void
+main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data)
+{
+ GtkBuilder *builder;
+ GtkTreePath *namespace_treepath = NULL;
+ GtkTreeModel *namespace_model = NULL;
+ GtkComboBox *mime_combo;
+ GtkTreeModel *mime_model;
+ GtkEntry *query_entry;
+ guint anonymity_level;
+ GtkTreeIter iter;
+ const char *entry_keywords;
+ gchar *keywords;
+ gchar *mime_keyword;
+
+ GNUNET_HashCode *nsid = NULL;
+ struct GNUNET_FS_Uri *uri;
+ char *emsg;
+
+ builder = GTK_BUILDER (user_data);
+
+ if (!get_selected_anonymity_level (builder, &anonymity_level))
+ return;
+
+ mime_combo = GTK_COMBO_BOX (GNUNET_FS_GTK_get_main_window_object
+ ("main_window_search_mime_combobox"));
+ mime_model = gtk_combo_box_get_model (mime_combo);
+ if (mime_model && gtk_combo_box_get_active_iter (mime_combo, &iter))
+ {
+ mime_keyword = NULL;
+ gtk_tree_model_get (mime_model, &iter, 0, &mime_keyword, -1);
+ }
+
+ get_selected_namespace_treepath_iter_model_widget (builder,
+ &namespace_treepath, &iter, &namespace_model, NULL);
+
+ query_entry = GTK_ENTRY (gtk_builder_get_object (builder,
+ "main_window_search_entry"));
+
+ entry_keywords = gtk_entry_get_text (query_entry);
+ if (mime_keyword != NULL)
+ {
+ keywords = g_strdup_printf ("%s %s", entry_keywords, mime_keyword);
+ g_free (mime_keyword);
+ }
+ else
+ keywords = g_strdup (entry_keywords);
+ if (namespace_treepath != NULL)
+ gtk_tree_model_get (namespace_model, &iter, 1, &nsid, -1);
+ if (nsid != NULL)
+ {
+ uri = GNUNET_FS_uri_sks_create_from_nsid (nsid, keywords);
+ GNUNET_assert (uri != NULL);
+ }
+ else
+ {
+ emsg = NULL;
+ uri = GNUNET_FS_uri_ksk_create (keywords, &emsg);
+ if (uri == NULL)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Invalid keyword string `%s': %s"), keywords, emsg);
+ GNUNET_free_non_null (emsg);
+ return;
+ }
+ }
+ GNUNET_FS_search_start (GNUNET_FS_GTK_get_fs_handle (), uri,
+ anonymity_level, GNUNET_FS_SEARCH_OPTION_NONE, NULL);
+
+ g_free (keywords);
+ GNUNET_FS_uri_destroy (uri);
+}
+
/**
- * Add the tab with the 'new' icon for starting a search.
+ * Add pseudonym data to tree store
+ *
+ * @param cls closure (the 'GtkListStore')
+ * @param pseudonym hash code of public key of pseudonym
+ * @param md meta data known about the pseudonym
+ * @param rating the local rating of the pseudonym
+ * @return GNUNET_OK to continue iteration, GNUNET_SYSERR to abort
*/
-static void
-add_new_tab ()
+static int
+add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym,
+ const struct GNUNET_CONTAINER_MetaData *md, int rating)
{
- GtkNotebook *notebook;
- GtkWindow *sf;
- gint pages;
+ GtkTreeStore *ts = cls;
+ char *root;
+ char *ns_name;
+ GNUNET_HashCode *nsid;
+ char *description;
+ char *uris;
+ char *emsg;
+ struct GNUNET_FS_Uri *uri;
+ GtkTreeIter iter;
+
+ ns_name =
+ GNUNET_PSEUDONYM_id_to_name (GNUNET_FS_GTK_get_configuration (),
+ pseudonym);
+ nsid = GNUNET_malloc (sizeof (GNUNET_HashCode));
+ *nsid = *pseudonym;
+ root = NULL;
+ uris = GNUNET_CONTAINER_meta_data_get_by_type (md, EXTRACTOR_METATYPE_URI);
+ if (uris != NULL)
+ {
+ emsg = NULL;
+ uri = GNUNET_FS_uri_parse (uris, &emsg);
+ if (uri == NULL)
+ GNUNET_free (emsg);
+ root = GNUNET_FS_uri_sks_get_content_id (uri);
+ GNUNET_FS_uri_destroy (uri);
+ }
+ description =
+ GNUNET_CONTAINER_meta_data_get_first_by_types (md,
+ EXTRACTOR_METATYPE_TITLE,
+
EXTRACTOR_METATYPE_BOOK_TITLE,
+
EXTRACTOR_METATYPE_DESCRIPTION,
+
EXTRACTOR_METATYPE_SUMMARY,
+ EXTRACTOR_METATYPE_ALBUM,
+
EXTRACTOR_METATYPE_COMMENT,
+
EXTRACTOR_METATYPE_SUBJECT,
+
EXTRACTOR_METATYPE_KEYWORDS,
+ -1);
+ gtk_tree_store_insert_with_values (ts, &iter, NULL, G_MAXINT, 0, ns_name, 1,
+ nsid, 2, root, 3, description, -1);
+ GNUNET_free (ns_name);
+ GNUNET_free_non_null (root);
+ GNUNET_free_non_null (description);
+ return GNUNET_OK;
+}
+
+void
+GNUNET_GTK_main_window_realize_cb (GtkWidget *widget, gpointer user_data)
+{
+ GtkTreeIter iter;
+ GtkTreeView *namespace_tree;
+ GtkTreeStore *namespace_treestore;
GtkBuilder *builder;
- GtkWidget *label;
- GtkWidget *frame;
+ GtkWidget *namespace_selector_window;
- builder =
- GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_main_tab_new_frame.glade");
+ builder = GTK_BUILDER (user_data);
- /* load frame */
- sf = GTK_WINDOW (gtk_builder_get_object (builder, "_main_tab_new_frame"));
- label = gtk_bin_get_child (GTK_BIN (sf));
- g_object_ref (G_OBJECT (label));
- gtk_container_remove (GTK_CONTAINER (sf), label);
- gtk_widget_destroy (GTK_WIDGET (sf));
- g_object_unref (builder);
- g_signal_connect (G_OBJECT (label), "clicked",
- G_CALLBACK (&GNUNET_GTK_main_menu_file_search_activate_cb),
- NULL);
+ namespace_treestore = GTK_TREE_STORE (GNUNET_FS_GTK_get_main_window_object
+ ("main_window_search_namespace_treestore"));
+ namespace_tree = GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object
+ ("namespace_selector_treeview"));
- notebook =
- GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object
- ("GNUNET_GTK_main_window_notebook"));
- pages = gtk_notebook_get_n_pages (notebook);
- frame = gtk_label_new ("");
- gtk_widget_show (frame);
- gtk_notebook_append_page (notebook, frame, label);
- gtk_notebook_set_current_page (notebook, pages);
- gtk_widget_show (GTK_WIDGET (notebook));
+ gtk_tree_store_insert_with_values (namespace_treestore, &iter, NULL,
+ G_MAXINT, 0, "Any", 1, NULL, 2, "", 3,
+ "Do not search in any particular namespace", -1);
+ GNUNET_PSEUDONYM_list_all (GNUNET_FS_GTK_get_configuration (),
+ &add_namespace_to_ts, namespace_treestore);
+
+ /* FIXME: read currently selected namespace from somewhere instead of
selecting 0th item */
+ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (namespace_treestore),
&iter))
+ {
+ gchar *value;
+ GtkLabel *sel_namespace_label;
+ GtkTreePath *treepath = gtk_tree_path_new_first ();
+ gtk_tree_selection_select_iter (gtk_tree_view_get_selection (
+ namespace_tree), &iter);
+ sel_namespace_label = GTK_LABEL (gtk_builder_get_object (builder,
"main_window_search_selected_namespace_label"));
+ if (GNUNET_GTK_get_tree_string (namespace_tree, treepath, 0, &value))
+ gtk_label_set_text (sel_namespace_label, value);
+ gtk_tree_path_free (treepath);
+ }
+
+ /* How the window (to trigger certain events) and immediately hide it */
+ namespace_selector_window = GTK_WIDGET (gtk_builder_get_object (builder,
"namespace_selector_window"));
+ gtk_widget_show (namespace_selector_window);
+ gtk_widget_hide (namespace_selector_window);
+
}
-
/**
* Actual main function run right after GNUnet's scheduler
* is initialized. Initializes up GTK and Glade.
@@ -201,7 +547,8 @@
GNUNET_FS_OPTIONS_END);
if (fs != NULL)
{
- add_new_tab ();
+ /* Searches are now started from the search bar */
+ /* add_new_tab (); */
}
else
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18561 - in gnunet-gtk: contrib src/fs,
gnunet <=