From 039b650fe40706b772ede20e3442590b92fd78bb Mon Sep 17 00:00:00 2001 From: David Hampton Date: Sat, 13 Sep 2003 20:15:55 +0000 Subject: [PATCH] Tweak the plugin page functions for more flexibility. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/branches/gnucash-gnome2-dev@9300 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/gnome/gnc-main-window.c | 11 +++-- src/gnome/gnc-plugin-page-account-tree.c | 20 +++++--- src/gnome/gnc-plugin-page-register.c | 61 +++++++++++++++++++++--- src/gnome/gnc-plugin-page-register.h | 1 + src/gnome/gnc-plugin-page.c | 19 ++++++-- src/gnome/gnc-plugin-page.h | 10 ++-- 6 files changed, 95 insertions(+), 27 deletions(-) diff --git a/src/gnome/gnc-main-window.c b/src/gnome/gnc-main-window.c index e92defdeb5..f5b432e6d0 100644 --- a/src/gnome/gnc-main-window.c +++ b/src/gnome/gnc-main-window.c @@ -291,7 +291,7 @@ gnc_main_window_open_page (GncMainWindow *window, GtkWidget *label_box; GtkWidget *label; const gchar *icon; - const gchar *title; + gchar *tab_name; GtkWidget *image; /* gint pos;*/ @@ -300,12 +300,13 @@ gnc_main_window_open_page (GncMainWindow *window, child = gnc_plugin_page_create_widget (page); g_object_set_data (G_OBJECT (child), "page-plugin", page); + g_object_set_data (G_OBJECT (child), "window", window); - icon = gnc_plugin_page_get_icon (page); - title = gnc_plugin_page_get_title (page); - - label = gtk_label_new (title); + icon = gnc_plugin_page_get_tab_icon (page); + tab_name = gnc_plugin_page_get_tab_name (page); + label = gtk_label_new (tab_name); gtk_widget_show (label); + g_free(tab_name); if (icon != NULL) { /* FIXME */ diff --git a/src/gnome/gnc-plugin-page-account-tree.c b/src/gnome/gnc-plugin-page-account-tree.c index 4c1575cfe5..f11de8480e 100644 --- a/src/gnome/gnc-plugin-page-account-tree.c +++ b/src/gnome/gnc-plugin-page-account-tree.c @@ -71,8 +71,9 @@ static GtkWidget *gnc_plugin_page_account_tree_create_widget (GncPluginPage *plu static void gnc_plugin_page_account_tree_destroy_widget (GncPluginPage *plugin_page); static void gnc_plugin_page_account_tree_merge_actions (GncPluginPage *plugin_page, EggMenuMerge *ui_merge); static void gnc_plugin_page_account_tree_unmerge_actions (GncPluginPage *plugin_page, EggMenuMerge *ui_merge); -static G_CONST_RETURN gchar *gnc_plugin_page_account_tree_get_title (GncPluginPage *plugin_page); -static G_CONST_RETURN gchar *gnc_plugin_page_account_tree_get_icon (GncPluginPage *plugin_page); +static gchar *gnc_plugin_page_account_tree_get_title (GncPluginPage *plugin_page); +static gchar *gnc_plugin_page_account_tree_get_tab_name (GncPluginPage *plugin_page); +static G_CONST_RETURN gchar *gnc_plugin_page_account_tree_get_tab_icon (GncPluginPage *plugin_page); static G_CONST_RETURN gchar *gnc_plugin_page_account_tree_get_plugin_name (GncPluginPage *plugin_page); static G_CONST_RETURN gchar *gnc_plugin_page_account_tree_get_uri (GncPluginPage *plugin_page); @@ -432,7 +433,8 @@ gnc_plugin_page_account_tree_plugin_page_init (GncPluginPageIface *iface) iface->merge_actions = gnc_plugin_page_account_tree_merge_actions; iface->unmerge_actions = gnc_plugin_page_account_tree_unmerge_actions; iface->get_title = gnc_plugin_page_account_tree_get_title; - iface->get_icon = gnc_plugin_page_account_tree_get_icon; + iface->get_tab_name = gnc_plugin_page_account_tree_get_tab_name; + iface->get_tab_icon = gnc_plugin_page_account_tree_get_tab_icon; iface->get_plugin_name = gnc_plugin_page_account_tree_get_plugin_name; iface->get_uri = gnc_plugin_page_account_tree_get_uri; LEAVE(" "); @@ -542,14 +544,20 @@ gnc_plugin_page_account_tree_unmerge_actions (GncPluginPage *plugin_page, LEAVE(" "); } -static G_CONST_RETURN gchar * +static gchar * gnc_plugin_page_account_tree_get_title (GncPluginPage *plugin_page) { - return _("Accounts"); + return g_strdup(_("Accounts")); +} + +static gchar * +gnc_plugin_page_account_tree_get_tab_name (GncPluginPage *plugin_page) +{ + return g_strdup(_("Accounts")); } static G_CONST_RETURN gchar * -gnc_plugin_page_account_tree_get_icon (GncPluginPage *plugin_page) +gnc_plugin_page_account_tree_get_tab_icon (GncPluginPage *plugin_page) { return GNC_STOCK_ACCOUNT; } diff --git a/src/gnome/gnc-plugin-page-register.c b/src/gnome/gnc-plugin-page-register.c index 04bea09cb0..c1850d4471 100644 --- a/src/gnome/gnc-plugin-page-register.c +++ b/src/gnome/gnc-plugin-page-register.c @@ -29,6 +29,7 @@ #include #include "egg-action-group.h" #include "global-options.h" +#include "gnc-icons.h" #include "gnc-plugin-page-register.h" #include "gnc-plugin-register.h" #include "gnc-split-reg.h" @@ -47,8 +48,9 @@ static GtkWidget *gnc_plugin_page_register_create_widget (GncPluginPage *plugin_ static void gnc_plugin_page_register_destroy_widget (GncPluginPage *plugin_page); static void gnc_plugin_page_register_merge_actions (GncPluginPage *plugin_page, EggMenuMerge *ui_merge); static void gnc_plugin_page_register_unmerge_actions (GncPluginPage *plugin_page, EggMenuMerge *ui_merge); -static G_CONST_RETURN gchar *gnc_plugin_page_register_get_title (GncPluginPage *plugin_page); -static G_CONST_RETURN gchar *gnc_plugin_page_register_get_icon (GncPluginPage *plugin_page); +static gchar *gnc_plugin_page_register_get_title (GncPluginPage *plugin_page); +static gchar *gnc_plugin_page_register_get_tab_name (GncPluginPage *plugin_page); +static G_CONST_RETURN gchar *gnc_plugin_page_register_get_tab_icon (GncPluginPage *plugin_page); static G_CONST_RETURN gchar *gnc_plugin_page_register_get_plugin_name (GncPluginPage *plugin_page); static G_CONST_RETURN gchar *gnc_plugin_page_register_get_uri (GncPluginPage *plugin_page); @@ -243,7 +245,8 @@ gnc_plugin_page_register_plugin_page_init (GncPluginPageIface *iface) iface->merge_actions = gnc_plugin_page_register_merge_actions; iface->unmerge_actions = gnc_plugin_page_register_unmerge_actions; iface->get_title = gnc_plugin_page_register_get_title; - iface->get_icon = gnc_plugin_page_register_get_icon; + iface->get_tab_name = gnc_plugin_page_register_get_tab_name; + iface->get_tab_icon = gnc_plugin_page_register_get_tab_icon; iface->get_plugin_name = gnc_plugin_page_register_get_plugin_name; iface->get_uri = gnc_plugin_page_register_get_uri; } @@ -326,16 +329,60 @@ gnc_plugin_page_register_unmerge_actions (GncPluginPage *plugin_page, plugin_page_register->priv->ui_merge = NULL; } -static G_CONST_RETURN gchar * + +static gchar * gnc_plugin_page_register_get_title (GncPluginPage *plugin_page) { - return _("General Ledger"); + return g_strdup(_("General Ledger")); +} + + +static gchar * +gnc_plugin_page_register_get_tab_name (GncPluginPage *plugin_page) +{ + GNCLedgerDisplayType ledger_type; + GNCLedgerDisplay *ld; + SplitRegister *reg; + Account *leader; + + g_return_val_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (plugin_page), _("unknown")); + + ld = GNC_PLUGIN_PAGE_REGISTER (plugin_page)->priv->ld; + reg = gnc_ledger_display_get_split_register (ld); + ledger_type = gnc_ledger_display_type (ld); + leader = gnc_ledger_display_leader (ld); + + switch (ledger_type) { + case LD_SINGLE: + return g_strdup(xaccAccountGetName (leader)); + + case LD_SUBACCOUNT: + return g_strdup_printf("%s+", xaccAccountGetName (leader)); + + case LD_GL: + switch (reg->type) { + case GENERAL_LEDGER: + case INCOME_LEDGER: + return g_strdup(_("General Ledger")); + case PORTFOLIO_LEDGER: + return g_strdup(_("Portfolio")); + case SEARCH_LEDGER: + return g_strdup(_("Search Results")); + default: + break; + } + + default: + break; + } + + return g_strdup(_("unknown")); } static G_CONST_RETURN gchar * -gnc_plugin_page_register_get_icon (GncPluginPage *plugin_page) +gnc_plugin_page_register_get_tab_icon (GncPluginPage *plugin_page) { - return NULL; + return GNC_STOCK_ACCOUNT; } static G_CONST_RETURN gchar * diff --git a/src/gnome/gnc-plugin-page-register.h b/src/gnome/gnc-plugin-page-register.h index 4088b731ea..17ee18ac9c 100644 --- a/src/gnome/gnc-plugin-page-register.h +++ b/src/gnome/gnc-plugin-page-register.h @@ -27,6 +27,7 @@ #include +#include "Account.h" #include "gnc-plugin-page.h" #include "gnc-ledger-display.h" diff --git a/src/gnome/gnc-plugin-page.c b/src/gnome/gnc-plugin-page.c index 85b8488208..d714d0451f 100644 --- a/src/gnome/gnc-plugin-page.c +++ b/src/gnome/gnc-plugin-page.c @@ -116,7 +116,7 @@ gnc_plugin_page_unmerge_actions (GncPluginPage *plugin_page, GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->unmerge_actions (plugin_page, ui_merge); } -G_CONST_RETURN gchar * +gchar * gnc_plugin_page_get_title (GncPluginPage *plugin_page) { g_return_val_if_fail (GNC_IS_PLUGIN_PAGE (plugin_page), NULL); @@ -125,13 +125,22 @@ gnc_plugin_page_get_title (GncPluginPage *plugin_page) return GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->get_title (plugin_page); } -G_CONST_RETURN gchar * -gnc_plugin_page_get_icon (GncPluginPage *plugin_page) +gchar * +gnc_plugin_page_get_tab_name (GncPluginPage *plugin_page) { g_return_val_if_fail (GNC_IS_PLUGIN_PAGE (plugin_page), NULL); - g_return_val_if_fail (GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->get_icon != NULL, NULL); + g_return_val_if_fail (GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->get_tab_name != NULL, NULL); - return GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->get_icon (plugin_page); + return GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->get_tab_name (plugin_page); +} + +G_CONST_RETURN gchar * +gnc_plugin_page_get_tab_icon (GncPluginPage *plugin_page) +{ + g_return_val_if_fail (GNC_IS_PLUGIN_PAGE (plugin_page), NULL); + g_return_val_if_fail (GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->get_tab_icon != NULL, NULL); + + return GNC_PLUGIN_PAGE_GET_IFACE (plugin_page)->get_tab_icon (plugin_page); } G_CONST_RETURN gchar * diff --git a/src/gnome/gnc-plugin-page.h b/src/gnome/gnc-plugin-page.h index 0a0db19d1f..7e75dde33b 100644 --- a/src/gnome/gnc-plugin-page.h +++ b/src/gnome/gnc-plugin-page.h @@ -56,8 +56,9 @@ typedef struct { void (* merge_actions) (GncPluginPage *plugin_page, EggMenuMerge *merge); void (* unmerge_actions) (GncPluginPage *plugin_page, EggMenuMerge *merge); - G_CONST_RETURN gchar *(* get_title) (GncPluginPage *plugin_page); - G_CONST_RETURN gchar *(* get_icon) (GncPluginPage *plugin_page); + gchar *(* get_title) (GncPluginPage *plugin_page); + gchar *(* get_tab_name) (GncPluginPage *plugin_page); + G_CONST_RETURN gchar *(* get_tab_icon) (GncPluginPage *plugin_page); G_CONST_RETURN gchar *(* get_plugin_name) (GncPluginPage *plugin_page); G_CONST_RETURN gchar *(* get_uri) (GncPluginPage *plugin_page); @@ -74,8 +75,9 @@ void gnc_plugin_page_merge_actions (GncPluginPage *plugin_pag void gnc_plugin_page_unmerge_actions (GncPluginPage *plugin_page, EggMenuMerge *merge); -G_CONST_RETURN gchar *gnc_plugin_page_get_title (GncPluginPage *plugin_page); -G_CONST_RETURN gchar *gnc_plugin_page_get_icon (GncPluginPage *plugin_page); +gchar *gnc_plugin_page_get_title (GncPluginPage *plugin_page); +gchar *gnc_plugin_page_get_tab_name (GncPluginPage *plugin_page); +G_CONST_RETURN gchar *gnc_plugin_page_get_tab_icon (GncPluginPage *plugin_page); G_CONST_RETURN gchar *gnc_plugin_page_get_plugin_name (GncPluginPage *plugin_page); G_CONST_RETURN gchar *gnc_plugin_page_get_uri (GncPluginPage *plugin_page);