From 9c4f76d5ff83e8fd0a003ee1278ecb3e8be1bcfa Mon Sep 17 00:00:00 2001 From: Mike Evans Date: Sat, 23 Jun 2012 12:25:22 +0000 Subject: [PATCH] Bug #666576 - Balance Column Set Too Narrow git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@22234 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/business/business-gnome/dialog-invoice.c | 2 +- src/business/business-gnome/dialog-order.c | 2 +- src/gnome/gnc-split-reg.c | 24 +++++++++++--- src/register/register-core/table-allgui.h | 4 +-- src/register/register-gnome/table-gnome.c | 35 +++++++++++++++----- 5 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/business/business-gnome/dialog-invoice.c b/src/business/business-gnome/dialog-invoice.c index 812b93c4ce..9c6b5233b3 100644 --- a/src/business/business-gnome/dialog-invoice.c +++ b/src/business/business-gnome/dialog-invoice.c @@ -2285,7 +2285,7 @@ gnc_invoice_create_page (InvoiceWindow *iw, gpointer page) regWidget = gnucash_register_new (gnc_entry_ledger_get_table (entry_ledger)); gtk_widget_show(regWidget); - gnc_table_init_gui( regWidget, entry_ledger ); + gnc_table_init_gui( regWidget, NULL); frame = GTK_WIDGET (gtk_builder_get_object (builder, "ledger_frame")); gtk_container_add (GTK_CONTAINER (frame), regWidget); diff --git a/src/business/business-gnome/dialog-order.c b/src/business/business-gnome/dialog-order.c index f78f5272de..19c6502ea2 100644 --- a/src/business/business-gnome/dialog-order.c +++ b/src/business/business-gnome/dialog-order.c @@ -640,7 +640,7 @@ gnc_order_new_window (QofBook *bookp, OrderDialogType type, /* Watch the order of operations, here... */ regWidget = gnucash_register_new (gnc_entry_ledger_get_table (entry_ledger)); - gnc_table_init_gui( regWidget, entry_ledger ); + gnc_table_init_gui( regWidget, NULL); ow->reg = GNUCASH_REGISTER (regWidget); GNUCASH_SHEET (ow->reg->sheet)->window = GTK_WIDGET(ow->dialog); gnc_entry_ledger_set_parent (entry_ledger, ow->dialog); diff --git a/src/gnome/gnc-split-reg.c b/src/gnome/gnc-split-reg.c index 28dba9cc0a..718828df38 100644 --- a/src/gnome/gnc-split-reg.c +++ b/src/gnome/gnc-split-reg.c @@ -388,6 +388,14 @@ gsr_create_table( GNCSplitReg *gsr ) GtkWidget *register_widget; SplitRegister *sr; + gchar *gconf_key; + const GncGUID * guid; + Account * account; + + account = gnc_ledger_display_leader(gsr->ledger); + guid = xaccAccountGetGUID(account); + gconf_key = (gchar*)guid_to_string (guid); + ENTER("gsr=%p", gsr); gnc_ledger_display_set_user_data( gsr->ledger, (gpointer)gsr ); @@ -399,8 +407,7 @@ gsr_create_table( GNCSplitReg *gsr ) sr = gnc_ledger_display_get_split_register( gsr->ledger ); register_widget = gnucash_register_new( sr->table ); gsr->reg = GNUCASH_REGISTER( register_widget ); - gnc_table_init_gui( GTK_WIDGET(gsr->reg), sr ); - + gnc_table_init_gui( GTK_WIDGET(gsr->reg), gconf_key ); gtk_box_pack_start (GTK_BOX (gsr), GTK_WIDGET(gsr->reg), TRUE, TRUE, 0); GNUCASH_SHEET(gsr->reg->sheet)->window = gsr->window; gtk_widget_show ( GTK_WIDGET(gsr->reg) ); @@ -696,7 +703,16 @@ static void gnc_split_reg_ld_destroy( GNCLedgerDisplay *ledger ) { GNCSplitReg *gsr = gnc_ledger_display_get_user_data( ledger ); - + + gchar *gconf_key; + const GncGUID * guid; + Account * account; + + account = gnc_ledger_display_leader(ledger); + guid = xaccAccountGetGUID(account); + gconf_key = (gchar*)guid_to_string (guid); + + if (gsr) { SplitRegister *reg; @@ -704,7 +720,7 @@ gnc_split_reg_ld_destroy( GNCLedgerDisplay *ledger ) reg = gnc_ledger_display_get_split_register (ledger); if (reg && reg->table) - gnc_table_save_state (reg->table); + gnc_table_save_state (reg->table, gconf_key); /* * Don't destroy the window here any more. The register no longer diff --git a/src/register/register-core/table-allgui.h b/src/register/register-core/table-allgui.h index 9f97274867..b6d23e97ee 100644 --- a/src/register/register-core/table-allgui.h +++ b/src/register/register-core/table-allgui.h @@ -166,7 +166,7 @@ Table * gnc_table_new (TableLayout *layout, TableControl *control); void gnc_virtual_location_init (VirtualLocation *vloc); -void gnc_table_save_state (Table *table); +void gnc_table_save_state (Table *table, gchar *gconf_key); void gnc_table_destroy (Table *table); @@ -303,7 +303,7 @@ gboolean gnc_table_find_close_valid_cell (Table *table, /** UI-specific functions *******************************/ /* Initialize the GUI from a table */ -void gnc_table_init_gui (GtkWidget *widget, gpointer data); +void gnc_table_init_gui (GtkWidget *widget, gchar * gconf_key); void gnc_table_realize_gui (Table *table); diff --git a/src/register/register-gnome/table-gnome.c b/src/register/register-gnome/table-gnome.c index c539e6f0cb..a0716c536a 100644 --- a/src/register/register-gnome/table-gnome.c +++ b/src/register/register-gnome/table-gnome.c @@ -53,6 +53,8 @@ #include "gnc-gconf-utils.h" #include "gnc-engine.h" +#include "gnc-ledger-display.h" + #define GCONF_SECTION "window/pages/register" @@ -65,13 +67,17 @@ static QofLogModule log_module = GNC_MOD_REGISTER; /** Implementation *****************************************************/ void -gnc_table_save_state (Table *table) +gnc_table_save_state (Table *table, gchar * gconf_key) { GnucashSheet *sheet; GNCHeaderWidths widths; GList *node; gchar *key; - + + gchar * gconf_section; + if(gconf_key != NULL)gconf_section = g_strjoin(NULL,GCONF_SECTION, "/", gconf_key,NULL); + PINFO("gconf_key=%s",gconf_key ); + if (!table) return; @@ -102,7 +108,7 @@ gnc_table_save_state (Table *table) /* Remember whether the column is visible */ key = g_strdup_printf("%s_width", cell->cell_name); - gnc_gconf_set_int(GCONF_SECTION, key, width, NULL); + gnc_gconf_set_int( gconf_section, key, width, NULL); g_free(key); } @@ -147,8 +153,13 @@ table_destroy_cb (Table *table) /* Um, this function checks that data is not null but never uses it. Weird. Also, since this function only works with a GnucashRegister widget, maybe some of it should be moved to gnucash-sheet.c. */ +/* Adding to previous note: Since data doesn't appear do anything and to + align the function with save_state() I've removed the check for + NULL and changed two calls in dialog_order.c and dialog_invoice.c + to pass NULL as second parameter. */ + void -gnc_table_init_gui (GtkWidget *widget, void *data) +gnc_table_init_gui (GtkWidget *widget, gchar * gconf_key) { GNCHeaderWidths widths; GnucashSheet *sheet; @@ -157,12 +168,18 @@ gnc_table_init_gui (GtkWidget *widget, void *data) GList *node; gchar *key; guint value; - + + // Stuff for per-register settings load. + gchar * gconf_section; + if(gconf_key != NULL) gconf_section =g_strjoin(NULL,GCONF_SECTION, "/", gconf_key,NULL); + g_return_if_fail (widget != NULL); g_return_if_fail (GNUCASH_IS_REGISTER (widget)); - g_return_if_fail (data != NULL); - - ENTER("widget=%p, data=%p", widget, data); + + PINFO("gconf_key=%s",gconf_key); + + ENTER("widget=%p, data=%p", widget, ""); + greg = GNUCASH_REGISTER (widget); sheet = GNUCASH_SHEET (greg->sheet); @@ -190,7 +207,7 @@ gnc_table_init_gui (GtkWidget *widget, void *data) /* Remember whether the column is visible */ key = g_strdup_printf("%s_width", cell->cell_name); - value = gnc_gconf_get_int(GCONF_SECTION, key, NULL); + value = gnc_gconf_get_int(gconf_section, key, NULL); if (value != 0) gnc_header_widths_set_width (widths, cell->cell_name, value); g_free(key);