/* This file is part of GNUnet. Copyright (C) 2010 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /** * @file src/fs/gnunet-fs-gtk.h * @brief Globals for gnunet-fs-gtk * @author Christian Grothoff */ #ifndef GNUNET_FS_GTK_H #define GNUNET_FS_GTK_H #include "gnunet_gtk.h" #include #include #include #include #if HAVE_EXTRACTOR_H #include #endif /** * Context for a GNS lookup for starting a search. */ struct SearchLookup { /** * This is a DLL. */ struct SearchLookup *prev; /** * This is a DLL. */ struct SearchLookup *next; /** * Our active request with GNS. */ struct GNUNET_GNS_LookupRequest *gns; /** * Keywords to use. */ gchar *keywords; /** * Task to trigger timeout. */ struct GNUNET_SCHEDULER_Task *timeout_task; /** * Desired anonymity level. */ guint anonymity_level; }; /** * Context we keep for a pseudonym lookup on 'save'. */ struct PseuLookupContext { /** * Kept in a DLL. */ struct PseuLookupContext *next; /** * Kept in a DLL. */ struct PseuLookupContext *prev; /** * Main window context. */ struct GNUNET_GTK_MainWindowContext *main_ctx; /** * Lookup request with GNS. */ struct GNUNET_GNS_LookupRequest *lr; /** * Builder for the progress dialog that is displayed. */ GtkBuilder *progress_dialog_builder; /** * The progress dialog itself. */ GtkWidget *progress_dialog; /** * Builder for the nickname dialog that is displayed. */ GtkBuilder *nick_dialog_builder; /** * The nick dialog itself. */ GtkWidget *nick_dialog; /** * Handle to the namestore. */ struct GNUNET_NAMESTORE_Handle *namestore; /** * Handle to our namestore request. */ struct GNUNET_NAMESTORE_QueueEntry *qe; /** * Public key of the namespace we are trying to save. */ struct GNUNET_IDENTITY_PublicKey pkey; /** * Nickname we're saving under. */ char *nick; }; /** * Abort the given search lookup. * * @param sl lookup to abort. */ void abort_search_lookup (struct SearchLookup *sl); /** * Abort the given PSEU lookup. * * @param lctx lookup to abort. */ void abort_pseu_lookup (struct PseuLookupContext *lctx); /** * Context for the main window. */ struct GNUNET_GTK_MainWindowContext { /** * Builder that loaded the main window. */ GtkBuilder *builder; const struct GNUNET_CONFIGURATION_Handle *cfg; GtkTreeStore *search_ns_treestore; GtkTreeView *ns_selector_treeview; GtkWidget *ns_selector_window; GtkToggleButton *ns_dropdown_button; GtkLabel *search_ns_label; GtkEntry *search_entry; GtkComboBox *anonymity_combo; GtkListStore *anonymity_level_liststore; GtkImage *preview_image; GtkListStore *md_liststore; GtkTreeView *md_treeview; GtkWidget *main_window; GtkTreeRowReference *ns_selector_pushed_row; GtkTreeRowReference *selected_ns_row; struct GNUNET_FS_Pseudonym_DiscoveryHandle *ns_discovery_handle; GtkWindow *ns_manager; gulong ns_manager_delete_handler_id; GtkWindow *ns_organizer; gulong ns_organizer_delete_handler_id; GtkFileChooser *download_location_chooser; GtkEntry *download_name_entry; GtkComboBox *download_anonymity_combo; GtkCheckButton *download_recursive_checkbutton; GtkButton *download_download_button; GtkBox *download_panel; GtkNotebook *notebook; GtkImage *connection_indicator; /** * Handle to the GNS service. */ struct GNUNET_GNS_Handle *gns; /** * Handle to a zone monitor to update the namespace's drop-down list store. * Monitors the @e sks_zone. Can be NULL. */ struct GNUNET_NAMESTORE_ZoneMonitor *zm; /** * Head of sl DLL. */ struct SearchLookup *sl_head; /** * Tail of sl DLL. */ struct SearchLookup *sl_tail; /** * Head of lctx DLL. */ struct PseuLookupContext *lctx_head; /** * Tail of lctx DLL. */ struct PseuLookupContext *lctx_tail; /** * Handle to identity service. */ struct GNUNET_IDENTITY_Handle *identity; /** * Operation we use to determine namespace resolution domain. */ struct GNUNET_IDENTITY_Operation *id_op; /** * Our zone for SKS operations. Can be NULL. */ struct GNUNET_IDENTITY_PrivateKey *sks_zone; }; /** * Columns in the search namespace model. */ enum GNUNET_GTK_FS_MAIN_WINDOW_SearchNamespaceModelColumns { /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_NAMESPACE_MC_NAME = 0, /** * A gpointer. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_NAMESPACE_MC_KEY = 1, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_NAMESPACE_MC_ROOT = 2, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_NAMESPACE_MC_TOOLTIP = 3, }; /** * Columns in the meta data model. */ enum GNUNET_GTK_FS_MAIN_WINDOW_MetaDataModelColumns { /** * A guint. */ GNUNET_GTK_FS_MAIN_WINDOW_META_DATA_MC_META_TYPE = 0, /** * A guint. */ GNUNET_GTK_FS_MAIN_WINDOW_META_DATA_MC_META_FORMAT = 1, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_META_DATA_MC_META_TYPE_STRING = 2, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_META_DATA_MC_META_VALUE = 3, }; /** * Columns in the search mime model. */ enum GNUNET_GTK_FS_MAIN_WINDOW_SearchMimeModelColumns { /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_MIME_MC_MIME = 0, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_MIME_MC_TYPE = 1, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_MIME_MC_EXTENSION = 2, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_MIME_MC_LOSSYNESS = 3, /** * A gchararray. */ GNUNET_GTK_FS_MAIN_WINDOW_SEARCH_MIME_MC_FREEDOM = 4, }; /** * Get main context. */ struct GNUNET_GTK_MainWindowContext * GNUNET_FS_GTK_get_main_context (); /** * Get our configuration. */ const struct GNUNET_CONFIGURATION_Handle * GNUNET_FS_GTK_get_configuration (void); /** * Return the list store with anonymity levels. * * @return the list store */ GtkTreeModel * GNUNET_FS_GTK_get_anonymity_level_list_store (void); /** * Return our handle for file-sharing operations. * * @return NULL on error */ struct GNUNET_FS_Handle * GNUNET_FS_GTK_get_fs_handle (void); /** * Remember FS handle if we don't have one yet. * * @param fsh file sharing handle to use */ void GNUNET_FS_GTK_set_fs_handle (struct GNUNET_FS_Handle *fsh); /** * Get an object from the main window. * * @param name name of the object * @return NULL on error */ GObject * GNUNET_FS_GTK_get_main_window_object (const char *name); /** * Get the selected anonymity level. * * @param builder builder object for the window * @param combo_name name of the combobox widget to get anonymity from * @param p_level pointer to a guint to receive the level value * @return TRUE on success, FALSE on error */ gboolean GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint *p_level); /** * Get the selected anonymity level. * * @param combo combo box widget to get anonymity from * @param p_level pointer to a guint to receive the level value * @return TRUE on success, FALSE on error */ gboolean GNUNET_GTK_get_selected_anonymity_combo_level (GtkComboBox *combo, guint *p_level); /** * Set the selected anonymity level. * For dialogue initialization. * * @param builder builder object for the window * @param combo_name name of the combobox widget to set anonymity in * @param sel_level the level value to select * @return TRUE on success, FALSE on error (no item with such level) */ gboolean GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint sel_level); /** * Set the selected anonymity level. * For dialogue initialization. * * @param combo the combobox widget to set anonymity in * @param sel_level the level value to select * @return TRUE on success, FALSE on error (no item with such level) */ gboolean GNUNET_GTK_select_anonymity_combo_level (GtkComboBox *combo, guint sel_level); #endif /* end of gnunet-fs-gtk.h */