mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Serialize access to the "Save" and "Save As" commands. Fixes 148905.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13732 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
73e481da0c
commit
79c0b4f77d
@ -1,5 +1,9 @@
|
|||||||
2006-04-03 David Hampton <hampton@employees.org>
|
2006-04-03 David Hampton <hampton@employees.org>
|
||||||
|
|
||||||
|
* src/gnome-utils/gnc-main-window.[ch]:
|
||||||
|
* src/gnome/gnc-plugin-basic-commands.c: Serialize access to the
|
||||||
|
"Save" and "Save As" commands. Fixes 148905.
|
||||||
|
|
||||||
* src/backend/file/sixtp-dom-generators.c:
|
* src/backend/file/sixtp-dom-generators.c:
|
||||||
* src/backend/file/gnc-commodity-xml-v2.c:
|
* src/backend/file/gnc-commodity-xml-v2.c:
|
||||||
* src/gnome-utils/dialog-commodity.c:
|
* src/gnome-utils/dialog-commodity.c:
|
||||||
|
@ -3509,5 +3509,18 @@ gnc_gtk_action_group_set_translation_domain (GtkActionGroup *action_group,
|
|||||||
}
|
}
|
||||||
/* CS: End of code copied from gtk/gtkactiongroup.c */
|
/* CS: End of code copied from gtk/gtkactiongroup.c */
|
||||||
|
|
||||||
|
void
|
||||||
|
gnc_main_window_all_action_set_sensitive (const gchar *action_name,
|
||||||
|
gboolean sensitive)
|
||||||
|
{
|
||||||
|
GList *tmp;
|
||||||
|
GtkAction *action;
|
||||||
|
|
||||||
|
for (tmp = active_windows; tmp; tmp = g_list_next(tmp)) {
|
||||||
|
action = gnc_main_window_find_action (tmp->data, action_name);
|
||||||
|
gtk_action_set_sensitive (action, sensitive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -340,6 +340,16 @@ gboolean gnc_main_window_finish_pending (GncMainWindow *window);
|
|||||||
* should cancel the pending operation. TRUE otherwise */
|
* should cancel the pending operation. TRUE otherwise */
|
||||||
gboolean gnc_main_window_all_finish_pending (void);
|
gboolean gnc_main_window_all_finish_pending (void);
|
||||||
|
|
||||||
|
/** Change the sensitivity of a command in all windows. This can be
|
||||||
|
* used to serialize access to a command so that in cannot be
|
||||||
|
* reinvoked until the current invocation is finished.
|
||||||
|
*
|
||||||
|
* @param action_name The name of the command to modity.
|
||||||
|
*
|
||||||
|
* @param sensitive Whether or not the user should be able to invoke
|
||||||
|
* this action. */
|
||||||
|
void gnc_main_window_all_action_set_sensitive (const gchar *action_name, gboolean sensitive);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GNC_MAIN_WINDOW_H */
|
#endif /* __GNC_MAIN_WINDOW_H */
|
||||||
|
@ -295,6 +295,13 @@ gnc_plugin_basic_commands_finalize (GObject *object)
|
|||||||
* Command Callbacks *
|
* Command Callbacks *
|
||||||
************************************************************/
|
************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
save_allowed (gboolean allowed)
|
||||||
|
{
|
||||||
|
gnc_main_window_all_action_set_sensitive("FileSaveAction", allowed);
|
||||||
|
gnc_main_window_all_action_set_sensitive("FileSaveAsAction", allowed);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnc_main_window_cmd_file_new (GtkAction *action, GncMainWindowActionData *data)
|
gnc_main_window_cmd_file_new (GtkAction *action, GncMainWindowActionData *data)
|
||||||
{
|
{
|
||||||
@ -321,7 +328,9 @@ gnc_main_window_cmd_file_save (GtkAction *action, GncMainWindowActionData *data)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
|
gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
|
||||||
|
save_allowed(FALSE);
|
||||||
gnc_file_save ();
|
gnc_file_save ();
|
||||||
|
save_allowed(TRUE);
|
||||||
gnc_window_set_progressbar_window (NULL);
|
gnc_window_set_progressbar_window (NULL);
|
||||||
/* FIXME GNOME 2 Port (update the title etc.) */
|
/* FIXME GNOME 2 Port (update the title etc.) */
|
||||||
}
|
}
|
||||||
@ -335,7 +344,9 @@ gnc_main_window_cmd_file_save_as (GtkAction *action, GncMainWindowActionData *da
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
|
gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
|
||||||
|
save_allowed(FALSE);
|
||||||
gnc_file_save_as ();
|
gnc_file_save_as ();
|
||||||
|
save_allowed(TRUE);
|
||||||
gnc_window_set_progressbar_window (NULL);
|
gnc_window_set_progressbar_window (NULL);
|
||||||
/* FIXME GNOME 2 Port (update the title etc.) */
|
/* FIXME GNOME 2 Port (update the title etc.) */
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user