First, let me introduce myself. I am André, 22, from Germany and got 8 years programming experience. I am coding for Wine since january and used Geany all the time for that. Now that Geany is a great tool i also want to help to improve it. While my work with Geany i found some behaviors, which i would like to be different. So i am willing to fix it. Thats what my patch is about: When i changed a file in Geany and made e.g. a git checkout or an other change with the file on disk, Geany asks me to reload(thats great so far). After i choose "no", as i want to keep my changes i made in Geany, i am not able to save the file immediatly after that. The save-button is grayed and i first have to do a little change in the file before i can save again. This patch fixes this by adding a preference for it. I already had some talk about the feature on IRC with Enrico already. As this is my first Geany-patch, i guess i made some mistakes against your guidlines, but i hope to get some feedback. PS: the last change in that diff removes a trailing space, as git doesnt like those. --- geany.glade | 23 +++++++++++++++++++++++ src/document.c | 3 ++- src/document.h | 1 + src/interface.c | 7 +++++++ src/prefs.c | 5 ++++- 5 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/geany.glade b/geany.glade index 0f142b4..add475b 100644 --- a/geany.glade +++ b/geany.glade @@ -7407,6 +7407,29 @@ Match braces</property> <property name="fill">False</property> </packing> </child> + + <child> + <widget class="GtkCheckButton" id="check_reenable_save"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">When the file changes on disk and you choose not to reload it, this allows you to save it anyway</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Reenable Save after changes on Disk</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> + <accessibility> + <atkproperty name="AtkObject::accessible_description" translatable="yes">When the file changes on disk and you choose not to reload it, this allows you to save it anyway</atkproperty> + </accessibility> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> </child> </widget> diff --git a/src/document.c b/src/document.c index bf40a85..06b5e7d 100644 --- a/src/document.c +++ b/src/document.c @@ -2948,7 +2948,8 @@ gboolean document_check_disk_status(GeanyDocument *doc, gboolean force) } else if (doc->priv->mtime < st.st_mtime) { - monitor_reload_file(doc); + if(!monitor_reload_file(doc) && file_prefs.reenable_save) + document_set_text_changed(doc, TRUE); doc->priv->mtime = st.st_mtime; ret = TRUE; } diff --git a/src/document.h b/src/document.h index c121a54..e8c3cb4 100644 --- a/src/document.h +++ b/src/document.h @@ -57,6 +57,7 @@ typedef struct GeanyFilePrefs gint disk_check_timeout; gboolean cmdline_new_files; /* New file if command-line filename doesn't exist */ gboolean use_safe_file_saving; + gboolean reenable_save; } GeanyFilePrefs;
diff --git a/src/interface.c b/src/interface.c index 80d1b11..9e1e80e 100644 --- a/src/interface.c +++ b/src/interface.c @@ -2552,6 +2552,7 @@ create_prefs_dialog (void) GtkWidget *check_new_line; GtkWidget *check_trailing_spaces; GtkWidget *check_replace_tabs; + GtkWidget *check_reenable_save; GtkWidget *label19; GtkWidget *frame17; GtkWidget *alignment20; @@ -4059,6 +4060,11 @@ create_prefs_dialog (void) gtk_box_pack_start (GTK_BOX (vbox6), check_replace_tabs, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, check_replace_tabs, _("Replaces all tabs in document by spaces"), NULL);
+ check_reenable_save = gtk_check_button_new_with_mnemonic (_("Reenable Save after changes on disk")); + gtk_widget_show (check_reenable_save); + gtk_box_pack_start (GTK_BOX (vbox6), check_reenable_save, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_reenable_save, _("When the file changes on disk and you choose not to reload it, this allows you to save it anyway"), NULL); + label19 = gtk_label_new (_("<b>Saving files</b>")); gtk_widget_show (label19); gtk_frame_set_label_widget (GTK_FRAME (frame2), label19); @@ -4867,6 +4873,7 @@ create_prefs_dialog (void) GLADE_HOOKUP_OBJECT (prefs_dialog, check_new_line, "check_new_line"); GLADE_HOOKUP_OBJECT (prefs_dialog, check_trailing_spaces, "check_trailing_spaces"); GLADE_HOOKUP_OBJECT (prefs_dialog, check_replace_tabs, "check_replace_tabs"); + GLADE_HOOKUP_OBJECT (prefs_dialog, check_reenable_save, "check_reenable_save"); GLADE_HOOKUP_OBJECT (prefs_dialog, label19, "label19"); GLADE_HOOKUP_OBJECT (prefs_dialog, frame17, "frame17"); GLADE_HOOKUP_OBJECT (prefs_dialog, alignment20, "alignment20"); diff --git a/src/prefs.c b/src/prefs.c index 4fe4f78..ded223b 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -497,6 +497,9 @@ static void prefs_init_dialog(void) widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_new_line"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), file_prefs.final_new_line);
+ widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_reenable_save"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), file_prefs.reenable_save); + /* Editor settings */ widget = ui_lookup_widget(ui_widgets.prefs_dialog, "entry_toggle_mark"); gtk_entry_set_text(GTK_ENTRY(widget), editor_prefs.comment_toggle_mark); @@ -1581,7 +1584,7 @@ void prefs_show_dialog(void) "font-set", G_CALLBACK(on_prefs_font_choosed), GINT_TO_POINTER(3)); g_signal_connect(ui_lookup_widget(ui_widgets.prefs_dialog, "long_line_color"), "color-set", G_CALLBACK(on_prefs_color_choosed), GINT_TO_POINTER(1)); - /* file chooser buttons in the tools tab + /* file chooser buttons in the tools tab g_signal_connect(ui_lookup_widget(ui_widgets.prefs_dialog, "button_make"), "clicked", G_CALLBACK(on_prefs_tools_button_clicked), ui_lookup_widget(ui_widgets.prefs_dialog, "entry_com_make")); */ g_signal_connect(ui_lookup_widget(ui_widgets.prefs_dialog, "button_term"),
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi,
André Hentschel a écrit :
When i changed a file in Geany and made e.g. a git checkout or an other
change with the file on disk, Geany asks me to reload(thats great so far).
After i choose "no", as i want to keep my changes i made in Geany, i am
not able to save the file immediatly after that.
The save-button is grayed and i first have to do a little change in the
file before i can save again.
This patch fixes this by adding a preference for it. I already had some
talk about the feature on IRC with Enrico already. I think it would be better to have a third "save" button in the dialog asking for reload for this purpose. I think it would be more clear and user friendly. And AFAIR (maybe I am wrong?) there's already a (hidden?) preference to never make the save button insensitive (grayed), isn't it? Then having a way to make the button sensitive only for that seems a little redundant for me.
My 2 cents, Colomban
On Tue, 01 Sep 2009 22:58:10 +0200 Colomban Wendling ban-ubuntu@club-internet.fr wrote:
When i changed a file in Geany and made e.g. a git checkout or an other
change with the file on disk, Geany asks me to reload(thats great so far).
After i choose "no", as i want to keep my changes i made in Geany, i am
not able to save the file immediatly after that.
The save-button is grayed and i first have to do a little change in the
file before i can save again.
Save As would be better than an unneeded modification (or use the hidden pref as mentioned in other replies).
This patch fixes this by adding a preference for it. I already had some
talk about the feature on IRC with Enrico already.
I think it would be better to have a third "save" button in the dialog asking for reload for this purpose. I think it would be more clear and user friendly.
This sounds OK.
Also perhaps Geany could color the document tab orange to show that the document is not on disk as expected.
Regards, Nick
Am 01.09.2009 21:48, schrieb André Hentschel:
First, let me introduce myself. I am André, 22, from Germany and got 8 years programming experience. I am coding for Wine since january and used Geany all the time for that. Now that Geany is a great tool i also want to help to improve it. While my work with Geany i found some behaviors, which i would like to be different. So i am willing to fix it. Thats what my patch is about: When i changed a file in Geany and made e.g. a git checkout or an other change with the file on disk, Geany asks me to reload(thats great so far). After i choose "no", as i want to keep my changes i made in Geany, i am not able to save the file immediatly after that. The save-button is grayed and i first have to do a little change in the file before i can save again. This patch fixes this by adding a preference for it. I already had some talk about the feature on IRC with Enrico already. As this is my first Geany-patch, i guess i made some mistakes against your guidlines, but i hope to get some feedback. PS: the last change in that diff removes a trailing space, as git doesnt like those.
Actually, this has been requested some month ago. It's actually implemented, although somewhat hidden. You can force file saving by hittin ctrl+s even if the save button is greyed out.
Best regards.
Thomas Martitiz schrieb:
Am 01.09.2009 21:48, schrieb André Hentschel:
First, let me introduce myself. I am André, 22, from Germany and got 8 years programming experience. I am coding for Wine since january and used Geany all the time for that. Now that Geany is a great tool i also want to help to improve it. While my work with Geany i found some behaviors, which i would like to be different. So i am willing to fix it. Thats what my patch is about: When i changed a file in Geany and made e.g. a git checkout or an other change with the file on disk, Geany asks me to reload(thats great so far). After i choose "no", as i want to keep my changes i made in Geany, i am not able to save the file immediatly after that. The save-button is grayed and i first have to do a little change in the file before i can save again. This patch fixes this by adding a preference for it. I already had some talk about the feature on IRC with Enrico already. As this is my first Geany-patch, i guess i made some mistakes against your guidlines, but i hope to get some feedback. PS: the last change in that diff removes a trailing space, as git doesnt like those.
Actually, this has been requested some month ago. It's actually implemented, although somewhat hidden. You can force file saving by hittin ctrl+s even if the save button is greyed out.
Best regards. _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Ok, at least i got a bit into Geany's code.