static gchar * audit_run_save_dialog (void) { const gchar *key = GVA_SETTING_ERROR_FILE; GtkFileChooser *file_chooser; GtkWidget *dialog; GSettings *settings; gchar *filename; gchar *folder; gchar *name; settings = gva_get_settings (); dialog = gtk_file_chooser_dialog_new ( _("Save As"), GTK_WINDOW (GVA_WIDGET_AUDIT_WINDOW), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); file_chooser = GTK_FILE_CHOOSER (dialog); /* Suggest the previous filename, if available. */ filename = g_settings_get_string (settings, key); if (filename != NULL && *filename != '\0') { name = g_path_get_basename (filename); folder = g_path_get_dirname (filename); } else { name = g_strdup ("rom-errors.txt"); folder = g_strdup (g_get_home_dir ()); } gtk_file_chooser_set_current_folder (file_chooser, folder); gtk_file_chooser_set_current_name (file_chooser, name); gtk_file_chooser_set_do_overwrite_confirmation (file_chooser, TRUE); g_free (name); g_free (folder); g_free (filename); filename = NULL; if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { filename = gtk_file_chooser_get_filename (file_chooser); g_settings_set_string (settings, key, filename); } gtk_widget_destroy (dialog); return filename; }
static void start (void) { GSettings *settings; GError *error = NULL; settings = gva_get_settings (); if (gva_db_needs_rebuilt ()) { if (!gva_main_build_database (&error)) { gva_error_handle (&error); return; } if (!gva_main_analyze_roms (&error)) { gva_error_handle (&error); return; } if (!gva_db_mark_complete (&error)) { gva_error_handle (&error); return; } } else if (gva_audit_detect_changes ()) { if (!gva_main_analyze_roms (&error)) { gva_error_handle (&error); return; } } /* Do this after ROMs are analyzed. */ if (!gva_main_init_search_completion (&error)) { gva_error_handle (&error); return; } gva_ui_unlock (); g_settings_bind ( settings, GVA_SETTING_SELECTED_VIEW, GVA_ACTION_VIEW_AVAILABLE, "current-value", G_SETTINGS_BIND_DEFAULT); /* Present a helpful dialog if no ROMs were found. */ warn_if_no_roms (); /* Listen for changes to the 'rompath' directories. */ setup_file_monitors (); }
/** * gva_main_set_last_search_text: * @text: the search entry text * * Writes @text to GSettings key <filename>search</filename>. * * This is used to remember the search entry text from the previous session * of <emphasis>GNOME Video Arcade</emphasis> so that the same text can be * preset in the search entry at startup. **/ void gva_main_set_last_search_text (const gchar *text) { GSettings *settings; g_return_if_fail (text != NULL); settings = gva_get_settings (); g_settings_set_string (settings, GVA_SETTING_SEARCH, text); }
/** * gva_main_get_last_search_text: * * Returns the most recent search entry text from either the current or * previous session of <emphasis>GNOME Video Arcade</emphasis>. * * Returns: the most recent search text **/ gchar * gva_main_get_last_search_text (void) { GSettings *settings; gchar *text; settings = gva_get_settings (); text = g_settings_get_string (settings, GVA_SETTING_SEARCH); return (text != NULL) ? g_strstrip (text) : g_strdup (""); }
/** * gva_main_init: * * Initializes the main window. * * This function should be called once when the application starts. **/ void gva_main_init (void) { GSettings *settings; gchar *text; settings = gva_get_settings (); gva_tree_view_init (); gtk_box_pack_start ( GTK_BOX (GVA_WIDGET_MAIN_VBOX), gva_ui_get_managed_widget ("/main-menu"), FALSE, FALSE, 0); gtk_box_reorder_child ( GTK_BOX (GVA_WIDGET_MAIN_VBOX), gva_ui_get_managed_widget ("/main-menu"), 0); gtk_widget_set_sensitive ( GVA_WIDGET_MAIN_MUTE_BUTTON, gva_mame_supports_sound ()); g_settings_bind ( settings, GVA_SETTING_SOUND_MUTED, GVA_WIDGET_MAIN_MUTE_BUTTON, "muted", G_SETTINGS_BIND_DEFAULT); gtk_window_move ( GTK_WINDOW (GVA_WIDGET_MAIN_WINDOW), g_settings_get_int (settings, "window-x"), g_settings_get_int (settings, "window-y")); gtk_window_resize ( GTK_WINDOW (GVA_WIDGET_MAIN_WINDOW), g_settings_get_int (settings, "window-width"), g_settings_get_int (settings, "window-height")); if (g_settings_get_boolean (settings, "window-maximized")) gtk_window_maximize (GTK_WINDOW (GVA_WIDGET_MAIN_WINDOW)); /* Initialize the search entry. */ text = gva_main_get_last_search_text (); gtk_entry_set_text (GTK_ENTRY (GVA_WIDGET_MAIN_SEARCH_ENTRY), text); g_free (text); gva_ui_lock (); gtk_action_set_visible (GVA_ACTION_INSERT_FAVORITE, FALSE); gtk_action_set_visible (GVA_ACTION_REMOVE_FAVORITE, FALSE); gtk_window_present (GTK_WINDOW (GVA_WIDGET_MAIN_WINDOW)); }
/** * gva_main_set_last_selected_match: * @column_name: the column name of the completion match * @search_text: the search text of the completion match * * Writes @column_name and @search_text to GSettings key * <filename>sql-expression</filename> as a string tuple. * * This is used to remember whether the search results from the previous * session of <emphasis>GNOME Video Arcade</emphasis> were the result of * selecting a match from the search completion list. If so, the values * are also used to restore the contents of the Search Results view. **/ void gva_main_set_last_selected_match (const gchar *column_name, const gchar *search_text) { GSettings *settings; settings = gva_get_settings (); g_settings_set ( settings, GVA_SETTING_SELECTED_MATCH, "(ss)", (column_name != NULL) ? column_name : "", (search_text != NULL) ? search_text : ""); }
/** * gva_main_get_last_selected_match: * @column_name: return location for the column name * @search_text: return location for the search text * * Returns the most recently selected match in a search completion list * from either the current or previous session of <emphasis>GNOME Video * Arcade</emphasis>. If the completion feature was not used in the * most recent search, @column_name and @search_text are set to %NULL * and the function returns %FALSE. * * Returns: %TRUE if match values were successfully retrieved from * GSettings, %FALSE otherwise **/ gboolean gva_main_get_last_selected_match (gchar **column_name, gchar **search_text) { GSettings *settings; g_return_val_if_fail (column_name != NULL, FALSE); g_return_val_if_fail (search_text != NULL, FALSE); settings = gva_get_settings (); *column_name = *search_text = NULL; g_settings_get ( settings, GVA_SETTING_SELECTED_MATCH, "(ss)", column_name, search_text); /* The value may be unset. Treat it as a failure. */ if (*column_name == NULL || *search_text == NULL) goto fail; g_strstrip (*column_name); g_strstrip (*search_text); /* Both strings must be non-empty. */ if (**column_name == '\0' || **search_text == '\0') goto fail; return TRUE; fail: g_free (*column_name); g_free (*search_text); *column_name = *search_text = NULL; return FALSE; }