示例#1
0
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;
}
示例#2
0
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 ();
}
示例#3
0
/**
 * 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);
}
示例#4
0
/**
 * 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 ("");
}
示例#5
0
/**
 * 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));
}
示例#6
0
/**
 * 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 : "");
}
示例#7
0
/**
 * 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;
}