[gnome-commander] Options: added Cancel and Help buttons to dlg
- From: Piotr Eljasiak <epiotr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-commander] Options: added Cancel and Help buttons to dlg
- Date: Tue, 25 Jan 2011 22:23:33 +0000 (UTC)
commit d02663a95e56b328370141dd562e14a8bb73399d
Author: Piotr Eljasiak <epiotr src gnome org>
Date: Tue Jan 25 23:22:42 2011 +0100
Options: added Cancel and Help buttons to dlg
src/gnome-cmd-options-dialog.cc | 247 ++++++++++++++------------------------
src/gnome-cmd-options-dialog.h | 38 +------
src/gnome-cmd-user-actions.cc | 5 +-
3 files changed, 95 insertions(+), 195 deletions(-)
---
diff --git a/src/gnome-cmd-options-dialog.cc b/src/gnome-cmd-options-dialog.cc
index 200313a..d605d7c 100644
--- a/src/gnome-cmd-options-dialog.cc
+++ b/src/gnome-cmd-options-dialog.cc
@@ -30,15 +30,6 @@
using namespace std;
-static GnomeCmdDialogClass *parent_class = NULL;
-
-
-struct GnomeCmdOptionsDialog::Private
-{
-};
-
-
-
inline GtkWidget *create_font_picker (GtkWidget *parent, gchar *name)
{
GtkWidget *w = gtk_font_button_new ();
@@ -50,7 +41,6 @@ inline GtkWidget *create_font_picker (GtkWidget *parent, gchar *name)
}
-
static void on_save_tabs_toggled (GtkToggleButton *togglebutton, GtkWidget *dialog)
{
GtkWidget *check = lookup_widget (dialog, "save_dirs");
@@ -277,7 +267,6 @@ static GtkWidget *create_format_tab (GtkWidget *parent)
vbox = create_tabvbox (parent);
gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
-
// Size display mode
cat_box = create_vbox (parent, FALSE, 0);
cat = create_category (parent, cat_box, _("Size display mode"));
@@ -343,7 +332,7 @@ static GtkWidget *create_format_tab (GtkWidget *parent)
table_add (table, label, 0, 1, GTK_FILL);
label = create_label (parent, "");
- g_object_set_data_full (G_OBJECT (parent), "date_format_test_label", label, g_object_unref);
+ g_object_set_data (G_OBJECT (parent), "date_format_test_label", label);
g_signal_connect (label, "realize", G_CALLBACK (on_date_format_update), parent);
table_add (table, label, 1, 1, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
@@ -388,7 +377,6 @@ inline void store_format_options (GtkWidget *dialog)
*
**********************************************************************/
-
static void on_layout_mode_changed (GtkOptionMenu *optmenu, GtkWidget *dialog)
{
g_return_if_fail (GTK_IS_OPTION_MENU (optmenu));
@@ -1106,7 +1094,6 @@ inline void store_filter_options (GtkWidget *dialog)
}
-
/***********************************************************************
*
* The Network tab
@@ -1218,11 +1205,10 @@ static void on_some_files_toggled (GtkToggleButton *btn, GtkWidget *dialog)
}
-static void
-get_app_dialog_values (GtkWidget *dialog, gchar **name, gchar **cmd, gchar **icon_path,
- gint *target, gchar **pattern_string,
- gboolean *handles_uris, gboolean *handles_multiple,
- gboolean *requires_terminal)
+static void get_app_dialog_values (GtkWidget *dialog, gchar **name, gchar **cmd, gchar **icon_path,
+ gint *target, gchar **pattern_string,
+ gboolean *handles_uris, gboolean *handles_multiple,
+ gboolean *requires_terminal)
{
GtkWidget *name_entry = lookup_widget (dialog, "name_entry");
GtkWidget *cmd_entry = lookup_widget (dialog, "cmd_entry");
@@ -1942,166 +1928,115 @@ inline void store_devices_options (GtkWidget *dialog)
}
-static void on_options_dialog_close (GtkButton *button, GtkWidget *dialog)
+static void response_callback (GtkDialog *dialog, int response_id, GnomeCmdNotebook *notebook)
{
- store_general_options (dialog);
- store_format_options (dialog);
- store_layout_options (dialog);
- store_confirmation_options (dialog);
- store_filter_options (dialog);
- store_network_options (dialog);
- store_programs_options (dialog);
- store_devices_options (dialog);
-
- gtk_widget_destroy (dialog);
-
- gnome_cmd_style_create ();
- main_win->update_style();
-
- gnome_cmd_data.save();
-}
-
-
-/*******************************
- * Gtk class implementation
- *******************************/
+ static const char *help_id[] = {"gnome-commander-prefs-general",
+ "gnome-commander-prefs-format",
+ "gnome-commander-prefs-layout",
+ "gnome-commander-prefs-confirmation",
+ "gnome-commander-prefs-filters",
+ "gnome-commander-prefs-network",
+ "gnome-commander-prefs-programs",
+ "gnome-commander-prefs-devices"};
+ switch (response_id)
+ {
+ case GTK_RESPONSE_OK:
+ break;
- static void destroy (GtkObject *object)
-{
- GnomeCmdOptionsDialog *dialog = GNOME_CMD_OPTIONS_DIALOG (object);
+ case GTK_RESPONSE_NONE:
+ case GTK_RESPONSE_DELETE_EVENT:
+ case GTK_RESPONSE_CANCEL:
+ break;
- g_free (dialog->priv);
+ case GTK_RESPONSE_HELP:
+ gnome_cmd_help_display ("gnome-commander.xml", help_id[notebook->get_current_page()]);
+ g_signal_stop_emission_by_name (dialog, "response");
+ break;
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ default:
+ g_assert_not_reached ();
+ }
}
-static void map (GtkWidget *widget)
+gboolean gnome_cmd_options_dialog (GtkWindow *parent, GnomeCmdData &cfg)
{
- if (GTK_WIDGET_CLASS (parent_class)->map != NULL)
- GTK_WIDGET_CLASS (parent_class)->map (widget);
-}
+ GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Options"), parent,
+ GtkDialogFlags (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
+ GTK_STOCK_HELP, GTK_RESPONSE_HELP,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+ NULL);
+ gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
-static void class_init (GnomeCmdOptionsDialogClass *klass)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
+#if GTK_CHECK_VERSION (2, 14, 0)
+ GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+#endif
- object_class = GTK_OBJECT_CLASS (klass);
- widget_class = GTK_WIDGET_CLASS (klass);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
- parent_class = (GnomeCmdDialogClass *) gtk_type_class (GNOME_CMD_TYPE_DIALOG);
+ // HIG defaults
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
+#if GTK_CHECK_VERSION (2, 14, 0)
+ gtk_box_set_spacing (GTK_BOX (content_area), 2);
+ gtk_container_set_border_width (GTK_CONTAINER (content_area), 5);
+ gtk_box_set_spacing (GTK_BOX (content_area),6);
+#else
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 2);
+ gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 5);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->action_area),6);
+#endif
- object_class->destroy = destroy;
+ GnomeCmdNotebook *notebook = new GnomeCmdNotebook;
- widget_class->map = ::map;
-}
+#if GTK_CHECK_VERSION (2, 14, 0)
+ gtk_container_add (GTK_CONTAINER (content_area), *notebook);
+#else
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), *notebook);
+#endif
+ notebook->append_page(create_general_tab (dialog), _("General"));
+ notebook->append_page(create_format_tab (dialog), _("Format"));
+ notebook->append_page(create_layout_tab (dialog), _("Layout"));
+ notebook->append_page(create_confirmation_tab (dialog), _("Confirmation"));
+ notebook->append_page(create_filter_tab (dialog), _("Filters"));
+ notebook->append_page(create_network_tab (dialog), _("Network"));
+ notebook->append_page(create_programs_tab (dialog), _("Programs"));
+ notebook->append_page(create_devices_tab (dialog), _("Devices"));
-static void init (GnomeCmdOptionsDialog *dialog)
-{
- GtkWidget *options_dialog = GTK_WIDGET (dialog);
-
- dialog->priv = g_new0 (GnomeCmdOptionsDialog::Private, 1);
-
- g_object_set_data (G_OBJECT (options_dialog), "options_dialog", options_dialog);
- gtk_window_set_position (GTK_WINDOW (options_dialog), GTK_WIN_POS_CENTER);
- gtk_window_set_title (GTK_WINDOW (options_dialog), _("Options"));
-
- dialog->notebook = gtk_notebook_new ();
- g_object_ref (dialog->notebook);
- g_object_set_data_full (G_OBJECT (options_dialog), "notebook", dialog->notebook, g_object_unref);
- gtk_widget_show (dialog->notebook);
- gnome_cmd_dialog_add_expanding_category (GNOME_CMD_DIALOG (dialog), dialog->notebook);
-
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_general_tab (options_dialog));
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_format_tab (options_dialog));
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_layout_tab (options_dialog));
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_confirmation_tab (options_dialog));
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_filter_tab (options_dialog));
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_network_tab (options_dialog));
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_programs_tab (options_dialog));
- gtk_container_add (GTK_CONTAINER (dialog->notebook), create_devices_tab (options_dialog));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_GENERAL),
- gtk_label_new (_("General")));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_FORMAT),
- gtk_label_new (_("Format")));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_LAYOUT),
- gtk_label_new (_("Layout")));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_CONFIRMATION),
- gtk_label_new (_("Confirmation")));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_FILTERS),
- gtk_label_new (_("Filters")));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_NETWORK),
- gtk_label_new (_("Network")));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_PROGRAMS),
- gtk_label_new (_("Programs")));
-
- gtk_notebook_set_tab_label (
- GTK_NOTEBOOK (dialog->notebook),
- gtk_notebook_get_nth_page (GTK_NOTEBOOK (dialog->notebook), GnomeCmdOptionsDialog::TAB_DEVICES),
- gtk_label_new (_("Devices")));
-
-
- gnome_cmd_dialog_add_button (GNOME_CMD_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_SIGNAL_FUNC (on_options_dialog_close), dialog);
-}
-
+#if GTK_CHECK_VERSION (2, 14, 0)
+ gtk_widget_show_all (content_area);
+#else
+ gtk_widget_show_all (GTK_DIALOG (dialog)->vbox);
+#endif
-/***********************************
- * Public functions
- ***********************************/
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+ g_signal_connect (dialog, "response", G_CALLBACK (response_callback), notebook);
-GtkType gnome_cmd_options_dialog_get_type ()
-{
- static GtkType dlg_type = 0;
+ gint result = gtk_dialog_run (GTK_DIALOG (dialog));
- if (dlg_type == 0)
+ if (result==GTK_RESPONSE_OK)
{
- GtkTypeInfo dlg_info =
- {
- "GnomeCmdOptionsDialog",
- sizeof (GnomeCmdOptionsDialog),
- sizeof (GnomeCmdOptionsDialogClass),
- (GtkClassInitFunc) class_init,
- (GtkObjectInitFunc) init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL
- };
-
- dlg_type = gtk_type_unique (GNOME_CMD_TYPE_DIALOG, &dlg_info);
+ store_general_options (dialog);
+ store_format_options (dialog);
+ store_layout_options (dialog);
+ store_confirmation_options (dialog);
+ store_filter_options (dialog);
+ store_network_options (dialog);
+ store_programs_options (dialog);
+ store_devices_options (dialog);
+
+ gnome_cmd_style_create ();
+ main_win->update_style();
+
+ gnome_cmd_data.save();
}
- return dlg_type;
-}
-
+ gtk_widget_destroy (dialog);
-GtkWidget *gnome_cmd_options_dialog_new ()
-{
- return (GtkWidget *) gtk_type_new (GNOME_CMD_TYPE_OPTIONS_DIALOG);
+ return result==GTK_RESPONSE_OK;
}
diff --git a/src/gnome-cmd-options-dialog.h b/src/gnome-cmd-options-dialog.h
index e35cc07..6713f64 100644
--- a/src/gnome-cmd-options-dialog.h
+++ b/src/gnome-cmd-options-dialog.h
@@ -20,44 +20,12 @@
#ifndef __GNOME_CMD_OPTIONS_DIALOG_H__
#define __GNOME_CMD_OPTIONS_DIALOG_H__
+#include "gnome-cmd-data.h"
+
#define GNOME_CMD_TYPE_OPTIONS_DIALOG (gnome_cmd_options_dialog_get_type ())
#define GNOME_CMD_OPTIONS_DIALOG(obj) (GTK_CHECK_CAST (obj, GNOME_CMD_TYPE_OPTIONS_DIALOG, GnomeCmdOptionsDialog))
#define GNOME_CMD_IS_OPTIONS_DIALOG(obj) (GTK_CHECK_TYPE (obj, GNOME_CMD_TYPE_OPTIONS_DIALOG))
-
-struct GnomeCmdOptionsDialogClass
-{
- GnomeCmdDialogClass parent_class;
-};
-
-
-struct GnomeCmdOptionsDialog
-{
- GnomeCmdDialog parent;
-
- struct Private;
-
- Private *priv;
-
- enum Tab
- {
- TAB_GENERAL,
- TAB_FORMAT,
- TAB_LAYOUT,
- TAB_CONFIRMATION,
- TAB_FILTERS,
- TAB_NETWORK,
- TAB_PROGRAMS,
- TAB_DEVICES
- } ;
-
- GtkWidget *notebook;
-
- void set_tab (Tab tab) { gtk_notebook_set_page (GTK_NOTEBOOK (notebook), tab); }
-};
-
-
-GtkType gnome_cmd_options_dialog_get_type ();
-GtkWidget *gnome_cmd_options_dialog_new ();
+gboolean gnome_cmd_options_dialog (GtkWindow *parent, GnomeCmdData &cfg);
#endif // __GNOME_CMD_OPTIONS_DIALOG_H__
diff --git a/src/gnome-cmd-user-actions.cc b/src/gnome-cmd-user-actions.cc
index 6303b30..9033765 100644
--- a/src/gnome-cmd-user-actions.cc
+++ b/src/gnome-cmd-user-actions.cc
@@ -1657,10 +1657,7 @@ void view_toggle_tab_lock (GtkMenuItem *menuitem, gpointer page)
/************** Options Menu **************/
void options_edit (GtkMenuItem *menuitem, gpointer not_used)
{
- GtkWidget *dialog = gnome_cmd_options_dialog_new ();
- g_object_ref (dialog);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), *main_win);
- gtk_widget_show (dialog);
+ gnome_cmd_options_dialog (*main_win, gnome_cmd_data);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]