mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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
This commit is contained in:
parent
9cab3b7918
commit
3eacb2c3c8
@ -85,6 +85,7 @@ enum
|
|||||||
PROP_HIDDEN,
|
PROP_HIDDEN,
|
||||||
PROP_PLACEHOLDER,
|
PROP_PLACEHOLDER,
|
||||||
PROP_FILTER,
|
PROP_FILTER,
|
||||||
|
PROP_SORT_ORDER,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct AccountPrivate
|
typedef struct AccountPrivate
|
||||||
@ -439,6 +440,9 @@ gnc_account_get_property (GObject *object,
|
|||||||
case PROP_FILTER:
|
case PROP_FILTER:
|
||||||
g_value_set_string(value, xaccAccountGetFilter(account));
|
g_value_set_string(value, xaccAccountGetFilter(account));
|
||||||
break;
|
break;
|
||||||
|
case PROP_SORT_ORDER:
|
||||||
|
g_value_set_string(value, xaccAccountGetSortOrder(account));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -534,6 +538,9 @@ gnc_account_set_property (GObject *object,
|
|||||||
case PROP_FILTER:
|
case PROP_FILTER:
|
||||||
xaccAccountSetFilter(account, g_value_get_string(value));
|
xaccAccountSetFilter(account, g_value_get_string(value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_SORT_ORDER:
|
||||||
|
xaccAccountSetSortOrder(account, g_value_get_string(value));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -881,6 +888,16 @@ gnc_account_class_init (AccountClass *klass)
|
|||||||
"filters to be recalled.",
|
"filters to be recalled.",
|
||||||
NULL,
|
NULL,
|
||||||
G_PARAM_READWRITE));
|
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
|
static void
|
||||||
@ -2237,6 +2254,26 @@ xaccAccountSetFilter (Account *acc, const char *str)
|
|||||||
xaccAccountCommitEdit(acc);
|
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
|
static void
|
||||||
qofAccountSetParent (Account *acc, QofInstance *parent)
|
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;
|
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 *
|
const char *
|
||||||
xaccAccountGetNotes (const Account *acc)
|
xaccAccountGetNotes (const Account *acc)
|
||||||
@ -4862,6 +4905,11 @@ gboolean xaccAccountRegister (void)
|
|||||||
(QofAccessFunc) xaccAccountGetFilter,
|
(QofAccessFunc) xaccAccountGetFilter,
|
||||||
(QofSetterFunc) xaccAccountSetFilter
|
(QofSetterFunc) xaccAccountSetFilter
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ACCOUNT_SORT_ORDER_, QOF_TYPE_STRING,
|
||||||
|
(QofAccessFunc) xaccAccountGetSortOrder,
|
||||||
|
(QofSetterFunc) xaccAccountSetSortOrder
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ACCOUNT_NOTES_, QOF_TYPE_STRING,
|
ACCOUNT_NOTES_, QOF_TYPE_STRING,
|
||||||
(QofAccessFunc) xaccAccountGetNotes,
|
(QofAccessFunc) xaccAccountGetNotes,
|
||||||
|
@ -289,6 +289,8 @@ void xaccAccountSetDescription (Account *account, const char *desc);
|
|||||||
void xaccAccountSetColor (Account *account, const char *color);
|
void xaccAccountSetColor (Account *account, const char *color);
|
||||||
/** Set the account's Filter */
|
/** Set the account's Filter */
|
||||||
void xaccAccountSetFilter (Account *account, const char *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 */
|
/** Set the account's notes */
|
||||||
void xaccAccountSetNotes (Account *account, const char *notes);
|
void xaccAccountSetNotes (Account *account, const char *notes);
|
||||||
/** Set the last num field of an Account */
|
/** Set the last num field of an Account */
|
||||||
@ -388,6 +390,8 @@ const char * xaccAccountGetDescription (const Account *account);
|
|||||||
const char * xaccAccountGetColor (const Account *account);
|
const char * xaccAccountGetColor (const Account *account);
|
||||||
/** Get the account's filter */
|
/** Get the account's filter */
|
||||||
const char * xaccAccountGetFilter (const Account *account);
|
const char * xaccAccountGetFilter (const Account *account);
|
||||||
|
/** Get the account's Sort Order */
|
||||||
|
const char * xaccAccountGetSortOrder (const Account *account);
|
||||||
/** Get the account's notes */
|
/** Get the account's notes */
|
||||||
const char * xaccAccountGetNotes (const Account *account);
|
const char * xaccAccountGetNotes (const Account *account);
|
||||||
/** Get the last num field of an 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_DESCRIPTION_ "desc"
|
||||||
#define ACCOUNT_COLOR_ "color"
|
#define ACCOUNT_COLOR_ "color"
|
||||||
#define ACCOUNT_FILTER_ "filter"
|
#define ACCOUNT_FILTER_ "filter"
|
||||||
|
#define ACCOUNT_SORT_ORDER_ "sort-order"
|
||||||
#define ACCOUNT_NOTES_ "notes"
|
#define ACCOUNT_NOTES_ "notes"
|
||||||
#define ACCOUNT_BALANCE_ "balance"
|
#define ACCOUNT_BALANCE_ "balance"
|
||||||
#define ACCOUNT_CLEARED_ "cleared"
|
#define ACCOUNT_CLEARED_ "cleared"
|
||||||
|
@ -104,6 +104,10 @@ static void gnc_plugin_page_register_summarybar_position_changed(GConfEntry *ent
|
|||||||
/* Callbacks for the "Sort By" dialog */
|
/* Callbacks for the "Sort By" dialog */
|
||||||
void gnc_plugin_page_register_sort_button_cb(GtkToggleButton *button, GncPluginPageRegister *page);
|
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_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 */
|
/* Callbacks for the "Filter By" dialog */
|
||||||
void gnc_plugin_page_register_filter_select_range_cb(GtkRadioButton *button, GncPluginPageRegister *page);
|
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_status_one_cb(GtkToggleButton *button, GncPluginPageRegister *page);
|
||||||
void gnc_plugin_page_register_filter_save_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);
|
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_status_query (GncPluginPageRegister *page);
|
||||||
|
static void gnc_ppr_update_date_query (GncPluginPageRegister *page);
|
||||||
|
|
||||||
/* Command callbacks */
|
/* Command callbacks */
|
||||||
static void gnc_plugin_page_register_cmd_print_check (GtkAction *action, GncPluginPageRegister *plugin_page);
|
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 },
|
{ "filter_status_unreconciled", CLEARED_NO, NULL },
|
||||||
{ NULL, 0, NULL },
|
{ NULL, 0, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CLEARED_VALUE "cleared_value"
|
#define CLEARED_VALUE "cleared_value"
|
||||||
#define DEFAULT_FILTER "0x001f"
|
#define DEFAULT_FILTER "0x001f"
|
||||||
|
#define DEFAULT_SORT_ORDER "BY_STANDARD"
|
||||||
|
|
||||||
/************************************************************/
|
/************************************************************/
|
||||||
/* Data Structures */
|
/* Data Structures */
|
||||||
@ -475,6 +485,8 @@ typedef struct GncPluginPageRegisterPrivate
|
|||||||
{
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
SortType original_sort_type;
|
SortType original_sort_type;
|
||||||
|
gboolean original_save_order;
|
||||||
|
gboolean save_order;
|
||||||
} sd;
|
} sd;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
@ -493,7 +505,8 @@ typedef struct GncPluginPageRegisterPrivate
|
|||||||
time_t original_end_time;
|
time_t original_end_time;
|
||||||
time_t start_time;
|
time_t start_time;
|
||||||
time_t end_time;
|
time_t end_time;
|
||||||
gboolean save_it;
|
gboolean original_save_filter;
|
||||||
|
gboolean save_filter;
|
||||||
} fd;
|
} fd;
|
||||||
} GncPluginPageRegisterPrivate;
|
} GncPluginPageRegisterPrivate;
|
||||||
|
|
||||||
@ -546,7 +559,6 @@ gnc_plugin_page_register_new_common (GNCLedgerDisplay *ledger)
|
|||||||
GList *book_list;
|
GList *book_list;
|
||||||
gchar *label;
|
gchar *label;
|
||||||
gchar *label_color;
|
gchar *label_color;
|
||||||
gchar *filter;
|
|
||||||
QofQuery *q;
|
QofQuery *q;
|
||||||
|
|
||||||
/* Is there an existing page? */
|
/* 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);
|
gnc_plugin_page_set_page_long_name(plugin_page, label);
|
||||||
g_free(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);
|
q = gnc_ledger_display_get_query (ledger);
|
||||||
book_list = qof_query_get_books (q);
|
book_list = qof_query_get_books (q);
|
||||||
for (item = book_list; item; item = g_list_next(item))
|
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);
|
reg = gnc_ledger_display_get_split_register(priv->ledger);
|
||||||
|
|
||||||
gnc_ppr_update_status_query (register_page);
|
|
||||||
|
|
||||||
priv->component_manager_id = 0;
|
priv->component_manager_id = 0;
|
||||||
return plugin_page;
|
return plugin_page;
|
||||||
@ -831,6 +839,9 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page)
|
|||||||
GtkWidget *gsr;
|
GtkWidget *gsr;
|
||||||
SplitRegister *reg;
|
SplitRegister *reg;
|
||||||
Account *acct;
|
Account *acct;
|
||||||
|
gchar **filter;
|
||||||
|
gchar *order;
|
||||||
|
int filter_changed = 0;
|
||||||
|
|
||||||
ENTER("page %p", plugin_page);
|
ENTER("page %p", plugin_page);
|
||||||
page = GNC_PLUGIN_PAGE_REGISTER (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_initial_state (page);
|
||||||
gnc_plugin_page_register_ui_update (NULL, 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);
|
plugin_page->summarybar = gsr_create_summary_bar(priv->gsr);
|
||||||
if (plugin_page->summarybar)
|
if (plugin_page->summarybar)
|
||||||
{
|
{
|
||||||
@ -1357,6 +1422,7 @@ gnc_plugin_page_register_get_filter (GncPluginPage *plugin_page)
|
|||||||
SplitRegister *reg;
|
SplitRegister *reg;
|
||||||
Account *leader;
|
Account *leader;
|
||||||
const char* filter;
|
const char* filter;
|
||||||
|
gchar *default_filter;
|
||||||
|
|
||||||
g_return_val_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (plugin_page), _("unknown"));
|
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))
|
if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT))
|
||||||
filter = xaccAccountGetFilter (leader);
|
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
|
void
|
||||||
gnc_plugin_page_register_set_filter (GncPluginPage *plugin_page, const gchar *filter )
|
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;
|
GncPluginPageRegisterPrivate *priv;
|
||||||
GNCLedgerDisplayType ledger_type;
|
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);
|
ledger_type = gnc_ledger_display_type (ld);
|
||||||
leader = gnc_ledger_display_leader (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;
|
return;
|
||||||
}
|
}
|
||||||
@ -1481,16 +1603,35 @@ gnc_plugin_page_register_sort_response_cb (GtkDialog *dialog,
|
|||||||
GncPluginPageRegister *page)
|
GncPluginPageRegister *page)
|
||||||
{
|
{
|
||||||
GncPluginPageRegisterPrivate *priv;
|
GncPluginPageRegisterPrivate *priv;
|
||||||
|
GncPluginPage *plugin_page;
|
||||||
|
SortType type;
|
||||||
|
const gchar *order;
|
||||||
|
|
||||||
g_return_if_fail(GTK_IS_DIALOG(dialog));
|
g_return_if_fail(GTK_IS_DIALOG(dialog));
|
||||||
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
|
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
|
||||||
|
|
||||||
ENTER(" ");
|
ENTER(" ");
|
||||||
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
|
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
|
||||||
|
plugin_page = GNC_PLUGIN_PAGE(page);
|
||||||
|
|
||||||
if (response != GTK_RESPONSE_OK)
|
if (response != GTK_RESPONSE_OK)
|
||||||
{
|
{
|
||||||
/* Restore the original sort order */
|
/* Restore the original sort order */
|
||||||
gnc_split_reg_set_sort_type(priv->gsr, priv->sd.original_sort_type);
|
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;
|
priv->sd.dialog = NULL;
|
||||||
gtk_widget_destroy(GTK_WIDGET(dialog));
|
gtk_widget_destroy(GTK_WIDGET(dialog));
|
||||||
@ -1525,6 +1666,37 @@ gnc_plugin_page_register_sort_button_cb (GtkToggleButton *button,
|
|||||||
LEAVE(" ");
|
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 */
|
/* "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
|
/** This function is called whenever one of the status entries is
|
||||||
* checked or unchecked. It updates the status value maintained for
|
* checked or unchecked. It updates the status value maintained for
|
||||||
* the filter dialog, and calls another function to do the work of
|
* 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
|
* filter by examining the dialog widgets to see which ones are
|
||||||
* selected, and will pull times out of the data entry boxes if
|
* selected, and will pull times out of the data entry boxes if
|
||||||
* necessary. This function must exist to handle the case where the
|
* 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
|
* range" button. Since it exists, it make sense for the rest of the
|
||||||
* callbacks to take advantage of it.
|
* 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_date_edit_get_date(GNC_DATE_EDIT(priv->fd.start_date));
|
||||||
time_val = gnc_timet_get_day_start(time_val);
|
time_val = gnc_timet_get_day_start(time_val);
|
||||||
priv->fd.start_time = time_val;
|
priv->fd.start_time = time_val;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1945,8 +2158,6 @@ gnc_plugin_page_register_filter_save_cb (GtkToggleButton *button,
|
|||||||
GncPluginPageRegister *page)
|
GncPluginPageRegister *page)
|
||||||
{
|
{
|
||||||
GncPluginPageRegisterPrivate *priv;
|
GncPluginPageRegisterPrivate *priv;
|
||||||
const gchar *name;
|
|
||||||
gint i, value;
|
|
||||||
|
|
||||||
g_return_if_fail(GTK_IS_CHECK_BUTTON(button));
|
g_return_if_fail(GTK_IS_CHECK_BUTTON(button));
|
||||||
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
|
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 */
|
/* Compute the new save filter status */
|
||||||
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
|
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
|
||||||
if (gtk_toggle_button_get_active(button))
|
if (gtk_toggle_button_get_active(button))
|
||||||
priv->fd.save_it = TRUE;
|
priv->fd.save_filter = TRUE;
|
||||||
else
|
else
|
||||||
priv->fd.save_it = FALSE;
|
priv->fd.save_filter = FALSE;
|
||||||
LEAVE(" ");
|
LEAVE(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1981,7 +2192,7 @@ gnc_plugin_page_register_filter_response_cb (GtkDialog *dialog,
|
|||||||
{
|
{
|
||||||
GncPluginPageRegisterPrivate *priv;
|
GncPluginPageRegisterPrivate *priv;
|
||||||
GncPluginPage *plugin_page;
|
GncPluginPage *plugin_page;
|
||||||
const char* filter;
|
const char* filter;
|
||||||
|
|
||||||
g_return_if_fail(GTK_IS_DIALOG(dialog));
|
g_return_if_fail(GTK_IS_DIALOG(dialog));
|
||||||
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
|
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);
|
gnc_ppr_update_status_query(page);
|
||||||
priv->fd.start_time = priv->fd.original_start_time;
|
priv->fd.start_time = priv->fd.original_start_time;
|
||||||
priv->fd.end_time = priv->fd.original_end_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);
|
gnc_ppr_update_date_query(page);
|
||||||
}
|
}
|
||||||
else
|
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);
|
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);
|
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;
|
priv->fd.dialog = NULL;
|
||||||
gtk_widget_destroy(GTK_WIDGET(dialog));
|
gtk_widget_destroy(GTK_WIDGET(dialog));
|
||||||
@ -2412,7 +2641,7 @@ gnc_plugin_page_register_cmd_void_transaction (GtkAction *action,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
builder = gtk_builder_new();
|
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"));
|
dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Void Transaction"));
|
||||||
entry = GTK_WIDGET(gtk_builder_get_object (builder, "reason"));
|
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);
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
|
||||||
priv->sd.original_sort_type = sort;
|
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 */
|
/* Wire it up */
|
||||||
gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, page);
|
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));
|
toggle = GTK_WIDGET(gtk_builder_get_object (builder, status_actions[i].action_name));
|
||||||
value = priv->fd.cleared_match & status_actions[i].value;
|
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);
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), value);
|
||||||
}
|
}
|
||||||
priv->fd.original_cleared_match = priv->fd.cleared_match;
|
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 */
|
/* Set the date info */
|
||||||
button = GTK_WIDGET(gtk_builder_get_object (builder, "filter_show_range"));
|
button = GTK_WIDGET(gtk_builder_get_object (builder, "filter_show_range"));
|
||||||
|
@ -683,37 +683,6 @@
|
|||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<object class="GtkHBox" id="hbox1">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkCheckButton" id="filter_save">
|
|
||||||
<property name="label" translatable="yes">_Save Filter Status</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">False</property>
|
|
||||||
<property name="use_action_appearance">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="xalign">1</property>
|
|
||||||
<property name="draw_indicator">True</property>
|
|
||||||
<signal name="toggled" handler="gnc_plugin_page_register_filter_save_cb" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="padding">6</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
@ -735,6 +704,37 @@
|
|||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkHBox" id="hbox1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="filter_save">
|
||||||
|
<property name="label" translatable="yes">Sa_ve Filter</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="use_action_appearance">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
<signal name="toggled" handler="gnc_plugin_page_register_filter_save_cb" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="padding">6</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
@ -1010,6 +1010,59 @@
|
|||||||
<property name="position">10</property>
|
<property name="position">10</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkHSeparator" id="hseparator1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">11</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">12</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkHBox" id="hbox1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="sort_save">
|
||||||
|
<property name="label" translatable="yes">Sa_ve Sort Order</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="use_action_appearance">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
<signal name="toggled" handler="gnc_plugin_page_register_sort_order_save_cb" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="padding">6</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">14</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
|
Loading…
Reference in New Issue
Block a user