GtkWidget *create_edit_tree_menu(EDITOR *editor) { GtkWidget *menu; gchar *glade_file; #ifdef USE_GTKBUILDER GtkBuilder *gxml; #ifdef HAVE_GTK_314 glade_file = gui_general_user_file("xi-menus-popup.gtkbuilder", FALSE); #else glade_file = gui_general_user_file("xi-menus-popup_old.gtkbuilder", FALSE); #endif #else GladeXML *gxml; glade_file = gui_general_user_file("xi-menus.glade", FALSE); #endif g_return_val_if_fail((glade_file != NULL), NULL); #ifdef USE_GTKBUILDER gxml = gtk_builder_new(); gtk_builder_add_from_file(gxml, glade_file, NULL); #else gxml = glade_xml_new(glade_file, "menu_edit_tree", NULL); #endif g_free(glade_file); g_return_val_if_fail((gxml != NULL), NULL); menu = UI_GET_ITEM(gxml, "menu_edit_tree"); #ifdef USE_GTKBUILDER gtk_builder_connect_signals(gxml, editor); /* gtk_builder_connect_signals_full (gxml, (GtkBuilderConnectFunc)gui_glade_signal_connect_func, editor); */ #else /* connect signals and data */ glade_xml_signal_autoconnect_full(gxml, (GladeXMLConnectFunc)gui_glade_signal_connect_func, editor); #endif return menu; }
/****************************************************************************** * Name * create_menu_modules * * Synopsis * #include "gui/sidebar.h" * * void create_menu_modules (void) * * Description * * * Return value * void */ static GtkWidget *create_menu_modules(void) { gchar *glade_file; #ifdef USE_GTKBUILDER GtkBuilder *gxml; #ifdef HAVE_GTK_314 glade_file = gui_general_user_file("xi-menus-popup.gtkbuilder", FALSE); #else glade_file = gui_general_user_file("xi-menus-popup_old.gtkbuilder", FALSE); #endif #else GladeXML *gxml; glade_file = gui_general_user_file("xi-menus.glade", FALSE); #endif g_return_val_if_fail((glade_file != NULL), NULL); #ifdef USE_GTKBUILDER gxml = gtk_builder_new(); gtk_builder_add_from_file(gxml, glade_file, NULL); #else gxml = glade_xml_new(glade_file, "menu_modules", NULL); #endif g_free(glade_file); g_return_val_if_fail((gxml != NULL), NULL); GtkWidget *menu = UI_GET_ITEM(gxml, "menu_modules"); #ifdef USE_GTKBUILDER gtk_builder_connect_signals(gxml, NULL); /*gtk_builder_connect_signals_full (gxml, (GtkBuilderConnectFunc)gui_glade_signal_connect_func, NULL); */ #else glade_xml_signal_autoconnect_full(gxml, (GladeXMLConnectFunc)gui_glade_signal_connect_func, NULL); #endif gtk_menu_popup((GtkMenu *)menu, NULL, NULL, NULL, NULL, 2, gtk_get_current_event_time()); return menu; }
void gnc_prices_dialog_remove_old_clicked (GtkWidget *widget, gpointer data) { PricesDialog *pdb_dialog = data; GladeXML *xml; GtkWidget *dialog, *button, *date, *label; gint result; gboolean delete_user, delete_last; ENTER(" "); xml = gnc_glade_xml_new ("price.glade", "Deletion Date"); dialog = glade_xml_get_widget (xml, "Deletion Date"); date = glade_xml_get_widget (xml, "date"); label = glade_xml_get_widget (xml, "date_label"); gnc_date_make_mnemonic_target (GNC_DATE_EDIT(date), label); glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, pdb_dialog); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (pdb_dialog->dialog)); result = gtk_dialog_run (GTK_DIALOG (dialog)); if (result == GTK_RESPONSE_OK) { Timespec ts; DEBUG("deleting prices"); ts.tv_sec = gnc_date_edit_get_date (GNC_DATE_EDIT (date)); ts.tv_nsec = 0; button = glade_xml_get_widget (xml, "delete_manual"); delete_user = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); button = glade_xml_get_widget (xml, "delete_last"); delete_last = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); gnc_pricedb_remove_old_prices(pdb_dialog->price_db, ts, delete_user, delete_last); } gtk_widget_destroy(dialog); LEAVE(" "); }
/** * rb_glade_xml_new: * @file: filename, either absolute or relative to the data directory * @root: the widget node in the file to start building from (or NULL) * @user_data: user data to pass to autoconnected signal handlers * * Locates and reads a glade xml file, automatically connecting * signal handlers where possible. The caller can specify a path * relative to the shared data directory, or its 'glade' or 'art' * subdirectories. * * Return value: #GladeXML object built from the file */ GladeXML * rb_glade_xml_new (const char *file, const char *root, gpointer user_data) { GladeXML *xml; const char *name; g_return_val_if_fail (file != NULL, NULL); /* if the first character is /, it's an absolute path, otherwise locate it */ if (file[0] == G_DIR_SEPARATOR) name = file; else name = rb_file (file); xml = glade_xml_new (name, root, NULL); glade_xml_signal_autoconnect_full (xml, (GladeXMLConnectFunc) glade_signal_connect_func, user_data); return xml; }
static GtkWidget *_create_popup_menu(XiphosHtml *html, const gchar *mod_name, DIALOG_DATA *d) { gchar *glade_file; #ifdef USE_GTKBUILDER GtkBuilder *gxml; #else GladeXML *gxml; #endif const gchar *mname = (is_dialog ? d->mod_name : mod_name); XI_message(("_create_popup_menu mod_name:%s", mod_name)); if (!mname || !*mname) return NULL; #ifdef USE_GTKBUILDER #ifdef HAVE_GTK_314 glade_file = gui_general_user_file("xi-menus-popup.gtkbuilder", FALSE); #else glade_file = gui_general_user_file("xi-menus-popup_old.gtkbuilder", FALSE); #endif #else glade_file = gui_general_user_file("xi-menus.glade", FALSE); #endif g_return_val_if_fail((glade_file != NULL), NULL); #ifdef USE_GTKBUILDER gxml = gtk_builder_new(); gtk_builder_add_from_file(gxml, glade_file, NULL); #else gxml = glade_xml_new(glade_file, "menu_popup", NULL); #endif g_free(glade_file); g_return_val_if_fail((gxml != NULL), NULL); GtkWidget *menu = UI_GET_ITEM(gxml, "menu_popup"); GtkWidget *bookmark = UI_GET_ITEM(gxml, "bookmark"); GtkWidget *open = UI_GET_ITEM(gxml, "open_module2"); GtkWidget *export_ = UI_GET_ITEM(gxml, "export_passage"); GtkWidget *close = UI_GET_ITEM(gxml, "close"); GtkWidget *note = UI_GET_ITEM(gxml, "note"); GtkWidget *mark_verse = UI_GET_ITEM(gxml, "mark_verse"); GtkWidget *open_edit = UI_GET_ITEM(gxml, "open_in_editor"); GtkWidget *mod_opt_sub = UI_GET_ITEM(gxml, "module_options1_menu"); GtkWidget *lookup = UI_GET_ITEM(gxml, "lookup_selection1"); GtkWidget *lookup_sub = UI_GET_ITEM(gxml, "lookup_selection1_menu"); GtkWidget *unlock = UI_GET_ITEM(gxml, "unlock_this_module"); GtkWidget *book_heading = UI_GET_ITEM(gxml, "display_book_heading"); GtkWidget *chapter_heading = UI_GET_ITEM(gxml, "display_chapter_heading"); GtkWidget *rename_percomm = UI_GET_ITEM(gxml, "rename_perscomm"); GtkWidget *dump_percomm = UI_GET_ITEM(gxml, "dump_perscomm"); GtkWidget *open_sub = gtk_menu_new(); GtkWidget *note_sub = gtk_menu_new(); gtk_widget_hide(unlock); gtk_widget_hide(book_heading); gtk_widget_hide(export_); gtk_widget_hide(chapter_heading); gtk_widget_hide(rename_percomm); gtk_widget_hide(dump_percomm); gtk_widget_hide(note); gtk_widget_hide(open_edit); gtk_widget_hide(mark_verse); gtk_widget_hide(close); /* FIXME: hide until connected to dialog close */ if (is_dialog) { gtk_widget_hide(open); gtk_widget_hide(bookmark); gtk_widget_hide(export_); } else { gtk_widget_hide(close); gtk_menu_item_set_submenu(GTK_MENU_ITEM(open), open_sub); gui_add_mods_2_gtk_menu(_get_type_mod_list(), open_sub, (GCallback)on_view_mod_activate); /* unlock from main window only */ if (main_has_cipher_tag((gchar *)mod_name)) gtk_widget_show(unlock); } switch (main_get_mod_type((gchar *)mname)) { case TEXT_TYPE: gtk_widget_show(export_); if (is_dialog) break; gtk_widget_show(note); gtk_widget_show(mark_verse); gtk_menu_item_set_submenu(GTK_MENU_ITEM(note), note_sub); gui_add_mods_2_gtk_menu(PERCOMM_LIST, note_sub, (GCallback) on_edit_percomm_activate); break; case COMMENTARY_TYPE: gtk_widget_show(export_); gtk_widget_show(book_heading); gtk_widget_show(chapter_heading); break; case PERCOM_TYPE: gtk_widget_show(export_); gtk_widget_show(open_edit); g_signal_connect(G_OBJECT(open_edit), "activate", G_CALLBACK(on_edit_percomm_activate), (gchar *)(is_dialog ? d->mod_name : mod_name)); gtk_widget_show(rename_percomm); gtk_widget_show(dump_percomm); break; case DICTIONARY_TYPE: break; case BOOK_TYPE: break; case PRAYERLIST_TYPE: gtk_widget_show(open_edit); g_signal_connect(G_OBJECT(open_edit), "activate", G_CALLBACK(on_edit_prayerlist_activate), (gchar *)(is_dialog ? d->mod_name : mod_name)); break; } gtk_menu_item_set_submenu(GTK_MENU_ITEM(lookup), lookup_sub); gui_add_mods_2_gtk_menu(DICT_DESC_LIST, lookup_sub, (GCallback)_lookup_selection); /* = glade_xml_get_widget (gxml, ""); */ _add_and_check_global_opts(gxml, (char *)(is_dialog ? d->mod_name : mod_name), mod_opt_sub, d); /* connect signals and data */ #ifdef USE_GTKBUILDER gtk_builder_connect_signals(gxml, html); /*gtk_builder_connect_signals_full (gxml, (GtkBuilderConnectFunc)gui_glade_signal_connect_func, html); */ #else glade_xml_signal_autoconnect_full(gxml, (GladeXMLConnectFunc)gui_glade_signal_connect_func, html); #endif return menu; }
void gnc_ab_initial_druid(void) { ABInitialInfo *info; GladeXML *xml; GtkTreeViewColumn *column; GtkTreeSelection *selection; gint component_id; info = g_new0(ABInitialInfo, 1); xml = gnc_glade_xml_new("aqbanking.glade", "AqBanking Init Druid"); info->window = glade_xml_get_widget(xml, "AqBanking Init Druid"); g_object_set_data_full(G_OBJECT(info->window), "xml", xml, g_object_unref); glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, info); info->druid = glade_xml_get_widget(xml, "ab_init_druid"); gnc_druid_set_colors(GNOME_DRUID(info->druid)); info->api = gnc_AB_BANKING_new(); info->deferred_info = NULL; info->gnc_hash = NULL; info->match_page_prepared = FALSE; info->account_view = GTK_TREE_VIEW(glade_xml_get_widget(xml, "account_page_view")); info->account_store = gtk_list_store_new(NUM_ACCOUNT_LIST_COLS, G_TYPE_INT, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN); gtk_tree_view_set_model(info->account_view, GTK_TREE_MODEL(info->account_store)); g_object_unref(info->account_store); column = gtk_tree_view_column_new_with_attributes( _("Online Banking Account Name"), gtk_cell_renderer_text_new(), "text", ACCOUNT_LIST_COL_AB_NAME, (gchar*) NULL); gtk_tree_view_append_column(info->account_view, column); column = gtk_tree_view_column_new_with_attributes( _("GnuCash Account Name"), gtk_cell_renderer_text_new(), "text", ACCOUNT_LIST_COL_GNC_NAME, (gchar*) NULL); gtk_tree_view_column_set_expand(column, TRUE); gtk_tree_view_append_column(info->account_view, column); column = gtk_tree_view_column_new_with_attributes( _("New?"), gtk_cell_renderer_toggle_new(), "active", ACCOUNT_LIST_COL_CHECKED, (gchar*) NULL); gtk_tree_view_append_column(info->account_view, column); selection = gtk_tree_view_get_selection(info->account_view); g_signal_connect(selection, "changed", G_CALLBACK(account_list_changed_cb), info); component_id = gnc_register_gui_component(DRUID_AB_INITIAL_CM_CLASS, NULL, cm_close_handler, info); gnc_gui_component_set_session(component_id, gnc_get_current_session()); gtk_widget_show(info->window); }
gboolean gnc_ab_enter_daterange(GtkWidget *parent, const char *heading, Timespec *from_date, gboolean *last_retv_date, gboolean *first_possible_date, Timespec *to_date, gboolean *to_now) { GladeXML *xml; GtkWidget *dialog; GtkWidget *heading_label; GtkWidget *first_button; GtkWidget *last_retrieval_button; GtkWidget *now_button; DaterangeInfo info; gint result; xml = gnc_glade_xml_new("aqbanking.glade", "Date Range Dialog"); dialog = glade_xml_get_widget(xml, "Date Range Dialog"); g_object_set_data_full(G_OBJECT(dialog), "xml", xml, g_object_unref); glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, &info); if (parent) gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); heading_label = glade_xml_get_widget(xml, "heading_label"); first_button = glade_xml_get_widget(xml, "first_button"); last_retrieval_button = glade_xml_get_widget(xml, "last_retrieval_button"); info.enter_from_button = glade_xml_get_widget(xml, "enter_from_button"); now_button = glade_xml_get_widget(xml, "now_button"); info.enter_to_button = glade_xml_get_widget(xml, "enter_to_button"); info.from_dateedit = gnc_date_edit_new_ts(*from_date, FALSE, FALSE); gtk_container_add(GTK_CONTAINER(glade_xml_get_widget(xml, "enter_from_box")), info.from_dateedit); gtk_widget_show(info.from_dateedit); info.to_dateedit = gnc_date_edit_new_ts(*to_date, FALSE, FALSE); gtk_container_add(GTK_CONTAINER(glade_xml_get_widget(xml, "enter_to_box")), info.to_dateedit); gtk_widget_show(info.to_dateedit); if (*last_retv_date) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(last_retrieval_button), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(first_button), TRUE); gtk_widget_set_sensitive(last_retrieval_button, FALSE); } gtk_widget_set_sensitive(info.from_dateedit, FALSE); gtk_widget_set_sensitive(info.to_dateedit, FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); if (heading) gtk_label_set_text(GTK_LABEL(heading_label), heading); gtk_widget_show(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_hide(dialog); if (result == GTK_RESPONSE_OK) { *from_date = gnc_date_edit_get_date_ts( GNC_DATE_EDIT(info.from_dateedit)); *last_retv_date = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(last_retrieval_button)); *first_possible_date = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(first_button)); *to_date = gnc_date_edit_get_date_ts( GNC_DATE_EDIT(info.to_dateedit)); *to_now = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(now_button)); } gtk_widget_destroy(dialog); return result == GTK_RESPONSE_OK; }
GtkWidget *gui_create_main_menu(void) { #ifdef USE_GTKBUILDER GtkBuilder *gxml; #else GladeXML *gxml; #endif gchar *glade_file = gui_general_user_file("xi-menus" UI_SUFFIX, FALSE); g_return_val_if_fail(glade_file != NULL, NULL); #ifdef USE_GTKBUILDER gxml = gtk_builder_new(); gtk_builder_add_from_file(gxml, glade_file, NULL); #else gxml = glade_xml_new(glade_file, "menu_main", NULL); #endif g_free(glade_file); g_return_val_if_fail(gxml != NULL, NULL); GtkWidget *menu = UI_GET_ITEM(gxml, "menu_main"); widgets.viewtexts_item = UI_GET_ITEM(gxml, "show_bible_text"); widgets.viewpreview_item = UI_GET_ITEM(gxml, "preview"); widgets.viewcomms_item = UI_GET_ITEM(gxml, "commentary"); widgets.viewdicts_item = UI_GET_ITEM(gxml, "show_dictionary_lexicon"); widgets.linkedtabs_item = UI_GET_ITEM(gxml, "link_tabs"); widgets.readaloud_item = UI_GET_ITEM(gxml, "read_aloud"); widgets.showversenum_item = UI_GET_ITEM(gxml, "show_verse_numbers"); widgets.versehighlight_item = UI_GET_ITEM(gxml, "highlight_current_verse"); widgets.parallel_tab_item = UI_GET_ITEM(gxml, "show_parallel_view_in_a_tab"); widgets.side_preview_item = UI_GET_ITEM(gxml, "show_previewer_in_sidebar"); widgets.new_journal_item = UI_GET_ITEM(gxml, "newjournal"); /* map tab's show state into view menu. */ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.viewtexts_item), settings.showtexts); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.viewcomms_item), settings.showcomms); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.viewdicts_item), settings.showdicts); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.viewpreview_item), settings.showpreview); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.parallel_tab_item), settings.showparatab); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.side_preview_item), settings.show_previewer_in_sidebar); /* update other status toys */ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.linkedtabs_item), settings.linkedtabs); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.readaloud_item), settings.readaloud); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.showversenum_item), settings.showversenum); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets.versehighlight_item), settings.versehighlight); /* connect signals and data */ #ifdef USE_GTKBUILDER gtk_builder_connect_signals(gxml, NULL); /*gtk_builder_connect_signals_full (gxml, (GtkBuilderConnectFunc)gui_glade_signal_connect_func, NULL); */ #else glade_xml_signal_autoconnect_full(gxml, (GladeXMLConnectFunc)gui_glade_signal_connect_func, NULL); #endif //set up global function to handle all link buttons // gtk_link_button_set_uri_hook (link_uri_hook, NULL, NULL); if (settings.prayerlist) gtk_widget_show(widgets.new_journal_item); else gtk_widget_hide(widgets.new_journal_item); gtk_widget_show(menu); return menu; }
static void gnc_ui_file_access( int type ) { FileAccessWindow *faw; GladeXML* xml; GtkWidget* box; GList* ds_node; GtkButton* op; GtkWidget* align; GtkFileChooserWidget* fileChooser; GtkFileChooserAction fileChooserAction = GTK_FILE_CHOOSER_ACTION_OPEN; GList* list; GList* node; GtkWidget* uri_type_container; gboolean need_access_method_file = FALSE; gboolean need_access_method_mysql = FALSE; gboolean need_access_method_postgres = FALSE; gboolean need_access_method_sqlite3 = FALSE; gboolean need_access_method_xml = FALSE; gint access_method_index = -1; gint active_access_method_index = -1; const gchar* default_db; const gchar *button_label = NULL; g_return_if_fail( type == FILE_ACCESS_OPEN || type == FILE_ACCESS_SAVE_AS ); faw = g_new0(FileAccessWindow, 1); g_return_if_fail( faw != NULL ); faw->type = type; /* Open the dialog */ xml = gnc_glade_xml_new( "dialog-file-access.glade", "File Access" ); faw->dialog = glade_xml_get_widget( xml, "File Access" ); g_object_set_data_full( G_OBJECT(faw->dialog), "FileAccessWindow", faw, g_free ); faw->frame_file = glade_xml_get_widget( xml, "frame_file" ); faw->frame_database = glade_xml_get_widget( xml, "frame_database" ); faw->tf_host = GTK_ENTRY(glade_xml_get_widget( xml, "tf_host" )); gtk_entry_set_text( faw->tf_host, DEFAULT_HOST ); faw->tf_database = GTK_ENTRY(glade_xml_get_widget( xml, "tf_database" )); default_db = get_default_database(); gtk_entry_set_text( faw->tf_database, default_db ); faw->tf_username = GTK_ENTRY(glade_xml_get_widget( xml, "tf_username" )); faw->tf_password = GTK_ENTRY(glade_xml_get_widget( xml, "tf_password" )); switch ( type ) { case FILE_ACCESS_OPEN: gtk_window_set_title(GTK_WINDOW(faw->dialog), _("Open...")); button_label = "gtk-open"; fileChooserAction = GTK_FILE_CHOOSER_ACTION_OPEN; break; case FILE_ACCESS_SAVE_AS: gtk_window_set_title(GTK_WINDOW(faw->dialog), _("Save As...")); button_label = "gtk-save-as"; fileChooserAction = GTK_FILE_CHOOSER_ACTION_SAVE; break; } op = GTK_BUTTON(glade_xml_get_widget( xml, "pb_op" )); if ( op != NULL ) { gtk_button_set_label( op, button_label ); gtk_button_set_use_stock( op, TRUE ); } align = glade_xml_get_widget( xml, "alignment_file_chooser" ); fileChooser = GTK_FILE_CHOOSER_WIDGET(gtk_file_chooser_widget_new( fileChooserAction )); faw->fileChooser = GTK_FILE_CHOOSER(fileChooser); gtk_container_add( GTK_CONTAINER(align), GTK_WIDGET(fileChooser) ); g_object_connect( G_OBJECT(faw->fileChooser), "signal::file-activated", gnc_ui_file_access_file_activated_cb, faw, NULL ); uri_type_container = glade_xml_get_widget( xml, "vb_uri_type_container" ); faw->cb_uri_type = GTK_COMBO_BOX(gtk_combo_box_new_text()); gtk_container_add( GTK_CONTAINER(uri_type_container), GTK_WIDGET(faw->cb_uri_type) ); gtk_box_set_child_packing( GTK_BOX(uri_type_container), GTK_WIDGET(faw->cb_uri_type), /*expand*/TRUE, /*fill*/FALSE, /*padding*/0, GTK_PACK_START ); g_object_connect( G_OBJECT(faw->cb_uri_type), "signal::changed", cb_uri_type_changed_cb, NULL, NULL ); /* Autoconnect signals */ glade_xml_signal_autoconnect_full( xml, gnc_glade_autoconnect_full_func, faw->dialog ); /* See what qof backends are available and add appropriate ones to the combo box */ list = qof_backend_get_registered_access_method_list(); for ( node = list; node != NULL; node = node->next ) { const gchar* access_method = node->data; /* For the different access methods, "mysql" and "postgres" are added if available. Access methods "xml" and "sqlite3" are compressed to "file" if opening a file, but when saving a file, both access methods are added. */ if ( strcmp( access_method, "mysql" ) == 0 ) { need_access_method_mysql = TRUE; } else if ( strcmp( access_method, "postgres" ) == 0 ) { need_access_method_postgres = TRUE; } else if ( strcmp( access_method, "xml" ) == 0 ) { if ( type == FILE_ACCESS_OPEN ) { need_access_method_file = TRUE; } else { need_access_method_xml = TRUE; } } else if ( strcmp( access_method, "sqlite3" ) == 0 ) { if ( type == FILE_ACCESS_OPEN ) { need_access_method_file = TRUE; } else { need_access_method_sqlite3 = TRUE; } } } g_list_free(list); /* Now that the set of access methods has been ascertained, add them to the list, and set the default. */ access_method_index = -1; if ( need_access_method_file ) { gtk_combo_box_append_text( faw->cb_uri_type, "file" ); active_access_method_index = ++access_method_index; } if ( need_access_method_mysql ) { gtk_combo_box_append_text( faw->cb_uri_type, "mysql" ); ++access_method_index; } if ( need_access_method_postgres ) { gtk_combo_box_append_text( faw->cb_uri_type, "postgres" ); ++access_method_index; } if ( need_access_method_sqlite3 ) { gtk_combo_box_append_text( faw->cb_uri_type, "sqlite3" ); active_access_method_index = ++access_method_index; } if ( need_access_method_xml ) { gtk_combo_box_append_text( faw->cb_uri_type, "xml" ); ++access_method_index; // Set XML as default if it is offered (which mean we are in // the "Save As" dialog) active_access_method_index = access_method_index; } g_assert( active_access_method_index >= 0 ); /* Clean up the xml data structure when the dialog is destroyed */ g_object_set_data_full( G_OBJECT(faw->dialog), "dialog-file-access.glade", xml, g_object_unref ); /* Run the dialog */ gtk_widget_show_all( faw->dialog ); /* Hide the frame that's not required for the active access method so either only * the File or only the Database frame are presented. */ gtk_combo_box_set_active( faw->cb_uri_type, active_access_method_index ); set_widget_sensitivity_for_uri_type( faw, gtk_combo_box_get_active_text( faw->cb_uri_type ) ); }