From 3eacb2c3c8d92d5f5cd871dade32f11f7f9e7138 Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Fri, 28 Oct 2011 12:26:58 +0000 Subject: [PATCH] Bug #420342 - remember register filter and ordering settings Patch by Robert Fewell git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@21499 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/engine/Account.c | 48 +++ src/engine/Account.h | 5 + src/gnome/gnc-plugin-page-register.c | 281 ++++++++++++++++-- .../gtkbuilder/gnc-plugin-page-register.glade | 115 +++++-- 4 files changed, 396 insertions(+), 53 deletions(-) diff --git a/src/engine/Account.c b/src/engine/Account.c index a2c0fec6d3..b900e992b3 100644 --- a/src/engine/Account.c +++ b/src/engine/Account.c @@ -85,6 +85,7 @@ enum PROP_HIDDEN, PROP_PLACEHOLDER, PROP_FILTER, + PROP_SORT_ORDER, }; typedef struct AccountPrivate @@ -439,6 +440,9 @@ gnc_account_get_property (GObject *object, case PROP_FILTER: g_value_set_string(value, xaccAccountGetFilter(account)); break; + case PROP_SORT_ORDER: + g_value_set_string(value, xaccAccountGetSortOrder(account)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -534,6 +538,9 @@ gnc_account_set_property (GObject *object, case PROP_FILTER: xaccAccountSetFilter(account, g_value_get_string(value)); break; + case PROP_SORT_ORDER: + xaccAccountSetSortOrder(account, g_value_get_string(value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -881,6 +888,16 @@ gnc_account_class_init (AccountClass *klass) "filters to be recalled.", NULL, G_PARAM_READWRITE)); + + g_object_class_install_property + (gobject_class, + PROP_SORT_ORDER, + g_param_spec_string ("sort-order", + "Account Sort Order", + "The account sort order is a value saved to allow " + "the sort order to be recalled.", + NULL, + G_PARAM_READWRITE)); } static void @@ -2237,6 +2254,26 @@ xaccAccountSetFilter (Account *acc, const char *str) xaccAccountCommitEdit(acc); } +void +xaccAccountSetSortOrder (Account *acc, const char *str) +{ + g_return_if_fail(GNC_IS_ACCOUNT(acc)); + + xaccAccountBeginEdit(acc); + if (str) + { + gchar *tmp = g_strstrip(g_strdup(str)); + kvp_frame_set_slot_nc(acc->inst.kvp_data, "sort-order", + strlen(tmp) ? kvp_value_new_string(tmp) : NULL); + g_free(tmp); + } + else + { + kvp_frame_set_slot_nc(acc->inst.kvp_data, "sort-order", NULL); + } + mark_account (acc); + xaccAccountCommitEdit(acc); +} static void qofAccountSetParent (Account *acc, QofInstance *parent) @@ -3025,6 +3062,12 @@ xaccAccountGetFilter (const Account *acc) return acc ? kvp_frame_get_string(acc->inst.kvp_data, "filter") : NULL; } +const char * +xaccAccountGetSortOrder (const Account *acc) +{ + g_return_val_if_fail(GNC_IS_ACCOUNT(acc), 0); + return acc ? kvp_frame_get_string(acc->inst.kvp_data, "sort-order") : NULL; +} const char * xaccAccountGetNotes (const Account *acc) @@ -4862,6 +4905,11 @@ gboolean xaccAccountRegister (void) (QofAccessFunc) xaccAccountGetFilter, (QofSetterFunc) xaccAccountSetFilter }, + { + ACCOUNT_SORT_ORDER_, QOF_TYPE_STRING, + (QofAccessFunc) xaccAccountGetSortOrder, + (QofSetterFunc) xaccAccountSetSortOrder + }, { ACCOUNT_NOTES_, QOF_TYPE_STRING, (QofAccessFunc) xaccAccountGetNotes, diff --git a/src/engine/Account.h b/src/engine/Account.h index 82f0207d95..7b0bc9c3f8 100644 --- a/src/engine/Account.h +++ b/src/engine/Account.h @@ -289,6 +289,8 @@ void xaccAccountSetDescription (Account *account, const char *desc); void xaccAccountSetColor (Account *account, const char *color); /** Set the account's Filter */ void xaccAccountSetFilter (Account *account, const char *filter); +/** Set the account's Sort Order */ +void xaccAccountSetSortOrder (Account *account, const char *sortorder); /** Set the account's notes */ void xaccAccountSetNotes (Account *account, const char *notes); /** Set the last num field of an Account */ @@ -388,6 +390,8 @@ const char * xaccAccountGetDescription (const Account *account); const char * xaccAccountGetColor (const Account *account); /** Get the account's filter */ const char * xaccAccountGetFilter (const Account *account); +/** Get the account's Sort Order */ +const char * xaccAccountGetSortOrder (const Account *account); /** Get the account's notes */ const char * xaccAccountGetNotes (const Account *account); /** Get the last num field of an Account */ @@ -1440,6 +1444,7 @@ const char * dxaccAccountGetQuoteTZ (const Account *account); #define ACCOUNT_DESCRIPTION_ "desc" #define ACCOUNT_COLOR_ "color" #define ACCOUNT_FILTER_ "filter" +#define ACCOUNT_SORT_ORDER_ "sort-order" #define ACCOUNT_NOTES_ "notes" #define ACCOUNT_BALANCE_ "balance" #define ACCOUNT_CLEARED_ "cleared" diff --git a/src/gnome/gnc-plugin-page-register.c b/src/gnome/gnc-plugin-page-register.c index f97cccec07..245694da54 100644 --- a/src/gnome/gnc-plugin-page-register.c +++ b/src/gnome/gnc-plugin-page-register.c @@ -104,6 +104,10 @@ static void gnc_plugin_page_register_summarybar_position_changed(GConfEntry *ent /* Callbacks for the "Sort By" dialog */ void gnc_plugin_page_register_sort_button_cb(GtkToggleButton *button, GncPluginPageRegister *page); void gnc_plugin_page_register_sort_response_cb(GtkDialog *dialog, gint response, GncPluginPageRegister *plugin_page); +void gnc_plugin_page_register_sort_order_save_cb(GtkToggleButton *button, GncPluginPageRegister *page); + +static gchar *gnc_plugin_page_register_get_sort_order (GncPluginPage *plugin_page); +void gnc_plugin_page_register_set_sort_order (GncPluginPage *plugin_page, const gchar *sort_order); /* Callbacks for the "Filter By" dialog */ void gnc_plugin_page_register_filter_select_range_cb(GtkRadioButton *button, GncPluginPageRegister *page); @@ -114,9 +118,13 @@ void gnc_plugin_page_register_filter_status_all_cb(GtkButton *button, GncPluginP void gnc_plugin_page_register_filter_status_one_cb(GtkToggleButton *button, GncPluginPageRegister *page); void gnc_plugin_page_register_filter_save_cb(GtkToggleButton *button, GncPluginPageRegister *page); +static time_t gnc_plugin_page_register_filter_dmy2time (char *date_string); +static gchar *gnc_plugin_page_register_filter_time2dmy (time_t raw_time); static gchar *gnc_plugin_page_register_get_filter (GncPluginPage *plugin_page); -void gnc_plugin_page_register_set_filter (GncPluginPage *plugin_page, const gchar *filter ); +void gnc_plugin_page_register_set_filter (GncPluginPage *plugin_page, const gchar *filter); + static void gnc_ppr_update_status_query (GncPluginPageRegister *page); +static void gnc_ppr_update_date_query (GncPluginPageRegister *page); /* Command callbacks */ static void gnc_plugin_page_register_cmd_print_check (GtkAction *action, GncPluginPageRegister *plugin_page); @@ -450,8 +458,10 @@ static struct status_action status_actions[] = { "filter_status_unreconciled", CLEARED_NO, NULL }, { NULL, 0, NULL }, }; + #define CLEARED_VALUE "cleared_value" #define DEFAULT_FILTER "0x001f" +#define DEFAULT_SORT_ORDER "BY_STANDARD" /************************************************************/ /* Data Structures */ @@ -475,6 +485,8 @@ typedef struct GncPluginPageRegisterPrivate { GtkWidget *dialog; SortType original_sort_type; + gboolean original_save_order; + gboolean save_order; } sd; struct @@ -493,7 +505,8 @@ typedef struct GncPluginPageRegisterPrivate time_t original_end_time; time_t start_time; time_t end_time; - gboolean save_it; + gboolean original_save_filter; + gboolean save_filter; } fd; } GncPluginPageRegisterPrivate; @@ -546,7 +559,6 @@ gnc_plugin_page_register_new_common (GNCLedgerDisplay *ledger) GList *book_list; gchar *label; gchar *label_color; - gchar *filter; QofQuery *q; /* Is there an existing page? */ @@ -581,10 +593,6 @@ gnc_plugin_page_register_new_common (GNCLedgerDisplay *ledger) gnc_plugin_page_set_page_long_name(plugin_page, label); g_free(label); - filter = gnc_plugin_page_register_get_filter(plugin_page); - priv->fd.cleared_match = (gint)g_ascii_strtoll( filter, NULL, 16 ); - g_free(filter); - q = gnc_ledger_display_get_query (ledger); book_list = qof_query_get_books (q); for (item = book_list; item; item = g_list_next(item)) @@ -593,7 +601,7 @@ gnc_plugin_page_register_new_common (GNCLedgerDisplay *ledger) reg = gnc_ledger_display_get_split_register(priv->ledger); - gnc_ppr_update_status_query (register_page); + priv->component_manager_id = 0; return plugin_page; @@ -831,6 +839,9 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page) GtkWidget *gsr; SplitRegister *reg; Account *acct; + gchar **filter; + gchar *order; + int filter_changed = 0; ENTER("page %p", plugin_page); page = GNC_PLUGIN_PAGE_REGISTER (plugin_page); @@ -867,6 +878,60 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page) gnc_plugin_page_register_ui_initial_state (page); gnc_plugin_page_register_ui_update (NULL, page); + /* Set the sort order for the split register and status of save order button */ + priv->sd.save_order = FALSE; + order = gnc_plugin_page_register_get_sort_order(plugin_page); + + PINFO("Loaded Sort order is %s", order); + + gnc_split_reg_set_sort_type(priv->gsr, SortTypefromString(order)); + + if(strcmp(order, DEFAULT_SORT_ORDER) != 0) + priv->sd.save_order = TRUE; + + priv->sd.original_save_order = priv->sd.save_order; + g_free(order); + + /* Set the filter for the split register and status of save filter button */ + priv->fd.save_filter = FALSE; + + filter = g_strsplit(gnc_plugin_page_register_get_filter(plugin_page),",",-1); + + PINFO("Loaded Filter Status is %s", filter[0]); + + priv->fd.cleared_match = (gint)g_ascii_strtoll( filter[0], NULL, 16 ); + + if(strcmp(filter[0], DEFAULT_FILTER) != 0) + filter_changed = filter_changed + 1; + + if (strcmp(filter[1],"0") != 0 ) + { + PINFO("Loaded Filter Start Date is %s", filter[1]); + + priv->fd.start_time = gnc_plugin_page_register_filter_dmy2time( filter[1] ); + priv->fd.start_time = gnc_timet_get_day_start(priv->fd.start_time); + filter_changed = filter_changed + 1; + } + + if (strcmp(filter[2],"0") != 0 ) + { + PINFO("Loaded Filter End Date is %s", filter[2]); + + priv->fd.end_time = gnc_plugin_page_register_filter_dmy2time( filter[2] ); + priv->fd.end_time = gnc_timet_get_day_end(priv->fd.end_time); + filter_changed = filter_changed + 1; + } + + if(filter_changed != 0) + priv->fd.save_filter = TRUE; + + priv->fd.original_save_filter = priv->fd.save_filter; + g_strfreev(filter); + + /* Update Query with Filter Status and Dates */ + gnc_ppr_update_status_query (page); + gnc_ppr_update_date_query(page); + plugin_page->summarybar = gsr_create_summary_bar(priv->gsr); if (plugin_page->summarybar) { @@ -1357,6 +1422,7 @@ gnc_plugin_page_register_get_filter (GncPluginPage *plugin_page) SplitRegister *reg; Account *leader; const char* filter; + gchar *default_filter; g_return_val_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (plugin_page), _("unknown")); @@ -1370,11 +1436,64 @@ gnc_plugin_page_register_get_filter (GncPluginPage *plugin_page) if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT)) filter = xaccAccountGetFilter (leader); - return g_strdup(filter ? filter : DEFAULT_FILTER); + default_filter = g_strdup_printf("%s,%s,%s", DEFAULT_FILTER, "0", "0"); + + return g_strdup(filter ? filter : default_filter); } void gnc_plugin_page_register_set_filter (GncPluginPage *plugin_page, const gchar *filter ) +{ + GncPluginPageRegisterPrivate *priv; + GNCLedgerDisplayType ledger_type; + GNCLedgerDisplay *ld; + SplitRegister *reg; + Account *leader; + gchar *default_filter; + + priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(plugin_page); + ld = priv->ledger; + reg = gnc_ledger_display_get_split_register (ld); + ledger_type = gnc_ledger_display_type (ld); + leader = gnc_ledger_display_leader (ld); + + default_filter = g_strdup_printf("%s,%s,%s", DEFAULT_FILTER, "0", "0"); + + if(strcmp(filter, default_filter) == 0) + xaccAccountSetFilter (leader, NULL); + else + xaccAccountSetFilter (leader, filter); + + return; +} + +static gchar * +gnc_plugin_page_register_get_sort_order (GncPluginPage *plugin_page) +{ + GncPluginPageRegisterPrivate *priv; + GNCLedgerDisplayType ledger_type; + GNCLedgerDisplay *ld; + SplitRegister *reg; + Account *leader; + const char* sort_order; + + g_return_val_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (plugin_page), _("unknown")); + + priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(plugin_page); + ld = priv->ledger; + reg = gnc_ledger_display_get_split_register (ld); + ledger_type = gnc_ledger_display_type (ld); + leader = gnc_ledger_display_leader (ld); + sort_order = NULL; + + if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT)) + sort_order = xaccAccountGetSortOrder (leader); + + return g_strdup(sort_order ? sort_order : DEFAULT_SORT_ORDER); +} + +void +gnc_plugin_page_register_set_sort_order (GncPluginPage *plugin_page, const gchar *sort_order ) { GncPluginPageRegisterPrivate *priv; GNCLedgerDisplayType ledger_type; @@ -1388,7 +1507,10 @@ gnc_plugin_page_register_set_filter (GncPluginPage *plugin_page, const gchar *fi ledger_type = gnc_ledger_display_type (ld); leader = gnc_ledger_display_leader (ld); - xaccAccountSetFilter (leader, filter); + if(strcmp(sort_order, DEFAULT_SORT_ORDER) == 0) + xaccAccountSetSortOrder (leader, NULL); + else + xaccAccountSetSortOrder (leader, sort_order); return; } @@ -1481,16 +1603,35 @@ gnc_plugin_page_register_sort_response_cb (GtkDialog *dialog, GncPluginPageRegister *page) { GncPluginPageRegisterPrivate *priv; + GncPluginPage *plugin_page; + SortType type; + const gchar *order; g_return_if_fail(GTK_IS_DIALOG(dialog)); g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page)); ENTER(" "); priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page); + plugin_page = GNC_PLUGIN_PAGE(page); + if (response != GTK_RESPONSE_OK) { /* Restore the original sort order */ gnc_split_reg_set_sort_type(priv->gsr, priv->sd.original_sort_type); + priv->sd.save_order = priv->sd.original_save_order; + } + else + { + priv->sd.original_save_order = priv->sd.save_order; + + if(priv->sd.save_order) + { + type = gnc_split_reg_get_sort_type(priv->gsr); + order = SortTypeasString(type); + gnc_plugin_page_register_set_sort_order (plugin_page, g_strdup_printf("%s", order)); + } + else + gnc_plugin_page_register_set_sort_order (plugin_page, g_strdup_printf("%s", DEFAULT_SORT_ORDER)); } priv->sd.dialog = NULL; gtk_widget_destroy(GTK_WIDGET(dialog)); @@ -1525,6 +1666,37 @@ gnc_plugin_page_register_sort_button_cb (GtkToggleButton *button, LEAVE(" "); } + +/** This function is called whenever the save sort order is checked + * or unchecked which allows saving of the sort order. + * + * @param button The toggle button that was changed. + * + * @param page A pointer to the GncPluginPageRegister that is + * associated with this sort order dialog. + */ +void +gnc_plugin_page_register_sort_order_save_cb (GtkToggleButton *button, + GncPluginPageRegister *page) +{ + GncPluginPageRegisterPrivate *priv; + + g_return_if_fail(GTK_IS_CHECK_BUTTON(button)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page)); + + ENTER("Save toggle button (%p), plugin_page %p", button, page); + + /* Compute the new save sort order */ + priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page); + + if (gtk_toggle_button_get_active(button)) + priv->sd.save_order = TRUE; + else + priv->sd.save_order = FALSE; + LEAVE(" "); +} + + /************************************************************/ /* "Filter By" Dialog */ /************************************************************/ @@ -1630,6 +1802,46 @@ gnc_ppr_update_date_query (GncPluginPageRegister *page) } +/* This function converts a time_t value date to a string */ +static gchar * +gnc_plugin_page_register_filter_time2dmy ( time_t raw_time) +{ + struct tm * timeinfo; + gchar date_string[11]; + gint i; + + timeinfo = localtime ( &raw_time ); + i= strftime(date_string,11,"%d-%m-%Y", timeinfo ); + PINFO("Date string is %s", date_string); + + return g_strdup(date_string); +} + + +/* This function converts a string date to a time_t value */ +static time_t +gnc_plugin_page_register_filter_dmy2time ( char *date_string) +{ + struct tm *when; + gint yy=0, mm=0, dd=0; + + time_t raw_time; + + PINFO("Date string is %s", date_string); + + sscanf(date_string, "%d-%d-%d", &dd, &mm, &yy ); + + time(&raw_time); + when = localtime ( &raw_time ); + + when->tm_year = yy - 1900; + when->tm_mon = mm -1 ; + when->tm_mday = dd; + + return mktime(when); +} + + /** This function is called whenever one of the status entries is * checked or unchecked. It updates the status value maintained for * the filter dialog, and calls another function to do the work of @@ -1719,7 +1931,7 @@ gnc_plugin_page_register_filter_status_all_cb (GtkButton *button, * filter by examining the dialog widgets to see which ones are * selected, and will pull times out of the data entry boxes if * necessary. This function must exist to handle the case where the - * "show all" button was Seleucid, and the user clicks on the "select + * "show all" button was Selected, and the user clicks on the "select * range" button. Since it exists, it make sense for the rest of the * callbacks to take advantage of it. * @@ -1739,6 +1951,7 @@ get_filter_times(GncPluginPageRegister *page) time_val = gnc_date_edit_get_date(GNC_DATE_EDIT(priv->fd.start_date)); time_val = gnc_timet_get_day_start(time_val); priv->fd.start_time = time_val; + } else { @@ -1945,8 +2158,6 @@ gnc_plugin_page_register_filter_save_cb (GtkToggleButton *button, GncPluginPageRegister *page) { GncPluginPageRegisterPrivate *priv; - const gchar *name; - gint i, value; g_return_if_fail(GTK_IS_CHECK_BUTTON(button)); g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page)); @@ -1956,9 +2167,9 @@ gnc_plugin_page_register_filter_save_cb (GtkToggleButton *button, /* Compute the new save filter status */ priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page); if (gtk_toggle_button_get_active(button)) - priv->fd.save_it = TRUE; + priv->fd.save_filter = TRUE; else - priv->fd.save_it = FALSE; + priv->fd.save_filter = FALSE; LEAVE(" "); } @@ -1981,7 +2192,7 @@ gnc_plugin_page_register_filter_response_cb (GtkDialog *dialog, { GncPluginPageRegisterPrivate *priv; GncPluginPage *plugin_page; - const char* filter; + const char* filter; g_return_if_fail(GTK_IS_DIALOG(dialog)); g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page)); @@ -1997,15 +2208,33 @@ gnc_plugin_page_register_filter_response_cb (GtkDialog *dialog, gnc_ppr_update_status_query(page); priv->fd.start_time = priv->fd.original_start_time; priv->fd.end_time = priv->fd.original_end_time; + priv->fd.save_filter = priv->fd.original_save_filter; gnc_ppr_update_date_query(page); } else { - if (priv->fd.save_it) - { + priv->fd.original_save_filter = priv->fd.save_filter; + + if(priv->fd.save_filter) + { filter = g_strdup_printf("0x%04x", priv->fd.cleared_match); + + if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->fd.start_date_choose)) && priv->fd.start_time != 0 ) + filter = g_strconcat ( filter, ",", gnc_plugin_page_register_filter_time2dmy(priv->fd.start_time) , NULL); + else + filter = g_strconcat ( filter, ",0", NULL); + + if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->fd.end_date_choose)) && priv->fd.end_time != 0 ) + filter = g_strconcat ( filter, ",", gnc_plugin_page_register_filter_time2dmy(priv->fd.end_time) , NULL); + else + filter = g_strconcat ( filter, ",0", NULL); + + PINFO("The filter to save is %s",filter); + gnc_plugin_page_register_set_filter (plugin_page, filter); - } + } + else + gnc_plugin_page_register_set_filter (plugin_page, g_strdup_printf("%s,%s,%s", DEFAULT_FILTER,"0","0")); } priv->fd.dialog = NULL; gtk_widget_destroy(GTK_WIDGET(dialog)); @@ -2412,7 +2641,7 @@ gnc_plugin_page_register_cmd_void_transaction (GtkAction *action, return; builder = gtk_builder_new(); - gnc_builder_add_from_file (builder , "gnc-plugin-page-register.glade", "Void Transaction"); + gnc_builder_add_from_file (builder ,"gnc-plugin-page-register.glade", "Void Transaction"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Void Transaction")); entry = GTK_WIDGET(gtk_builder_get_object (builder, "reason")); @@ -2568,6 +2797,10 @@ gnc_plugin_page_register_cmd_view_sort_by (GtkAction *action, gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); priv->sd.original_sort_type = sort; + button = GTK_WIDGET(gtk_builder_get_object (builder, "sort_save")); + if(priv->sd.save_order == TRUE) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); + /* Wire it up */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, page); @@ -2620,11 +2853,15 @@ gnc_plugin_page_register_cmd_view_filter_by (GtkAction *action, { toggle = GTK_WIDGET(gtk_builder_get_object (builder, status_actions[i].action_name)); value = priv->fd.cleared_match & status_actions[i].value; - status_actions[i].widget = toggle; + status_actions[i].widget = toggle; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), value); } priv->fd.original_cleared_match = priv->fd.cleared_match; - priv->fd.save_it = FALSE; + + button = GTK_WIDGET(gtk_builder_get_object (builder, "filter_save")); + if(priv->fd.save_filter == TRUE) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); + /* Set the date info */ button = GTK_WIDGET(gtk_builder_get_object (builder, "filter_show_range")); diff --git a/src/gnome/gtkbuilder/gnc-plugin-page-register.glade b/src/gnome/gtkbuilder/gnc-plugin-page-register.glade index 183c61385d..217533d306 100644 --- a/src/gnome/gtkbuilder/gnc-plugin-page-register.glade +++ b/src/gnome/gtkbuilder/gnc-plugin-page-register.glade @@ -683,37 +683,6 @@ 0 - - - True - False - - - _Save Filter Status - True - True - False - False - True - 1 - True - - - - False - False - 6 - end - 0 - - - - - True - False - 1 - - 1 @@ -735,6 +704,37 @@ True True + 1 + + + + + True + False + + + Sa_ve Filter + True + True + False + False + True + 1 + True + + + + False + False + 6 + end + 0 + + + + + True + False 2 @@ -1010,6 +1010,59 @@ 10 + + + True + False + + + False + True + 11 + + + + + True + False + + + True + True + 12 + + + + + True + False + + + Sa_ve Sort Order + True + True + False + False + True + 1 + True + + + + False + False + 6 + end + 0 + + + + + True + False + 14 + + True