SF.net SVN: geany:[4929] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sun May 16 18:22:24 UTC 2010
Revision: 4929
http://geany.svn.sourceforge.net/geany/?rev=4929&view=rev
Author: eht16
Date: 2010-05-16 18:22:24 +0000 (Sun, 16 May 2010)
Log Message:
-----------
Add a preference for choosing between GTK and native File Open/Save dialogs (only available on Windows).
Modified Paths:
--------------
trunk/ChangeLog
trunk/geany.glade
trunk/src/dialogs.c
trunk/src/geany.h
trunk/src/interface.c
trunk/src/keyfile.c
trunk/src/prefs.c
trunk/src/ui_utils.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/ChangeLog 2010-05-16 18:22:24 UTC (rev 4929)
@@ -27,6 +27,10 @@
src/main.c, src/notebook.c, src/prefs.c:
Add preference to add new document tabs beside the current one
(patch by Colomban Wendling, thanks).
+ * geany.glade, src/dialogs.c, src/geany.h, src/interface.c,
+ src/keyfile.c, src/prefs.c, src/ui_utils.h:
+ Add a preference for choosing between GTK and native
+ File Open/Save dialogs (only available on Windows).
2010-05-15 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/geany.glade 2010-05-16 18:22:24 UTC (rev 4929)
@@ -3472,6 +3472,26 @@
<property name="fill">False</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkCheckButton" id="check_native_windows_dialogs">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Defines whether to use the native Windows File Open/Save dialogs or whether to use the GTK default dialogs</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use Windows File Open/Save dialogs</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/src/dialogs.c 2010-05-16 18:22:24 UTC (rev 4929)
@@ -69,7 +69,7 @@
static gboolean handle_save_as(const gchar *utf8_filename, gboolean open_new_tab,
gboolean rename_file);
-#if ! GEANY_USE_WIN32_DIALOG
+
static GtkWidget *add_file_open_extra_widget(void);
@@ -207,7 +207,6 @@
g_signal_connect(ui_widgets.open_filesel, "response",
G_CALLBACK(on_file_open_dialog_response), NULL);
}
-#endif
/* This shows the file selection dialog to open a file. */
@@ -225,34 +224,35 @@
setptr(initdir, utils_get_locale_from_utf8(initdir));
-#if GEANY_USE_WIN32_DIALOG
- win32_show_document_open_dialog(GTK_WINDOW(main_widgets.window), _("Open File"), initdir);
-#else /* X11, not win32: use GTK_FILE_CHOOSER */
-
- /* We use the same file selection widget each time, so first of all we create it
- * if it hasn't already been created. */
- if (ui_widgets.open_filesel == NULL)
- create_open_file_dialog();
-
- if (initdir != NULL)
+#ifdef G_OS_WIN32
+ if (interface_prefs.use_native_windows_dialogs)
+ win32_show_document_open_dialog(GTK_WINDOW(main_widgets.window), _("Open File"), initdir);
+ else
+#endif
{
- if (g_path_is_absolute(initdir))
- gtk_file_chooser_set_current_folder(
- GTK_FILE_CHOOSER(ui_widgets.open_filesel), initdir);
- }
+ /* We use the same file selection widget each time, so first of all we create it
+ * if it hasn't already been created. */
+ if (ui_widgets.open_filesel == NULL)
+ create_open_file_dialog();
- if (app->project && NZV(app->project->base_path))
- gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
- app->project->base_path, NULL);
+ if (initdir != NULL)
+ {
+ if (g_path_is_absolute(initdir))
+ gtk_file_chooser_set_current_folder(
+ GTK_FILE_CHOOSER(ui_widgets.open_filesel), initdir);
+ }
- gtk_file_chooser_unselect_all(GTK_FILE_CHOOSER(ui_widgets.open_filesel));
- gtk_window_present(GTK_WINDOW(ui_widgets.open_filesel));
-#endif
+ if (app->project && NZV(app->project->base_path))
+ gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
+ app->project->base_path, NULL);
+
+ gtk_file_chooser_unselect_all(GTK_FILE_CHOOSER(ui_widgets.open_filesel));
+ gtk_window_present(GTK_WINDOW(ui_widgets.open_filesel));
+ }
g_free(initdir);
}
-#if ! GEANY_USE_WIN32_DIALOG
static GtkWidget *add_file_open_extra_widget()
{
GtkWidget *expander, *vbox, *table, *check_hidden;
@@ -325,16 +325,13 @@
return expander;
}
-#endif
-#if ! GEANY_USE_WIN32_DIALOG
static void on_save_as_new_tab_toggled(GtkToggleButton *togglebutton, gpointer user_data)
{
gtk_widget_set_sensitive(GTK_WIDGET(user_data),
! gtk_toggle_button_get_active(togglebutton));
}
-#endif
static gboolean handle_save_as(const gchar *utf8_filename, gboolean open_new_tab, gboolean rename_file)
@@ -369,7 +366,6 @@
}
-#if ! GEANY_USE_WIN32_DIALOG
static void
on_file_save_dialog_response (GtkDialog *dialog,
gint response,
@@ -416,10 +412,8 @@
if (success)
gtk_widget_hide(ui_widgets.save_filesel);
}
-#endif
-#if ! GEANY_USE_WIN32_DIALOG
static void create_save_file_dialog(void)
{
GtkWidget *vbox, *check_open_new_tab, *rename_btn;
@@ -476,10 +470,8 @@
gtk_window_set_transient_for(GTK_WINDOW(ui_widgets.save_filesel), GTK_WINDOW(main_widgets.window));
}
-#endif
-#if ! GEANY_USE_WIN32_DIALOG
static gboolean gtk_show_save_as(void)
{
GeanyDocument *doc = document_get_current();
@@ -541,7 +533,6 @@
return (resp == GTK_RESPONSE_ACCEPT);
}
-#endif
/**
@@ -553,15 +544,18 @@
{
gboolean result = FALSE;
-#if GEANY_USE_WIN32_DIALOG
- GeanyDocument *doc = document_get_current();
- gchar *utf8_name = win32_show_document_save_as_dialog(GTK_WINDOW(main_widgets.window),
- _("Save File"), DOC_FILENAME(doc));
- if (utf8_name != NULL)
- result = handle_save_as(utf8_name, FALSE, FALSE);
-#else
- result = gtk_show_save_as();
+#ifdef G_OS_WIN32
+ if (interface_prefs.use_native_windows_dialogs)
+ {
+ GeanyDocument *doc = document_get_current();
+ gchar *utf8_name = win32_show_document_save_as_dialog(GTK_WINDOW(main_widgets.window),
+ _("Save File"), DOC_FILENAME(doc));
+ if (utf8_name != NULL)
+ result = handle_save_as(utf8_name, FALSE, FALSE);
+ }
+ else
#endif
+ result = gtk_show_save_as();
return result;
}
Modified: trunk/src/geany.h
===================================================================
--- trunk/src/geany.h 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/src/geany.h 2010-05-16 18:22:24 UTC (rev 4929)
@@ -49,7 +49,6 @@
#define GEANY_TEMPLATES_SUBDIR "templates"
#define GEANY_CODENAME "Vellam"
#define GEANY_HOMEPAGE "http://www.geany.org/"
-#define GEANY_USE_WIN32_DIALOG 0
#define GEANY_STRING_UNTITLED _("untitled")
#define GEANY_DEFAULT_DIALOG_HEIGHT 350
#define GEANY_WINDOW_DEFAULT_WIDTH 900
Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/src/interface.c 2010-05-16 18:22:24 UTC (rev 4929)
@@ -2308,6 +2308,7 @@
GtkWidget *check_switch_pages;
GtkWidget *check_suppress_status_msgs;
GtkWidget *check_auto_focus;
+ GtkWidget *check_native_windows_dialogs;
GtkWidget *label199;
GtkWidget *frame36;
GtkWidget *alignment39;
@@ -2887,6 +2888,11 @@
gtk_box_pack_start (GTK_BOX (vbox21), check_auto_focus, FALSE, FALSE, 0);
gtk_tooltips_set_tip (tooltips, check_auto_focus, _("Gives the focus automatically to widgets below the mouse cursor. Works for the main editor widget, the scribble, the toolbar search and goto line fields and the VTE."), NULL);
+ check_native_windows_dialogs = gtk_check_button_new_with_mnemonic (_("Use Windows File Open/Save dialogs"));
+ gtk_widget_show (check_native_windows_dialogs);
+ gtk_box_pack_start (GTK_BOX (vbox21), check_native_windows_dialogs, FALSE, FALSE, 0);
+ gtk_tooltips_set_tip (tooltips, check_native_windows_dialogs, _("Defines whether to use the native Windows File Open/Save dialogs or whether to use the GTK default dialogs"), NULL);
+
label199 = gtk_label_new (_("<b>Miscellaneous</b>"));
gtk_widget_show (label199);
gtk_frame_set_label_widget (GTK_FRAME (frame19), label199);
@@ -4784,6 +4790,7 @@
GLADE_HOOKUP_OBJECT (prefs_dialog, check_switch_pages, "check_switch_pages");
GLADE_HOOKUP_OBJECT (prefs_dialog, check_suppress_status_msgs, "check_suppress_status_msgs");
GLADE_HOOKUP_OBJECT (prefs_dialog, check_auto_focus, "check_auto_focus");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, check_native_windows_dialogs, "check_native_windows_dialogs");
GLADE_HOOKUP_OBJECT (prefs_dialog, label199, "label199");
GLADE_HOOKUP_OBJECT (prefs_dialog, frame36, "frame36");
GLADE_HOOKUP_OBJECT (prefs_dialog, alignment39, "alignment39");
Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/src/keyfile.c 2010-05-16 18:22:24 UTC (rev 4929)
@@ -364,6 +364,7 @@
g_key_file_set_boolean(config, PACKAGE, "msgwin_compiler_visible", interface_prefs.msgwin_compiler_visible);
g_key_file_set_boolean(config, PACKAGE, "msgwin_messages_visible", interface_prefs.msgwin_messages_visible);
g_key_file_set_boolean(config, PACKAGE, "msgwin_scribble_visible", interface_prefs.msgwin_scribble_visible);
+ g_key_file_set_boolean(config, PACKAGE, "use_native_windows_dialogs", interface_prefs.use_native_windows_dialogs);
/* display */
g_key_file_set_boolean(config, PACKAGE, "show_indent_guide", editor_prefs.show_indent_guide);
@@ -657,6 +658,7 @@
interface_prefs.msgwin_compiler_visible = utils_get_setting_boolean(config, PACKAGE, "msgwin_compiler_visible", TRUE);
interface_prefs.msgwin_messages_visible = utils_get_setting_boolean(config, PACKAGE, "msgwin_messages_visible", TRUE);
interface_prefs.msgwin_scribble_visible = utils_get_setting_boolean(config, PACKAGE, "msgwin_scribble_visible", TRUE);
+ interface_prefs.use_native_windows_dialogs = utils_get_setting_boolean(config, PACKAGE, "use_native_windows_dialogs", FALSE);
/* display, editor */
editor_prefs.long_line_global_enabled = utils_get_setting_boolean(config, PACKAGE, "long_line_enabled", TRUE);
Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/src/prefs.c 2010-05-16 18:22:24 UTC (rev 4929)
@@ -375,6 +375,10 @@
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_auto_focus");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.auto_focus);
+ widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_native_windows_dialogs");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
+ interface_prefs.use_native_windows_dialogs);
+
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "entry_contextaction");
gtk_entry_set_text(GTK_ENTRY(widget), tool_prefs.context_action_cmd);
@@ -800,6 +804,10 @@
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_auto_focus");
prefs.auto_focus = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_native_windows_dialogs");
+ interface_prefs.use_native_windows_dialogs =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "entry_contextaction");
g_free(tool_prefs.context_action_cmd);
tool_prefs.context_action_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
@@ -1673,6 +1681,9 @@
vte_append_preferences_tab();
#endif
+#ifndef G_OS_WIN32
+ gtk_widget_hide(ui_lookup_widget(ui_widgets.prefs_dialog, "check_native_windows_dialogs"));
+#endif
ui_setup_open_button_callback(ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_button"), NULL,
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_ENTRY(ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry")));
ui_setup_open_button_callback(ui_lookup_widget(ui_widgets.prefs_dialog, "extra_plugin_path_button"), NULL,
Modified: trunk/src/ui_utils.h
===================================================================
--- trunk/src/ui_utils.h 2010-05-16 17:45:39 UTC (rev 4928)
+++ trunk/src/ui_utils.h 2010-05-16 18:22:24 UTC (rev 4929)
@@ -57,6 +57,7 @@
gboolean msgwin_compiler_visible;
gboolean msgwin_messages_visible;
gboolean msgwin_scribble_visible;
+ gboolean use_native_windows_dialogs; /* only used on Windows */
}
GeanyInterfacePrefs;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list