From 9e44ef5c02fb6e4e5dc0ec5bac9c28cf1d13356d Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Fri, 11 Mar 2022 15:04:53 +0800 Subject: [PATCH] Add hook to stock transaction GtkAssistant --- gnucash/gnome/gnc-plugin-page-register.c | 44 ++++++++++++++++++++++ gnucash/ui/gnc-plugin-page-register-ui.xml | 1 + 2 files changed, 45 insertions(+) diff --git a/gnucash/gnome/gnc-plugin-page-register.c b/gnucash/gnome/gnc-plugin-page-register.c index 80221d19e2..ccdaeb4a35 100644 --- a/gnucash/gnome/gnc-plugin-page-register.c +++ b/gnucash/gnome/gnc-plugin-page-register.c @@ -59,6 +59,7 @@ #include "dialog-transfer.h" #include "dialog-utils.h" #include "assistant-stock-split.h" +#include "assistant-stock-transaction.h" #include "gnc-component-manager.h" #include "gnc-date.h" #include "gnc-date-edit.h" @@ -218,6 +219,9 @@ static void gnc_plugin_page_register_cmd_style_double_line ( static void gnc_plugin_page_register_cmd_reconcile (GtkAction* action, GncPluginPageRegister* plugin_page); +static void gnc_plugin_page_register_cmd_stock_assistant (GtkAction* action, + GncPluginPageRegister* page); + static void gnc_plugin_page_register_cmd_autoclear (GtkAction* action, GncPluginPageRegister* plugin_page); static void gnc_plugin_page_register_cmd_transfer (GtkAction* action, @@ -481,6 +485,11 @@ static GtkActionEntry gnc_plugin_page_register_actions [] = N_ ("Automatically clear individual transactions, so as to reach a certain cleared amount"), G_CALLBACK (gnc_plugin_page_register_cmd_autoclear) }, + { + "ActionsStockAssistantAction", NULL, N_ ("Stock Ass_istant"), NULL, + N_ ("Stock Assistant"), + G_CALLBACK (gnc_plugin_page_register_cmd_stock_assistant) + }, { "ActionsStockSplitAction", NULL, N_ ("Stoc_k Split..."), NULL, N_ ("Record a stock split or a stock merger"), @@ -614,6 +623,18 @@ static const gchar* view_style_actions[] = NULL }; +static const gchar* actions_requiring_extra[] = +{ + "ActionsStockAssistantAction", + NULL +}; + +static const gchar* actions_requiring_priced_account[] = +{ + "ActionsStockAssistantAction", + NULL +}; + /** Short labels for use on the toolbar buttons. */ static action_toolbar_labels toolbar_labels[] = { @@ -1267,6 +1288,12 @@ gnc_plugin_page_register_ui_initial_state (GncPluginPageRegister* page) gnc_plugin_update_actions (action_group, actions_requiring_account, "sensitive", is_readwrite && account != NULL); + gnc_plugin_update_actions (action_group, actions_requiring_extra, + "visible", gnc_prefs_is_extra_enabled ()); + + gnc_plugin_update_actions (action_group, actions_requiring_priced_account, + "sensitive", xaccAccountIsPriced (account)); + /* Set "style" radio button */ ledger_type = gnc_ledger_display_type (priv->ledger); gnc_plugin_update_actions (action_group, view_style_actions, @@ -4539,6 +4566,23 @@ gnc_plugin_page_register_cmd_reconcile (GtkAction* action, LEAVE (" "); } +static void +gnc_plugin_page_register_cmd_stock_assistant (GtkAction* action, + GncPluginPageRegister* page) +{ + Account *account; + GtkWindow *window; + + ENTER ("(action %p, plugin_page %p)", action, page); + + g_return_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (page)); + window = gnc_window_get_gtk_window (GNC_WINDOW (GNC_PLUGIN_PAGE (page)->window)); + account = gnc_plugin_page_register_get_account (page); + gnc_stock_transaction_assistant (GTK_WIDGET (window), account); + + LEAVE (" "); +} + static void gnc_plugin_page_register_cmd_autoclear (GtkAction* action, GncPluginPageRegister* page) diff --git a/gnucash/ui/gnc-plugin-page-register-ui.xml b/gnucash/ui/gnc-plugin-page-register-ui.xml index 5a240a5b22..ab1405a7f9 100644 --- a/gnucash/ui/gnc-plugin-page-register-ui.xml +++ b/gnucash/ui/gnc-plugin-page-register-ui.xml @@ -46,6 +46,7 @@ +