SF.net SVN: geany: [2724] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Wed Jun 25 11:57:02 UTC 2008
Revision: 2724
http://geany.svn.sourceforge.net/geany/?rev=2724&view=rev
Author: ntrel
Date: 2008-06-25 04:56:58 -0700 (Wed, 25 Jun 2008)
Log Message:
-----------
Move 2 search prefs to new Search tab of Preferences dialog.
Add new search pref: 'Use the current file's directory for Find in
Files' (#1930435).
Add PrefEntry struct which is used for an array containing widget
names to lookup; currently only used for 3 search-related
GtkToggleButton prefs.
Add SettingEntry struct which is used for an array containing keyfile
key and group information; currently only used for 3 search-related
gboolean settings.
Modified Paths:
--------------
trunk/ChangeLog
trunk/geany.glade
trunk/src/interface.c
trunk/src/keyfile.c
trunk/src/prefs.c
trunk/src/search.c
trunk/src/search.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-06-24 14:32:54 UTC (rev 2723)
+++ trunk/ChangeLog 2008-06-25 11:56:58 UTC (rev 2724)
@@ -1,3 +1,18 @@
+2008-06-25 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/interface.c, src/prefs.c, src/keyfile.c, src/search.c,
+ src/search.h, geany.glade:
+ Move 2 search prefs to new Search tab of Preferences dialog.
+ Add new search pref: 'Use the current file's directory for Find in
+ Files' (#1930435).
+ Add PrefEntry struct which is used for an array containing widget
+ names to lookup; currently only used for 3 search-related
+ GtkToggleButton prefs.
+ Add SettingEntry struct which is used for an array containing keyfile
+ key and group information; currently only used for 3 search-related
+ gboolean settings.
+
+
2008-06-24 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/keybindings.c:
Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade 2008-06-24 14:32:54 UTC (rev 2723)
+++ trunk/geany.glade 2008-06-25 11:56:58 UTC (rev 2724)
@@ -3548,44 +3548,6 @@
<property name="fill">False</property>
</packing>
</child>
-
- <child>
- <widget class="GtkCheckButton" id="check_ask_suppress_search_dialogs">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Always wrap search around the document and hide the Find dialog after clicking Find Next/Previous</property>
- <property name="label" translatable="yes">Always wrap search and hide the Find dialog</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">False</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>
-
- <child>
- <widget class="GtkCheckButton" id="check_search_use_current_word">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Use current word under the cursor when opening the Find, Find in Files or Replace dialog and there is no selection.</property>
- <property name="label" translatable="yes">Use the current word under the cursor for Find dialogs</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">False</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>
@@ -7167,6 +7129,144 @@
</child>
<child>
+ <widget class="GtkFrame" id="frame36">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment39">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox36">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="check_ask_suppress_search_dialogs">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Always wrap search around the document and hide the Find dialog after clicking Find Next/Previous</property>
+ <property name="label" translatable="yes">Always wrap search and hide the Find dialog</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</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>
+
+ <child>
+ <widget class="GtkCheckButton" id="check_search_use_current_word">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Use current word under the cursor when opening the Find, Find in Files or Replace dialog and there is no selection.</property>
+ <property name="label" translatable="yes">Use the current word under the cursor for Find dialogs</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</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>
+
+ <child>
+ <widget class="GtkCheckButton" id="check_fif_current_dir">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use the current file's directory for Find in Files</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>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label215">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Search</b></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label214">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Search</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
<widget class="GtkVBox" id="vbox23">
<property name="visible">True</property>
<property name="homogeneous">False</property>
Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c 2008-06-24 14:32:54 UTC (rev 2723)
+++ trunk/src/interface.c 2008-06-25 11:56:58 UTC (rev 2724)
@@ -2511,8 +2511,6 @@
GtkWidget *check_switch_pages;
GtkWidget *check_suppress_status_msgs;
GtkWidget *check_auto_focus;
- GtkWidget *check_ask_suppress_search_dialogs;
- GtkWidget *check_search_use_current_word;
GtkWidget *label199;
GtkWidget *frame25;
GtkWidget *alignment28;
@@ -2714,6 +2712,14 @@
GtkWidget *spin_disk_check;
GtkWidget *label198;
GtkWidget *label174;
+ GtkWidget *frame36;
+ GtkWidget *alignment39;
+ GtkWidget *vbox36;
+ GtkWidget *check_ask_suppress_search_dialogs;
+ GtkWidget *check_search_use_current_word;
+ GtkWidget *check_fif_current_dir;
+ GtkWidget *label215;
+ GtkWidget *label214;
GtkWidget *vbox23;
GtkWidget *frame20;
GtkWidget *alignment23;
@@ -2957,20 +2963,6 @@
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);
gtk_button_set_focus_on_click (GTK_BUTTON (check_auto_focus), FALSE);
- check_ask_suppress_search_dialogs = gtk_check_button_new_with_mnemonic (_("Always wrap search and hide the Find dialog"));
- gtk_widget_show (check_ask_suppress_search_dialogs);
- gtk_box_pack_start (GTK_BOX (vbox21), check_ask_suppress_search_dialogs, FALSE, FALSE, 0);
- GTK_WIDGET_UNSET_FLAGS (check_ask_suppress_search_dialogs, GTK_CAN_FOCUS);
- gtk_tooltips_set_tip (tooltips, check_ask_suppress_search_dialogs, _("Always wrap search around the document and hide the Find dialog after clicking Find Next/Previous"), NULL);
- gtk_button_set_focus_on_click (GTK_BUTTON (check_ask_suppress_search_dialogs), FALSE);
-
- check_search_use_current_word = gtk_check_button_new_with_mnemonic (_("Use the current word under the cursor for Find dialogs"));
- gtk_widget_show (check_search_use_current_word);
- gtk_box_pack_start (GTK_BOX (vbox21), check_search_use_current_word, FALSE, FALSE, 0);
- GTK_WIDGET_UNSET_FLAGS (check_search_use_current_word, GTK_CAN_FOCUS);
- gtk_tooltips_set_tip (tooltips, check_search_use_current_word, _("Use current word under the cursor when opening the Find, Find in Files or Replace dialog and there is no selection."), NULL);
- gtk_button_set_focus_on_click (GTK_BUTTON (check_search_use_current_word), FALSE);
-
label199 = gtk_label_new (_("<b>Miscellaneous</b>"));
gtk_widget_show (label199);
gtk_frame_set_label_widget (GTK_FRAME (frame19), label199);
@@ -4091,6 +4083,47 @@
gtk_widget_show (label174);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 4), label174);
+ frame36 = gtk_frame_new (NULL);
+ gtk_widget_show (frame36);
+ gtk_container_add (GTK_CONTAINER (notebook2), frame36);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame36), GTK_SHADOW_NONE);
+
+ alignment39 = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_widget_show (alignment39);
+ gtk_container_add (GTK_CONTAINER (frame36), alignment39);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (alignment39), 0, 0, 12, 0);
+
+ vbox36 = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox36);
+ gtk_container_add (GTK_CONTAINER (alignment39), vbox36);
+
+ check_ask_suppress_search_dialogs = gtk_check_button_new_with_mnemonic (_("Always wrap search and hide the Find dialog"));
+ gtk_widget_show (check_ask_suppress_search_dialogs);
+ gtk_box_pack_start (GTK_BOX (vbox36), check_ask_suppress_search_dialogs, FALSE, FALSE, 0);
+ GTK_WIDGET_UNSET_FLAGS (check_ask_suppress_search_dialogs, GTK_CAN_FOCUS);
+ gtk_tooltips_set_tip (tooltips, check_ask_suppress_search_dialogs, _("Always wrap search around the document and hide the Find dialog after clicking Find Next/Previous"), NULL);
+ gtk_button_set_focus_on_click (GTK_BUTTON (check_ask_suppress_search_dialogs), FALSE);
+
+ check_search_use_current_word = gtk_check_button_new_with_mnemonic (_("Use the current word under the cursor for Find dialogs"));
+ gtk_widget_show (check_search_use_current_word);
+ gtk_box_pack_start (GTK_BOX (vbox36), check_search_use_current_word, FALSE, FALSE, 0);
+ GTK_WIDGET_UNSET_FLAGS (check_search_use_current_word, GTK_CAN_FOCUS);
+ gtk_tooltips_set_tip (tooltips, check_search_use_current_word, _("Use current word under the cursor when opening the Find, Find in Files or Replace dialog and there is no selection."), NULL);
+ gtk_button_set_focus_on_click (GTK_BUTTON (check_search_use_current_word), FALSE);
+
+ check_fif_current_dir = gtk_check_button_new_with_mnemonic (_("Use the current file's directory for Find in Files"));
+ gtk_widget_show (check_fif_current_dir);
+ gtk_box_pack_start (GTK_BOX (vbox36), check_fif_current_dir, FALSE, FALSE, 0);
+
+ label215 = gtk_label_new (_("<b>Search</b>"));
+ gtk_widget_show (label215);
+ gtk_frame_set_label_widget (GTK_FRAME (frame36), label215);
+ gtk_label_set_use_markup (GTK_LABEL (label215), TRUE);
+
+ label214 = gtk_label_new (_("Search"));
+ gtk_widget_show (label214);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 5), label214);
+
vbox23 = gtk_vbox_new (FALSE, 10);
gtk_widget_show (vbox23);
gtk_container_add (GTK_CONTAINER (notebook2), vbox23);
@@ -4266,7 +4299,7 @@
label96 = gtk_label_new (_("Tools"));
gtk_widget_show (label96);
- gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 5), label96);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 6), label96);
frame21 = gtk_frame_new (NULL);
gtk_widget_show (frame21);
@@ -4369,7 +4402,7 @@
label119 = gtk_label_new (_("Templates"));
gtk_widget_show (label119);
- gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 6), label119);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 7), label119);
frame22 = gtk_frame_new (NULL);
gtk_widget_show (frame22);
@@ -4416,7 +4449,7 @@
label151 = gtk_label_new (_("Keybindings"));
gtk_widget_show (label151);
- gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 7), label151);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 8), label151);
vbox27 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox27);
@@ -4536,7 +4569,7 @@
label201 = gtk_label_new (_("Printing"));
gtk_widget_show (label201);
- gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 8), label201);
+ gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 9), label201);
dialog_action_area3 = GTK_DIALOG (prefs_dialog)->action_area;
gtk_widget_show (dialog_action_area3);
@@ -4587,8 +4620,6 @@
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_ask_suppress_search_dialogs, "check_ask_suppress_search_dialogs");
- GLADE_HOOKUP_OBJECT (prefs_dialog, check_search_use_current_word, "check_search_use_current_word");
GLADE_HOOKUP_OBJECT (prefs_dialog, label199, "label199");
GLADE_HOOKUP_OBJECT (prefs_dialog, frame25, "frame25");
GLADE_HOOKUP_OBJECT (prefs_dialog, alignment28, "alignment28");
@@ -4778,6 +4809,14 @@
GLADE_HOOKUP_OBJECT (prefs_dialog, spin_disk_check, "spin_disk_check");
GLADE_HOOKUP_OBJECT (prefs_dialog, label198, "label198");
GLADE_HOOKUP_OBJECT (prefs_dialog, label174, "label174");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, frame36, "frame36");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, alignment39, "alignment39");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, vbox36, "vbox36");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, check_ask_suppress_search_dialogs, "check_ask_suppress_search_dialogs");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, check_search_use_current_word, "check_search_use_current_word");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, check_fif_current_dir, "check_fif_current_dir");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, label215, "label215");
+ GLADE_HOOKUP_OBJECT (prefs_dialog, label214, "label214");
GLADE_HOOKUP_OBJECT (prefs_dialog, vbox23, "vbox23");
GLADE_HOOKUP_OBJECT (prefs_dialog, frame20, "frame20");
GLADE_HOOKUP_OBJECT (prefs_dialog, alignment23, "alignment23");
Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c 2008-06-24 14:32:54 UTC (rev 2723)
+++ trunk/src/keyfile.c 2008-06-25 11:56:58 UTC (rev 2724)
@@ -89,6 +89,25 @@
static gint vpan_position;
+/* Used in e.g. save_bool_prefs(). */
+typedef struct SettingEntry
+{
+ const gchar *group;
+ const gchar *key_name;
+ gpointer setting;
+ gpointer default_value;
+}
+SettingEntry;
+
+static SettingEntry bool_prefs[] =
+{
+ {PACKAGE, "pref_main_suppress_search_dialogs", &search_prefs.suppress_dialogs, GINT_TO_POINTER(FALSE)},
+ {PACKAGE, "pref_main_search_use_current_word", &search_prefs.use_current_word, GINT_TO_POINTER(TRUE)},
+ {"search", "pref_search_current_file_dir", &search_prefs.use_current_file_dir, GINT_TO_POINTER(TRUE)},
+ {NULL, NULL, NULL, NULL} /* must be terminated */
+};
+
+
static void save_recent_files(GKeyFile *config)
{
gchar **recent_files = g_new0(gchar*, file_prefs.mru_length + 1);
@@ -184,8 +203,21 @@
}
+static void save_bool_prefs(GKeyFile *config)
+{
+ SettingEntry *pe;
+
+ for (pe = bool_prefs; pe->group != NULL; pe++)
+ {
+ g_key_file_set_boolean(config, pe->group, pe->key_name, *(gboolean*)pe->setting);
+ }
+}
+
+
static void save_dialog_prefs(GKeyFile *config)
{
+ save_bool_prefs(config);
+
/* Some of the key names are not consistent, but this is for backwards compatibility */
/* general */
@@ -193,8 +225,6 @@
g_key_file_set_boolean(config, PACKAGE, "pref_main_project_session", project_prefs.project_session);
g_key_file_set_boolean(config, PACKAGE, "pref_main_save_winpos", prefs.save_winpos);
g_key_file_set_boolean(config, PACKAGE, "pref_main_confirm_exit", prefs.confirm_exit);
- g_key_file_set_boolean(config, PACKAGE, "pref_main_suppress_search_dialogs", search_prefs.suppress_dialogs);
- g_key_file_set_boolean(config, PACKAGE, "pref_main_search_use_current_word", search_prefs.use_current_word);
g_key_file_set_boolean(config, PACKAGE, "pref_main_suppress_status_messages", prefs.suppress_status_messages);
g_key_file_set_boolean(config, PACKAGE, "switch_msgwin_pages", prefs.switch_to_status);
g_key_file_set_boolean(config, PACKAGE, "beep_on_errors", prefs.beep_on_errors);
@@ -476,6 +506,18 @@
}
+static void load_bool_prefs(GKeyFile *config)
+{
+ SettingEntry *pe;
+
+ for (pe = bool_prefs; pe->group != NULL; pe++)
+ {
+ *(gboolean*)pe->setting = utils_get_setting_boolean(config, pe->group, pe->key_name,
+ GPOINTER_TO_INT(pe->default_value));
+ }
+}
+
+
#define GEANY_GET_SETTING(propertyname, value, default_value) \
if (g_object_class_find_property( \
G_OBJECT_GET_CLASS(G_OBJECT(gtk_settings_get_default())), propertyname)) \
@@ -489,10 +531,10 @@
gchar *tmp_string, *tmp_string2;
const gchar *default_charset = NULL;
+ load_bool_prefs(config);
+
/* general */
prefs.confirm_exit = utils_get_setting_boolean(config, PACKAGE, "pref_main_confirm_exit", FALSE);
- search_prefs.suppress_dialogs = utils_get_setting_boolean(config, PACKAGE, "pref_main_suppress_search_dialogs", FALSE);
- search_prefs.use_current_word = utils_get_setting_boolean(config, PACKAGE, "pref_main_search_use_current_word", TRUE);
prefs.suppress_status_messages = utils_get_setting_boolean(config, PACKAGE, "pref_main_suppress_status_messages", FALSE);
prefs.load_session = utils_get_setting_boolean(config, PACKAGE, "pref_main_load_session", TRUE);
project_prefs.project_session = utils_get_setting_boolean(config, PACKAGE, "pref_main_project_session", TRUE);
Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c 2008-06-24 14:32:54 UTC (rev 2723)
+++ trunk/src/prefs.c 2008-06-25 11:56:58 UTC (rev 2724)
@@ -89,6 +89,23 @@
static void on_prefs_print_page_header_toggled(GtkToggleButton *togglebutton, gpointer user_data);
+/* used in e.g. init_toggle_button_prefs(). */
+typedef struct PrefEntry
+{
+ const gchar *widget_name;
+ gpointer setting;
+}
+PrefEntry;
+
+static PrefEntry toggle_prefs[] =
+{
+ {"check_ask_suppress_search_dialogs", &search_prefs.suppress_dialogs},
+ {"check_search_use_current_word", &search_prefs.use_current_word},
+ {"check_fif_current_dir", &search_prefs.use_current_file_dir},
+ {NULL, NULL} /* must be terminated */
+};
+
+
enum
{
KB_TREE_ACTION,
@@ -162,11 +179,26 @@
}
+static void init_toggle_button_prefs()
+{
+ PrefEntry *pe;
+
+ for (pe = toggle_prefs; pe->widget_name != NULL; pe++)
+ {
+ GtkWidget *widget = lookup_widget(ui_widgets.prefs_dialog, pe->widget_name);
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), *(gboolean*)pe->setting);
+ }
+}
+
+
void prefs_init_dialog(void)
{
GtkWidget *widget;
GdkColor *color;
+ init_toggle_button_prefs();
+
/* General settings */
/* startup */
widget = lookup_widget(ui_widgets.prefs_dialog, "check_load_session");
@@ -197,12 +229,6 @@
widget = lookup_widget(ui_widgets.prefs_dialog, "check_auto_focus");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.auto_focus);
- widget = lookup_widget(ui_widgets.prefs_dialog, "check_ask_suppress_search_dialogs");
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), search_prefs.suppress_dialogs);
-
- widget = lookup_widget(ui_widgets.prefs_dialog, "check_search_use_current_word");
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), search_prefs.use_current_word);
-
widget = lookup_widget(ui_widgets.prefs_dialog, "entry_contextaction");
gtk_entry_set_text(GTK_ENTRY(widget), tool_prefs.context_action_cmd);
@@ -578,6 +604,19 @@
}
+static void update_toggle_button_prefs()
+{
+ PrefEntry *pe;
+
+ for (pe = toggle_prefs; pe->widget_name != NULL; pe++)
+ {
+ GtkWidget *widget = lookup_widget(ui_widgets.prefs_dialog, pe->widget_name);
+
+ *(gboolean*)pe->setting = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ }
+}
+
+
/*
* callbacks
*/
@@ -589,6 +628,8 @@
GtkWidget *widget;
guint i;
+ update_toggle_button_prefs();
+
/* General settings */
/* startup */
widget = lookup_widget(ui_widgets.prefs_dialog, "check_load_session");
@@ -610,18 +651,12 @@
widget = lookup_widget(ui_widgets.prefs_dialog, "check_beep");
prefs.beep_on_errors = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
- widget = lookup_widget(ui_widgets.prefs_dialog, "check_ask_suppress_search_dialogs");
- search_prefs.suppress_dialogs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-
widget = lookup_widget(ui_widgets.prefs_dialog, "check_switch_pages");
prefs.switch_to_status = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
widget = lookup_widget(ui_widgets.prefs_dialog, "check_suppress_status_msgs");
prefs.suppress_status_messages = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
- widget = lookup_widget(ui_widgets.prefs_dialog, "check_search_use_current_word");
- search_prefs.use_current_word = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-
widget = lookup_widget(ui_widgets.prefs_dialog, "check_auto_focus");
prefs.auto_focus = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
Modified: trunk/src/search.c
===================================================================
--- trunk/src/search.c 2008-06-24 14:32:54 UTC (rev 2723)
+++ trunk/src/search.c 2008-06-25 11:56:58 UTC (rev 2724)
@@ -562,7 +562,7 @@
GtkWidget *entry; /* the child GtkEntry of combo (or dir_combo) */
GeanyDocument *doc = document_get_current();
gchar *sel = NULL;
- gchar *cur_dir;
+ gchar *cur_dir = NULL;
if (widgets.find_in_files_dialog == NULL)
{
@@ -725,18 +725,26 @@
entry = GTK_BIN(dir_combo)->child;
if (NZV(dir))
- cur_dir = g_strdup(dir);
+ cur_dir = g_strdup(dir); /* custom directory argument passed */
else
- cur_dir = utils_get_current_file_dir_utf8();
+ {
+ gboolean entry_empty = ! NZV(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ if (search_prefs.use_current_file_dir || entry_empty)
+ {
+ cur_dir = utils_get_current_file_dir_utf8();
+
+ /* use default_open_path if no directory could be determined
+ * (e.g. when no files are open) */
+ if (!cur_dir)
+ cur_dir = g_strdup(prefs.default_open_path);
+ }
+ }
if (cur_dir)
{
gtk_entry_set_text(GTK_ENTRY(entry), cur_dir);
g_free(cur_dir);
}
- else
- { /* use default_open_path if no directory could be determined (e.g. when no files are open) */
- gtk_entry_set_text(GTK_ENTRY(entry), prefs.default_open_path);
- }
/* put the focus to the directory entry if it is empty */
if (utils_str_equal(gtk_entry_get_text(GTK_ENTRY(entry)), ""))
Modified: trunk/src/search.h
===================================================================
--- trunk/src/search.h 2008-06-24 14:32:54 UTC (rev 2723)
+++ trunk/src/search.h 2008-06-25 11:56:58 UTC (rev 2724)
@@ -45,6 +45,7 @@
gchar *fif_extra_options;
gboolean suppress_dialogs;
gboolean use_current_word;
+ gboolean use_current_file_dir; /* find in files directory to use on showing dialog */
}
GeanySearchPrefs;
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