36#include <glib/gi18n.h>
41#include "gnc-component-manager.h"
43#include "dialog-doclink.h"
46#include "dialog-fincalc.h"
47#include "dialog-find-transactions.h"
48#include "dialog-imap-editor.h"
49#include "dialog-sx-since-last-run.h"
50#include "dialog-totd.h"
51#include "assistant-acct-period.h"
52#include "assistant-loan.h"
55#include "gnc-gui-query.h"
59#include "gnc-session.h"
60#include "gnc-plugin-page-sx-list.h"
64G_GNUC_UNUSED
static QofLogModule log_module = GNC_MOD_GUI;
66static void gnc_plugin_basic_commands_finalize (GObject *
object);
68static void gnc_plugin_basic_commands_add_to_window (GncPlugin *plugin, GncMainWindow *window, GQuark type);
69static void gnc_plugin_basic_commands_main_window_page_changed(GncMainWindow *window,
GncPluginPage *page, gpointer user_data);
72static void gnc_main_window_cmd_file_new (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
73static void gnc_main_window_cmd_file_open (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
74static void gnc_main_window_cmd_file_save (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
75static void gnc_main_window_cmd_file_save_as (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
76static void gnc_main_window_cmd_file_revert (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
77static void gnc_main_window_cmd_file_export_accounts (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
78static void gnc_main_window_cmd_edit_tax_options (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
79static void gnc_main_window_cmd_actions_mortgage_loan (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
80static void gnc_main_window_cmd_actions_scheduled_transaction_editor (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
81static void gnc_main_window_cmd_actions_since_last_run (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
83#if CLOSE_BOOKS_ACTUALLY_WORKS
84static void gnc_main_window_cmd_actions_close_books (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
87static void gnc_main_window_cmd_tools_financial_calculator (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
88static void gnc_main_window_cmd_tools_close_book (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
89static void gnc_main_window_cmd_tools_find_transactions (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
90static void gnc_main_window_cmd_tools_price_editor (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
91static void gnc_main_window_cmd_tools_imap_editor (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
92static void gnc_main_window_cmd_tools_trans_doclink (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
93static void gnc_main_window_cmd_tools_commodity_editor (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
94static void gnc_main_window_cmd_help_totd (GSimpleAction *simple, GVariant *parameter, gpointer user_data);
98#define PLUGIN_ACTIONS_NAME "gnc-plugin-basic-commands-actions"
99#define PLUGIN_UI_FILENAME "gnc-plugin-basic-commands.ui"
103static GActionEntry gnc_plugin_actions [] =
105 {
"FileNewAction", gnc_main_window_cmd_file_new, NULL, NULL, NULL },
106 {
"FileOpenAction", gnc_main_window_cmd_file_open, NULL, NULL, NULL },
107 {
"FileSaveAction", gnc_main_window_cmd_file_save, NULL, NULL, NULL },
108 {
"FileSaveAsAction", gnc_main_window_cmd_file_save_as, NULL, NULL, NULL },
109 {
"FileRevertAction", gnc_main_window_cmd_file_revert, NULL, NULL, NULL },
110 {
"FileExportAccountsAction", gnc_main_window_cmd_file_export_accounts, NULL, NULL, NULL },
111 {
"EditFindTransactionsAction", gnc_main_window_cmd_tools_find_transactions, NULL, NULL, NULL },
112 {
"EditTaxOptionsAction", gnc_main_window_cmd_edit_tax_options, NULL, NULL, NULL },
113 {
"ActionsScheduledTransactionsAction", NULL, NULL, NULL, NULL },
114 {
"ActionsScheduledTransactionEditorAction", gnc_main_window_cmd_actions_scheduled_transaction_editor, NULL, NULL, NULL },
115 {
"ActionsSinceLastRunAction", gnc_main_window_cmd_actions_since_last_run, NULL, NULL, NULL },
116 {
"ActionsMortgageLoanAction", gnc_main_window_cmd_actions_mortgage_loan, NULL, NULL, NULL },
117 {
"ActionsBudgetAction", NULL, NULL, NULL, NULL },
118#ifdef CLOSE_BOOKS_ACTUALLY_WORKS
119 {
"ActionsCloseBooksAction", gnc_main_window_cmd_actions_close_books, NULL, NULL, NULL },
121 {
"ToolsPriceEditorAction", gnc_main_window_cmd_tools_price_editor, NULL, NULL, NULL },
122 {
"ToolsCommodityEditorAction", gnc_main_window_cmd_tools_commodity_editor, NULL, NULL, NULL },
123 {
"ToolsFinancialCalculatorAction", gnc_main_window_cmd_tools_financial_calculator, NULL, NULL, NULL },
124 {
"ToolsBookCloseAction", gnc_main_window_cmd_tools_close_book, NULL, NULL, NULL },
125 {
"ToolsImapEditorAction", gnc_main_window_cmd_tools_imap_editor, NULL, NULL, NULL },
126 {
"ToolsTransLinkedDocsAction", gnc_main_window_cmd_tools_trans_doclink, NULL, NULL, NULL },
127 {
"HelpTipsOfTheDayAction", gnc_main_window_cmd_help_totd, NULL, NULL, NULL },
130static guint gnc_plugin_n_actions = G_N_ELEMENTS(gnc_plugin_actions);
133static const gchar *gnc_plugin_load_ui_items [] =
141 "ActionsPlaceholder2",
149static const gchar *gnc_plugin_initially_insensitive_actions[] =
159static const gchar *readwrite_only_active_actions[] =
161 "ToolsBookCloseAction",
171static const gchar *dirty_only_active_actions[] =
189 GncPluginBasicCommands *plugin;
195 plugin = g_object_new (GNC_TYPE_PLUGIN_BASIC_COMMANDS, NULL);
197 return GNC_PLUGIN (plugin);
215gnc_plugin_basic_commands_add_to_window (GncPlugin *plugin,
216 GncMainWindow *window,
219 GSimpleActionGroup *simple_action_group =
223 gnc_plugin_initially_insensitive_actions,
226 g_signal_connect (window,
"page_changed",
227 G_CALLBACK(gnc_plugin_basic_commands_main_window_page_changed),
233static void update_inactive_actions (
GncPluginPage *plugin_page)
235 GncMainWindow *window;
236 GSimpleActionGroup *simple_action_group;
243 if (!plugin_page || !GNC_IS_PLUGIN_PAGE(plugin_page))
246 window = GNC_MAIN_WINDOW(plugin_page->
window);
247 g_return_if_fail(GNC_IS_MAIN_WINDOW(window));
249 g_return_if_fail (G_IS_SIMPLE_ACTION_GROUP(simple_action_group));
259gnc_plugin_basic_commands_main_window_page_changed (GncMainWindow *window,
267 update_inactive_actions (plugin_page);
271G_DEFINE_TYPE(GncPluginBasicCommands, gnc_plugin_basic_commands, GNC_TYPE_PLUGIN)
281gnc_plugin_basic_commands_class_init (GncPluginBasicCommandsClass *klass)
283 GObjectClass *object_class = G_OBJECT_CLASS (klass);
284 GncPluginClass *plugin_class = GNC_PLUGIN_CLASS (klass);
286 object_class->finalize = gnc_plugin_basic_commands_finalize;
289 plugin_class->plugin_name = GNC_PLUGIN_BASIC_COMMANDS_NAME;
292 plugin_class->add_to_window = gnc_plugin_basic_commands_add_to_window;
295 plugin_class->actions_name = PLUGIN_ACTIONS_NAME;
296 plugin_class->actions = gnc_plugin_actions;
297 plugin_class->n_actions = gnc_plugin_n_actions;
298 plugin_class->ui_filename = PLUGIN_UI_FILENAME;
299 plugin_class->ui_updates = gnc_plugin_load_ui_items;
309gnc_plugin_basic_commands_init (GncPluginBasicCommands *plugin)
323gnc_plugin_basic_commands_finalize (GObject *
object)
325 g_return_if_fail (GNC_IS_PLUGIN_BASIC_COMMANDS(
object));
327 G_OBJECT_CLASS(gnc_plugin_basic_commands_parent_class)->finalize (
object);
335gnc_main_window_cmd_file_new (GSimpleAction *simple,
344 gnc_file_new (GTK_WINDOW(data->window));
348gnc_main_window_cmd_file_open (GSimpleAction *simple,
354 g_return_if_fail (data != NULL);
363 gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
365 gnc_ui_file_access_for_open (GTK_WINDOW(data->window));
367 gnc_file_open (GTK_WINDOW(data->window));
369 gnc_window_set_progressbar_window (NULL);
373gnc_main_window_cmd_file_save (GSimpleAction *simple,
379 g_return_if_fail (data != NULL);
382 gnc_file_save_in_progress())
385 gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
386 gnc_file_save (GTK_WINDOW(data->window));
387 gnc_window_set_progressbar_window (NULL);
391gnc_main_window_cmd_file_save_as (GSimpleAction *simple,
397 g_return_if_fail (data != NULL);
400 gnc_file_save_in_progress())
403 gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
405 gnc_ui_file_access_for_save_as (GTK_WINDOW(data->window));
407 gnc_file_save_as (GTK_WINDOW(data->window));
409 gnc_window_set_progressbar_window (NULL);
413gnc_main_window_cmd_file_revert (GSimpleAction *simple,
419 g_return_if_fail (data != NULL);
424 gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
425 gnc_file_revert (GTK_WINDOW(data->window));
426 gnc_window_set_progressbar_window (NULL);
430gnc_main_window_cmd_file_export_accounts (GSimpleAction *simple,
436 g_return_if_fail (data != NULL);
438 gnc_window_set_progressbar_window (GNC_WINDOW(data->window));
440 gnc_ui_file_access_for_export (GTK_WINDOW(data->window));
442 gnc_file_export (GTK_WINDOW(data->window));
444 gnc_window_set_progressbar_window (NULL);
448gnc_main_window_cmd_edit_tax_options (GSimpleAction *simple,
454 g_return_if_fail (data != NULL);
456 gnc_tax_info_dialog (GTK_WIDGET(data->window), NULL);
460gnc_main_window_cmd_actions_scheduled_transaction_editor (GSimpleAction *simple,
469gnc_main_window_cmd_actions_since_last_run (GSimpleAction *simple,
475 g_return_if_fail (data != NULL);
477 gnc_ui_sx_since_last_run_dialog (gnc_sx_get_current_instances ());
481gnc_main_window_cmd_actions_mortgage_loan (GSimpleAction *simple,
485 gnc_ui_sx_loan_assistant_create ();
487#ifdef CLOSE_BOOKS_ACTUALLY_WORKS
489gnc_main_window_cmd_actions_close_books (GSimpleAction *simple,
494 gnc_acct_period_dialog ();
499gnc_main_window_cmd_tools_imap_editor (GSimpleAction *simple,
504 gnc_set_busy_cursor (NULL, TRUE);
505 gnc_imap_dialog (GTK_WIDGET(data->window));
506 gnc_unset_busy_cursor (NULL);
510gnc_main_window_cmd_tools_trans_doclink (GSimpleAction *simple,
515 gnc_set_busy_cursor (NULL, TRUE);
516 gnc_doclink_trans_dialog (GTK_WINDOW(data->window));
517 gnc_unset_busy_cursor (NULL);
521gnc_main_window_cmd_tools_price_editor (GSimpleAction *simple,
526 gnc_set_busy_cursor (NULL, TRUE);
527 gnc_prices_dialog (GTK_WIDGET(data->window));
528 gnc_unset_busy_cursor (NULL);
532gnc_main_window_cmd_tools_commodity_editor (GSimpleAction *simple,
537 gnc_set_busy_cursor (NULL, TRUE);
538 gnc_commodities_dialog (GTK_WIDGET(data->window));
539 gnc_unset_busy_cursor (NULL);
543gnc_main_window_cmd_tools_financial_calculator (GSimpleAction *simple,
548 gnc_ui_fincalc_dialog_create (GTK_WINDOW(data->window));
552gnc_main_window_cmd_tools_close_book (GSimpleAction *simple,
561gnc_main_window_cmd_tools_find_transactions (GSimpleAction *simple,
567 gnc_ui_find_transactions_dialog_create (GTK_WINDOW(data->window), NULL);
571gnc_main_window_cmd_help_totd (GSimpleAction *simple,
577 g_return_if_fail (data != NULL);
579 gnc_totd_dialog (GTK_WINDOW(data->window), FALSE);
This file contains the functions to present a GUI to select a book closing date and accounts into whi...
This file contains the functions to present a GUI to select a file or a database connection.
All type declarations for the whole Gnucash engine.
Functions for adding content to a window.
Functions providing a basic set of menu items.
Functions providing the file history menu.
utility functions for the GnuCash UI
Functions that are supported by all types of windows.
gboolean qof_book_session_not_saved(const QofBook *book)
qof_book_not_saved() returns the value of the session_dirty flag, set when changes to any object in t...
gboolean qof_book_is_readonly(const QofBook *book)
Return whether the book is read only.
void gnc_account_reset_convert_bayes_to_flat(void)
Reset the flag that indicates the function imap_convert_bayes_to_flat has been run.
void gnc_ui_close_book(QofBook *book, GtkWindow *parent)
Create and run the dialog to close the book.
gboolean gnc_main_window_all_finish_pending(void)
Tell all pages in all windows to finish any outstanding activities.
GSimpleActionGroup * gnc_main_window_get_action_group(GncMainWindow *window, const gchar *group_name)
Retrieve a specific set of user interface actions from a window.
void gnc_main_window_open_page(GncMainWindow *window, GncPluginPage *page)
Display a data plugin page in a window.
GncPlugin * gnc_plugin_basic_commands_new(void)
Create a new basic commands menu plugin.
#define GNC_TYPE_PLUGIN_PAGE_SX_LIST
Functions providing a list of scheduled transactions as a plugin page.
GncPluginPage * gnc_plugin_page_sx_list_new(void)
The instance data structure for a content plugin.
GtkWidget * window
The window that contains the display widget for this plugin.
The instance data structure for an basic commands menu plugin.
GncPlugin gnc_plugin
The parent object for this widget.