SF.net SVN: geany: [1703] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Mon Jul 16 14:42:36 UTC 2007
Revision: 1703
http://svn.sourceforge.net/geany/?rev=1703&view=rev
Author: ntrel
Date: 2007-07-16 07:42:36 -0700 (Mon, 16 Jul 2007)
Log Message:
-----------
Use Rename button instead of checkbox for Save As dialog.
Add tooltips for Save As dialog's other options.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/callbacks.c
trunk/src/dialogs.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-07-13 15:54:16 UTC (rev 1702)
+++ trunk/ChangeLog 2007-07-16 14:42:36 UTC (rev 1703)
@@ -1,3 +1,10 @@
+2007-07-16 Nick Treleaven <nick.treleaven at btinternet.com>
+
+ * src/dialogs.c, src/callbacks.c:
+ Use Rename button instead of checkbox for Save As dialog.
+ Add tooltips for Save As dialog's other options.
+
+
2007-07-13 Nick Treleaven <nick.treleaven at btinternet.com>
* src/treeviews.c:
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c 2007-07-13 15:54:16 UTC (rev 1702)
+++ trunk/src/callbacks.c 2007-07-16 14:42:36 UTC (rev 1703)
@@ -862,6 +862,41 @@
}
+static gint
+clone_document(gint old_idx, const gchar *utf8_filename)
+{
+ // create a new file and copy file content and properties
+ gint len, idx;
+ gchar *data;
+
+ // use old file type (or maybe NULL for auto detect would be better?)
+ idx = document_new_file(utf8_filename, doc_list[idx].file_type);
+
+ sci_set_undo_collection(doc_list[idx].sci, FALSE); // avoid creation of an undo action
+ sci_empty_undo_buffer(doc_list[idx].sci);
+
+ len = sci_get_length(doc_list[old_idx].sci) + 1;
+ data = (gchar*) g_malloc(len);
+ sci_get_text(doc_list[old_idx].sci, len, data);
+
+ sci_set_text(doc_list[idx].sci, data);
+
+ // copy file properties
+ doc_list[idx].line_breaking = doc_list[old_idx].line_breaking;
+ doc_list[idx].readonly = doc_list[old_idx].readonly;
+ doc_list[idx].has_bom = doc_list[old_idx].has_bom;
+ document_set_encoding(idx, doc_list[old_idx].encoding);
+ sci_set_lines_wrapped(doc_list[idx].sci, doc_list[idx].line_breaking);
+ sci_set_readonly(doc_list[idx].sci, doc_list[idx].readonly);
+ sci_set_undo_collection(doc_list[idx].sci, TRUE);
+
+ ui_document_show_hide(idx);
+
+ g_free(data);
+ return idx;
+}
+
+
/*
* save dialog callbacks
*/
@@ -870,96 +905,74 @@
gint response,
gpointer user_data)
{
- if (response == GTK_RESPONSE_ACCEPT)
+ gboolean rename_file = FALSE;
+
+ switch (response)
{
- gint idx = document_get_cur_idx();
- gchar *new_filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(app->save_filesel));
- gchar *utf8_filename;
- gboolean open_new_tab = gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(lookup_widget(app->save_filesel, "check_open_new_tab")));
- gboolean rename_file = gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(lookup_widget(app->save_filesel, "check_rename")));
+ case GTK_RESPONSE_APPLY:
+ rename_file = TRUE;
+ // fall through
+ case GTK_RESPONSE_ACCEPT:
+ {
+ gint idx = document_get_cur_idx();
+ gchar *new_filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(app->save_filesel));
+ gchar *utf8_filename;
+ gboolean open_new_tab = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(lookup_widget(app->save_filesel, "check_open_new_tab")));
+
#ifdef G_OS_WIN32
- utf8_filename = g_strdup(new_filename);
+ utf8_filename = g_strdup(new_filename);
#else
- utf8_filename = utils_get_utf8_from_locale(new_filename);
+ utf8_filename = utils_get_utf8_from_locale(new_filename);
#endif
- // check if file exists and ask whether to overwrite or not
- if (g_file_test(new_filename, G_FILE_TEST_EXISTS))
- {
- if (dialogs_show_question(
- _("The file '%s' already exists. Do you want to overwrite it?"),
- utf8_filename) == FALSE)
- return;
- }
+ // check if file exists and ask whether to overwrite or not
+ if (g_file_test(new_filename, G_FILE_TEST_EXISTS))
+ {
+ if (dialogs_show_question(
+ _("The file '%s' already exists. Do you want to overwrite it?"),
+ utf8_filename) == FALSE)
+ return;
+ }
- if (open_new_tab)
- { // "open" the saved file in a new tab
- // (actually create a new file and copy file content and properties)
- gint len, old_idx;
- gchar *data;
-
- old_idx = idx;
-
- // use old file type (or maybe NULL for auto detect would be better?)
- idx = document_new_file(utf8_filename, doc_list[idx].file_type);
-
- sci_set_undo_collection(doc_list[idx].sci, FALSE); // avoid creation of an undo action
- sci_empty_undo_buffer(doc_list[idx].sci);
-
- len = sci_get_length(doc_list[old_idx].sci) + 1;
- data = (gchar*) g_malloc(len);
- sci_get_text(doc_list[old_idx].sci, len, data);
-
- sci_set_text(doc_list[idx].sci, data);
-
- // copy file properties
- doc_list[idx].line_breaking = doc_list[old_idx].line_breaking;
- doc_list[idx].readonly = doc_list[old_idx].readonly;
- doc_list[idx].has_bom = doc_list[old_idx].has_bom;
- document_set_encoding(idx, doc_list[old_idx].encoding);
- sci_set_lines_wrapped(doc_list[idx].sci, doc_list[idx].line_breaking);
- sci_set_readonly(doc_list[idx].sci, doc_list[idx].readonly);
- sci_set_undo_collection(doc_list[idx].sci, TRUE);
-
- ui_document_show_hide(idx);
-
- g_free(data);
- g_free(utf8_filename);
- }
- else
- {
- if (doc_list[idx].file_name != NULL)
+ if (open_new_tab)
+ { // "open" the saved file in a new tab
+ idx = clone_document(idx, utf8_filename);
+ g_free(utf8_filename);
+ }
+ else
{
- if (rename_file)
- { // delete the previous file name
+ if (doc_list[idx].file_name != NULL)
+ {
+ if (rename_file)
+ { // delete the previous file name
#ifdef G_OS_WIN32
- g_unlink(doc_list[idx].file_name);
+ g_unlink(doc_list[idx].file_name);
#else
- gchar *old_filename = utils_get_locale_from_utf8(doc_list[idx].file_name);
+ gchar *old_filename = utils_get_locale_from_utf8(doc_list[idx].file_name);
- g_unlink(old_filename);
- g_free(old_filename);
+ g_unlink(old_filename);
+ g_free(old_filename);
#endif
+ }
+ // create a new tm_source_file object otherwise tagmanager won't work correctly
+ tm_workspace_remove_object(doc_list[idx].tm_file, TRUE);
+ doc_list[idx].tm_file = NULL;
+ g_free(doc_list[idx].file_name);
}
- // create a new tm_source_file object otherwise tagmanager won't work correctly
- tm_workspace_remove_object(doc_list[idx].tm_file, TRUE);
- doc_list[idx].tm_file = NULL;
- g_free(doc_list[idx].file_name);
+ doc_list[idx].file_name = utf8_filename;
}
- doc_list[idx].file_name = utf8_filename;
- }
- utils_replace_filename(idx);
- document_save_file(idx, TRUE);
+ utils_replace_filename(idx);
+ document_save_file(idx, TRUE);
- if (! open_new_tab)
- build_menu_update(idx);
+ if (! open_new_tab)
+ build_menu_update(idx);
- // finally add current file to recent files menu
- ui_add_recent_file(doc_list[idx].file_name);
+ // finally add current file to recent files menu
+ ui_add_recent_file(doc_list[idx].file_name);
- g_free(new_filename);
+ g_free(new_filename);
+ }
}
gtk_widget_hide(app->save_filesel);
}
Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c 2007-07-13 15:54:16 UTC (rev 1702)
+++ trunk/src/dialogs.c 2007-07-16 14:42:36 UTC (rev 1703)
@@ -80,18 +80,18 @@
app->open_filesel = gtk_file_chooser_dialog_new(_("Open File"), GTK_WINDOW(app->window),
GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL);
+ gtk_widget_set_name(app->open_filesel, "GeanyDialog");
viewbtn = gtk_button_new_with_mnemonic(_("_View"));
gtk_tooltips_set_tip(tooltips, viewbtn,
_("Opens the file in read-only mode. If you choose more than one file to open, all files will be opened read-only."), NULL);
gtk_widget_show(viewbtn);
- gtk_widget_set_name(app->open_filesel, "GeanyDialog");
gtk_dialog_add_action_widget(GTK_DIALOG(app->open_filesel),
viewbtn, GTK_RESPONSE_APPLY);
+
gtk_dialog_add_buttons(GTK_DIALOG(app->open_filesel),
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
- // set default Open, so pressing enter can open multiple files
gtk_dialog_set_default_response(GTK_DIALOG(app->open_filesel),
GTK_RESPONSE_ACCEPT);
@@ -276,36 +276,43 @@
if (app->save_filesel == NULL)
{
- GtkWidget *vbox, *check_open_new_tab, *check_rename;
+ GtkWidget *vbox, *check_open_new_tab, *rename_btn;
+ GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
app->save_filesel = gtk_file_chooser_dialog_new(_("Save File"), GTK_WINDOW(app->window),
- GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
+ GTK_FILE_CHOOSER_ACTION_SAVE, NULL, NULL);
gtk_window_set_modal(GTK_WINDOW(app->save_filesel), TRUE);
gtk_window_set_destroy_with_parent(GTK_WINDOW(app->save_filesel), TRUE);
gtk_window_set_skip_taskbar_hint(GTK_WINDOW(app->save_filesel), TRUE);
gtk_window_set_type_hint(GTK_WINDOW(app->save_filesel), GDK_WINDOW_TYPE_HINT_DIALOG);
- gtk_dialog_set_default_response(GTK_DIALOG(app->save_filesel), GTK_RESPONSE_ACCEPT);
gtk_widget_set_name(app->save_filesel, "GeanyDialog");
+ rename_btn = gtk_button_new_with_mnemonic(_("R_ename"));
+ gtk_tooltips_set_tip(tooltips, rename_btn,
+ _("Save the file and rename it."), NULL);
+ gtk_widget_show(rename_btn);
+ gtk_dialog_add_action_widget(GTK_DIALOG(app->save_filesel),
+ rename_btn, GTK_RESPONSE_APPLY);
+
+ gtk_dialog_add_buttons(GTK_DIALOG(app->save_filesel),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
+ gtk_dialog_set_default_response(GTK_DIALOG(app->save_filesel), GTK_RESPONSE_ACCEPT);
+
vbox = gtk_vbox_new(FALSE, 0);
- check_open_new_tab = gtk_check_button_new_with_mnemonic("_Open file in a new tab");
- check_rename = gtk_check_button_new_with_mnemonic("R_ename file");
+ check_open_new_tab = gtk_check_button_new_with_mnemonic(_("_Open file in a new tab"));
+ gtk_tooltips_set_tip(tooltips, check_open_new_tab,
+ _("Keep the current unsaved document open"
+ " and open the newly saved file in a new tab."), NULL);
gtk_box_pack_start(GTK_BOX(vbox), check_open_new_tab, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), check_rename, FALSE, TRUE, 0);
gtk_widget_show_all(vbox);
gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(app->save_filesel), vbox);
g_signal_connect(check_open_new_tab, "toggled",
- G_CALLBACK(on_save_as_new_tab_toggled), check_rename);
+ G_CALLBACK(on_save_as_new_tab_toggled), rename_btn);
- g_signal_connect(check_rename, "toggled",
- G_CALLBACK(on_save_as_new_tab_toggled), check_open_new_tab);
-
g_object_set_data_full(G_OBJECT(app->save_filesel), "check_open_new_tab",
gtk_widget_ref(check_open_new_tab), (GDestroyNotify) gtk_widget_unref);
- g_object_set_data_full(G_OBJECT(app->save_filesel), "check_rename",
- gtk_widget_ref(check_rename), (GDestroyNotify) gtk_widget_unref);
g_signal_connect((gpointer) app->save_filesel, "delete_event",
G_CALLBACK(gtk_widget_hide_on_delete), NULL);
@@ -1144,6 +1151,6 @@
static void on_save_as_new_tab_toggled(GtkToggleButton *togglebutton, gpointer user_data)
{
- if (gtk_toggle_button_get_active(togglebutton))
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user_data), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(user_data),
+ ! gtk_toggle_button_get_active(togglebutton));
}
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