r15625 - gnucash/trunk/src - Gratuitous reformatting.
Josh Sled
jsled at cvs.gnucash.org
Mon Feb 19 14:02:03 EST 2007
Author: jsled
Date: 2007-02-19 14:01:47 -0500 (Mon, 19 Feb 2007)
New Revision: 15625
Trac: http://svn.gnucash.org/trac/changeset/15625
Modified:
gnucash/trunk/src/app-utils/gnc-sx-instance-model.c
gnucash/trunk/src/app-utils/gnc-sx-instance-model.h
gnucash/trunk/src/core-utils/gnc-glib-utils.c
gnucash/trunk/src/core-utils/gnc-glib-utils.h
gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.c
gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.h
gnucash/trunk/src/gnome-utils/gnc-dense-cal-store.c
gnucash/trunk/src/gnome-utils/gnc-dense-cal.c
gnucash/trunk/src/gnome-utils/gnc-dense-cal.h
gnucash/trunk/src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c
gnucash/trunk/src/gnome/dialog-sx-editor.c
gnucash/trunk/src/gnome/dialog-sx-since-last-run.c
gnucash/trunk/src/gnome/dialog-sx-since-last-run.h
gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.h
gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.c
gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.h
Log:
Gratuitous reformatting.
Modified: gnucash/trunk/src/app-utils/gnc-sx-instance-model.c
===================================================================
--- gnucash/trunk/src/app-utils/gnc-sx-instance-model.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/app-utils/gnc-sx-instance-model.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -65,25 +65,25 @@
static void
_sx_var_to_raw_numeric(gchar *name, GncSxVariable *var, GHashTable *parser_var_hash)
{
- g_hash_table_insert(parser_var_hash, name, &var->value);
+ g_hash_table_insert(parser_var_hash, name, &var->value);
}
static void
_var_numeric_to_sx_var(gchar *name, gnc_numeric *num, GHashTable *sx_var_hash)
{
- gpointer p_var;
- if (!g_hash_table_lookup_extended(sx_var_hash, name, NULL, &p_var))
- {
- p_var = (gpointer)gnc_sx_variable_new(name);
- g_hash_table_insert(sx_var_hash, name, p_var);
- }
- ((GncSxVariable*)p_var)->value = *num;
+ gpointer p_var;
+ if (!g_hash_table_lookup_extended(sx_var_hash, name, NULL, &p_var))
+ {
+ p_var = (gpointer)gnc_sx_variable_new(name);
+ g_hash_table_insert(sx_var_hash, name, p_var);
+ }
+ ((GncSxVariable*)p_var)->value = *num;
}
static void
_wipe_parsed_sx_var(gchar *key, GncSxVariable *var, gpointer unused_user_data)
{
- var->value = gnc_numeric_error(GNC_ERROR_ARG);
+ var->value = gnc_numeric_error(GNC_ERROR_ARG);
}
/**
@@ -92,10 +92,10 @@
GHashTable*
gnc_sx_instance_get_variables_for_parser(GHashTable *instance_var_hash)
{
- GHashTable *parser_vars;
- parser_vars = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_foreach(instance_var_hash, (GHFunc)_sx_var_to_raw_numeric, parser_vars);
- return parser_vars;
+ GHashTable *parser_vars;
+ parser_vars = g_hash_table_new(g_str_hash, g_str_equal);
+ g_hash_table_foreach(instance_var_hash, (GHFunc)_sx_var_to_raw_numeric, parser_vars);
+ return parser_vars;
}
int
@@ -103,987 +103,987 @@
GHashTable *var_hash,
gnc_numeric *result)
{
- gnc_numeric num;
- char *errLoc = NULL;
- int toRet = 0;
- GHashTable *parser_vars;
+ gnc_numeric num;
+ char *errLoc = NULL;
+ int toRet = 0;
+ GHashTable *parser_vars;
- // convert var_hash -> variables for the parser.
- parser_vars = gnc_sx_instance_get_variables_for_parser(var_hash);
+ // convert var_hash -> variables for the parser.
+ parser_vars = gnc_sx_instance_get_variables_for_parser(var_hash);
- num = gnc_numeric_zero();
- if (!gnc_exp_parser_parse_separate_vars(formula, &num, &errLoc, parser_vars))
- {
- toRet = -1;
- }
+ num = gnc_numeric_zero();
+ if (!gnc_exp_parser_parse_separate_vars(formula, &num, &errLoc, parser_vars))
+ {
+ toRet = -1;
+ }
- // convert back.
- g_hash_table_foreach(parser_vars, (GHFunc)_var_numeric_to_sx_var, var_hash);
- g_hash_table_destroy(parser_vars);
+ // convert back.
+ g_hash_table_foreach(parser_vars, (GHFunc)_var_numeric_to_sx_var, var_hash);
+ g_hash_table_destroy(parser_vars);
- if (result != NULL)
- {
- *result = num;
- }
+ if (result != NULL)
+ {
+ *result = num;
+ }
- return toRet;
+ return toRet;
}
static GncSxVariable*
gnc_sx_variable_new(gchar *name)
{
- GncSxVariable *var = g_new0(GncSxVariable, 1);
- var->name = name;
- var->value = gnc_numeric_error(GNC_ERROR_ARG);
- var->editable = TRUE;
- return var;
+ GncSxVariable *var = g_new0(GncSxVariable, 1);
+ var->name = name;
+ var->value = gnc_numeric_error(GNC_ERROR_ARG);
+ var->editable = TRUE;
+ return var;
}
GncSxVariable*
gnc_sx_variable_new_full(gchar *name, gnc_numeric value, gboolean editable)
{
- GncSxVariable *var = gnc_sx_variable_new(name);
- var->value = value;
- var->editable = editable;
- return var;
+ GncSxVariable *var = gnc_sx_variable_new(name);
+ var->value = value;
+ var->editable = editable;
+ return var;
}
static gint
_get_vars_helper(Transaction *txn, void *var_hash_data)
{
- GHashTable *var_hash = (GHashTable*)var_hash_data;
- GList *split_list;
- kvp_frame *kvpf;
- kvp_value *kvp_val;
- Split *s;
- char *str;
- gnc_commodity *first_cmdty = NULL;
+ GHashTable *var_hash = (GHashTable*)var_hash_data;
+ GList *split_list;
+ kvp_frame *kvpf;
+ kvp_value *kvp_val;
+ Split *s;
+ char *str;
+ gnc_commodity *first_cmdty = NULL;
- split_list = xaccTransGetSplitList(txn);
- if (split_list == NULL)
- {
- return 1;
- }
+ split_list = xaccTransGetSplitList(txn);
+ if (split_list == NULL)
+ {
+ return 1;
+ }
- for ( ; split_list; split_list = split_list->next)
- {
- gnc_commodity *split_cmdty = NULL;
- GUID *acct_guid;
- Account *acct;
+ for ( ; split_list; split_list = split_list->next)
+ {
+ gnc_commodity *split_cmdty = NULL;
+ GUID *acct_guid;
+ Account *acct;
- s = (Split*)split_list->data;
- kvpf = xaccSplitGetSlots(s);
- kvp_val = kvp_frame_get_slot_path(kvpf,
- GNC_SX_ID,
- GNC_SX_ACCOUNT,
- NULL);
- acct_guid = kvp_value_get_guid(kvp_val);
- acct = xaccAccountLookup(acct_guid, gnc_get_current_book());
- split_cmdty = xaccAccountGetCommodity(acct);
- if (first_cmdty == NULL)
- {
- first_cmdty = split_cmdty;
- }
+ s = (Split*)split_list->data;
+ kvpf = xaccSplitGetSlots(s);
+ kvp_val = kvp_frame_get_slot_path(kvpf,
+ GNC_SX_ID,
+ GNC_SX_ACCOUNT,
+ NULL);
+ acct_guid = kvp_value_get_guid(kvp_val);
+ acct = xaccAccountLookup(acct_guid, gnc_get_current_book());
+ split_cmdty = xaccAccountGetCommodity(acct);
+ if (first_cmdty == NULL)
+ {
+ first_cmdty = split_cmdty;
+ }
- if (! gnc_commodity_equal(split_cmdty, first_cmdty))
- {
- GncSxVariable *var;
- GString *var_name;
+ if (! gnc_commodity_equal(split_cmdty, first_cmdty))
+ {
+ GncSxVariable *var;
+ GString *var_name;
- var_name = g_string_sized_new(16);
- g_string_printf(var_name, "%s -> %s",
- gnc_commodity_get_mnemonic(split_cmdty),
- gnc_commodity_get_mnemonic(first_cmdty));
- var = gnc_sx_variable_new(g_strdup(var_name->str));
- g_hash_table_insert(var_hash, var->name, var);
- g_string_free(var_name, TRUE);
- }
+ var_name = g_string_sized_new(16);
+ g_string_printf(var_name, "%s -> %s",
+ gnc_commodity_get_mnemonic(split_cmdty),
+ gnc_commodity_get_mnemonic(first_cmdty));
+ var = gnc_sx_variable_new(g_strdup(var_name->str));
+ g_hash_table_insert(var_hash, var->name, var);
+ g_string_free(var_name, TRUE);
+ }
- // existing... ------------------------------------------
- kvp_val = kvp_frame_get_slot_path(kvpf,
- GNC_SX_ID,
- GNC_SX_CREDIT_FORMULA,
- NULL);
- if (kvp_val != NULL)
- {
- str = kvp_value_get_string(kvp_val);
- if (str && strlen(str) != 0)
- {
- gnc_sx_parse_vars_from_formula(str, var_hash, NULL);
- }
- }
+ // existing... ------------------------------------------
+ kvp_val = kvp_frame_get_slot_path(kvpf,
+ GNC_SX_ID,
+ GNC_SX_CREDIT_FORMULA,
+ NULL);
+ if (kvp_val != NULL)
+ {
+ str = kvp_value_get_string(kvp_val);
+ if (str && strlen(str) != 0)
+ {
+ gnc_sx_parse_vars_from_formula(str, var_hash, NULL);
+ }
+ }
- kvp_val = kvp_frame_get_slot_path(kvpf,
- GNC_SX_ID,
- GNC_SX_DEBIT_FORMULA,
- NULL);
- if (kvp_val != NULL)
- {
- str = kvp_value_get_string(kvp_val);
- if (str && strlen(str) != 0)
- {
- gnc_sx_parse_vars_from_formula(str, var_hash, NULL);
- }
- }
- }
+ kvp_val = kvp_frame_get_slot_path(kvpf,
+ GNC_SX_ID,
+ GNC_SX_DEBIT_FORMULA,
+ NULL);
+ if (kvp_val != NULL)
+ {
+ str = kvp_value_get_string(kvp_val);
+ if (str && strlen(str) != 0)
+ {
+ gnc_sx_parse_vars_from_formula(str, var_hash, NULL);
+ }
+ }
+ }
- return 0;
+ return 0;
}
Account*
gnc_sx_get_template_transaction_account(SchedXaction *sx)
{
- AccountGroup *template_group;
- Account *sx_template_acct;
- const char *sx_guid_str;
+ AccountGroup *template_group;
+ Account *sx_template_acct;
+ const char *sx_guid_str;
- template_group = gnc_book_get_template_group(gnc_get_current_book());
- sx_guid_str = guid_to_string(xaccSchedXactionGetGUID(sx));
- /* Get account named after guid string. */
- sx_template_acct = xaccGetAccountFromName(template_group, sx_guid_str);
- return sx_template_acct;
+ template_group = gnc_book_get_template_group(gnc_get_current_book());
+ sx_guid_str = guid_to_string(xaccSchedXactionGetGUID(sx));
+ /* Get account named after guid string. */
+ sx_template_acct = xaccGetAccountFromName(template_group, sx_guid_str);
+ return sx_template_acct;
}
void
gnc_sx_get_variables(SchedXaction *sx, GHashTable *var_hash)
{
- Account *sx_template_acct;
- sx_template_acct = gnc_sx_get_template_transaction_account(sx);
- xaccAccountForEachTransaction(sx_template_acct, _get_vars_helper, var_hash);
+ Account *sx_template_acct;
+ sx_template_acct = gnc_sx_get_template_transaction_account(sx);
+ xaccAccountForEachTransaction(sx_template_acct, _get_vars_helper, var_hash);
}
static void
_set_var_to_random_value(gchar *key, GncSxVariable *var, gpointer unused_user_data)
{
- var->value = double_to_gnc_numeric(rand() + 2, 1,
- GNC_NUMERIC_RND_MASK
- | GNC_RND_FLOOR);
+ var->value = double_to_gnc_numeric(rand() + 2, 1,
+ GNC_NUMERIC_RND_MASK
+ | GNC_RND_FLOOR);
}
void
gnc_sx_variable_free(GncSxVariable *var)
{
- // g_free(var->name);
- g_free(var);
+ // g_free(var->name);
+ g_free(var);
}
void
gnc_sx_randomize_variables(GHashTable *vars)
{
- g_hash_table_foreach(vars, (GHFunc)_set_var_to_random_value, NULL);
+ g_hash_table_foreach(vars, (GHFunc)_set_var_to_random_value, NULL);
}
static void
_clone_sx_var_hash_entry(gpointer key, gpointer value, gpointer user_data)
{
- GHashTable *to = (GHashTable*)user_data;
- GncSxVariable *to_copy = (GncSxVariable*)value;
- GncSxVariable *var = gnc_sx_variable_new(to_copy->name);
- var->value = to_copy->value;
- var->editable = to_copy->editable;
- g_hash_table_insert(to, key, var);
+ GHashTable *to = (GHashTable*)user_data;
+ GncSxVariable *to_copy = (GncSxVariable*)value;
+ GncSxVariable *var = gnc_sx_variable_new(to_copy->name);
+ var->value = to_copy->value;
+ var->editable = to_copy->editable;
+ g_hash_table_insert(to, key, var);
}
static GncSxInstance*
gnc_sx_instance_new(GncSxInstances *parent, GncSxInstanceState state, GDate *date, void *temporal_state, gint sequence_num)
{
- GncSxInstance *rtn = g_new0(GncSxInstance, 1);
- rtn->parent = parent;
- rtn->orig_state = state;
- rtn->state = state;
- g_date_clear(&rtn->date, 1);
- rtn->date = *date;
- rtn->temporal_state = gnc_sx_clone_temporal_state(temporal_state);
+ GncSxInstance *rtn = g_new0(GncSxInstance, 1);
+ rtn->parent = parent;
+ rtn->orig_state = state;
+ rtn->state = state;
+ g_date_clear(&rtn->date, 1);
+ rtn->date = *date;
+ rtn->temporal_state = gnc_sx_clone_temporal_state(temporal_state);
- if (! parent->variable_names_parsed)
- {
- parent->variable_names = g_hash_table_new(g_str_hash, g_str_equal);
- gnc_sx_get_variables(parent->sx, parent->variable_names);
- g_hash_table_foreach(parent->variable_names, (GHFunc)_wipe_parsed_sx_var, NULL);
- parent->variable_names_parsed = TRUE;
- }
+ if (! parent->variable_names_parsed)
+ {
+ parent->variable_names = g_hash_table_new(g_str_hash, g_str_equal);
+ gnc_sx_get_variables(parent->sx, parent->variable_names);
+ g_hash_table_foreach(parent->variable_names, (GHFunc)_wipe_parsed_sx_var, NULL);
+ parent->variable_names_parsed = TRUE;
+ }
- rtn->variable_bindings = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_foreach(parent->variable_names, _clone_sx_var_hash_entry, rtn->variable_bindings);
+ rtn->variable_bindings = g_hash_table_new(g_str_hash, g_str_equal);
+ g_hash_table_foreach(parent->variable_names, _clone_sx_var_hash_entry, rtn->variable_bindings);
- {
- int instance_i_value;
- gnc_numeric i_num;
- GncSxVariable *as_var;
+ {
+ int instance_i_value;
+ gnc_numeric i_num;
+ GncSxVariable *as_var;
- instance_i_value = gnc_sx_get_instance_count(rtn->parent->sx, rtn->temporal_state);
- i_num = gnc_numeric_create(instance_i_value, 1);
- as_var = gnc_sx_variable_new_full("i", i_num, FALSE);
+ instance_i_value = gnc_sx_get_instance_count(rtn->parent->sx, rtn->temporal_state);
+ i_num = gnc_numeric_create(instance_i_value, 1);
+ as_var = gnc_sx_variable_new_full("i", i_num, FALSE);
- g_hash_table_insert(rtn->variable_bindings, "i", as_var);
- }
+ g_hash_table_insert(rtn->variable_bindings, "i", as_var);
+ }
- return rtn;
+ return rtn;
}
static void
_build_list_from_hash_elts(gpointer key, gpointer value, gpointer user_data)
{
- GList **list = (GList**)user_data;
- *list = g_list_append(*list, value);
+ GList **list = (GList**)user_data;
+ *list = g_list_append(*list, value);
}
GList *
gnc_sx_instance_get_variables(GncSxInstance *inst)
{
- GList *vars = NULL;
- g_hash_table_foreach(inst->variable_bindings, _build_list_from_hash_elts, &vars);
- // @@fixme sort by name
- // @@fixme make sure the returned list is freed by callers.
- return vars;
+ GList *vars = NULL;
+ g_hash_table_foreach(inst->variable_bindings, _build_list_from_hash_elts, &vars);
+ // @@fixme sort by name
+ // @@fixme make sure the returned list is freed by callers.
+ return vars;
}
static GncSxInstances*
_gnc_sx_gen_instances(gpointer *data, gpointer user_data)
{
- GncSxInstances *instances = g_new0(GncSxInstances, 1);
- SchedXaction *sx = (SchedXaction*)data;
- GDate *range_end = (GDate*)user_data;
- GDate creation_end, remind_end;
- GDate cur_date;
- void *sequence_ctx;
+ GncSxInstances *instances = g_new0(GncSxInstances, 1);
+ SchedXaction *sx = (SchedXaction*)data;
+ GDate *range_end = (GDate*)user_data;
+ GDate creation_end, remind_end;
+ GDate cur_date;
+ void *sequence_ctx;
- instances->sx = sx;
+ instances->sx = sx;
- creation_end = *range_end;
- g_date_add_days(&creation_end, xaccSchedXactionGetAdvanceCreation(sx));
- remind_end = creation_end;
- g_date_add_days(&remind_end, xaccSchedXactionGetAdvanceReminder(sx));
+ creation_end = *range_end;
+ g_date_add_days(&creation_end, xaccSchedXactionGetAdvanceCreation(sx));
+ remind_end = creation_end;
+ g_date_add_days(&remind_end, xaccSchedXactionGetAdvanceReminder(sx));
- /* postponed */
- {
- GList *postponed = gnc_sx_get_defer_instances(sx);
- for ( ; postponed != NULL; postponed = postponed->next)
- {
- GDate inst_date;
- int seq_num;
- GncSxInstance *inst;
+ /* postponed */
+ {
+ GList *postponed = gnc_sx_get_defer_instances(sx);
+ for ( ; postponed != NULL; postponed = postponed->next)
+ {
+ GDate inst_date;
+ int seq_num;
+ GncSxInstance *inst;
- g_date_clear(&inst_date, 1);
- inst_date = xaccSchedXactionGetNextInstance(sx, postponed->data);
- seq_num = gnc_sx_get_instance_count(sx, postponed->data);
- inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_POSTPONED, &inst_date, postponed->data, seq_num);
- //inst->temporal_state = postponed->data;
- instances->list = g_list_append(instances->list, inst);
- }
- }
+ g_date_clear(&inst_date, 1);
+ inst_date = xaccSchedXactionGetNextInstance(sx, postponed->data);
+ seq_num = gnc_sx_get_instance_count(sx, postponed->data);
+ inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_POSTPONED, &inst_date, postponed->data, seq_num);
+ //inst->temporal_state = postponed->data;
+ instances->list = g_list_append(instances->list, inst);
+ }
+ }
- /* to-create */
- g_date_clear(&cur_date, 1);
- sequence_ctx = gnc_sx_create_temporal_state(sx);
- cur_date = xaccSchedXactionGetInstanceAfter(sx, &cur_date, sequence_ctx);
- instances->next_instance_date = cur_date;
- while (g_date_valid(&cur_date) && g_date_compare(&cur_date, &creation_end) <= 0)
- {
- GncSxInstance *inst;
- int seq_num;
- seq_num = gnc_sx_get_instance_count(sx, sequence_ctx);
- inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_TO_CREATE, &cur_date, sequence_ctx, seq_num);
- instances->list = g_list_append(instances->list, inst);
- gnc_sx_incr_temporal_state(sx, sequence_ctx);
- cur_date = xaccSchedXactionGetInstanceAfter(sx, &cur_date, sequence_ctx);
- }
+ /* to-create */
+ g_date_clear(&cur_date, 1);
+ sequence_ctx = gnc_sx_create_temporal_state(sx);
+ cur_date = xaccSchedXactionGetInstanceAfter(sx, &cur_date, sequence_ctx);
+ instances->next_instance_date = cur_date;
+ while (g_date_valid(&cur_date) && g_date_compare(&cur_date, &creation_end) <= 0)
+ {
+ GncSxInstance *inst;
+ int seq_num;
+ seq_num = gnc_sx_get_instance_count(sx, sequence_ctx);
+ inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_TO_CREATE, &cur_date, sequence_ctx, seq_num);
+ instances->list = g_list_append(instances->list, inst);
+ gnc_sx_incr_temporal_state(sx, sequence_ctx);
+ cur_date = xaccSchedXactionGetInstanceAfter(sx, &cur_date, sequence_ctx);
+ }
- /* reminders */
- while (g_date_valid(&cur_date) && g_date_compare(&cur_date, &remind_end) <= 0)
- {
- GncSxInstance *inst;
- int seq_num;
- seq_num = gnc_sx_get_instance_count(sx, sequence_ctx);
- inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_REMINDER, &cur_date, sequence_ctx, seq_num);
- instances->list = g_list_append(instances->list, inst);
- gnc_sx_incr_temporal_state(sx, sequence_ctx);
- cur_date = xaccSchedXactionGetInstanceAfter(sx, &cur_date, sequence_ctx);
- }
+ /* reminders */
+ while (g_date_valid(&cur_date) && g_date_compare(&cur_date, &remind_end) <= 0)
+ {
+ GncSxInstance *inst;
+ int seq_num;
+ seq_num = gnc_sx_get_instance_count(sx, sequence_ctx);
+ inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_REMINDER, &cur_date, sequence_ctx, seq_num);
+ instances->list = g_list_append(instances->list, inst);
+ gnc_sx_incr_temporal_state(sx, sequence_ctx);
+ cur_date = xaccSchedXactionGetInstanceAfter(sx, &cur_date, sequence_ctx);
+ }
- return instances;
+ return instances;
}
GncSxInstanceModel*
gnc_sx_get_current_instances(void)
{
- GDate *now = g_date_new();
- g_date_clear(now, 1);
- g_date_set_time_t(now, time(NULL));
- return gnc_sx_get_instances(now, FALSE);
+ GDate *now = g_date_new();
+ g_date_clear(now, 1);
+ g_date_set_time_t(now, time(NULL));
+ return gnc_sx_get_instances(now, FALSE);
}
GncSxInstanceModel*
gnc_sx_get_instances(GDate *range_end, gboolean include_disabled)
{
- GList *all_sxes = gnc_book_get_schedxactions(gnc_get_current_book())->sx_list;
- GncSxInstanceModel *instances;
+ GList *all_sxes = gnc_book_get_schedxactions(gnc_get_current_book())->sx_list;
+ GncSxInstanceModel *instances;
- g_assert(range_end != NULL);
- g_assert(g_date_valid(range_end));
+ g_assert(range_end != NULL);
+ g_assert(g_date_valid(range_end));
- instances = gnc_sx_instance_model_new();
- instances->include_disabled = include_disabled;
- instances->range_end = *range_end;
+ instances = gnc_sx_instance_model_new();
+ instances->include_disabled = include_disabled;
+ instances->range_end = *range_end;
- if (include_disabled)
- {
- instances->sx_instance_list = gnc_g_list_map(all_sxes, (GncGMapFunc)_gnc_sx_gen_instances, range_end);
- }
- else
- {
- GList *sx_iter = g_list_first(all_sxes);
- GList *enabled_sxes = NULL;
+ if (include_disabled)
+ {
+ instances->sx_instance_list = gnc_g_list_map(all_sxes, (GncGMapFunc)_gnc_sx_gen_instances, range_end);
+ }
+ else
+ {
+ GList *sx_iter = g_list_first(all_sxes);
+ GList *enabled_sxes = NULL;
- for (; sx_iter != NULL; sx_iter = sx_iter->next)
- {
- SchedXaction *sx = (SchedXaction*)sx_iter->data;
- if (xaccSchedXactionGetEnabled(sx))
- {
- enabled_sxes = g_list_append(enabled_sxes, sx);
- }
- }
- instances->sx_instance_list = gnc_g_list_map(enabled_sxes, (GncGMapFunc)_gnc_sx_gen_instances, range_end);
- g_list_free(enabled_sxes);
- }
+ for (; sx_iter != NULL; sx_iter = sx_iter->next)
+ {
+ SchedXaction *sx = (SchedXaction*)sx_iter->data;
+ if (xaccSchedXactionGetEnabled(sx))
+ {
+ enabled_sxes = g_list_append(enabled_sxes, sx);
+ }
+ }
+ instances->sx_instance_list = gnc_g_list_map(enabled_sxes, (GncGMapFunc)_gnc_sx_gen_instances, range_end);
+ g_list_free(enabled_sxes);
+ }
- return instances;
+ return instances;
}
static GncSxInstanceModel*
gnc_sx_instance_model_new(void)
{
- return GNC_SX_INSTANCE_MODEL(g_object_new(GNC_TYPE_SX_INSTANCE_MODEL, NULL));
+ return GNC_SX_INSTANCE_MODEL(g_object_new(GNC_TYPE_SX_INSTANCE_MODEL, NULL));
}
GType
gnc_sx_instance_model_get_type(void)
{
- static GType type = 0;
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof (GncSxInstanceModelClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)gnc_sx_instance_model_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GncSxInstanceModel),
- 0, /* n_preallocs */
- (GInstanceInitFunc)gnc_sx_instance_model_init /* instance_init */
- };
- type = g_type_register_static (G_TYPE_OBJECT,
- "GncSxInstanceModelType",
- &info, 0);
- }
- return type;
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (GncSxInstanceModelClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)gnc_sx_instance_model_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (GncSxInstanceModel),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc)gnc_sx_instance_model_init /* instance_init */
+ };
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "GncSxInstanceModelType",
+ &info, 0);
+ }
+ return type;
}
static void
gnc_sx_instance_model_dispose(GObject *object)
{
- GncSxInstanceModel *model;
- g_return_if_fail(object != NULL);
- model = GNC_SX_INSTANCE_MODEL(object);
+ GncSxInstanceModel *model;
+ g_return_if_fail(object != NULL);
+ model = GNC_SX_INSTANCE_MODEL(object);
- g_return_if_fail(!model->disposed);
- model->disposed = TRUE;
+ g_return_if_fail(!model->disposed);
+ model->disposed = TRUE;
- qof_event_unregister_handler(model->qof_event_handler_id);
+ qof_event_unregister_handler(model->qof_event_handler_id);
- G_OBJECT_CLASS(parent_class)->dispose(object);
+ G_OBJECT_CLASS(parent_class)->dispose(object);
}
static void
gnc_sx_instance_free(GncSxInstance *instance)
{
- // @fixme:
- // variable_bindings elts + map
- // temporal_state (iff not postponed?)
+ // @fixme:
+ // variable_bindings elts + map
+ // temporal_state (iff not postponed?)
- g_free(instance);
+ g_free(instance);
}
static void
gnc_sx_instances_free(GncSxInstances *instances)
{
- GList *instance_iter;
- // @fixme:
- // variable_names
- // sx = null
+ GList *instance_iter;
+ // @fixme:
+ // variable_names
+ // sx = null
- for (instance_iter = instances->list; instance_iter != NULL; instance_iter = instance_iter->next)
- {
- GncSxInstance *inst = (GncSxInstance*)instance_iter->data;
- gnc_sx_instance_free(inst);
- }
- g_list_free(instances->list);
- instances->list = NULL;
+ for (instance_iter = instances->list; instance_iter != NULL; instance_iter = instance_iter->next)
+ {
+ GncSxInstance *inst = (GncSxInstance*)instance_iter->data;
+ gnc_sx_instance_free(inst);
+ }
+ g_list_free(instances->list);
+ instances->list = NULL;
- g_free(instances);
+ g_free(instances);
}
static void
gnc_sx_instance_model_finalize (GObject *object)
{
- GncSxInstanceModel *model;
- GList *sx_list_iter;
+ GncSxInstanceModel *model;
+ GList *sx_list_iter;
- g_return_if_fail(object != NULL);
+ g_return_if_fail(object != NULL);
- model = GNC_SX_INSTANCE_MODEL(object);
- for (sx_list_iter = model->sx_instance_list; sx_list_iter != NULL; sx_list_iter = sx_list_iter->next)
- {
- GncSxInstances *instances = (GncSxInstances*)sx_list_iter->data;
- gnc_sx_instances_free(instances);
- }
- g_list_free(model->sx_instance_list);
- model->sx_instance_list = NULL;
+ model = GNC_SX_INSTANCE_MODEL(object);
+ for (sx_list_iter = model->sx_instance_list; sx_list_iter != NULL; sx_list_iter = sx_list_iter->next)
+ {
+ GncSxInstances *instances = (GncSxInstances*)sx_list_iter->data;
+ gnc_sx_instances_free(instances);
+ }
+ g_list_free(model->sx_instance_list);
+ model->sx_instance_list = NULL;
- G_OBJECT_CLASS(parent_class)->finalize(object);
+ G_OBJECT_CLASS(parent_class)->finalize(object);
}
static void
gnc_sx_instance_model_class_init (GncSxInstanceModelClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
- parent_class = g_type_class_peek_parent(klass);
+ parent_class = g_type_class_peek_parent(klass);
- object_class->dispose = gnc_sx_instance_model_dispose;
- object_class->finalize = gnc_sx_instance_model_finalize;
+ object_class->dispose = gnc_sx_instance_model_dispose;
+ object_class->finalize = gnc_sx_instance_model_finalize;
- klass->removing_signal_id =
- g_signal_new("removing",
- GNC_TYPE_SX_INSTANCE_MODEL,
- G_SIGNAL_RUN_FIRST,
- 0, /* class offset */
- NULL, /* accumulator */
- NULL, /* accum data */
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE,
- 1,
- G_TYPE_POINTER);
+ klass->removing_signal_id =
+ g_signal_new("removing",
+ GNC_TYPE_SX_INSTANCE_MODEL,
+ G_SIGNAL_RUN_FIRST,
+ 0, /* class offset */
+ NULL, /* accumulator */
+ NULL, /* accum data */
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_POINTER);
- klass->updated_signal_id =
- g_signal_new("updated",
- GNC_TYPE_SX_INSTANCE_MODEL,
- G_SIGNAL_RUN_FIRST,
- 0, /* class offset */
- NULL, /* accumulator */
- NULL, /* accum data */
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE,
- 1,
- G_TYPE_POINTER);
+ klass->updated_signal_id =
+ g_signal_new("updated",
+ GNC_TYPE_SX_INSTANCE_MODEL,
+ G_SIGNAL_RUN_FIRST,
+ 0, /* class offset */
+ NULL, /* accumulator */
+ NULL, /* accum data */
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_POINTER);
- klass->added_signal_id =
- g_signal_new("added",
- GNC_TYPE_SX_INSTANCE_MODEL,
- G_SIGNAL_RUN_FIRST,
- 0, /* class offset */
- NULL, /* accumulator */
- NULL, /* accum data */
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE,
- 1,
- G_TYPE_POINTER);
+ klass->added_signal_id =
+ g_signal_new("added",
+ GNC_TYPE_SX_INSTANCE_MODEL,
+ G_SIGNAL_RUN_FIRST,
+ 0, /* class offset */
+ NULL, /* accumulator */
+ NULL, /* accum data */
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_POINTER);
}
static void
gnc_sx_instance_model_init(GTypeInstance *instance, gpointer klass)
{
- GncSxInstanceModel *inst = (GncSxInstanceModel*)instance;
+ GncSxInstanceModel *inst = (GncSxInstanceModel*)instance;
- g_date_clear(&inst->range_end, 1);
- inst->sx_instance_list = NULL;
- inst->qof_event_handler_id = qof_event_register_handler(_gnc_sx_instance_event_handler, inst);
+ g_date_clear(&inst->range_end, 1);
+ inst->sx_instance_list = NULL;
+ inst->qof_event_handler_id = qof_event_register_handler(_gnc_sx_instance_event_handler, inst);
}
static gint
_gnc_sx_instance_find_by_sx(GncSxInstances *in_list_instances, SchedXaction *sx_to_find)
{
- if (in_list_instances->sx == sx_to_find)
- return 0;
- return -1;
+ if (in_list_instances->sx == sx_to_find)
+ return 0;
+ return -1;
}
static void
_gnc_sx_instance_event_handler(QofEntity *ent, QofEventId event_type, gpointer user_data, gpointer evt_data)
{
- GncSxInstanceModel *instances = GNC_SX_INSTANCE_MODEL(user_data);
+ GncSxInstanceModel *instances = GNC_SX_INSTANCE_MODEL(user_data);
- /* selection rules {
- // (gnc_collection_get_schedxaction_list(book), GNC_EVENT_ITEM_ADDED)
- // (gnc_collection_get_schedxaction_list(book), GNC_EVENT_ITEM_REMOVED)
- // (GNC_IS_SX(ent), QOF_EVENT_MODIFIED)
- // } */
- if (!(GNC_IS_SX(ent) || GNC_IS_SXES(ent)))
- return;
+ /* selection rules {
+ // (gnc_collection_get_schedxaction_list(book), GNC_EVENT_ITEM_ADDED)
+ // (gnc_collection_get_schedxaction_list(book), GNC_EVENT_ITEM_REMOVED)
+ // (GNC_IS_SX(ent), QOF_EVENT_MODIFIED)
+ // } */
+ if (!(GNC_IS_SX(ent) || GNC_IS_SXES(ent)))
+ return;
- if (GNC_IS_SX(ent))
- {
- SchedXaction *sx;
- gboolean sx_is_in_model = FALSE;
+ if (GNC_IS_SX(ent))
+ {
+ SchedXaction *sx;
+ gboolean sx_is_in_model = FALSE;
- sx = GNC_SX(ent);
- // only send `updated` if it's actually in the model
- sx_is_in_model = (g_list_find_custom(instances->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx) != NULL);
- if (event_type & QOF_EVENT_MODIFY)
- {
- if (sx_is_in_model)
- {
- if (instances->include_disabled || xaccSchedXactionGetEnabled(sx))
- {
- g_signal_emit_by_name(instances, "updated", (gpointer)sx);
- }
- else
- {
- /* the sx was enabled but is now disabled */
- g_signal_emit_by_name(instances, "removing", (gpointer)sx);
- }
- }
- else
- {
- /* determine if this is a legitimate SX or just a "one-off" / being created */
- GList *all_sxes = gnc_book_get_schedxactions(gnc_get_current_book())->sx_list;
- if (g_list_find(all_sxes, sx) && (!instances->include_disabled && xaccSchedXactionGetEnabled(sx)))
- {
- /* it's moved from disabled to enabled, add the instances */
- instances->sx_instance_list
- = g_list_append(instances->sx_instance_list,
- _gnc_sx_gen_instances((gpointer)sx, (gpointer)&instances->range_end));
- g_signal_emit_by_name(instances, "added", (gpointer)sx);
- }
- }
- }
- /* else { unsupported event type; ignore } */
- }
- else if (GNC_IS_SXES(ent))
- {
- SchedXactions *sxes = GNC_SXES(ent);
- SchedXaction *sx = GNC_SX(evt_data);
-
- sxes = NULL;
- if (event_type & GNC_EVENT_ITEM_REMOVED)
- {
- GList *instances_link;
- instances_link = g_list_find_custom(instances->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx);
- if (instances_link != NULL)
- {
+ sx = GNC_SX(ent);
+ // only send `updated` if it's actually in the model
+ sx_is_in_model = (g_list_find_custom(instances->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx) != NULL);
+ if (event_type & QOF_EVENT_MODIFY)
+ {
+ if (sx_is_in_model)
+ {
+ if (instances->include_disabled || xaccSchedXactionGetEnabled(sx))
+ {
+ g_signal_emit_by_name(instances, "updated", (gpointer)sx);
+ }
+ else
+ {
+ /* the sx was enabled but is now disabled */
g_signal_emit_by_name(instances, "removing", (gpointer)sx);
- }
- else if (instances->include_disabled)
- {
- g_warning("could not remove instances that do not exist in the model");
- }
- }
- else if (event_type & GNC_EVENT_ITEM_ADDED)
- {
- if (instances->include_disabled || xaccSchedXactionGetEnabled(sx))
- {
- /* generate instances, add to instance list, emit update. */
+ }
+ }
+ else
+ {
+ /* determine if this is a legitimate SX or just a "one-off" / being created */
+ GList *all_sxes = gnc_book_get_schedxactions(gnc_get_current_book())->sx_list;
+ if (g_list_find(all_sxes, sx) && (!instances->include_disabled && xaccSchedXactionGetEnabled(sx)))
+ {
+ /* it's moved from disabled to enabled, add the instances */
instances->sx_instance_list
- = g_list_append(instances->sx_instance_list,
- _gnc_sx_gen_instances((gpointer)sx, (gpointer)&instances->range_end));
+ = g_list_append(instances->sx_instance_list,
+ _gnc_sx_gen_instances((gpointer)sx, (gpointer)&instances->range_end));
g_signal_emit_by_name(instances, "added", (gpointer)sx);
- }
- }
- /* else { g_critical("unsupported event type [%d]\n", event_type); } */
- }
+ }
+ }
+ }
+ /* else { unsupported event type; ignore } */
+ }
+ else if (GNC_IS_SXES(ent))
+ {
+ SchedXactions *sxes = GNC_SXES(ent);
+ SchedXaction *sx = GNC_SX(evt_data);
+
+ sxes = NULL;
+ if (event_type & GNC_EVENT_ITEM_REMOVED)
+ {
+ GList *instances_link;
+ instances_link = g_list_find_custom(instances->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx);
+ if (instances_link != NULL)
+ {
+ g_signal_emit_by_name(instances, "removing", (gpointer)sx);
+ }
+ else if (instances->include_disabled)
+ {
+ g_warning("could not remove instances that do not exist in the model");
+ }
+ }
+ else if (event_type & GNC_EVENT_ITEM_ADDED)
+ {
+ if (instances->include_disabled || xaccSchedXactionGetEnabled(sx))
+ {
+ /* generate instances, add to instance list, emit update. */
+ instances->sx_instance_list
+ = g_list_append(instances->sx_instance_list,
+ _gnc_sx_gen_instances((gpointer)sx, (gpointer)&instances->range_end));
+ g_signal_emit_by_name(instances, "added", (gpointer)sx);
+ }
+ }
+ /* else { g_critical("unsupported event type [%d]\n", event_type); } */
+ }
}
void
gnc_sx_instance_model_update_sx_instances(GncSxInstanceModel *model, SchedXaction *sx)
{
- GncSxInstances *existing, *new_instances;
- GList *link;
+ GncSxInstances *existing, *new_instances;
+ GList *link;
- link = g_list_find_custom(model->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx);
- if (link == NULL)
- {
- g_critical("couldn't find sx [%p]\n", sx);
- return;
- }
+ link = g_list_find_custom(model->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx);
+ if (link == NULL)
+ {
+ g_critical("couldn't find sx [%p]\n", sx);
+ return;
+ }
- // merge the new instance data into the existing structure, mutating as little as possible.
- existing = (GncSxInstances*)link->data;
- new_instances = _gnc_sx_gen_instances((gpointer)sx, &model->range_end);
- existing->sx = new_instances->sx;
- // @fixme: variable names stuff
- existing->next_instance_date = new_instances->next_instance_date;
- {
- GList *existing_iter, *new_iter;
- gboolean existing_remain, new_remain;
+ // merge the new instance data into the existing structure, mutating as little as possible.
+ existing = (GncSxInstances*)link->data;
+ new_instances = _gnc_sx_gen_instances((gpointer)sx, &model->range_end);
+ existing->sx = new_instances->sx;
+ // @fixme: variable names stuff
+ existing->next_instance_date = new_instances->next_instance_date;
+ {
+ GList *existing_iter, *new_iter;
+ gboolean existing_remain, new_remain;
- // step through the lists pairwise, and retain the existing
- // instance if the dates align, as soon as they don't stop and
- // cleanup.
- existing_iter = existing->list;
- new_iter = new_instances->list;
- for (; existing_iter != NULL && new_iter != NULL; existing_iter = existing_iter->next, new_iter = new_iter->next)
- {
- GncSxInstance *existing_inst, *new_inst;
- gboolean same_instance_date;
- existing_inst = (GncSxInstance*)existing_iter->data;
- new_inst = (GncSxInstance*)new_iter->data;
+ // step through the lists pairwise, and retain the existing
+ // instance if the dates align, as soon as they don't stop and
+ // cleanup.
+ existing_iter = existing->list;
+ new_iter = new_instances->list;
+ for (; existing_iter != NULL && new_iter != NULL; existing_iter = existing_iter->next, new_iter = new_iter->next)
+ {
+ GncSxInstance *existing_inst, *new_inst;
+ gboolean same_instance_date;
+ existing_inst = (GncSxInstance*)existing_iter->data;
+ new_inst = (GncSxInstance*)new_iter->data;
- same_instance_date = g_date_compare(&existing_inst->date, &new_inst->date) == 0;
- if (!same_instance_date)
- break;
- }
+ same_instance_date = g_date_compare(&existing_inst->date, &new_inst->date) == 0;
+ if (!same_instance_date)
+ break;
+ }
- existing_remain = (existing_iter != NULL);
- new_remain = (new_iter != NULL);
+ existing_remain = (existing_iter != NULL);
+ new_remain = (new_iter != NULL);
- if (existing_remain)
- {
- // delete excess
- gnc_g_list_cut(&existing->list, existing_iter);
- g_list_foreach(existing_iter, (GFunc)gnc_sx_instance_free, NULL);
- }
+ if (existing_remain)
+ {
+ // delete excess
+ gnc_g_list_cut(&existing->list, existing_iter);
+ g_list_foreach(existing_iter, (GFunc)gnc_sx_instance_free, NULL);
+ }
- if (new_remain)
- {
- // append new
- GList *new_iter_iter;
- gnc_g_list_cut(&new_instances->list, new_iter);
+ if (new_remain)
+ {
+ // append new
+ GList *new_iter_iter;
+ gnc_g_list_cut(&new_instances->list, new_iter);
- for (new_iter_iter = new_iter; new_iter_iter != NULL; new_iter_iter = new_iter_iter->next)
- {
- GncSxInstance *inst = (GncSxInstance*)new_iter_iter->data;
- inst->parent = existing;
- existing->list = g_list_append(existing->list, new_iter_iter->data);
- }
- g_list_free(new_iter);
- }
- }
- gnc_sx_instances_free(new_instances);
+ for (new_iter_iter = new_iter; new_iter_iter != NULL; new_iter_iter = new_iter_iter->next)
+ {
+ GncSxInstance *inst = (GncSxInstance*)new_iter_iter->data;
+ inst->parent = existing;
+ existing->list = g_list_append(existing->list, new_iter_iter->data);
+ }
+ g_list_free(new_iter);
+ }
+ }
+ gnc_sx_instances_free(new_instances);
}
void
gnc_sx_instance_model_remove_sx_instances(GncSxInstanceModel *model, SchedXaction *sx)
{
- GList *instance_link = NULL;
+ GList *instance_link = NULL;
- instance_link = g_list_find_custom(model->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx);
- if (instance_link == NULL)
- {
- g_warning("instance not found!\n");
- return;
- }
+ instance_link = g_list_find_custom(model->sx_instance_list, sx, (GCompareFunc)_gnc_sx_instance_find_by_sx);
+ if (instance_link == NULL)
+ {
+ g_warning("instance not found!\n");
+ return;
+ }
- model->sx_instance_list = g_list_remove_link(model->sx_instance_list, instance_link);
- gnc_sx_instances_free((GncSxInstances*)instance_link->data);
+ model->sx_instance_list = g_list_remove_link(model->sx_instance_list, instance_link);
+ gnc_sx_instances_free((GncSxInstances*)instance_link->data);
}
static void
increment_sx_state(GncSxInstance *inst, GDate **last_occur_date, int *instance_count, int *remain_occur_count)
{
- if (!g_date_valid(*last_occur_date)
- || (g_date_valid(*last_occur_date)
- && g_date_compare(*last_occur_date, &inst->date) <= 0))
- {
- *last_occur_date = &inst->date;
- }
+ if (!g_date_valid(*last_occur_date)
+ || (g_date_valid(*last_occur_date)
+ && g_date_compare(*last_occur_date, &inst->date) <= 0))
+ {
+ *last_occur_date = &inst->date;
+ }
- *instance_count = gnc_sx_get_instance_count(inst->parent->sx, inst->temporal_state);
+ *instance_count = gnc_sx_get_instance_count(inst->parent->sx, inst->temporal_state);
- if (*remain_occur_count > 0)
- {
- *remain_occur_count -= 1;
- }
+ if (*remain_occur_count > 0)
+ {
+ *remain_occur_count -= 1;
+ }
}
typedef struct _SxTxnCreationData
{
- GncSxInstance *instance;
- GList **created_txn_guids;
- GList **creation_errors;
+ GncSxInstance *instance;
+ GList **created_txn_guids;
+ GList **creation_errors;
} SxTxnCreationData;
static gboolean
_get_template_split_account(GncSxInstance *instance, Split *template_split, Account **split_acct, GList **creation_errors)
{
- GUID *acct_guid;
- kvp_frame *split_kvpf;
- kvp_value *kvp_val;
+ GUID *acct_guid;
+ kvp_frame *split_kvpf;
+ kvp_value *kvp_val;
- split_kvpf = xaccSplitGetSlots(template_split);
- /* contains the guid of the split's actual account. */
- kvp_val = kvp_frame_get_slot_path(split_kvpf,
- GNC_SX_ID,
- GNC_SX_ACCOUNT,
- NULL);
- if (kvp_val == NULL)
- {
- // @@fixme: this should be more of an assert...
- GString *err = g_string_new("");
- g_string_printf(err, "Null account kvp value for SX [%s], cancelling creation.",
- xaccSchedXactionGetName(instance->parent->sx));
- *creation_errors = g_list_append(*creation_errors, err);
- return FALSE;
- }
- acct_guid = kvp_value_get_guid( kvp_val );
- *split_acct = xaccAccountLookup(acct_guid, gnc_get_current_book());
- if (*split_acct == NULL)
- {
- const char *guid_str;
- GString *err;
- guid_str = guid_to_string((const GUID*)acct_guid);
- err = g_string_new("");
- g_string_printf(err, "Unknown account for guid [%s], cancelling SX [%s] creation.",
- guid_str, xaccSchedXactionGetName(instance->parent->sx));
- g_free((char*)guid_str);
- *creation_errors = g_list_append(*creation_errors, err);
- return FALSE;
- }
+ split_kvpf = xaccSplitGetSlots(template_split);
+ /* contains the guid of the split's actual account. */
+ kvp_val = kvp_frame_get_slot_path(split_kvpf,
+ GNC_SX_ID,
+ GNC_SX_ACCOUNT,
+ NULL);
+ if (kvp_val == NULL)
+ {
+ // @@fixme: this should be more of an assert...
+ GString *err = g_string_new("");
+ g_string_printf(err, "Null account kvp value for SX [%s], cancelling creation.",
+ xaccSchedXactionGetName(instance->parent->sx));
+ *creation_errors = g_list_append(*creation_errors, err);
+ return FALSE;
+ }
+ acct_guid = kvp_value_get_guid( kvp_val );
+ *split_acct = xaccAccountLookup(acct_guid, gnc_get_current_book());
+ if (*split_acct == NULL)
+ {
+ const char *guid_str;
+ GString *err;
+ guid_str = guid_to_string((const GUID*)acct_guid);
+ err = g_string_new("");
+ g_string_printf(err, "Unknown account for guid [%s], cancelling SX [%s] creation.",
+ guid_str, xaccSchedXactionGetName(instance->parent->sx));
+ g_free((char*)guid_str);
+ *creation_errors = g_list_append(*creation_errors, err);
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
static void
_get_sx_formula(GncSxInstance *instance, Split *template_split, gnc_numeric *numeric, GList **creation_errors, const char *formula_key)
{
- kvp_frame *split_kvpf;
- kvp_value *kvp_val;
- char *formula_str, *parseErrorLoc;
+ kvp_frame *split_kvpf;
+ kvp_value *kvp_val;
+ char *formula_str, *parseErrorLoc;
- split_kvpf = xaccSplitGetSlots(template_split);
- kvp_val = kvp_frame_get_slot_path(split_kvpf,
- GNC_SX_ID,
- formula_key,
- NULL);
- formula_str = kvp_value_get_string(kvp_val);
- if (formula_str != NULL && strlen(formula_str) != 0)
- {
- GHashTable *parser_vars = gnc_sx_instance_get_variables_for_parser(instance->variable_bindings);
- if (!gnc_exp_parser_parse_separate_vars(formula_str,
- numeric,
- &parseErrorLoc,
- parser_vars))
- {
- GString *err = g_string_new("");
- g_string_printf(err, "Error parsing SX [%s] key [%s]=formula [%s] at [%s]: %s",
- xaccSchedXactionGetName(instance->parent->sx),
- formula_key,
- formula_str,
- parseErrorLoc,
- gnc_exp_parser_error_string());
- *creation_errors = g_list_append(*creation_errors, err);
- }
- g_hash_table_destroy(parser_vars);
- }
+ split_kvpf = xaccSplitGetSlots(template_split);
+ kvp_val = kvp_frame_get_slot_path(split_kvpf,
+ GNC_SX_ID,
+ formula_key,
+ NULL);
+ formula_str = kvp_value_get_string(kvp_val);
+ if (formula_str != NULL && strlen(formula_str) != 0)
+ {
+ GHashTable *parser_vars = gnc_sx_instance_get_variables_for_parser(instance->variable_bindings);
+ if (!gnc_exp_parser_parse_separate_vars(formula_str,
+ numeric,
+ &parseErrorLoc,
+ parser_vars))
+ {
+ GString *err = g_string_new("");
+ g_string_printf(err, "Error parsing SX [%s] key [%s]=formula [%s] at [%s]: %s",
+ xaccSchedXactionGetName(instance->parent->sx),
+ formula_key,
+ formula_str,
+ parseErrorLoc,
+ gnc_exp_parser_error_string());
+ *creation_errors = g_list_append(*creation_errors, err);
+ }
+ g_hash_table_destroy(parser_vars);
+ }
}
static void
_get_credit_formula(GncSxInstance *instance, Split *template_split, gnc_numeric *credit_num, GList **creation_errors)
{
- _get_sx_formula(instance, template_split, credit_num, creation_errors, GNC_SX_CREDIT_FORMULA);
+ _get_sx_formula(instance, template_split, credit_num, creation_errors, GNC_SX_CREDIT_FORMULA);
}
static void
_get_debit_formula(GncSxInstance *instance, Split *template_split, gnc_numeric *debit_num, GList **creation_errors)
{
- _get_sx_formula(instance, template_split, debit_num, creation_errors, GNC_SX_DEBIT_FORMULA);
+ _get_sx_formula(instance, template_split, debit_num, creation_errors, GNC_SX_DEBIT_FORMULA);
}
static gboolean
create_each_transaction_helper(Transaction *template_txn, void *user_data)
{
- Transaction *new_txn;
- GList *txn_splits, *template_splits;
- Split *copying_split;
- gnc_commodity *first_cmdty = NULL;
- gboolean err_flag = FALSE;
- SxTxnCreationData *creation_data;
+ Transaction *new_txn;
+ GList *txn_splits, *template_splits;
+ Split *copying_split;
+ gnc_commodity *first_cmdty = NULL;
+ gboolean err_flag = FALSE;
+ SxTxnCreationData *creation_data;
- creation_data = (SxTxnCreationData*)user_data;
+ creation_data = (SxTxnCreationData*)user_data;
- /* FIXME: In general, this should [correctly] deal with errors such
- as not finding the approrpiate Accounts and not being able to
- parse the formula|credit/debit strings. */
+ /* FIXME: In general, this should [correctly] deal with errors such
+ as not finding the approrpiate Accounts and not being able to
+ parse the formula|credit/debit strings. */
- new_txn = xaccTransClone(template_txn);
- xaccTransBeginEdit(new_txn);
+ new_txn = xaccTransClone(template_txn);
+ xaccTransBeginEdit(new_txn);
- /* clear any copied KVP data */
- qof_instance_set_slots(QOF_INSTANCE(new_txn), kvp_frame_new());
+ /* clear any copied KVP data */
+ qof_instance_set_slots(QOF_INSTANCE(new_txn), kvp_frame_new());
- xaccTransSetDate(new_txn,
- g_date_get_day(&creation_data->instance->date),
- g_date_get_month(&creation_data->instance->date),
- g_date_get_year(&creation_data->instance->date));
+ xaccTransSetDate(new_txn,
+ g_date_get_day(&creation_data->instance->date),
+ g_date_get_month(&creation_data->instance->date),
+ g_date_get_year(&creation_data->instance->date));
- /* the accounts and amounts are in the kvp_frames of the splits. */
- template_splits = xaccTransGetSplitList(template_txn);
- txn_splits = xaccTransGetSplitList(new_txn);
- if ((template_splits == NULL) || (txn_splits == NULL))
- {
- g_critical("transaction w/o splits for sx [%s]",
- xaccSchedXactionGetName(creation_data->instance->parent->sx));
- xaccTransDestroy(new_txn);
- xaccTransCommitEdit(new_txn);
- return FALSE;
- }
+ /* the accounts and amounts are in the kvp_frames of the splits. */
+ template_splits = xaccTransGetSplitList(template_txn);
+ txn_splits = xaccTransGetSplitList(new_txn);
+ if ((template_splits == NULL) || (txn_splits == NULL))
+ {
+ g_critical("transaction w/o splits for sx [%s]",
+ xaccSchedXactionGetName(creation_data->instance->parent->sx));
+ xaccTransDestroy(new_txn);
+ xaccTransCommitEdit(new_txn);
+ return FALSE;
+ }
- for (;
- txn_splits && template_splits;
- txn_splits = txn_splits->next, template_splits = template_splits->next)
- {
- Split *template_split;
- Account *split_acct;
- gnc_commodity *split_cmdty = NULL;
+ for (;
+ txn_splits && template_splits;
+ txn_splits = txn_splits->next, template_splits = template_splits->next)
+ {
+ Split *template_split;
+ Account *split_acct;
+ gnc_commodity *split_cmdty = NULL;
- /* FIXME: Ick. This assumes that the split lists will be ordered
- identically. :( They are, but we'd rather not have to count on
- it. --jsled */
- template_split = (Split*)template_splits->data;
- copying_split = (Split*)txn_splits->data;
+ /* FIXME: Ick. This assumes that the split lists will be ordered
+ identically. :( They are, but we'd rather not have to count on
+ it. --jsled */
+ template_split = (Split*)template_splits->data;
+ copying_split = (Split*)txn_splits->data;
- /* clear out any copied Split frame data. */
- qof_instance_set_slots(QOF_INSTANCE(copying_split), kvp_frame_new());
+ /* clear out any copied Split frame data. */
+ qof_instance_set_slots(QOF_INSTANCE(copying_split), kvp_frame_new());
- if (!_get_template_split_account(creation_data->instance, template_split, &split_acct, creation_data->creation_errors))
- {
- err_flag = TRUE;
- break;
- }
+ if (!_get_template_split_account(creation_data->instance, template_split, &split_acct, creation_data->creation_errors))
+ {
+ err_flag = TRUE;
+ break;
+ }
- split_cmdty = xaccAccountGetCommodity(split_acct);
- if (first_cmdty == NULL)
- {
- first_cmdty = split_cmdty;
- xaccTransSetCurrency(new_txn, first_cmdty);
- }
+ split_cmdty = xaccAccountGetCommodity(split_acct);
+ if (first_cmdty == NULL)
+ {
+ first_cmdty = split_cmdty;
+ xaccTransSetCurrency(new_txn, first_cmdty);
+ }
- xaccAccountBeginEdit(split_acct);
- xaccAccountInsertSplit(split_acct, copying_split);
+ xaccAccountBeginEdit(split_acct);
+ xaccAccountInsertSplit(split_acct, copying_split);
- {
- gnc_numeric credit_num, debit_num, final;
- gint gncn_error;
+ {
+ gnc_numeric credit_num, debit_num, final;
+ gint gncn_error;
- credit_num = gnc_numeric_zero();
- debit_num = gnc_numeric_zero();
+ credit_num = gnc_numeric_zero();
+ debit_num = gnc_numeric_zero();
- _get_credit_formula(creation_data->instance, template_split, &credit_num, creation_data->creation_errors);
- _get_debit_formula(creation_data->instance, template_split, &debit_num, creation_data->creation_errors);
+ _get_credit_formula(creation_data->instance, template_split, &credit_num, creation_data->creation_errors);
+ _get_debit_formula(creation_data->instance, template_split, &debit_num, creation_data->creation_errors);
- final = gnc_numeric_sub_fixed( debit_num, credit_num );
+ final = gnc_numeric_sub_fixed( debit_num, credit_num );
- gncn_error = gnc_numeric_check(final);
- if (gncn_error != GNC_ERROR_OK) {
- GString *err = g_string_new("");
- g_string_printf(err, "Error %d in SX [%s] final gnc_numeric value, using 0 instead.",
- gncn_error,
- xaccSchedXactionGetName(creation_data->instance->parent->sx));
- *creation_data->creation_errors = g_list_append(*creation_data->creation_errors, err);
- final = gnc_numeric_zero();
- }
+ gncn_error = gnc_numeric_check(final);
+ if (gncn_error != GNC_ERROR_OK) {
+ GString *err = g_string_new("");
+ g_string_printf(err, "Error %d in SX [%s] final gnc_numeric value, using 0 instead.",
+ gncn_error,
+ xaccSchedXactionGetName(creation_data->instance->parent->sx));
+ *creation_data->creation_errors = g_list_append(*creation_data->creation_errors, err);
+ final = gnc_numeric_zero();
+ }
- xaccSplitSetValue(copying_split, final);
- if (! gnc_commodity_equal(split_cmdty, first_cmdty))
- {
- GString *exchange_rate_var_name = g_string_sized_new(16);
- GncSxVariable *exchange_rate_var;
- gnc_numeric exchange_rate, amt;
+ xaccSplitSetValue(copying_split, final);
+ if (! gnc_commodity_equal(split_cmdty, first_cmdty))
+ {
+ GString *exchange_rate_var_name = g_string_sized_new(16);
+ GncSxVariable *exchange_rate_var;
+ gnc_numeric exchange_rate, amt;
- /*
- GNCPriceDB *price_db = gnc_pricedb_get_db(gnc_get_current_book());
- GNCPrice *price;
+ /*
+ GNCPriceDB *price_db = gnc_pricedb_get_db(gnc_get_current_book());
+ GNCPrice *price;
- price = gnc_pricedb_lookup_latest(price_db, first_cmdty, split_cmdty);
- if (price == NULL)
- {
- price = gnc_pricedb_lookup_latest(price_db, split_cmdty, first_cmdty);
- if (price == NULL)
- {
- GString *err = g_string_new("");
- g_string_printf(err, "could not find pricedb entry for commodity-pair (%s, %s).",
- gnc_commodity_get_mnemonic(first_cmdty),
- gnc_commodity_get_mnemonic(split_cmdty));
- exchange = gnc_numeric_create(1, 1);
- *creation_data->creation_errors = g_list_append(*creation_data->creation_errors, err);
+ price = gnc_pricedb_lookup_latest(price_db, first_cmdty, split_cmdty);
+ if (price == NULL)
+ {
+ price = gnc_pricedb_lookup_latest(price_db, split_cmdty, first_cmdty);
+ if (price == NULL)
+ {
+ GString *err = g_string_new("");
+ g_string_printf(err, "could not find pricedb entry for commodity-pair (%s, %s).",
+ gnc_commodity_get_mnemonic(first_cmdty),
+ gnc_commodity_get_mnemonic(split_cmdty));
+ exchange = gnc_numeric_create(1, 1);
+ *creation_data->creation_errors = g_list_append(*creation_data->creation_errors, err);
- }
- else
- {
- exchange = gnc_numeric_div(gnc_numeric_create(1,1),
- gnc_price_get_value(price),
- 1000, GNC_HOW_RND_ROUND);
- }
- }
- else
- {
- exchange = gnc_price_get_value(price);
- }
- */
+ }
+ else
+ {
+ exchange = gnc_numeric_div(gnc_numeric_create(1,1),
+ gnc_price_get_value(price),
+ 1000, GNC_HOW_RND_ROUND);
+ }
+ }
+ else
+ {
+ exchange = gnc_price_get_value(price);
+ }
+ */
- exchange_rate = gnc_numeric_zero();
- g_string_printf(exchange_rate_var_name, "%s -> %s",
- gnc_commodity_get_mnemonic(split_cmdty),
- gnc_commodity_get_mnemonic(first_cmdty));
- exchange_rate_var = (GncSxVariable*)g_hash_table_lookup(creation_data->instance->variable_bindings,
- exchange_rate_var_name->str);
- if (exchange_rate_var != NULL)
- {
- exchange_rate = exchange_rate_var->value;
- }
- g_string_free(exchange_rate_var_name, TRUE);
+ exchange_rate = gnc_numeric_zero();
+ g_string_printf(exchange_rate_var_name, "%s -> %s",
+ gnc_commodity_get_mnemonic(split_cmdty),
+ gnc_commodity_get_mnemonic(first_cmdty));
+ exchange_rate_var = (GncSxVariable*)g_hash_table_lookup(creation_data->instance->variable_bindings,
+ exchange_rate_var_name->str);
+ if (exchange_rate_var != NULL)
+ {
+ exchange_rate = exchange_rate_var->value;
+ }
+ g_string_free(exchange_rate_var_name, TRUE);
- amt = gnc_numeric_mul(final, exchange_rate, 1000, GNC_HOW_RND_ROUND);
- xaccSplitSetAmount(copying_split, amt);
- }
+ amt = gnc_numeric_mul(final, exchange_rate, 1000, GNC_HOW_RND_ROUND);
+ xaccSplitSetAmount(copying_split, amt);
+ }
- xaccSplitScrub(copying_split);
- }
+ xaccSplitScrub(copying_split);
+ }
- xaccAccountCommitEdit(split_acct);
- }
+ xaccAccountCommitEdit(split_acct);
+ }
- if (err_flag)
- {
- g_critical("new transaction creation sx [%s]",
- xaccSchedXactionGetName(creation_data->instance->parent->sx));
- xaccTransDestroy(new_txn);
- xaccTransCommitEdit(new_txn);
- return FALSE;
- }
+ if (err_flag)
+ {
+ g_critical("new transaction creation sx [%s]",
+ xaccSchedXactionGetName(creation_data->instance->parent->sx));
+ xaccTransDestroy(new_txn);
+ xaccTransCommitEdit(new_txn);
+ return FALSE;
+ }
- {
- kvp_frame *txn_frame;
- /* set a kvp-frame element in the transaction indicating and
- * pointing-to the SX this was created from. */
- txn_frame = xaccTransGetSlots(new_txn);
- kvp_frame_set_guid(txn_frame, "from-sched-xaction", xaccSchedXactionGetGUID(creation_data->instance->parent->sx));
- }
+ {
+ kvp_frame *txn_frame;
+ /* set a kvp-frame element in the transaction indicating and
+ * pointing-to the SX this was created from. */
+ txn_frame = xaccTransGetSlots(new_txn);
+ kvp_frame_set_guid(txn_frame, "from-sched-xaction", xaccSchedXactionGetGUID(creation_data->instance->parent->sx));
+ }
- xaccTransCommitEdit(new_txn);
+ xaccTransCommitEdit(new_txn);
- if (creation_data->created_txn_guids != NULL)
- {
- *creation_data->created_txn_guids
- = g_list_append(*(creation_data->created_txn_guids), (gpointer)xaccTransGetGUID(new_txn));
- }
+ if (creation_data->created_txn_guids != NULL)
+ {
+ *creation_data->created_txn_guids
+ = g_list_append(*(creation_data->created_txn_guids), (gpointer)xaccTransGetGUID(new_txn));
+ }
- return TRUE;
+ return TRUE;
}
static void
create_transactions_for_instance(GncSxInstance *instance, GList **created_txn_guids, GList **creation_errors)
{
- SxTxnCreationData creation_data;
- Account *sx_template_account;
+ SxTxnCreationData creation_data;
+ Account *sx_template_account;
- sx_template_account = gnc_sx_get_template_transaction_account(instance->parent->sx);
+ sx_template_account = gnc_sx_get_template_transaction_account(instance->parent->sx);
- creation_data.instance = instance;
- creation_data.created_txn_guids = created_txn_guids;
- creation_data.creation_errors = creation_errors;
+ creation_data.instance = instance;
+ creation_data.created_txn_guids = created_txn_guids;
+ creation_data.creation_errors = creation_errors;
- xaccAccountForEachTransaction(sx_template_account,
- create_each_transaction_helper,
- &creation_data);
+ xaccAccountForEachTransaction(sx_template_account,
+ create_each_transaction_helper,
+ &creation_data);
}
void
@@ -1092,82 +1092,82 @@
GList **created_transaction_guids,
GList **creation_errors)
{
- GList *iter;
- for (iter = model->sx_instance_list; iter != NULL; iter = iter->next)
- {
- GList *instance_iter;
- GncSxInstances *instances = (GncSxInstances*)iter->data;
- GDate *last_occur_date;
- gint instance_count = 0;
- gint remain_occur_count = 0;
+ GList *iter;
+ for (iter = model->sx_instance_list; iter != NULL; iter = iter->next)
+ {
+ GList *instance_iter;
+ GncSxInstances *instances = (GncSxInstances*)iter->data;
+ GDate *last_occur_date;
+ gint instance_count = 0;
+ gint remain_occur_count = 0;
- // If there are no instances, then skip; specifically, skip
- // re-setting SchedXaction fields, which will dirty the book
- // spuriously.
- if (g_list_length(instances->list) == 0)
- continue;
+ // If there are no instances, then skip; specifically, skip
+ // re-setting SchedXaction fields, which will dirty the book
+ // spuriously.
+ if (g_list_length(instances->list) == 0)
+ continue;
- last_occur_date = xaccSchedXactionGetLastOccurDate(instances->sx);
- instance_count = gnc_sx_get_instance_count(instances->sx, NULL);
- remain_occur_count = xaccSchedXactionGetRemOccur(instances->sx);
+ last_occur_date = xaccSchedXactionGetLastOccurDate(instances->sx);
+ instance_count = gnc_sx_get_instance_count(instances->sx, NULL);
+ remain_occur_count = xaccSchedXactionGetRemOccur(instances->sx);
- for (instance_iter = instances->list; instance_iter != NULL; instance_iter = instance_iter->next)
- {
- GncSxInstance *inst = (GncSxInstance*)instance_iter->data;
- gboolean sx_is_auto_create;
+ for (instance_iter = instances->list; instance_iter != NULL; instance_iter = instance_iter->next)
+ {
+ GncSxInstance *inst = (GncSxInstance*)instance_iter->data;
+ gboolean sx_is_auto_create;
- xaccSchedXactionGetAutoCreate(inst->parent->sx, &sx_is_auto_create, NULL);
- if (auto_create_only && !sx_is_auto_create)
- {
- if (inst->state != SX_INSTANCE_STATE_TO_CREATE)
- {
- break;
- }
- continue;
- }
+ xaccSchedXactionGetAutoCreate(inst->parent->sx, &sx_is_auto_create, NULL);
+ if (auto_create_only && !sx_is_auto_create)
+ {
+ if (inst->state != SX_INSTANCE_STATE_TO_CREATE)
+ {
+ break;
+ }
+ continue;
+ }
- if (inst->orig_state == SX_INSTANCE_STATE_POSTPONED
- && inst->state != SX_INSTANCE_STATE_POSTPONED)
- {
- // remove from postponed list
- g_assert(inst->temporal_state != NULL);
- gnc_sx_remove_defer_instance(inst->parent->sx, inst->temporal_state);
- }
+ if (inst->orig_state == SX_INSTANCE_STATE_POSTPONED
+ && inst->state != SX_INSTANCE_STATE_POSTPONED)
+ {
+ // remove from postponed list
+ g_assert(inst->temporal_state != NULL);
+ gnc_sx_remove_defer_instance(inst->parent->sx, inst->temporal_state);
+ }
- switch (inst->state)
- {
- case SX_INSTANCE_STATE_CREATED:
- // nop: we've already processed this.
- break;
- case SX_INSTANCE_STATE_IGNORED:
- increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
- break;
- case SX_INSTANCE_STATE_POSTPONED:
- if (inst->orig_state != SX_INSTANCE_STATE_POSTPONED)
- {
- gnc_sx_add_defer_instance(instances->sx, inst->temporal_state);
- }
- increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
- break;
- case SX_INSTANCE_STATE_TO_CREATE:
- create_transactions_for_instance(inst, created_transaction_guids, creation_errors);
- increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
- gnc_sx_instance_model_change_instance_state(model, inst, SX_INSTANCE_STATE_CREATED);
- break;
- case SX_INSTANCE_STATE_REMINDER:
- // do nothing
- // assert no non-remind instances after this?
- break;
- default:
- g_assert_not_reached();
- break;
- }
- }
+ switch (inst->state)
+ {
+ case SX_INSTANCE_STATE_CREATED:
+ // nop: we've already processed this.
+ break;
+ case SX_INSTANCE_STATE_IGNORED:
+ increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
+ break;
+ case SX_INSTANCE_STATE_POSTPONED:
+ if (inst->orig_state != SX_INSTANCE_STATE_POSTPONED)
+ {
+ gnc_sx_add_defer_instance(instances->sx, inst->temporal_state);
+ }
+ increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
+ break;
+ case SX_INSTANCE_STATE_TO_CREATE:
+ create_transactions_for_instance(inst, created_transaction_guids, creation_errors);
+ increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
+ gnc_sx_instance_model_change_instance_state(model, inst, SX_INSTANCE_STATE_CREATED);
+ break;
+ case SX_INSTANCE_STATE_REMINDER:
+ // do nothing
+ // assert no non-remind instances after this?
+ break;
+ default:
+ g_assert_not_reached();
+ break;
+ }
+ }
- xaccSchedXactionSetLastOccurDate(instances->sx, last_occur_date);
- gnc_sx_set_instance_count(instances->sx, instance_count);
- xaccSchedXactionSetRemOccur(instances->sx, remain_occur_count);
- }
+ xaccSchedXactionSetLastOccurDate(instances->sx, last_occur_date);
+ gnc_sx_set_instance_count(instances->sx, instance_count);
+ xaccSchedXactionSetRemOccur(instances->sx, remain_occur_count);
+ }
}
void
@@ -1175,41 +1175,41 @@
GncSxInstance *instance,
GncSxInstanceState new_state)
{
- if (instance->state == new_state)
- return;
+ if (instance->state == new_state)
+ return;
- instance->state = new_state;
+ instance->state = new_state;
- // ensure 'remind' constraints are met:
- {
- GList *inst_iter;
- inst_iter = g_list_find(instance->parent->list, instance);
- g_assert(inst_iter != NULL);
- if (instance->state != SX_INSTANCE_STATE_REMINDER)
- {
- // iterate backwards, making sure reminders are changed to 'postponed'
- for (inst_iter = inst_iter->prev; inst_iter != NULL; inst_iter = inst_iter->prev)
- {
- GncSxInstance *prev_inst = (GncSxInstance*)inst_iter->data;
- if (prev_inst->state != SX_INSTANCE_STATE_REMINDER)
- continue;
- prev_inst->state = SX_INSTANCE_STATE_POSTPONED;
- }
- }
- else
- {
- // iterate forward, make sure transactions are set to 'remind'
- for (inst_iter = inst_iter->next; inst_iter != NULL; inst_iter = inst_iter->next)
- {
- GncSxInstance *next_inst = (GncSxInstance*)inst_iter->data;
- if (next_inst->state == SX_INSTANCE_STATE_REMINDER)
- continue;
- next_inst->state = SX_INSTANCE_STATE_REMINDER;
- }
- }
- }
+ // ensure 'remind' constraints are met:
+ {
+ GList *inst_iter;
+ inst_iter = g_list_find(instance->parent->list, instance);
+ g_assert(inst_iter != NULL);
+ if (instance->state != SX_INSTANCE_STATE_REMINDER)
+ {
+ // iterate backwards, making sure reminders are changed to 'postponed'
+ for (inst_iter = inst_iter->prev; inst_iter != NULL; inst_iter = inst_iter->prev)
+ {
+ GncSxInstance *prev_inst = (GncSxInstance*)inst_iter->data;
+ if (prev_inst->state != SX_INSTANCE_STATE_REMINDER)
+ continue;
+ prev_inst->state = SX_INSTANCE_STATE_POSTPONED;
+ }
+ }
+ else
+ {
+ // iterate forward, make sure transactions are set to 'remind'
+ for (inst_iter = inst_iter->next; inst_iter != NULL; inst_iter = inst_iter->next)
+ {
+ GncSxInstance *next_inst = (GncSxInstance*)inst_iter->data;
+ if (next_inst->state == SX_INSTANCE_STATE_REMINDER)
+ continue;
+ next_inst->state = SX_INSTANCE_STATE_REMINDER;
+ }
+ }
+ }
- g_signal_emit_by_name(model, "updated", (gpointer)instance->parent->sx);
+ g_signal_emit_by_name(model, "updated", (gpointer)instance->parent->sx);
}
void
@@ -1219,111 +1219,111 @@
gnc_numeric *new_value)
{
- if (gnc_numeric_equal(variable->value, *new_value))
- return;
- variable->value = *new_value;
- g_signal_emit_by_name(model, "updated", (gpointer)instance->parent->sx);
+ if (gnc_numeric_equal(variable->value, *new_value))
+ return;
+ variable->value = *new_value;
+ g_signal_emit_by_name(model, "updated", (gpointer)instance->parent->sx);
}
static void
_list_from_hash_elts(gpointer key, gpointer value, GList **result_list)
{
- *result_list = g_list_append(*result_list, value);
+ *result_list = g_list_append(*result_list, value);
}
GList*
gnc_sx_instance_model_check_variables(GncSxInstanceModel *model)
{
- GList *rtn = NULL;
- GList *sx_iter, *inst_iter, *var_list = NULL, *var_iter;
+ GList *rtn = NULL;
+ GList *sx_iter, *inst_iter, *var_list = NULL, *var_iter;
- for (sx_iter = model->sx_instance_list; sx_iter != NULL; sx_iter = sx_iter->next)
- {
- GncSxInstances *instances = (GncSxInstances*)sx_iter->data;
- for (inst_iter = instances->list; inst_iter != NULL; inst_iter = inst_iter->next)
- {
- GncSxInstance *inst = (GncSxInstance*)inst_iter->data;
+ for (sx_iter = model->sx_instance_list; sx_iter != NULL; sx_iter = sx_iter->next)
+ {
+ GncSxInstances *instances = (GncSxInstances*)sx_iter->data;
+ for (inst_iter = instances->list; inst_iter != NULL; inst_iter = inst_iter->next)
+ {
+ GncSxInstance *inst = (GncSxInstance*)inst_iter->data;
- if (inst->state != SX_INSTANCE_STATE_TO_CREATE)
- continue;
+ if (inst->state != SX_INSTANCE_STATE_TO_CREATE)
+ continue;
- g_hash_table_foreach(inst->variable_bindings, (GHFunc)_list_from_hash_elts, &var_list);
- for (var_iter = var_list; var_iter != NULL; var_iter = var_iter->next)
- {
- GncSxVariable *var = (GncSxVariable*)var_iter->data;
- if (gnc_numeric_check(var->value) != GNC_ERROR_OK)
- {
- GncSxVariableNeeded *need = g_new0(GncSxVariableNeeded, 1);
- need->instance = inst;
- need->variable = var;
- rtn = g_list_append(rtn, need);
- }
- }
- g_list_free(var_list);
- var_list = NULL;
- }
- }
- return rtn;
+ g_hash_table_foreach(inst->variable_bindings, (GHFunc)_list_from_hash_elts, &var_list);
+ for (var_iter = var_list; var_iter != NULL; var_iter = var_iter->next)
+ {
+ GncSxVariable *var = (GncSxVariable*)var_iter->data;
+ if (gnc_numeric_check(var->value) != GNC_ERROR_OK)
+ {
+ GncSxVariableNeeded *need = g_new0(GncSxVariableNeeded, 1);
+ need->instance = inst;
+ need->variable = var;
+ rtn = g_list_append(rtn, need);
+ }
+ }
+ g_list_free(var_list);
+ var_list = NULL;
+ }
+ }
+ return rtn;
}
void
gnc_sx_instance_model_summarize(GncSxInstanceModel *model, GncSxSummary *summary)
{
- GList *sx_iter, *inst_iter;
+ GList *sx_iter, *inst_iter;
- g_return_if_fail(model != NULL);
- g_return_if_fail(summary != NULL);
+ g_return_if_fail(model != NULL);
+ g_return_if_fail(summary != NULL);
- summary->need_dialog = FALSE;
- summary->num_instances = 0;
- summary->num_to_create_instances = 0;
- summary->num_auto_create_instances = 0;
- summary->num_auto_create_no_notify_instances = 0;
+ summary->need_dialog = FALSE;
+ summary->num_instances = 0;
+ summary->num_to_create_instances = 0;
+ summary->num_auto_create_instances = 0;
+ summary->num_auto_create_no_notify_instances = 0;
- for (sx_iter = model->sx_instance_list; sx_iter != NULL; sx_iter = sx_iter->next)
- {
- GncSxInstances *instances = (GncSxInstances*)sx_iter->data;
- gboolean sx_is_auto_create = FALSE, sx_notify = FALSE;
- xaccSchedXactionGetAutoCreate(instances->sx, &sx_is_auto_create, &sx_notify);
- for (inst_iter = instances->list; inst_iter != NULL; inst_iter = inst_iter->next)
- {
- GncSxInstance *inst = (GncSxInstance*)inst_iter->data;
- summary->num_instances++;
+ for (sx_iter = model->sx_instance_list; sx_iter != NULL; sx_iter = sx_iter->next)
+ {
+ GncSxInstances *instances = (GncSxInstances*)sx_iter->data;
+ gboolean sx_is_auto_create = FALSE, sx_notify = FALSE;
+ xaccSchedXactionGetAutoCreate(instances->sx, &sx_is_auto_create, &sx_notify);
+ for (inst_iter = instances->list; inst_iter != NULL; inst_iter = inst_iter->next)
+ {
+ GncSxInstance *inst = (GncSxInstance*)inst_iter->data;
+ summary->num_instances++;
- if (inst->state == SX_INSTANCE_STATE_TO_CREATE)
- {
- if (sx_is_auto_create)
+ if (inst->state == SX_INSTANCE_STATE_TO_CREATE)
+ {
+ if (sx_is_auto_create)
+ {
+ if (!sx_notify)
{
- if (!sx_notify)
- {
- summary->num_auto_create_no_notify_instances++;
- }
- else
- {
- summary->num_auto_create_instances++;
- }
+ summary->num_auto_create_no_notify_instances++;
}
else
{
- summary->num_to_create_instances++;
+ summary->num_auto_create_instances++;
}
- }
- }
- }
+ }
+ else
+ {
+ summary->num_to_create_instances++;
+ }
+ }
+ }
+ }
- // if all the instances are 'auto-create, no-notify', then we don't need
- // the dialog.
- summary->need_dialog
- = (summary->num_instances != 0
- && summary->num_auto_create_no_notify_instances != summary->num_instances);
+ // if all the instances are 'auto-create, no-notify', then we don't need
+ // the dialog.
+ summary->need_dialog
+ = (summary->num_instances != 0
+ && summary->num_auto_create_no_notify_instances != summary->num_instances);
}
void
gnc_sx_summary_print(GncSxSummary *summary)
{
- g_message("num_instances: %d", summary->num_instances);
- g_message("num_to_create: %d", summary->num_to_create_instances);
- g_message("num_auto_create_instances: %d", summary->num_auto_create_instances);
- g_message("num_auto_create_no_notify_instances: %d", summary->num_auto_create_no_notify_instances);
- g_message("need dialog? %s", summary->need_dialog ? "true" : "false");
+ g_message("num_instances: %d", summary->num_instances);
+ g_message("num_to_create: %d", summary->num_to_create_instances);
+ g_message("num_auto_create_instances: %d", summary->num_auto_create_instances);
+ g_message("num_auto_create_no_notify_instances: %d", summary->num_auto_create_no_notify_instances);
+ g_message("need dialog? %s", summary->need_dialog ? "true" : "false");
}
Modified: gnucash/trunk/src/app-utils/gnc-sx-instance-model.h
===================================================================
--- gnucash/trunk/src/app-utils/gnc-sx-instance-model.h 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/app-utils/gnc-sx-instance-model.h 2007-02-19 19:01:47 UTC (rev 15625)
@@ -75,40 +75,40 @@
GDate next_instance_date;
/** GList<GncSxInstance*> **/
- GList *list; /* @fixme: s/list/?/ */
+ GList *list; /* @fixme: s/list/?/ */
} GncSxInstances;
typedef enum
{
- SX_INSTANCE_STATE_IGNORED,
- SX_INSTANCE_STATE_POSTPONED,
- SX_INSTANCE_STATE_TO_CREATE,
- SX_INSTANCE_STATE_REMINDER,
- SX_INSTANCE_STATE_CREATED,
- SX_INSTANCE_STATE_MAX_STATE
+ SX_INSTANCE_STATE_IGNORED,
+ SX_INSTANCE_STATE_POSTPONED,
+ SX_INSTANCE_STATE_TO_CREATE,
+ SX_INSTANCE_STATE_REMINDER,
+ SX_INSTANCE_STATE_CREATED,
+ SX_INSTANCE_STATE_MAX_STATE
} GncSxInstanceState;
typedef struct _GncSxVariable
{
- gchar *name;
- gnc_numeric value; /**< only numeric values are supported. **/
- gboolean editable;
+ gchar *name;
+ gnc_numeric value; /**< only numeric values are supported. **/
+ gboolean editable;
} GncSxVariable;
typedef struct _GncSxInstance
{
- GncSxInstances *parent; /**< the parent instances collection. **/
- void *temporal_state; /**< the sx creation temporal state. **/
- GncSxInstanceState orig_state; /**< the original state at generation time. **/
- GncSxInstanceState state; /**< the current state of the instance (during editing) **/
- GDate date; /**< the instance date. **/
- GHashTable *variable_bindings; /**< variable bindings. **/
+ GncSxInstances *parent; /**< the parent instances collection. **/
+ void *temporal_state; /**< the sx creation temporal state. **/
+ GncSxInstanceState orig_state; /**< the original state at generation time. **/
+ GncSxInstanceState state; /**< the current state of the instance (during editing) **/
+ GDate date; /**< the instance date. **/
+ GHashTable *variable_bindings; /**< variable bindings. **/
} GncSxInstance;
typedef struct _GncSxVariableNeeded
{
- GncSxInstance *instance;
- GncSxVariable *variable;
+ GncSxInstance *instance;
+ GncSxVariable *variable;
} GncSxVariableNeeded;
GType gnc_sx_instance_model_get_type(void);
@@ -186,12 +186,12 @@
typedef struct _GncSxSummary
{
- gboolean need_dialog; /**< If the dialog needs to be displayed. **/
+ gboolean need_dialog; /**< If the dialog needs to be displayed. **/
- gint num_instances; /**< The number of total instances (in any state). **/
- gint num_to_create_instances; /**< The number of (not-auto-create) to-create instances. **/
- gint num_auto_create_instances; /**< The total number of auto-create instances. **/
- gint num_auto_create_no_notify_instances; /**< The number of automatically-created instances that do no request notification. **/
+ gint num_instances; /**< The number of total instances (in any state). **/
+ gint num_to_create_instances; /**< The number of (not-auto-create) to-create instances. **/
+ gint num_auto_create_instances; /**< The total number of auto-create instances. **/
+ gint num_auto_create_no_notify_instances; /**< The number of automatically-created instances that do no request notification. **/
} GncSxSummary;
/**
Modified: gnucash/trunk/src/core-utils/gnc-glib-utils.c
===================================================================
--- gnucash/trunk/src/core-utils/gnc-glib-utils.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/core-utils/gnc-glib-utils.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -226,27 +226,27 @@
GList*
gnc_g_list_map(GList* list, GncGMapFunc fn, gpointer user_data)
{
- GList *rtn = NULL;
- for (; list != NULL; list = list->next)
- {
- rtn = g_list_append(rtn, (*fn)(list->data, user_data));
- }
- return rtn;
+ GList *rtn = NULL;
+ for (; list != NULL; list = list->next)
+ {
+ rtn = g_list_append(rtn, (*fn)(list->data, user_data));
+ }
+ return rtn;
}
void
gnc_g_list_cut(GList **list, GList *cut_point)
{
- if (list == NULL || *list == NULL)
- return;
+ if (list == NULL || *list == NULL)
+ return;
- // if it's the first element.
- if (cut_point->prev == NULL)
- {
- *list = NULL;
- return;
- }
+ // if it's the first element.
+ if (cut_point->prev == NULL)
+ {
+ *list = NULL;
+ return;
+ }
- cut_point->prev->next = NULL;
- cut_point->prev = NULL;
+ cut_point->prev->next = NULL;
+ cut_point->prev = NULL;
}
Modified: gnucash/trunk/src/core-utils/gnc-glib-utils.h
===================================================================
--- gnucash/trunk/src/core-utils/gnc-glib-utils.h 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/core-utils/gnc-glib-utils.h 2007-02-19 19:01:47 UTC (rev 15625)
@@ -84,14 +84,14 @@
typedef gpointer (*GncGMapFunc)(gpointer data, gpointer user_data);
/**
- * @return Caller-owned GList* of results of apply `fn` to `list` in order.
+ * @return Caller-owned GList* of results of apply @a fn to @a list in order.
**/
GList* gnc_g_list_map(GList* list, GncGMapFunc fn, gpointer user_data);
/**
- * Cut a GList into two parts; the {@param cut_point} is the beginning of the
- * new list; {@param list} may need to be modified, but will be the list
- * before the {@param cut_point}.
+ * Cut a GList into two parts; the @a cut_point is the beginning of the
+ * new list; @a list may need to be modified, but will be the list
+ * before the @a cut_point.
**/
void gnc_g_list_cut(GList **list, GList *cut_point);
Modified: gnucash/trunk/src/gnome/dialog-sx-editor.c
===================================================================
--- gnucash/trunk/src/gnome/dialog-sx-editor.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome/dialog-sx-editor.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -104,49 +104,49 @@
/** Datatypes ***********************************************************/
typedef enum _EndTypeEnum {
- END_NEVER,
- END_DATE,
- END_OCCUR,
+ END_NEVER,
+ END_DATE,
+ END_OCCUR,
} EndType;
struct _GncSxEditorDialog
{
- GladeXML *gxml;
- GtkWidget *dialog;
- SchedXaction *sx;
- /* If this is a new scheduled transaction or not. */
- int newsxP;
+ GladeXML *gxml;
+ GtkWidget *dialog;
+ SchedXaction *sx;
+ /* If this is a new scheduled transaction or not. */
+ int newsxP;
- /* The various widgets in the dialog */
- GNCLedgerDisplay *ledger;
+ /* The various widgets in the dialog */
+ GNCLedgerDisplay *ledger;
- GncFrequency *gncfreq;
- GncDenseCalStore *dense_cal_model;
- GncDenseCal *example_cal;
+ GncFrequency *gncfreq;
+ GncDenseCalStore *dense_cal_model;
+ GncDenseCal *example_cal;
- GtkEditable *nameEntry;
+ GtkEditable *nameEntry;
- GtkLabel *lastOccurLabel;
+ GtkLabel *lastOccurLabel;
- GtkToggleButton *enabledOpt;
- GtkToggleButton *autocreateOpt;
- GtkToggleButton *notifyOpt;
- GtkToggleButton *advanceOpt;
- GtkSpinButton *advanceSpin;
- GtkToggleButton *remindOpt;
- GtkSpinButton *remindSpin;
+ GtkToggleButton *enabledOpt;
+ GtkToggleButton *autocreateOpt;
+ GtkToggleButton *notifyOpt;
+ GtkToggleButton *advanceOpt;
+ GtkSpinButton *advanceSpin;
+ GtkToggleButton *remindOpt;
+ GtkSpinButton *remindSpin;
- GtkToggleButton *optEndDate;
- GtkToggleButton *optEndNone;
- GtkToggleButton *optEndCount;
- GtkEntry *endCountSpin;
- GtkEntry *endRemainSpin;
- GNCDateEdit *endDateEntry;
+ GtkToggleButton *optEndDate;
+ GtkToggleButton *optEndNone;
+ GtkToggleButton *optEndCount;
+ GtkEntry *endCountSpin;
+ GtkEntry *endRemainSpin;
+ GNCDateEdit *endDateEntry;
- char *sxGUIDstr;
+ char *sxGUIDstr;
- GncEmbeddedWindow *embed_window;
- GncPluginPage *plugin_page;
+ GncEmbeddedWindow *embed_window;
+ GncPluginPage *plugin_page;
};
/** Prototypes **********************************************************/
@@ -178,10 +178,10 @@
static GtkActionEntry gnc_sxed_menu_entries [] =
{
- { "EditAction", NULL, N_("_Edit"), NULL, NULL, NULL },
- { "TransactionAction", NULL, N_("_Transaction"), NULL, NULL, NULL },
- { "ViewAction", NULL, N_("_View"), NULL, NULL, NULL },
- { "ActionsAction", NULL, N_("_Actions"), NULL, NULL, NULL },
+ { "EditAction", NULL, N_("_Edit"), NULL, NULL, NULL },
+ { "TransactionAction", NULL, N_("_Transaction"), NULL, NULL, NULL },
+ { "ViewAction", NULL, N_("_View"), NULL, NULL, NULL },
+ { "ActionsAction", NULL, N_("_Actions"), NULL, NULL, NULL },
};
static guint gnc_sxed_menu_n_entries = G_N_ELEMENTS (gnc_sxed_menu_entries);
@@ -190,12 +190,12 @@
static void
sxed_close_handler(gpointer user_data)
{
- GncSxEditorDialog *sxed = user_data;
+ GncSxEditorDialog *sxed = user_data;
- gnc_sxed_reg_check_close(sxed);
- gnc_sxed_record_size(sxed);
- gtk_widget_destroy(sxed->dialog);
- /* The data will be cleaned up in the destroy handler. */
+ gnc_sxed_reg_check_close(sxed);
+ gnc_sxed_record_size(sxed);
+ gtk_widget_destroy(sxed->dialog);
+ /* The data will be cleaned up in the destroy handler. */
}
/**
@@ -205,63 +205,63 @@
static gboolean
sxed_confirmed_cancel(GncSxEditorDialog *sxed)
{
- SplitRegister *reg;
+ SplitRegister *reg;
- reg = gnc_ledger_display_get_split_register( sxed->ledger );
- /* check for changes */
- if ( gnc_sxed_check_changed( sxed ) ) {
- const char *sx_changed_msg =
- _( "This SX has changed; are you "
- "sure you want to cancel?" );
- if (!gnc_verify_dialog(sxed->dialog, FALSE, sx_changed_msg)) {
- return FALSE;
- }
- }
- /* cancel ledger changes */
- gnc_split_register_cancel_cursor_trans_changes( reg );
- return TRUE;
+ reg = gnc_ledger_display_get_split_register( sxed->ledger );
+ /* check for changes */
+ if ( gnc_sxed_check_changed( sxed ) ) {
+ const char *sx_changed_msg =
+ _( "This SX has changed; are you "
+ "sure you want to cancel?" );
+ if (!gnc_verify_dialog(sxed->dialog, FALSE, sx_changed_msg)) {
+ return FALSE;
+ }
+ }
+ /* cancel ledger changes */
+ gnc_split_register_cancel_cursor_trans_changes( reg );
+ return TRUE;
}
static
void
editor_cancel_button_clicked( GtkButton *b, GncSxEditorDialog *sxed )
{
- /* close */
- gnc_close_gui_component_by_data( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
- sxed );
+ /* close */
+ gnc_close_gui_component_by_data( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
+ sxed );
}
static
void
editor_help_button_clicked(GtkButton *b, GncSxEditorDialog *sxed)
{
- gnc_gnome_help(HF_HELP, HL_SXEDITOR);
+ gnc_gnome_help(HF_HELP, HL_SXEDITOR);
}
static
void
editor_ok_button_clicked( GtkButton *b, GncSxEditorDialog *sxed )
{
- GNCBook *book;
- SchedXactions *sxes;
+ GNCBook *book;
+ SchedXactions *sxes;
- if ( !gnc_sxed_check_consistent( sxed ) )
- return;
+ if ( !gnc_sxed_check_consistent( sxed ) )
+ return;
- gnc_sxed_save_sx( sxed );
+ gnc_sxed_save_sx( sxed );
- /* add to list */
- // @@fixme -- forget 'new'-flag: check for existance.
- if ( sxed->newsxP ) {
- book = gnc_get_current_book ();
- sxes = gnc_book_get_schedxactions(book);
- gnc_sxes_add_sx(sxes, sxed->sx);
- sxed->newsxP = FALSE;
- }
+ /* add to list */
+ // @@fixme -- forget 'new'-flag: check for existance.
+ if ( sxed->newsxP ) {
+ book = gnc_get_current_book ();
+ sxes = gnc_book_get_schedxactions(book);
+ gnc_sxes_add_sx(sxes, sxed->sx);
+ sxed->newsxP = FALSE;
+ }
- /* cleanup */
- gnc_close_gui_component_by_data( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
- sxed );
+ /* cleanup */
+ gnc_close_gui_component_by_data( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
+ sxed );
}
/**
@@ -274,171 +274,171 @@
gboolean
gnc_sxed_check_changed( GncSxEditorDialog *sxed )
{
- if ( sxed->newsxP )
- return TRUE;
+ if ( sxed->newsxP )
+ return TRUE;
- /* name */
- {
- char *name;
+ /* name */
+ {
+ char *name;
- name = gtk_editable_get_chars( GTK_EDITABLE(sxed->nameEntry), 0, -1 );
- if ( strlen(name) == 0 ) {
- return TRUE;
+ name = gtk_editable_get_chars( GTK_EDITABLE(sxed->nameEntry), 0, -1 );
+ if ( strlen(name) == 0 ) {
+ return TRUE;
- }
- if ( (xaccSchedXactionGetName(sxed->sx) == NULL)
- || (strcmp( xaccSchedXactionGetName(sxed->sx),
- name ) != 0) ) {
- return TRUE;
- }
}
+ if ( (xaccSchedXactionGetName(sxed->sx) == NULL)
+ || (strcmp( xaccSchedXactionGetName(sxed->sx),
+ name ) != 0) ) {
+ return TRUE;
+ }
+ }
- /* end options */
- {
- /* dialog says... no end */
- if ( gtk_toggle_button_get_active( sxed->optEndNone ) ) {
- if ( xaccSchedXactionHasEndDate(sxed->sx)
- || xaccSchedXactionHasOccurDef(sxed->sx) ) {
- return TRUE;
- }
- }
+ /* end options */
+ {
+ /* dialog says... no end */
+ if ( gtk_toggle_button_get_active( sxed->optEndNone ) ) {
+ if ( xaccSchedXactionHasEndDate(sxed->sx)
+ || xaccSchedXactionHasOccurDef(sxed->sx) ) {
+ return TRUE;
+ }
+ }
- /* dialog says... end date */
- if ( gtk_toggle_button_get_active( sxed->optEndDate ) ) {
- GDate sxEndDate, dlgEndDate;
+ /* dialog says... end date */
+ if ( gtk_toggle_button_get_active( sxed->optEndDate ) ) {
+ GDate sxEndDate, dlgEndDate;
- if ( ! xaccSchedXactionHasEndDate( sxed->sx ) ) {
- return TRUE;
- }
- sxEndDate = *xaccSchedXactionGetEndDate( sxed->sx );
- g_date_set_time_t( &dlgEndDate,
- gnc_date_edit_get_date( sxed->
- endDateEntry ) );
+ if ( ! xaccSchedXactionHasEndDate( sxed->sx ) ) {
+ return TRUE;
+ }
+ sxEndDate = *xaccSchedXactionGetEndDate( sxed->sx );
+ g_date_set_time_t( &dlgEndDate,
+ gnc_date_edit_get_date( sxed->
+ endDateEntry ) );
- if ( g_date_compare( &sxEndDate, &dlgEndDate ) != 0 ) {
- return TRUE;
- }
- }
+ if ( g_date_compare( &sxEndDate, &dlgEndDate ) != 0 ) {
+ return TRUE;
+ }
+ }
- /* dialog says... num occur */
- if ( gtk_toggle_button_get_active( sxed->optEndCount ) ) {
- gint sxNumOccur, sxNumRem, dlgNumOccur, dlgNumRem;
+ /* dialog says... num occur */
+ if ( gtk_toggle_button_get_active( sxed->optEndCount ) ) {
+ gint sxNumOccur, sxNumRem, dlgNumOccur, dlgNumRem;
- if ( ! xaccSchedXactionGetNumOccur( sxed->sx ) ) {
- return TRUE;
- }
+ if ( ! xaccSchedXactionGetNumOccur( sxed->sx ) ) {
+ return TRUE;
+ }
- dlgNumOccur =
- gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endCountSpin) );
+ dlgNumOccur =
+ gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endCountSpin) );
- dlgNumRem =
- gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endRemainSpin) );
+ dlgNumRem =
+ gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endRemainSpin) );
- sxNumOccur = xaccSchedXactionGetNumOccur( sxed->sx );
- sxNumRem = xaccSchedXactionGetRemOccur( sxed->sx );
+ sxNumOccur = xaccSchedXactionGetNumOccur( sxed->sx );
+ sxNumRem = xaccSchedXactionGetRemOccur( sxed->sx );
- if ( (dlgNumOccur != sxNumOccur)
- || (dlgNumRem != sxNumRem) ) {
- return TRUE;
- }
- }
+ if ( (dlgNumOccur != sxNumOccur)
+ || (dlgNumRem != sxNumRem) ) {
+ return TRUE;
+ }
}
+ }
- /* SX options [autocreate, notify, reminder, advance] */
- {
- gboolean dlgEnabled,
- dlgAutoCreate,
- dlgNotify,
- sxEnabled,
- sxAutoCreate,
- sxNotify;
- gint dlgAdvance, sxAdvance;
- gint dlgRemind, sxRemind;
+ /* SX options [autocreate, notify, reminder, advance] */
+ {
+ gboolean dlgEnabled,
+ dlgAutoCreate,
+ dlgNotify,
+ sxEnabled,
+ sxAutoCreate,
+ sxNotify;
+ gint dlgAdvance, sxAdvance;
+ gint dlgRemind, sxRemind;
- dlgEnabled =
- gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->
- enabledOpt) );
- dlgAutoCreate =
- gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->
- autocreateOpt) );
- dlgNotify =
- gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->
- notifyOpt) );
+ dlgEnabled =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->
+ enabledOpt) );
+ dlgAutoCreate =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->
+ autocreateOpt) );
+ dlgNotify =
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->
+ notifyOpt) );
- sxEnabled = xaccSchedXactionGetEnabled( sxed->sx );
- if ( ! ((dlgEnabled == sxEnabled)) ) {
- return TRUE;
- }
+ sxEnabled = xaccSchedXactionGetEnabled( sxed->sx );
+ if ( ! ((dlgEnabled == sxEnabled)) ) {
+ return TRUE;
+ }
- xaccSchedXactionGetAutoCreate( sxed->sx, &sxAutoCreate, &sxNotify );
- if ( ! ((dlgAutoCreate == sxAutoCreate)
- && (dlgNotify == sxNotify)) ) {
- return TRUE;
- }
+ xaccSchedXactionGetAutoCreate( sxed->sx, &sxAutoCreate, &sxNotify );
+ if ( ! ((dlgAutoCreate == sxAutoCreate)
+ && (dlgNotify == sxNotify)) ) {
+ return TRUE;
+ }
- dlgAdvance = 0;
- if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->advanceOpt) ) ) {
- dlgAdvance =
- gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(sxed->
- advanceSpin) );
- }
- sxAdvance = xaccSchedXactionGetAdvanceCreation( sxed->sx );
- if ( dlgAdvance != sxAdvance ) {
- return TRUE;
- }
+ dlgAdvance = 0;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->advanceOpt) ) ) {
+ dlgAdvance =
+ gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(sxed->
+ advanceSpin) );
+ }
+ sxAdvance = xaccSchedXactionGetAdvanceCreation( sxed->sx );
+ if ( dlgAdvance != sxAdvance ) {
+ return TRUE;
+ }
- dlgRemind = 0;
- if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->remindOpt) ) ) {
- dlgRemind =
- gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(sxed->remindSpin) );
- }
- sxRemind = xaccSchedXactionGetAdvanceReminder( sxed->sx );
- if ( dlgRemind != sxRemind ) {
- return TRUE;
- }
+ dlgRemind = 0;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(sxed->remindOpt) ) ) {
+ dlgRemind =
+ gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(sxed->remindSpin) );
}
+ sxRemind = xaccSchedXactionGetAdvanceReminder( sxed->sx );
+ if ( dlgRemind != sxRemind ) {
+ return TRUE;
+ }
+ }
- /* FS, startdate */
- {
- FreqSpec *dlgFS, *sxFS;
- GDate dlgStartDate, sxStartDate;
- GString *dlgFSstr, *sxFSstr;
- gboolean fsStrCmpResult;
+ /* FS, startdate */
+ {
+ FreqSpec *dlgFS, *sxFS;
+ GDate dlgStartDate, sxStartDate;
+ GString *dlgFSstr, *sxFSstr;
+ gboolean fsStrCmpResult;
- dlgFS = xaccFreqSpecMalloc( gnc_get_current_book() );
- /* save gncFreq data */
- gnc_frequency_save_state( sxed->gncfreq, dlgFS, &dlgStartDate );
- dlgFSstr = g_string_sized_new( 16 );
- xaccFreqSpecGetFreqStr( dlgFS, dlgFSstr );
- /* get SX startdate/fs data */
- sxStartDate = *xaccSchedXactionGetStartDate( sxed->sx );
- sxFS = xaccSchedXactionGetFreqSpec( sxed->sx );
- sxFSstr = g_string_sized_new( 16 );
- xaccFreqSpecGetFreqStr( sxFS, sxFSstr );
- /* compare */
+ dlgFS = xaccFreqSpecMalloc( gnc_get_current_book() );
+ /* save gncFreq data */
+ gnc_frequency_save_state( sxed->gncfreq, dlgFS, &dlgStartDate );
+ dlgFSstr = g_string_sized_new( 16 );
+ xaccFreqSpecGetFreqStr( dlgFS, dlgFSstr );
+ /* get SX startdate/fs data */
+ sxStartDate = *xaccSchedXactionGetStartDate( sxed->sx );
+ sxFS = xaccSchedXactionGetFreqSpec( sxed->sx );
+ sxFSstr = g_string_sized_new( 16 );
+ xaccFreqSpecGetFreqStr( sxFS, sxFSstr );
+ /* compare */
- fsStrCmpResult = /* lame version of comparison */
- (strcmp( dlgFSstr->str, sxFSstr->str) != 0);
- g_string_free( dlgFSstr, TRUE );
- g_string_free( sxFSstr, TRUE );
- xaccFreqSpecFree( dlgFS );
+ fsStrCmpResult = /* lame version of comparison */
+ (strcmp( dlgFSstr->str, sxFSstr->str) != 0);
+ g_string_free( dlgFSstr, TRUE );
+ g_string_free( sxFSstr, TRUE );
+ xaccFreqSpecFree( dlgFS );
- if ( (g_date_compare(&dlgStartDate, &sxStartDate) != 0)
- || fsStrCmpResult ) {
- return TRUE;
- }
+ if ( (g_date_compare(&dlgStartDate, &sxStartDate) != 0)
+ || fsStrCmpResult ) {
+ return TRUE;
}
+ }
- /* template transactions */
- {
- SplitRegister *sr =
- gnc_ledger_display_get_split_register( sxed->ledger );
+ /* template transactions */
+ {
+ SplitRegister *sr =
+ gnc_ledger_display_get_split_register( sxed->ledger );
- if ( gnc_split_register_changed( sr ) ) {
- return TRUE;
- }
+ if ( gnc_split_register_changed( sr ) ) {
+ return TRUE;
}
- return FALSE;
+ }
+ return FALSE;
}
@@ -447,8 +447,8 @@
* gnc_sxed_check_consistent.
**/
typedef struct _txnCreditDebitSums {
- gnc_numeric creditSum;
- gnc_numeric debitSum;
+ gnc_numeric creditSum;
+ gnc_numeric debitSum;
} txnCreditDebitSums;
static
@@ -457,9 +457,9 @@
gpointer val,
gpointer ud )
{
- txnCreditDebitSums *tcds = (txnCreditDebitSums*)val;
- tcds->creditSum = gnc_numeric_zero();
- tcds->debitSum = gnc_numeric_zero();
+ txnCreditDebitSums *tcds = (txnCreditDebitSums*)val;
+ tcds->creditSum = gnc_numeric_zero();
+ tcds->debitSum = gnc_numeric_zero();
}
static
@@ -468,8 +468,8 @@
gpointer val,
gpointer ud )
{
- txnCreditDebitSums *tcds = (txnCreditDebitSums*)val;
- g_free( tcds );
+ txnCreditDebitSums *tcds = (txnCreditDebitSums*)val;
+ g_free( tcds );
}
static void
@@ -477,31 +477,31 @@
gpointer val,
gpointer ud )
{
- txnCreditDebitSums *tcds = (txnCreditDebitSums*)val;
- gboolean *unbalanced = (gboolean*)ud;
- *unbalanced |= !(gnc_numeric_zero_p(
- gnc_numeric_sub_fixed( tcds->debitSum,
- tcds->creditSum ) ));
+ txnCreditDebitSums *tcds = (txnCreditDebitSums*)val;
+ gboolean *unbalanced = (gboolean*)ud;
+ *unbalanced |= !(gnc_numeric_zero_p(
+ gnc_numeric_sub_fixed( tcds->debitSum,
+ tcds->creditSum ) ));
- if (qof_log_check(G_LOG_DOMAIN, QOF_LOG_DEBUG))
- {
- if ( gnc_numeric_zero_p( gnc_numeric_sub_fixed( tcds->debitSum,
- tcds->creditSum ) ) ) {
- g_debug( "%p | true [%s - %s = %s]",
- key,
- gnc_numeric_to_string( tcds->debitSum ),
- gnc_numeric_to_string( tcds->creditSum ),
- gnc_numeric_to_string(gnc_numeric_sub_fixed( tcds->debitSum,
- tcds->creditSum )) );
- } else {
- g_debug( "%p | false [%s - %s = %s]",
- key,
- gnc_numeric_to_string( tcds->debitSum ),
- gnc_numeric_to_string( tcds->creditSum ),
- gnc_numeric_to_string(gnc_numeric_sub_fixed( tcds->debitSum,
- tcds->creditSum )) );
- }
+ if (qof_log_check(G_LOG_DOMAIN, QOF_LOG_DEBUG))
+ {
+ if ( gnc_numeric_zero_p( gnc_numeric_sub_fixed( tcds->debitSum,
+ tcds->creditSum ) ) ) {
+ g_debug( "%p | true [%s - %s = %s]",
+ key,
+ gnc_numeric_to_string( tcds->debitSum ),
+ gnc_numeric_to_string( tcds->creditSum ),
+ gnc_numeric_to_string(gnc_numeric_sub_fixed( tcds->debitSum,
+ tcds->creditSum )) );
+ } else {
+ g_debug( "%p | false [%s - %s = %s]",
+ key,
+ gnc_numeric_to_string( tcds->debitSum ),
+ gnc_numeric_to_string( tcds->creditSum ),
+ gnc_numeric_to_string(gnc_numeric_sub_fixed( tcds->debitSum,
+ tcds->creditSum )) );
}
+ }
}
/**
@@ -512,367 +512,367 @@
gboolean
gnc_sxed_check_consistent( GncSxEditorDialog *sxed )
{
- gboolean multi_commodity = FALSE;
- gnc_commodity *base_cmdty = NULL;
- gint ttVarCount, splitCount;
- FreqSpec *fs;
+ gboolean multi_commodity = FALSE;
+ gnc_commodity *base_cmdty = NULL;
+ gint ttVarCount, splitCount;
+ FreqSpec *fs;
- /* Do checks on validity and such, interrupting the user if
- * things aren't right.
- *
- * Features...
- * X support formulas [?!]
- * X balancing the SX if contain numeric-only formula data.
- * X agreement with create-automagically/notification controls
- * X the 'will ever be valid' check should take num-occur vals into
- * account.
- * X SX name is unique
- * X SX has a name
- * X "weekly" FS has some days set.
- * X "once" with reasonable start/end dates.
- * X This doesn't work at the time the 'weekly' one was fixed with
- * user-confirmation, below; the once SX is always valid.
- * [X more generically, creating a "not scheduled" SX is probably not
- * right... ]
- */
+ /* Do checks on validity and such, interrupting the user if
+ * things aren't right.
+ *
+ * Features...
+ * X support formulas [?!]
+ * X balancing the SX if contain numeric-only formula data.
+ * X agreement with create-automagically/notification controls
+ * X the 'will ever be valid' check should take num-occur vals into
+ * account.
+ * X SX name is unique
+ * X SX has a name
+ * X "weekly" FS has some days set.
+ * X "once" with reasonable start/end dates.
+ * X This doesn't work at the time the 'weekly' one was fixed with
+ * user-confirmation, below; the once SX is always valid.
+ * [X more generically, creating a "not scheduled" SX is probably not
+ * right... ]
+ */
- ttVarCount = 0;
- splitCount = 0;
- {
- static const int NUM_ITERS_WITH_VARS = 5;
- static const int NUM_ITERS_NO_VARS = 1;
- int numIters, i;
- GHashTable *vars, *txns;
- GList *splitList = NULL;
- char *str;
- kvp_frame *f;
- kvp_value *v;
- Split *s;
- Transaction *t;
- gnc_numeric tmp;
- gboolean unbalanceable;
- gpointer unusedKey, unusedValue;
+ ttVarCount = 0;
+ splitCount = 0;
+ {
+ static const int NUM_ITERS_WITH_VARS = 5;
+ static const int NUM_ITERS_NO_VARS = 1;
+ int numIters, i;
+ GHashTable *vars, *txns;
+ GList *splitList = NULL;
+ char *str;
+ kvp_frame *f;
+ kvp_value *v;
+ Split *s;
+ Transaction *t;
+ gnc_numeric tmp;
+ gboolean unbalanceable;
+ gpointer unusedKey, unusedValue;
- unbalanceable = FALSE; /* innocent until proven guilty */
- vars = g_hash_table_new( g_str_hash, g_str_equal );
- txns = g_hash_table_new( g_direct_hash, g_direct_equal );
- numIters = NUM_ITERS_NO_VARS;
- /**
- * Plan:
- * . Do a first pass to get the variables.
- * . Set each variable to random values.
- * . see if we balance after that
- * . true: all good
- * . false: indicate to user, allow decision.
- */
+ unbalanceable = FALSE; /* innocent until proven guilty */
+ vars = g_hash_table_new( g_str_hash, g_str_equal );
+ txns = g_hash_table_new( g_direct_hash, g_direct_equal );
+ numIters = NUM_ITERS_NO_VARS;
+ /**
+ * Plan:
+ * . Do a first pass to get the variables.
+ * . Set each variable to random values.
+ * . see if we balance after that
+ * . true: all good
+ * . false: indicate to user, allow decision.
+ */
- /* FIXME: This _really_ shouldn't require a modification of the
- * SX just to get the var names... */
- gnc_split_register_save ( gnc_ledger_display_get_split_register(sxed->ledger),
- FALSE );
- /* numeric-formulas-get-balanced determination */
- gnc_sx_get_variables( sxed->sx, vars );
+ /* FIXME: This _really_ shouldn't require a modification of the
+ * SX just to get the var names... */
+ gnc_split_register_save ( gnc_ledger_display_get_split_register(sxed->ledger),
+ FALSE );
+ /* numeric-formulas-get-balanced determination */
+ gnc_sx_get_variables( sxed->sx, vars );
- ttVarCount = g_hash_table_size( vars );
- if ( ttVarCount != 0 ) {
- /* balance with random variable bindings some number
- * of times in an attempt to ferret out
- * un-balanceable transactions.
- *
- * NOTE: The Real Way to do this is with some
- * symbolic math to eliminate the variables. This is
- * hard, and we don't do it. This solution will
- * suffice for now, and perhaps for the lifetime of
- * the software. --jsled */
- numIters = NUM_ITERS_WITH_VARS;
- }
+ ttVarCount = g_hash_table_size( vars );
+ if ( ttVarCount != 0 ) {
+ /* balance with random variable bindings some number
+ * of times in an attempt to ferret out
+ * un-balanceable transactions.
+ *
+ * NOTE: The Real Way to do this is with some
+ * symbolic math to eliminate the variables. This is
+ * hard, and we don't do it. This solution will
+ * suffice for now, and perhaps for the lifetime of
+ * the software. --jsled */
+ numIters = NUM_ITERS_WITH_VARS;
+ }
- srand(time(NULL));
- for ( i=0; i < numIters && !unbalanceable; i++ ) {
- gnc_sx_randomize_variables(vars);
- g_hash_table_foreach( txns, set_sums_to_zero, NULL );
- tmp = gnc_numeric_zero();
+ srand(time(NULL));
+ for ( i=0; i < numIters && !unbalanceable; i++ ) {
+ gnc_sx_randomize_variables(vars);
+ g_hash_table_foreach( txns, set_sums_to_zero, NULL );
+ tmp = gnc_numeric_zero();
- splitList = xaccSchedXactionGetSplits( sxed->sx );
- splitCount += g_list_length( splitList );
+ splitList = xaccSchedXactionGetSplits( sxed->sx );
+ splitCount += g_list_length( splitList );
- for ( ; splitList; splitList = splitList->next )
- {
- GUID *acct_guid;
- Account *acct;
- gnc_commodity *split_cmdty;
- txnCreditDebitSums *tcds;
+ for ( ; splitList; splitList = splitList->next )
+ {
+ GUID *acct_guid;
+ Account *acct;
+ gnc_commodity *split_cmdty;
+ txnCreditDebitSums *tcds;
- s = (Split*)splitList->data;
- t = xaccSplitGetParent( s );
+ s = (Split*)splitList->data;
+ t = xaccSplitGetParent( s );
- if ( !(tcds =
- (txnCreditDebitSums*)g_hash_table_lookup( txns,
- (gpointer)t )) )
- {
- tcds = g_new0( txnCreditDebitSums, 1 );
- tcds->creditSum = gnc_numeric_zero();
- tcds->debitSum = gnc_numeric_zero();
- g_hash_table_insert( txns, (gpointer)t, (gpointer)tcds );
- }
+ if ( !(tcds =
+ (txnCreditDebitSums*)g_hash_table_lookup( txns,
+ (gpointer)t )) )
+ {
+ tcds = g_new0( txnCreditDebitSums, 1 );
+ tcds->creditSum = gnc_numeric_zero();
+ tcds->debitSum = gnc_numeric_zero();
+ g_hash_table_insert( txns, (gpointer)t, (gpointer)tcds );
+ }
- f = xaccSplitGetSlots( s );
+ f = xaccSplitGetSlots( s );
- /* contains the guid of the split's actual account. */
- v = kvp_frame_get_slot_path(f,
- GNC_SX_ID,
- GNC_SX_ACCOUNT,
- NULL);
- acct_guid = kvp_value_get_guid( v );
- acct = xaccAccountLookup( acct_guid, gnc_get_current_book ());
- split_cmdty = xaccAccountGetCommodity(acct);
- if (base_cmdty == NULL)
- {
- base_cmdty = split_cmdty;
- }
- multi_commodity |= !gnc_commodity_equal(split_cmdty, base_cmdty);
+ /* contains the guid of the split's actual account. */
+ v = kvp_frame_get_slot_path(f,
+ GNC_SX_ID,
+ GNC_SX_ACCOUNT,
+ NULL);
+ acct_guid = kvp_value_get_guid( v );
+ acct = xaccAccountLookup( acct_guid, gnc_get_current_book ());
+ split_cmdty = xaccAccountGetCommodity(acct);
+ if (base_cmdty == NULL)
+ {
+ base_cmdty = split_cmdty;
+ }
+ multi_commodity |= !gnc_commodity_equal(split_cmdty, base_cmdty);
- v = kvp_frame_get_slot_path( f,
- GNC_SX_ID,
- GNC_SX_CREDIT_FORMULA,
- NULL );
- if ( v
- && (str = kvp_value_get_string(v))
- && strlen( str ) != 0 ) {
- if ( gnc_sx_parse_vars_from_formula( str, vars, &tmp ) < 0 ) {
- GString *errStr;
+ v = kvp_frame_get_slot_path( f,
+ GNC_SX_ID,
+ GNC_SX_CREDIT_FORMULA,
+ NULL );
+ if ( v
+ && (str = kvp_value_get_string(v))
+ && strlen( str ) != 0 ) {
+ if ( gnc_sx_parse_vars_from_formula( str, vars, &tmp ) < 0 ) {
+ GString *errStr;
- errStr = g_string_sized_new( 32 );
- g_string_printf( errStr,
- _( "Couldn't parse credit formula for "
- "split \"%s\"." ),
- xaccSplitGetMemo( s ) );
- gnc_error_dialog( GTK_WIDGET(sxed->dialog),
- errStr->str );
- g_string_free( errStr, TRUE );
+ errStr = g_string_sized_new( 32 );
+ g_string_printf( errStr,
+ _( "Couldn't parse credit formula for "
+ "split \"%s\"." ),
+ xaccSplitGetMemo( s ) );
+ gnc_error_dialog( GTK_WIDGET(sxed->dialog),
+ errStr->str );
+ g_string_free( errStr, TRUE );
- return FALSE;
- }
- tcds->creditSum =
- gnc_numeric_add( tcds->creditSum, tmp, 100,
- (GNC_DENOM_AUTO | GNC_DENOM_LCD) );
- tmp = gnc_numeric_zero();
- }
- v = kvp_frame_get_slot_path( f,
- GNC_SX_ID,
- GNC_SX_DEBIT_FORMULA,
- NULL );
- if ( v
- && (str = kvp_value_get_string(v))
- && strlen(str) != 0 ) {
- if ( gnc_sx_parse_vars_from_formula( str, vars, &tmp ) < 0 ) {
- GString *errStr;
+ return FALSE;
+ }
+ tcds->creditSum =
+ gnc_numeric_add( tcds->creditSum, tmp, 100,
+ (GNC_DENOM_AUTO | GNC_DENOM_LCD) );
+ tmp = gnc_numeric_zero();
+ }
+ v = kvp_frame_get_slot_path( f,
+ GNC_SX_ID,
+ GNC_SX_DEBIT_FORMULA,
+ NULL );
+ if ( v
+ && (str = kvp_value_get_string(v))
+ && strlen(str) != 0 ) {
+ if ( gnc_sx_parse_vars_from_formula( str, vars, &tmp ) < 0 ) {
+ GString *errStr;
- errStr = g_string_sized_new( 32 );
- g_string_printf( errStr,
- _( "Couldn't parse debit formula for "
- "split \"%s\"." ),
- xaccSplitGetMemo( s ) );
- gnc_error_dialog( GTK_WIDGET(sxed->dialog),
- (gchar*)errStr->str );
- g_string_free( errStr, TRUE );
+ errStr = g_string_sized_new( 32 );
+ g_string_printf( errStr,
+ _( "Couldn't parse debit formula for "
+ "split \"%s\"." ),
+ xaccSplitGetMemo( s ) );
+ gnc_error_dialog( GTK_WIDGET(sxed->dialog),
+ (gchar*)errStr->str );
+ g_string_free( errStr, TRUE );
- return FALSE;
- }
- tcds->debitSum = gnc_numeric_add( tcds->debitSum, tmp, 100,
- (GNC_DENOM_AUTO | GNC_DENOM_LCD) );
- tmp = gnc_numeric_zero();
- }
- }
-
- g_hash_table_foreach( txns,
- check_credit_debit_balance,
- &unbalanceable );
+ return FALSE;
+ }
+ tcds->debitSum = gnc_numeric_add( tcds->debitSum, tmp, 100,
+ (GNC_DENOM_AUTO | GNC_DENOM_LCD) );
+ tmp = gnc_numeric_zero();
}
+ }
- /* Subtract out pre-defined vars */
- if (g_hash_table_lookup_extended(vars, "i",
- &unusedKey,
- &unusedValue))
- {
- ttVarCount -= 1;
- }
+ g_hash_table_foreach( txns,
+ check_credit_debit_balance,
+ &unbalanceable );
+ }
- g_hash_table_foreach(vars, (GHFunc)gnc_sx_variable_free, NULL);
- g_hash_table_destroy(vars);
+ /* Subtract out pre-defined vars */
+ if (g_hash_table_lookup_extended(vars, "i",
+ &unusedKey,
+ &unusedValue))
+ {
+ ttVarCount -= 1;
+ }
- g_hash_table_foreach( txns, free_sums, NULL );
- g_hash_table_destroy( txns );
+ g_hash_table_foreach(vars, (GHFunc)gnc_sx_variable_free, NULL);
+ g_hash_table_destroy(vars);
- if ( unbalanceable
- && !gnc_verify_dialog( sxed->dialog, FALSE,
- "%s",
- _("The Scheduled Transaction Editor "
- "cannot automatically balance "
- "this transaction. "
- "Should it still be "
- "entered?") ) ) {
- return FALSE;
- }
+ g_hash_table_foreach( txns, free_sums, NULL );
+ g_hash_table_destroy( txns );
+
+ if ( unbalanceable
+ && !gnc_verify_dialog( sxed->dialog, FALSE,
+ "%s",
+ _("The Scheduled Transaction Editor "
+ "cannot automatically balance "
+ "this transaction. "
+ "Should it still be "
+ "entered?") ) ) {
+ return FALSE;
}
+ }
- /* read out data back into SchedXaction object. */
- /* FIXME: this is getting too deep; split out. */
- {
- gchar *name, *nameKey;
- gboolean nameExists, nameHasChanged;
- GList *sxList;
+ /* read out data back into SchedXaction object. */
+ /* FIXME: this is getting too deep; split out. */
+ {
+ gchar *name, *nameKey;
+ gboolean nameExists, nameHasChanged;
+ GList *sxList;
- name = gtk_editable_get_chars( GTK_EDITABLE(sxed->nameEntry), 0, -1 );
- if ( strlen(name) == 0 ) {
- const char *sx_has_no_name_msg =
- _( "Please name the Scheduled Transaction." );
- gnc_error_dialog( sxed->dialog, sx_has_no_name_msg );
- g_free( name );
- return FALSE;
+ name = gtk_editable_get_chars( GTK_EDITABLE(sxed->nameEntry), 0, -1 );
+ if ( strlen(name) == 0 ) {
+ const char *sx_has_no_name_msg =
+ _( "Please name the Scheduled Transaction." );
+ gnc_error_dialog( sxed->dialog, sx_has_no_name_msg );
+ g_free( name );
+ return FALSE;
- }
+ }
- nameExists = FALSE;
- nameKey = g_utf8_collate_key(name, -1);
- nameHasChanged =
- (xaccSchedXactionGetName(sxed->sx) == NULL)
- || (strcmp( xaccSchedXactionGetName(sxed->sx), name ) != 0);
- for ( sxList =
- gnc_book_get_schedxactions(gnc_get_current_book())->sx_list;
- nameHasChanged && !nameExists && sxList;
- sxList = sxList->next ) {
- char *existingName, *existingNameKey;
- existingName =
- xaccSchedXactionGetName( (SchedXaction*)sxList->
- data );
- existingNameKey = g_utf8_collate_key(existingName, -1);
- nameExists |= ( strcmp(nameKey, existingNameKey) == 0 );
- g_free( existingNameKey );
- }
- if ( nameHasChanged && nameExists ) {
- const char *sx_has_existing_name_msg =
- _( "A Scheduled Transaction with the "
- "name \"%s\" already exists. "
- "Are you sure you want to name "
- "this one the same?" );
- if ( ! gnc_verify_dialog( sxed->dialog, FALSE,
- sx_has_existing_name_msg,
- name) ) {
- g_free( nameKey );
- g_free( name );
- return FALSE;
- }
- }
+ nameExists = FALSE;
+ nameKey = g_utf8_collate_key(name, -1);
+ nameHasChanged =
+ (xaccSchedXactionGetName(sxed->sx) == NULL)
+ || (strcmp( xaccSchedXactionGetName(sxed->sx), name ) != 0);
+ for ( sxList =
+ gnc_book_get_schedxactions(gnc_get_current_book())->sx_list;
+ nameHasChanged && !nameExists && sxList;
+ sxList = sxList->next ) {
+ char *existingName, *existingNameKey;
+ existingName =
+ xaccSchedXactionGetName( (SchedXaction*)sxList->
+ data );
+ existingNameKey = g_utf8_collate_key(existingName, -1);
+ nameExists |= ( strcmp(nameKey, existingNameKey) == 0 );
+ g_free( existingNameKey );
+ }
+ if ( nameHasChanged && nameExists ) {
+ const char *sx_has_existing_name_msg =
+ _( "A Scheduled Transaction with the "
+ "name \"%s\" already exists. "
+ "Are you sure you want to name "
+ "this one the same?" );
+ if ( ! gnc_verify_dialog( sxed->dialog, FALSE,
+ sx_has_existing_name_msg,
+ name) ) {
g_free( nameKey );
g_free( name );
+ return FALSE;
+ }
}
+ g_free( nameKey );
+ g_free( name );
+ }
- // @@fixme: similar to below, check the commodities involved, and disallow autocreation
- {
- gboolean autocreateState, notifyState;
+ // @@fixme: similar to below, check the commodities involved, and disallow autocreation
+ {
+ gboolean autocreateState, notifyState;
- autocreateState =
- gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(sxed->autocreateOpt) );
- notifyState =
- gtk_toggle_button_get_active(
- GTK_TOGGLE_BUTTON(sxed->notifyOpt) );
+ autocreateState =
+ gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(sxed->autocreateOpt) );
+ notifyState =
+ gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(sxed->notifyOpt) );
- if (((ttVarCount > 0) || multi_commodity) && autocreateState) {
- gnc_warning_dialog(sxed->dialog,
- _("Scheduled Transactions with variables "
- "cannot be automatically created."));
- return FALSE;
- }
+ if (((ttVarCount > 0) || multi_commodity) && autocreateState) {
+ gnc_warning_dialog(sxed->dialog,
+ _("Scheduled Transactions with variables "
+ "cannot be automatically created."));
+ return FALSE;
+ }
- /* Fix for part of Bug#121740 -- auto-create transactions are
- * only valid if there's actually a transaction to create. */
- if ( autocreateState && splitCount == 0 ) {
- gnc_warning_dialog( sxed->dialog,
- _("Scheduled Transactions without a template "
- "transaction cannot be automatically created.") );
- return FALSE;
- }
+ /* Fix for part of Bug#121740 -- auto-create transactions are
+ * only valid if there's actually a transaction to create. */
+ if ( autocreateState && splitCount == 0 ) {
+ gnc_warning_dialog( sxed->dialog,
+ _("Scheduled Transactions without a template "
+ "transaction cannot be automatically created.") );
+ return FALSE;
}
+ }
- /* deal with time. */
- {
- GDate startDate, endDate, nextDate;
+ /* deal with time. */
+ {
+ GDate startDate, endDate, nextDate;
- if ( !gtk_toggle_button_get_active(sxed->optEndDate)
- && !gtk_toggle_button_get_active(sxed->optEndCount)
- && !gtk_toggle_button_get_active(sxed->optEndNone) ) {
- const char *sx_end_spec_msg =
- _( "Please provide a valid end selection." );
- gnc_error_dialog( sxed->dialog, sx_end_spec_msg );
- return FALSE;
- }
+ if ( !gtk_toggle_button_get_active(sxed->optEndDate)
+ && !gtk_toggle_button_get_active(sxed->optEndCount)
+ && !gtk_toggle_button_get_active(sxed->optEndNone) ) {
+ const char *sx_end_spec_msg =
+ _( "Please provide a valid end selection." );
+ gnc_error_dialog( sxed->dialog, sx_end_spec_msg );
+ return FALSE;
+ }
- if ( gtk_toggle_button_get_active(sxed->optEndCount)) {
- gint occur, rem;
+ if ( gtk_toggle_button_get_active(sxed->optEndCount)) {
+ gint occur, rem;
- occur =
- gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endCountSpin) );
+ occur =
+ gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endCountSpin) );
- rem =
- gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endRemainSpin) );
+ rem =
+ gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endRemainSpin) );
- if ( occur == 0 ) {
- const char *sx_occur_count_zero_msg =
- _( "There must be some number of occurrences." );
- gnc_error_dialog( sxed->dialog,
- sx_occur_count_zero_msg );
- return FALSE;
- }
+ if ( occur == 0 ) {
+ const char *sx_occur_count_zero_msg =
+ _( "There must be some number of occurrences." );
+ gnc_error_dialog( sxed->dialog,
+ sx_occur_count_zero_msg );
+ return FALSE;
+ }
- if ( rem > occur ) {
- const char *sx_occur_counts_wrong_msg =
- _( "The number of remaining occurrences "
- "(%d) is greater than the number of "
- "total occurrences (%d)." );
- gnc_error_dialog( sxed->dialog,
- sx_occur_counts_wrong_msg,
- rem, occur );
- return FALSE;
- }
+ if ( rem > occur ) {
+ const char *sx_occur_counts_wrong_msg =
+ _( "The number of remaining occurrences "
+ "(%d) is greater than the number of "
+ "total occurrences (%d)." );
+ gnc_error_dialog( sxed->dialog,
+ sx_occur_counts_wrong_msg,
+ rem, occur );
+ return FALSE;
+ }
- }
+ }
- g_date_clear( &endDate, 1 );
- if ( gtk_toggle_button_get_active(sxed->optEndDate) ) {
- g_date_set_time_t( &endDate,
- gnc_date_edit_get_date( sxed->
- endDateEntry ) );
- }
+ g_date_clear( &endDate, 1 );
+ if ( gtk_toggle_button_get_active(sxed->optEndDate) ) {
+ g_date_set_time_t( &endDate,
+ gnc_date_edit_get_date( sxed->
+ endDateEntry ) );
+ }
- /* Now, see if the user is attempting to create a SX that can't exist
- * [will never run]. */
+ /* Now, see if the user is attempting to create a SX that can't exist
+ * [will never run]. */
- /* get the frequency spec data */
- fs = xaccFreqSpecMalloc( gnc_get_current_book() );
- gnc_frequency_save_state( sxed->gncfreq, fs, &startDate );
- /* Replicate just a smidgen of the code in the SX
- * ...GetNextInstance routine */
- g_date_subtract_days( &startDate, 1 );
- xaccFreqSpecGetNextInstance( fs, &startDate, &nextDate );
- xaccFreqSpecFree( fs );
+ /* get the frequency spec data */
+ fs = xaccFreqSpecMalloc( gnc_get_current_book() );
+ gnc_frequency_save_state( sxed->gncfreq, fs, &startDate );
+ /* Replicate just a smidgen of the code in the SX
+ * ...GetNextInstance routine */
+ g_date_subtract_days( &startDate, 1 );
+ xaccFreqSpecGetNextInstance( fs, &startDate, &nextDate );
+ xaccFreqSpecFree( fs );
- if ( !g_date_valid( &nextDate )
- || (g_date_valid( &endDate )
- && (g_date_compare( &nextDate, &endDate ) > 0)) ) {
- const char *invalid_sx_check_msg =
- _( "You have attempted to create a Scheduled "
- "Transaction which will never run. Do you "
- "really want to do this?" );
- if ( ! gnc_verify_dialog( sxed->dialog, FALSE,
- invalid_sx_check_msg) ) {
+ if ( !g_date_valid( &nextDate )
+ || (g_date_valid( &endDate )
+ && (g_date_compare( &nextDate, &endDate ) > 0)) ) {
+ const char *invalid_sx_check_msg =
+ _( "You have attempted to create a Scheduled "
+ "Transaction which will never run. Do you "
+ "really want to do this?" );
+ if ( ! gnc_verify_dialog( sxed->dialog, FALSE,
+ invalid_sx_check_msg) ) {
- return FALSE;
- }
- }
+ return FALSE;
+ }
}
- return TRUE;
+ }
+ return TRUE;
}
/**
@@ -883,241 +883,241 @@
void
gnc_sxed_save_sx( GncSxEditorDialog *sxed )
{
- /* name */
- {
- char *name;
+ /* name */
+ {
+ char *name;
- name = gtk_editable_get_chars( sxed->nameEntry, 0, -1 );
- xaccSchedXactionSetName( sxed->sx, name );
- g_free( name );
- }
+ name = gtk_editable_get_chars( sxed->nameEntry, 0, -1 );
+ xaccSchedXactionSetName( sxed->sx, name );
+ g_free( name );
+ }
- /* date */
- {
- GDate gdate;
+ /* date */
+ {
+ GDate gdate;
- if ( gtk_toggle_button_get_active(sxed->optEndDate) ) {
- /* get the end date data */
- g_date_set_time_t( &gdate,
- gnc_date_edit_get_date(
- sxed->endDateEntry ) );
- xaccSchedXactionSetEndDate( sxed->sx, &gdate );
- /* set the num occurances data */
- xaccSchedXactionSetNumOccur( sxed->sx, 0 );
- } else if ( gtk_toggle_button_get_active(sxed->optEndCount) ) {
- gint num;
+ if ( gtk_toggle_button_get_active(sxed->optEndDate) ) {
+ /* get the end date data */
+ g_date_set_time_t( &gdate,
+ gnc_date_edit_get_date(
+ sxed->endDateEntry ) );
+ xaccSchedXactionSetEndDate( sxed->sx, &gdate );
+ /* set the num occurances data */
+ xaccSchedXactionSetNumOccur( sxed->sx, 0 );
+ } else if ( gtk_toggle_button_get_active(sxed->optEndCount) ) {
+ gint num;
- /* get the occurances data */
- num =
- gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endCountSpin) );
- xaccSchedXactionSetNumOccur( sxed->sx, num );
+ /* get the occurances data */
+ num =
+ gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endCountSpin) );
+ xaccSchedXactionSetNumOccur( sxed->sx, num );
- num =
- gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endRemainSpin) );
- xaccSchedXactionSetRemOccur( sxed->sx, num );
+ num =
+ gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON(sxed->endRemainSpin) );
+ xaccSchedXactionSetRemOccur( sxed->sx, num );
- g_date_clear( &gdate, 1 );
- xaccSchedXactionSetEndDate( sxed->sx, &gdate );
- } else if ( gtk_toggle_button_get_active( sxed->optEndNone ) ) {
- xaccSchedXactionSetNumOccur( sxed->sx, 0 );
- g_date_clear( &gdate, 1 );
- xaccSchedXactionSetEndDate( sxed->sx, &gdate );
- } else {
- g_critical("no valid end specified\n");
- }
+ g_date_clear( &gdate, 1 );
+ xaccSchedXactionSetEndDate( sxed->sx, &gdate );
+ } else if ( gtk_toggle_button_get_active( sxed->optEndNone ) ) {
+ xaccSchedXactionSetNumOccur( sxed->sx, 0 );
+ g_date_clear( &gdate, 1 );
+ xaccSchedXactionSetEndDate( sxed->sx, &gdate );
+ } else {
+ g_critical("no valid end specified\n");
}
+ }
- /* Enabled states */
- {
- gboolean enabledState;
+ /* Enabled states */
+ {
+ gboolean enabledState;
- enabledState = gtk_toggle_button_get_active( sxed->enabledOpt );
- xaccSchedXactionSetEnabled( sxed->sx, enabledState );
- }
+ enabledState = gtk_toggle_button_get_active( sxed->enabledOpt );
+ xaccSchedXactionSetEnabled( sxed->sx, enabledState );
+ }
- /* Auto-create/notification states */
- {
- gboolean autocreateState, notifyState;
+ /* Auto-create/notification states */
+ {
+ gboolean autocreateState, notifyState;
- autocreateState = gtk_toggle_button_get_active( sxed->autocreateOpt );
- notifyState = gtk_toggle_button_get_active( sxed->notifyOpt );
- /* "Notify" only makes sense if AutoCreate is actived;
- * enforce that here. */
- xaccSchedXactionSetAutoCreate( sxed->sx,
- autocreateState,
- (autocreateState & notifyState) );
- }
+ autocreateState = gtk_toggle_button_get_active( sxed->autocreateOpt );
+ notifyState = gtk_toggle_button_get_active( sxed->notifyOpt );
+ /* "Notify" only makes sense if AutoCreate is actived;
+ * enforce that here. */
+ xaccSchedXactionSetAutoCreate( sxed->sx,
+ autocreateState,
+ (autocreateState & notifyState) );
+ }
- /* days in advance */
- {
- int daysInAdvance;
+ /* days in advance */
+ {
+ int daysInAdvance;
- daysInAdvance = 0;
- if ( gtk_toggle_button_get_active( sxed->advanceOpt ) ) {
- daysInAdvance =
- gtk_spin_button_get_value_as_int( sxed->advanceSpin );
- }
- xaccSchedXactionSetAdvanceCreation( sxed->sx, daysInAdvance );
+ daysInAdvance = 0;
+ if ( gtk_toggle_button_get_active( sxed->advanceOpt ) ) {
+ daysInAdvance =
+ gtk_spin_button_get_value_as_int( sxed->advanceSpin );
+ }
+ xaccSchedXactionSetAdvanceCreation( sxed->sx, daysInAdvance );
- daysInAdvance = 0;
- if ( gtk_toggle_button_get_active( sxed->remindOpt ) ) {
- daysInAdvance =
- gtk_spin_button_get_value_as_int( sxed->remindSpin );
- }
- xaccSchedXactionSetAdvanceReminder( sxed->sx, daysInAdvance );
+ daysInAdvance = 0;
+ if ( gtk_toggle_button_get_active( sxed->remindOpt ) ) {
+ daysInAdvance =
+ gtk_spin_button_get_value_as_int( sxed->remindSpin );
}
+ xaccSchedXactionSetAdvanceReminder( sxed->sx, daysInAdvance );
+ }
- /* start date and freq spec */
- {
- FreqSpec *fs;
- GDate gdate;
- GString *str;
- GList *schedule = NULL;
+ /* start date and freq spec */
+ {
+ FreqSpec *fs;
+ GDate gdate;
+ GString *str;
+ GList *schedule = NULL;
- fs = xaccSchedXactionGetFreqSpec( sxed->sx );
- gnc_frequency_save_state( sxed->gncfreq, fs, &gdate );
+ fs = xaccSchedXactionGetFreqSpec( sxed->sx );
+ gnc_frequency_save_state( sxed->gncfreq, fs, &gdate );
- str = g_string_new( "" );
- xaccFreqSpecGetFreqStr( fs, str );
- g_debug("fs: %s", str->str);
+ str = g_string_new( "" );
+ xaccFreqSpecGetFreqStr( fs, str );
+ g_debug("fs: %s", str->str);
- gnc_frequency_save_to_recurrence(sxed->gncfreq, &schedule, &gdate);
- gnc_sx_set_schedule(sxed->sx, schedule);
- g_debug("recurrences parsed [%s]", recurrenceListToString(schedule));
+ gnc_frequency_save_to_recurrence(sxed->gncfreq, &schedule, &gdate);
+ gnc_sx_set_schedule(sxed->sx, schedule);
+ g_debug("recurrences parsed [%s]", recurrenceListToString(schedule));
- /* now that we have it, set the start date */
- xaccSchedXactionSetStartDate( sxed->sx, &gdate );
- }
+ /* now that we have it, set the start date */
+ xaccSchedXactionSetStartDate( sxed->sx, &gdate );
+ }
}
static void
enabled_toggled( GtkObject *o, GncSxEditorDialog *sxed )
{
- return;
+ return;
}
static void
autocreate_toggled( GtkObject *o, GncSxEditorDialog *sxed )
{
- if ( !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(o)) ) {
- gtk_toggle_button_set_active( sxed->notifyOpt, FALSE );
- }
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->notifyOpt),
- gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(o) ) );
+ if ( !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(o)) ) {
+ gtk_toggle_button_set_active( sxed->notifyOpt, FALSE );
+ }
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->notifyOpt),
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(o) ) );
}
static void
advance_toggle( GtkButton *o, GncSxEditorDialog *sxed )
{
- gchar *spinName;
- GtkWidget *spin;
+ gchar *spinName;
+ GtkWidget *spin;
- spinName = (gchar*)g_object_get_data( G_OBJECT(o), "whichOneAmI" );
- spin = glade_xml_get_widget( sxed->gxml, spinName );
- if ( !spin ) {
- g_critical("Error getting widget with name \"%s\"", spinName);
- return;
- }
- gtk_widget_set_sensitive( spin,
- gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(o) ) );
- /* FIXME: this doesn't do what we want... :( */
- gtk_editable_set_editable( GTK_EDITABLE(spin), TRUE );
+ spinName = (gchar*)g_object_get_data( G_OBJECT(o), "whichOneAmI" );
+ spin = glade_xml_get_widget( sxed->gxml, spinName );
+ if ( !spin ) {
+ g_critical("Error getting widget with name \"%s\"", spinName);
+ return;
+ }
+ gtk_widget_set_sensitive( spin,
+ gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(o) ) );
+ /* FIXME: this doesn't do what we want... :( */
+ gtk_editable_set_editable( GTK_EDITABLE(spin), TRUE );
}
/* Local destruction of dialog */
static void
scheduledxaction_editor_dialog_destroy(GtkObject *object, gpointer data)
{
- GncSxEditorDialog *sxed = data;
+ GncSxEditorDialog *sxed = data;
- if (sxed == NULL)
- return;
+ if (sxed == NULL)
+ return;
- gnc_unregister_gui_component_by_data
- (DIALOG_SCHEDXACTION_EDITOR_CM_CLASS, sxed);
+ gnc_unregister_gui_component_by_data
+ (DIALOG_SCHEDXACTION_EDITOR_CM_CLASS, sxed);
- gnc_embedded_window_close_page(sxed->embed_window, sxed->plugin_page);
- gtk_widget_destroy(GTK_WIDGET(sxed->embed_window));
- sxed->embed_window = NULL;
- sxed->plugin_page = NULL;
- sxed->ledger = NULL;
+ gnc_embedded_window_close_page(sxed->embed_window, sxed->plugin_page);
+ gtk_widget_destroy(GTK_WIDGET(sxed->embed_window));
+ sxed->embed_window = NULL;
+ sxed->plugin_page = NULL;
+ sxed->ledger = NULL;
- g_free (sxed->sxGUIDstr);
- sxed->sxGUIDstr = NULL;
+ g_free (sxed->sxGUIDstr);
+ sxed->sxGUIDstr = NULL;
- if ( sxed->newsxP ) {
- /* FIXME: WTF???
- *
- * "WTF" explaination: in the "new" click from the caller, we
- * set this flag. When "ok" is pressed on the dialog, we set
- * this flag to false, and thus leave the SX live. If
- * "Cancel" is clicked, the flag will still be true, and this
- * SX will be cleaned, here. -- jsled
- */
- xaccSchedXactionFree( sxed->sx );
- }
- sxed->sx = NULL;
+ if ( sxed->newsxP ) {
+ /* FIXME: WTF???
+ *
+ * "WTF" explaination: in the "new" click from the caller, we
+ * set this flag. When "ok" is pressed on the dialog, we set
+ * this flag to false, and thus leave the SX live. If
+ * "Cancel" is clicked, the flag will still be true, and this
+ * SX will be cleaned, here. -- jsled
+ */
+ xaccSchedXactionFree( sxed->sx );
+ }
+ sxed->sx = NULL;
- g_free (sxed);
+ g_free (sxed);
}
static
gint
sxed_close_event( GtkDialog *dlg, gpointer ud )
{
- GncSxEditorDialog *sxed = (GncSxEditorDialog*)ud;
+ GncSxEditorDialog *sxed = (GncSxEditorDialog*)ud;
- /* We've already processed the SX, likely because of "ok" being
- * clicked. */
- if ( sxed->sx == NULL ) {
- return FALSE;
- }
+ /* We've already processed the SX, likely because of "ok" being
+ * clicked. */
+ if ( sxed->sx == NULL ) {
+ return FALSE;
+ }
- if ( ! sxed_confirmed_cancel( sxed ) ) {
- return TRUE;
- }
- return FALSE;
+ if ( ! sxed_confirmed_cancel( sxed ) ) {
+ return TRUE;
+ }
+ return FALSE;
}
static
void
gnc_sxed_get_widgets( GncSxEditorDialog *sxed )
{
- GtkWidget *w;
+ GtkWidget *w;
- w = glade_xml_get_widget( sxed->gxml, SXED_NAME_ENTRY );
- sxed->nameEntry = GTK_EDITABLE(w);
- w = glade_xml_get_widget( sxed->gxml, SXED_LAST_OCCUR_LABEL );
- sxed->lastOccurLabel = GTK_LABEL(w);
- w = glade_xml_get_widget( sxed->gxml, ENABLED_OPT );
- sxed->enabledOpt = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, AUTOCREATE_OPT );
- sxed->autocreateOpt = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, NOTIFY_OPT );
- sxed->notifyOpt = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, ADVANCE_OPT );
- sxed->advanceOpt = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, ADVANCE_DAYS_SPIN );
- sxed->advanceSpin = GTK_SPIN_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, REMIND_OPT );
- sxed->remindOpt = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, REMIND_DAYS_SPIN );
- sxed->remindSpin = GTK_SPIN_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, SXED_NAME_ENTRY );
+ sxed->nameEntry = GTK_EDITABLE(w);
+ w = glade_xml_get_widget( sxed->gxml, SXED_LAST_OCCUR_LABEL );
+ sxed->lastOccurLabel = GTK_LABEL(w);
+ w = glade_xml_get_widget( sxed->gxml, ENABLED_OPT );
+ sxed->enabledOpt = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, AUTOCREATE_OPT );
+ sxed->autocreateOpt = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, NOTIFY_OPT );
+ sxed->notifyOpt = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, ADVANCE_OPT );
+ sxed->advanceOpt = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, ADVANCE_DAYS_SPIN );
+ sxed->advanceSpin = GTK_SPIN_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, REMIND_OPT );
+ sxed->remindOpt = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, REMIND_DAYS_SPIN );
+ sxed->remindSpin = GTK_SPIN_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, "rb_enddate" );
- sxed->optEndDate = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, "rb_enddate" );
+ sxed->optEndDate = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, "rb_noend" );
- sxed->optEndNone = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, "rb_noend" );
+ sxed->optEndNone = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, "rb_num_occur" );
- sxed->optEndCount = GTK_TOGGLE_BUTTON(w);
+ w = glade_xml_get_widget( sxed->gxml, "rb_num_occur" );
+ sxed->optEndCount = GTK_TOGGLE_BUTTON(w);
- w = glade_xml_get_widget( sxed->gxml, END_SPIN );
- sxed->endCountSpin = GTK_ENTRY(w);
+ w = glade_xml_get_widget( sxed->gxml, END_SPIN );
+ sxed->endCountSpin = GTK_ENTRY(w);
- w = glade_xml_get_widget( sxed->gxml, REMAIN_SPIN );
- sxed->endRemainSpin = GTK_ENTRY(w);
+ w = glade_xml_get_widget( sxed->gxml, REMAIN_SPIN );
+ sxed->endRemainSpin = GTK_ENTRY(w);
}
@@ -1125,373 +1125,373 @@
gnc_ui_scheduled_xaction_editor_dialog_create(SchedXaction *sx,
gboolean newSX)
{
- GncSxEditorDialog *sxed;
- GtkWidget *button;
- int i;
- GList *dlgExists = NULL;
+ GncSxEditorDialog *sxed;
+ GtkWidget *button;
+ int i;
+ GList *dlgExists = NULL;
- static struct widgetSignalCallback {
- char *name;
- char *signal;
- void (*fn)();
- gpointer objectData;
- } widgets[] = {
- { "ok_button", "clicked", editor_ok_button_clicked, NULL },
- { "cancel_button", "clicked", editor_cancel_button_clicked, NULL },
- { "help_button", "clicked", editor_help_button_clicked, NULL },
+ static struct widgetSignalCallback {
+ char *name;
+ char *signal;
+ void (*fn)();
+ gpointer objectData;
+ } widgets[] = {
+ { "ok_button", "clicked", editor_ok_button_clicked, NULL },
+ { "cancel_button", "clicked", editor_cancel_button_clicked, NULL },
+ { "help_button", "clicked", editor_help_button_clicked, NULL },
- { "rb_noend", "toggled", endgroup_rb_toggled, GINT_TO_POINTER(END_NEVER_OPTION) },
- { "rb_enddate", "toggled", endgroup_rb_toggled, GINT_TO_POINTER(END_DATE_OPTION) },
- { "rb_num_occur", "toggled", endgroup_rb_toggled, GINT_TO_POINTER(NUM_OCCUR_OPTION) },
+ { "rb_noend", "toggled", endgroup_rb_toggled, GINT_TO_POINTER(END_NEVER_OPTION) },
+ { "rb_enddate", "toggled", endgroup_rb_toggled, GINT_TO_POINTER(END_DATE_OPTION) },
+ { "rb_num_occur", "toggled", endgroup_rb_toggled, GINT_TO_POINTER(NUM_OCCUR_OPTION) },
- { REMAIN_SPIN , "value-changed", sxed_excal_update_adapt, NULL },
+ { REMAIN_SPIN , "value-changed", sxed_excal_update_adapt, NULL },
- { ENABLED_OPT, "toggled", enabled_toggled, NULL },
- { AUTOCREATE_OPT, "toggled", autocreate_toggled, NULL },
- { ADVANCE_OPT, "toggled", advance_toggle, (gpointer)ADVANCE_DAYS_SPIN },
- { REMIND_OPT, "toggled", advance_toggle, (gpointer)REMIND_DAYS_SPIN },
+ { ENABLED_OPT, "toggled", enabled_toggled, NULL },
+ { AUTOCREATE_OPT, "toggled", autocreate_toggled, NULL },
+ { ADVANCE_OPT, "toggled", advance_toggle, (gpointer)ADVANCE_DAYS_SPIN },
+ { REMIND_OPT, "toggled", advance_toggle, (gpointer)REMIND_DAYS_SPIN },
- { NULL, NULL, NULL, NULL }
- };
+ { NULL, NULL, NULL, NULL }
+ };
- dlgExists = gnc_find_gui_components( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
- editor_component_sx_equality,
- sx );
- if ( dlgExists != NULL ) {
- g_debug( "dialog already exists; using that one." );
- sxed = (GncSxEditorDialog*)dlgExists->data;
- gtk_window_present( GTK_WINDOW(sxed->dialog) );
- g_list_free( dlgExists );
- return sxed;
- }
+ dlgExists = gnc_find_gui_components( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
+ editor_component_sx_equality,
+ sx );
+ if ( dlgExists != NULL ) {
+ g_debug( "dialog already exists; using that one." );
+ sxed = (GncSxEditorDialog*)dlgExists->data;
+ gtk_window_present( GTK_WINDOW(sxed->dialog) );
+ g_list_free( dlgExists );
+ return sxed;
+ }
- sxed = g_new0( GncSxEditorDialog, 1 );
- sxed->gxml = gnc_glade_xml_new( SX_GLADE_FILE,
- SX_EDITOR_GLADE_NAME );
- sxed->dialog = glade_xml_get_widget( sxed->gxml, SX_EDITOR_GLADE_NAME );
+ sxed = g_new0( GncSxEditorDialog, 1 );
+ sxed->gxml = gnc_glade_xml_new( SX_GLADE_FILE,
+ SX_EDITOR_GLADE_NAME );
+ sxed->dialog = glade_xml_get_widget( sxed->gxml, SX_EDITOR_GLADE_NAME );
- sxed->sx = sx;
- sxed->newsxP = newSX;
- /* Setup the end-date GNC widget */
- {
- GtkWidget *endDateBox =
- glade_xml_get_widget( sxed->gxml, END_DATE_BOX );
- sxed->endDateEntry =
- GNC_DATE_EDIT(gnc_date_edit_new( time(NULL),
- FALSE, FALSE ));
- gtk_widget_show(GTK_WIDGET(sxed->endDateEntry));
- g_signal_connect( sxed->endDateEntry,
- "date-changed",
- G_CALLBACK( sxed_excal_update_adapt ),
- sxed );
- gtk_box_pack_start( GTK_BOX(endDateBox),
- GTK_WIDGET(sxed->endDateEntry),
- TRUE, TRUE, 0 );
- }
+ sxed->sx = sx;
+ sxed->newsxP = newSX;
+ /* Setup the end-date GNC widget */
+ {
+ GtkWidget *endDateBox =
+ glade_xml_get_widget( sxed->gxml, END_DATE_BOX );
+ sxed->endDateEntry =
+ GNC_DATE_EDIT(gnc_date_edit_new( time(NULL),
+ FALSE, FALSE ));
+ gtk_widget_show(GTK_WIDGET(sxed->endDateEntry));
+ g_signal_connect( sxed->endDateEntry,
+ "date-changed",
+ G_CALLBACK( sxed_excal_update_adapt ),
+ sxed );
+ gtk_box_pack_start( GTK_BOX(endDateBox),
+ GTK_WIDGET(sxed->endDateEntry),
+ TRUE, TRUE, 0 );
+ }
- /* NOTE: this must occur before processing the widget list, defined
- * above, so the gpointers stored with the advance_ and remind_opts
- * are correct. */
- gnc_sxed_get_widgets( sxed );
+ /* NOTE: this must occur before processing the widget list, defined
+ * above, so the gpointers stored with the advance_ and remind_opts
+ * are correct. */
+ gnc_sxed_get_widgets( sxed );
- gnc_register_gui_component( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
- NULL, /* no refresh handler */
- sxed_close_handler,
- sxed );
+ gnc_register_gui_component( DIALOG_SCHEDXACTION_EDITOR_CM_CLASS,
+ NULL, /* no refresh handler */
+ sxed_close_handler,
+ sxed );
- g_signal_connect( sxed->dialog, "close",
- G_CALLBACK(sxed_close_event), sxed );
- g_signal_connect( sxed->dialog, "destroy",
- G_CALLBACK(scheduledxaction_editor_dialog_destroy),
- sxed );
+ g_signal_connect( sxed->dialog, "close",
+ G_CALLBACK(sxed_close_event), sxed );
+ g_signal_connect( sxed->dialog, "destroy",
+ G_CALLBACK(scheduledxaction_editor_dialog_destroy),
+ sxed );
- for ( i=0; widgets[i].name != NULL; i++ ) {
- button = glade_xml_get_widget( sxed->gxml, widgets[i].name );
- if ( widgets[i].objectData != NULL ) {
- g_object_set_data( G_OBJECT(button), "whichOneAmI",
- widgets[i].objectData );
- }
- g_signal_connect( button, widgets[i].signal,
- G_CALLBACK( widgets[i].fn ), sxed );
+ for ( i=0; widgets[i].name != NULL; i++ ) {
+ button = glade_xml_get_widget( sxed->gxml, widgets[i].name );
+ if ( widgets[i].objectData != NULL ) {
+ g_object_set_data( G_OBJECT(button), "whichOneAmI",
+ widgets[i].objectData );
}
+ g_signal_connect( button, widgets[i].signal,
+ G_CALLBACK( widgets[i].fn ), sxed );
+ }
- /* For some reason the Glade-specified sensitivity settings are not
- * being honored... ? */
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->notifyOpt), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->advanceSpin), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->remindSpin), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->endCountSpin), FALSE );
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->endRemainSpin), FALSE );
+ /* For some reason the Glade-specified sensitivity settings are not
+ * being honored... ? */
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->notifyOpt), FALSE );
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->advanceSpin), FALSE );
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->remindSpin), FALSE );
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->endCountSpin), FALSE );
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->endRemainSpin), FALSE );
- gtk_editable_set_editable( GTK_EDITABLE(sxed->advanceSpin), TRUE );
- gtk_editable_set_editable( GTK_EDITABLE(sxed->remindSpin), TRUE );
+ gtk_editable_set_editable( GTK_EDITABLE(sxed->advanceSpin), TRUE );
+ gtk_editable_set_editable( GTK_EDITABLE(sxed->remindSpin), TRUE );
- /* Allow resize */
- gtk_window_set_resizable (GTK_WINDOW(sxed->dialog), TRUE);
+ /* Allow resize */
+ gtk_window_set_resizable (GTK_WINDOW(sxed->dialog), TRUE);
- gnc_restore_window_size(SXED_GCONF_SECTION, GTK_WINDOW(sxed->dialog));
+ gnc_restore_window_size(SXED_GCONF_SECTION, GTK_WINDOW(sxed->dialog));
- /* create the frequency-selection macrowidget and example
- * [dense-]calendar. */
- schedXact_editor_create_freq_sel( sxed );
- /* create the template-transaction ledger window */
- schedXact_editor_create_ledger( sxed );
- /* populate */
- schedXact_editor_populate( sxed );
+ /* create the frequency-selection macrowidget and example
+ * [dense-]calendar. */
+ schedXact_editor_create_freq_sel( sxed );
+ /* create the template-transaction ledger window */
+ schedXact_editor_create_ledger( sxed );
+ /* populate */
+ schedXact_editor_populate( sxed );
- /* Do not call show_all here. Screws up the gtkuimanager code */
- gtk_widget_show(sxed->dialog);
+ /* Do not call show_all here. Screws up the gtkuimanager code */
+ gtk_widget_show(sxed->dialog);
- /* Refresh the cal and the ledger */
- gtk_widget_queue_resize( GTK_WIDGET( sxed->example_cal ) );
- gnc_ledger_display_refresh( sxed->ledger );
+ /* Refresh the cal and the ledger */
+ gtk_widget_queue_resize( GTK_WIDGET( sxed->example_cal ) );
+ gnc_ledger_display_refresh( sxed->ledger );
- return sxed;
+ return sxed;
}
static
void
gnc_sxed_record_size( GncSxEditorDialog *sxed )
{
- gnc_save_window_size( SXED_GCONF_SECTION, GTK_WINDOW(sxed->dialog) );
+ gnc_save_window_size( SXED_GCONF_SECTION, GTK_WINDOW(sxed->dialog) );
}
static
void
schedXact_editor_create_freq_sel( GncSxEditorDialog *sxed )
{
- GtkBox *b;
+ GtkBox *b;
- b = GTK_BOX(glade_xml_get_widget( sxed->gxml, "gncfreq_hbox" ));
- /*sxed->gncfreq =
- GNC_FREQUENCY( gnc_frequency_new( xaccSchedXactionGetFreqSpec(sxed->sx),
- xaccSchedXactionGetStartDate(sxed->sx) ) );*/
- sxed->gncfreq =
- GNC_FREQUENCY(gnc_frequency_new_from_recurrence(gnc_sx_get_schedule(sxed->sx),
- xaccSchedXactionGetStartDate(sxed->sx)));
- g_assert(sxed->gncfreq);
- g_signal_connect( sxed->gncfreq, "changed",
- G_CALLBACK(gnc_sxed_freq_changed),
- sxed );
- gtk_container_add( GTK_CONTAINER(b), GTK_WIDGET(sxed->gncfreq) );
+ b = GTK_BOX(glade_xml_get_widget( sxed->gxml, "gncfreq_hbox" ));
+ /*sxed->gncfreq =
+ GNC_FREQUENCY( gnc_frequency_new( xaccSchedXactionGetFreqSpec(sxed->sx),
+ xaccSchedXactionGetStartDate(sxed->sx) ) );*/
+ sxed->gncfreq =
+ GNC_FREQUENCY(gnc_frequency_new_from_recurrence(gnc_sx_get_schedule(sxed->sx),
+ xaccSchedXactionGetStartDate(sxed->sx)));
+ g_assert(sxed->gncfreq);
+ g_signal_connect( sxed->gncfreq, "changed",
+ G_CALLBACK(gnc_sxed_freq_changed),
+ sxed );
+ gtk_container_add( GTK_CONTAINER(b), GTK_WIDGET(sxed->gncfreq) );
- b = GTK_BOX(glade_xml_get_widget( sxed->gxml, "example_cal_hbox" ));
- sxed->dense_cal_model = gnc_dense_cal_store_new(EX_CAL_NUM_MONTHS*31);
- sxed->example_cal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model(GNC_DENSE_CAL_MODEL(sxed->dense_cal_model)));
- g_assert(sxed->example_cal);
- gnc_dense_cal_set_num_months( sxed->example_cal, EX_CAL_NUM_MONTHS );
- gnc_dense_cal_set_months_per_col( sxed->example_cal, EX_CAL_MO_PER_COL );
- gtk_container_add( GTK_CONTAINER(b), GTK_WIDGET(sxed->example_cal) );
- gtk_widget_show( GTK_WIDGET(sxed->example_cal) );
+ b = GTK_BOX(glade_xml_get_widget( sxed->gxml, "example_cal_hbox" ));
+ sxed->dense_cal_model = gnc_dense_cal_store_new(EX_CAL_NUM_MONTHS*31);
+ sxed->example_cal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model(GNC_DENSE_CAL_MODEL(sxed->dense_cal_model)));
+ g_assert(sxed->example_cal);
+ gnc_dense_cal_set_num_months( sxed->example_cal, EX_CAL_NUM_MONTHS );
+ gnc_dense_cal_set_months_per_col( sxed->example_cal, EX_CAL_MO_PER_COL );
+ gtk_container_add( GTK_CONTAINER(b), GTK_WIDGET(sxed->example_cal) );
+ gtk_widget_show( GTK_WIDGET(sxed->example_cal) );
}
static
void
schedXact_editor_create_ledger( GncSxEditorDialog *sxed )
{
- SplitRegister *splitreg;
- GtkWidget *main_vbox;
+ SplitRegister *splitreg;
+ GtkWidget *main_vbox;
- /* Create the ledger */
- /* THREAD-UNSAFE */
- sxed->sxGUIDstr = g_strdup( guid_to_string(
- xaccSchedXactionGetGUID(sxed->sx) ) );
- sxed->ledger = gnc_ledger_display_template_gl( sxed->sxGUIDstr );
- splitreg = gnc_ledger_display_get_split_register( sxed->ledger );
+ /* Create the ledger */
+ /* THREAD-UNSAFE */
+ sxed->sxGUIDstr = g_strdup( guid_to_string(
+ xaccSchedXactionGetGUID(sxed->sx) ) );
+ sxed->ledger = gnc_ledger_display_template_gl( sxed->sxGUIDstr );
+ splitreg = gnc_ledger_display_get_split_register( sxed->ledger );
- /* First the embedded window */
- main_vbox = glade_xml_get_widget( sxed->gxml, "register_vbox" );
- sxed->embed_window =
- gnc_embedded_window_new("SXWindowActions",
- gnc_sxed_menu_entries,
- gnc_sxed_menu_n_entries,
- "gnc-sxed-window-ui.xml",
- sxed->dialog,
- FALSE, /* no accelerators */
- sxed);
- gtk_box_pack_start (GTK_BOX (main_vbox), GTK_WIDGET(sxed->embed_window),
- TRUE, TRUE, 0);
+ /* First the embedded window */
+ main_vbox = glade_xml_get_widget( sxed->gxml, "register_vbox" );
+ sxed->embed_window =
+ gnc_embedded_window_new("SXWindowActions",
+ gnc_sxed_menu_entries,
+ gnc_sxed_menu_n_entries,
+ "gnc-sxed-window-ui.xml",
+ sxed->dialog,
+ FALSE, /* no accelerators */
+ sxed);
+ gtk_box_pack_start (GTK_BOX (main_vbox), GTK_WIDGET(sxed->embed_window),
+ TRUE, TRUE, 0);
- /* Now create the register plugin page. */
- sxed->plugin_page = gnc_plugin_page_register_new_ledger (sxed->ledger);
- gnc_plugin_page_set_ui_description (sxed->plugin_page,
- "gnc-sxed-window-ui-full.xml");
- gnc_plugin_page_register_set_options (sxed->plugin_page,
- NULL, NULL,
- NUM_LEDGER_LINES_DEFAULT, FALSE );
- gnc_embedded_window_open_page (sxed->embed_window, sxed->plugin_page);
+ /* Now create the register plugin page. */
+ sxed->plugin_page = gnc_plugin_page_register_new_ledger (sxed->ledger);
+ gnc_plugin_page_set_ui_description (sxed->plugin_page,
+ "gnc-sxed-window-ui-full.xml");
+ gnc_plugin_page_register_set_options (sxed->plugin_page,
+ NULL, NULL,
+ NUM_LEDGER_LINES_DEFAULT, FALSE );
+ gnc_embedded_window_open_page (sxed->embed_window, sxed->plugin_page);
- /* configure... */
- /* don't use double-line */
- gnc_split_register_config(splitreg,
- splitreg->type, splitreg->style,
- FALSE);
- gnc_split_register_set_auto_complete(splitreg, FALSE);
+ /* configure... */
+ /* don't use double-line */
+ gnc_split_register_config(splitreg,
+ splitreg->type, splitreg->style,
+ FALSE);
+ gnc_split_register_set_auto_complete(splitreg, FALSE);
- /* don't show present/future divider [by definition, not necessary] */
- gnc_split_register_show_present_divider( splitreg, FALSE );
+ /* don't show present/future divider [by definition, not necessary] */
+ gnc_split_register_show_present_divider( splitreg, FALSE );
}
static
void
schedXact_editor_populate( GncSxEditorDialog *sxed )
{
- char *name;
- time_t tmpDate;
- SplitRegister *splitReg;
- struct tm *tmpTm;
- GDate *gd;
- gint daysInAdvance;
- gboolean enabledState, autoCreateState, notifyState;
+ char *name;
+ time_t tmpDate;
+ SplitRegister *splitReg;
+ struct tm *tmpTm;
+ GDate *gd;
+ gint daysInAdvance;
+ gboolean enabledState, autoCreateState, notifyState;
- name = xaccSchedXactionGetName(sxed->sx);
- if ( name != NULL ) {
- gtk_entry_set_text( GTK_ENTRY(sxed->nameEntry), name );
+ name = xaccSchedXactionGetName(sxed->sx);
+ if ( name != NULL ) {
+ gtk_entry_set_text( GTK_ENTRY(sxed->nameEntry), name );
+ }
+ {
+ gd = xaccSchedXactionGetLastOccurDate( sxed->sx );
+ if ( g_date_valid( gd ) ) {
+ gchar dateBuf[ MAX_DATE_LENGTH+1 ];
+ qof_print_gdate( dateBuf,MAX_DATE_LENGTH, gd );
+ gtk_label_set_text( sxed->lastOccurLabel, dateBuf );
+ } else {
+ gtk_label_set_text( sxed->lastOccurLabel, _( "(never)" ) );
}
- {
- gd = xaccSchedXactionGetLastOccurDate( sxed->sx );
- if ( g_date_valid( gd ) ) {
- gchar dateBuf[ MAX_DATE_LENGTH+1 ];
- qof_print_gdate( dateBuf,MAX_DATE_LENGTH, gd );
- gtk_label_set_text( sxed->lastOccurLabel, dateBuf );
- } else {
- gtk_label_set_text( sxed->lastOccurLabel, _( "(never)" ) );
- }
- gd = NULL;
- }
+ gd = NULL;
+ }
- gd = xaccSchedXactionGetEndDate( sxed->sx );
- if ( g_date_valid( gd ) ) {
- gtk_toggle_button_set_active( sxed->optEndDate, TRUE );
- /* fill in date data. */
- tmpTm = g_new0( struct tm, 1 );
- g_date_to_struct_tm( gd, tmpTm );
- tmpDate = mktime( tmpTm );
- g_free( tmpTm );
- gnc_date_edit_set_time( sxed->endDateEntry, tmpDate );
+ gd = xaccSchedXactionGetEndDate( sxed->sx );
+ if ( g_date_valid( gd ) ) {
+ gtk_toggle_button_set_active( sxed->optEndDate, TRUE );
+ /* fill in date data. */
+ tmpTm = g_new0( struct tm, 1 );
+ g_date_to_struct_tm( gd, tmpTm );
+ tmpDate = mktime( tmpTm );
+ g_free( tmpTm );
+ gnc_date_edit_set_time( sxed->endDateEntry, tmpDate );
- set_endgroup_toggle_states( sxed, END_DATE );
- } else if ( xaccSchedXactionHasOccurDef( sxed->sx ) ) {
- gint numOccur = xaccSchedXactionGetNumOccur( sxed->sx );
- gint numRemain = xaccSchedXactionGetRemOccur( sxed->sx );
+ set_endgroup_toggle_states( sxed, END_DATE );
+ } else if ( xaccSchedXactionHasOccurDef( sxed->sx ) ) {
+ gint numOccur = xaccSchedXactionGetNumOccur( sxed->sx );
+ gint numRemain = xaccSchedXactionGetRemOccur( sxed->sx );
- gtk_toggle_button_set_active( sxed->optEndCount, TRUE );
+ gtk_toggle_button_set_active( sxed->optEndCount, TRUE );
- gtk_spin_button_set_value ( GTK_SPIN_BUTTON(sxed->endCountSpin), numOccur );
- gtk_spin_button_set_value ( GTK_SPIN_BUTTON(sxed->endRemainSpin), numRemain );
+ gtk_spin_button_set_value ( GTK_SPIN_BUTTON(sxed->endCountSpin), numOccur );
+ gtk_spin_button_set_value ( GTK_SPIN_BUTTON(sxed->endRemainSpin), numRemain );
- set_endgroup_toggle_states( sxed, END_OCCUR );
- } else {
- gtk_toggle_button_set_active( sxed->optEndNone, TRUE );
- set_endgroup_toggle_states( sxed, END_NEVER );
- }
+ set_endgroup_toggle_states( sxed, END_OCCUR );
+ } else {
+ gtk_toggle_button_set_active( sxed->optEndNone, TRUE );
+ set_endgroup_toggle_states( sxed, END_NEVER );
+ }
- enabledState = xaccSchedXactionGetEnabled( sxed->sx );
- gtk_toggle_button_set_active( sxed->enabledOpt, enabledState );
+ enabledState = xaccSchedXactionGetEnabled( sxed->sx );
+ gtk_toggle_button_set_active( sxed->enabledOpt, enabledState );
- /* Do auto-create/notify setup */
- if ( sxed->newsxP ) {
- autoCreateState =
- gnc_gconf_get_bool( SXED_GCONF_SECTION, KEY_CREATE_AUTO, NULL );
- notifyState =
- gnc_gconf_get_bool( SXED_GCONF_SECTION, KEY_NOTIFY, NULL );
- } else {
- xaccSchedXactionGetAutoCreate( sxed->sx,
- &autoCreateState,
- ¬ifyState );
- }
- gtk_toggle_button_set_active( sxed->autocreateOpt, autoCreateState );
- if ( ! autoCreateState ) {
- notifyState = FALSE;
- }
- gtk_toggle_button_set_active( sxed->notifyOpt, notifyState );
+ /* Do auto-create/notify setup */
+ if ( sxed->newsxP ) {
+ autoCreateState =
+ gnc_gconf_get_bool( SXED_GCONF_SECTION, KEY_CREATE_AUTO, NULL );
+ notifyState =
+ gnc_gconf_get_bool( SXED_GCONF_SECTION, KEY_NOTIFY, NULL );
+ } else {
+ xaccSchedXactionGetAutoCreate( sxed->sx,
+ &autoCreateState,
+ ¬ifyState );
+ }
+ gtk_toggle_button_set_active( sxed->autocreateOpt, autoCreateState );
+ if ( ! autoCreateState ) {
+ notifyState = FALSE;
+ }
+ gtk_toggle_button_set_active( sxed->notifyOpt, notifyState );
- /* Do days-in-advance-to-create widget[s] setup. */
- if ( sxed->newsxP ) {
- daysInAdvance =
- gnc_gconf_get_float( SXED_GCONF_SECTION, KEY_CREATE_DAYS, NULL );
- } else {
- daysInAdvance =
- xaccSchedXactionGetAdvanceCreation( sxed->sx );
- }
- if ( daysInAdvance != 0 ) {
- gtk_toggle_button_set_active( sxed->advanceOpt, TRUE );
- gtk_spin_button_set_value( sxed->advanceSpin,
- (gfloat)daysInAdvance );
- }
+ /* Do days-in-advance-to-create widget[s] setup. */
+ if ( sxed->newsxP ) {
+ daysInAdvance =
+ gnc_gconf_get_float( SXED_GCONF_SECTION, KEY_CREATE_DAYS, NULL );
+ } else {
+ daysInAdvance =
+ xaccSchedXactionGetAdvanceCreation( sxed->sx );
+ }
+ if ( daysInAdvance != 0 ) {
+ gtk_toggle_button_set_active( sxed->advanceOpt, TRUE );
+ gtk_spin_button_set_value( sxed->advanceSpin,
+ (gfloat)daysInAdvance );
+ }
- /* Do days-in-advance-to-remind widget[s] setup. */
- if ( sxed->newsxP ) {
- daysInAdvance =
- gnc_gconf_get_float( SXED_GCONF_SECTION, KEY_REMIND_DAYS, NULL );
- } else {
- daysInAdvance =
- xaccSchedXactionGetAdvanceReminder( sxed->sx );
- }
- if ( daysInAdvance != 0 ) {
- gtk_toggle_button_set_active( sxed->remindOpt, TRUE );
- gtk_spin_button_set_value( sxed->remindSpin,
- (gfloat)daysInAdvance );
- }
+ /* Do days-in-advance-to-remind widget[s] setup. */
+ if ( sxed->newsxP ) {
+ daysInAdvance =
+ gnc_gconf_get_float( SXED_GCONF_SECTION, KEY_REMIND_DAYS, NULL );
+ } else {
+ daysInAdvance =
+ xaccSchedXactionGetAdvanceReminder( sxed->sx );
+ }
+ if ( daysInAdvance != 0 ) {
+ gtk_toggle_button_set_active( sxed->remindOpt, TRUE );
+ gtk_spin_button_set_value( sxed->remindSpin,
+ (gfloat)daysInAdvance );
+ }
- if ( sxed->newsxP ) {
- gnc_sx_set_instance_count( sxed->sx, 1 );
- }
+ if ( sxed->newsxP ) {
+ gnc_sx_set_instance_count( sxed->sx, 1 );
+ }
- /* populate the ledger */
- {
- /* create the split list */
- GList *splitList;
+ /* populate the ledger */
+ {
+ /* create the split list */
+ GList *splitList;
- splitList = xaccSchedXactionGetSplits( sxed->sx );
- if ( splitList != NULL ) {
- splitReg = gnc_ledger_display_get_split_register
- ( sxed->ledger );
- gnc_split_register_load(splitReg, splitList, NULL );
- } /* otherwise, use the existing stuff. */
- }
+ splitList = xaccSchedXactionGetSplits( sxed->sx );
+ if ( splitList != NULL ) {
+ splitReg = gnc_ledger_display_get_split_register
+ ( sxed->ledger );
+ gnc_split_register_load(splitReg, splitList, NULL );
+ } /* otherwise, use the existing stuff. */
+ }
- /* Update the example cal */
- gnc_sxed_update_cal(sxed);
+ /* Update the example cal */
+ gnc_sxed_update_cal(sxed);
}
static
void
set_endgroup_toggle_states( GncSxEditorDialog *sxed, EndType type )
{
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->endDateEntry), (type == END_DATE) );
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->endCountSpin), (type == END_OCCUR) );
- gtk_widget_set_sensitive( GTK_WIDGET(sxed->endRemainSpin), (type == END_OCCUR) );
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->endDateEntry), (type == END_DATE) );
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->endCountSpin), (type == END_OCCUR) );
+ gtk_widget_set_sensitive( GTK_WIDGET(sxed->endRemainSpin), (type == END_OCCUR) );
}
static
void
endgroup_rb_toggled( GtkButton *b, gpointer d )
{
- /* figure out which one */
- GncSxEditorDialog *sxed;
- gint id;
+ /* figure out which one */
+ GncSxEditorDialog *sxed;
+ gint id;
- sxed = (GncSxEditorDialog*)d;
- id = GPOINTER_TO_INT(g_object_get_data( G_OBJECT(b), "whichOneAmI" ));
+ sxed = (GncSxEditorDialog*)d;
+ id = GPOINTER_TO_INT(g_object_get_data( G_OBJECT(b), "whichOneAmI" ));
- switch (id) {
- case END_NEVER_OPTION:
- set_endgroup_toggle_states( sxed, END_NEVER );
- break;
- case END_DATE_OPTION:
- set_endgroup_toggle_states( sxed, END_DATE );
- break;
- case NUM_OCCUR_OPTION:
- set_endgroup_toggle_states( sxed, END_OCCUR );
- break;
- default:
- g_critical( "Unknown id %d", id );
- break;
- }
+ switch (id) {
+ case END_NEVER_OPTION:
+ set_endgroup_toggle_states( sxed, END_NEVER );
+ break;
+ case END_DATE_OPTION:
+ set_endgroup_toggle_states( sxed, END_DATE );
+ break;
+ case NUM_OCCUR_OPTION:
+ set_endgroup_toggle_states( sxed, END_OCCUR );
+ break;
+ default:
+ g_critical( "Unknown id %d", id );
+ break;
+ }
- gnc_sxed_update_cal(sxed);
+ gnc_sxed_update_cal(sxed);
}
/********************************************************************\
@@ -1503,37 +1503,37 @@
static void
gnc_sxed_reg_check_close(GncSxEditorDialog *sxed)
{
- gboolean pending_changes;
- SplitRegister *reg;
- const char *message =
- _("The current template transaction "
- "has been changed. "
- "Would you like to record the changes?");
+ gboolean pending_changes;
+ SplitRegister *reg;
+ const char *message =
+ _("The current template transaction "
+ "has been changed. "
+ "Would you like to record the changes?");
- reg = gnc_ledger_display_get_split_register (sxed->ledger);
- pending_changes = gnc_split_register_changed (reg);
- if (!pending_changes) {
- return;
- }
+ reg = gnc_ledger_display_get_split_register (sxed->ledger);
+ pending_changes = gnc_split_register_changed (reg);
+ if (!pending_changes) {
+ return;
+ }
- if (gnc_verify_dialog(sxed->dialog, TRUE, message)) {
- Transaction *trans;
- trans = gnc_split_register_get_current_trans( reg );
- if ( !gnc_split_register_save( reg, TRUE ) )
- return;
+ if (gnc_verify_dialog(sxed->dialog, TRUE, message)) {
+ Transaction *trans;
+ trans = gnc_split_register_get_current_trans( reg );
+ if ( !gnc_split_register_save( reg, TRUE ) )
+ return;
- gnc_split_register_redraw( reg );
- } else {
- gnc_split_register_cancel_cursor_trans_changes (reg);
- }
+ gnc_split_register_redraw( reg );
+ } else {
+ gnc_split_register_cancel_cursor_trans_changes (reg);
+ }
}
static gboolean
editor_component_sx_equality( gpointer find_data,
gpointer user_data )
{
- return ( (SchedXaction*)find_data
- == ((GncSxEditorDialog*)user_data)->sx );
+ return ( (SchedXaction*)find_data
+ == ((GncSxEditorDialog*)user_data)->sx );
}
typedef enum { NO_END, DATE_END, COUNT_END } END_TYPE;
@@ -1620,17 +1620,17 @@
on_sx_check_toggled (GtkWidget *togglebutton,
gpointer user_data)
{
- GtkWidget *widget;
- gboolean create; // , notify;
+ GtkWidget *widget;
+ gboolean create; // , notify;
- /* The gnc_glade_lookup_widget() function works because all of these
- * widgets come from the same glade file. */
- widget = gnc_glade_lookup_widget(togglebutton,
- "gconf/dialogs/scheduled_trans/transaction_editor/create_auto");
- create = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
- widget = gnc_glade_lookup_widget(togglebutton,
- "gconf/dialogs/scheduled_trans/transaction_editor/notify");
- gtk_widget_set_sensitive(widget, create);
+ /* The gnc_glade_lookup_widget() function works because all of these
+ * widgets come from the same glade file. */
+ widget = gnc_glade_lookup_widget(togglebutton,
+ "gconf/dialogs/scheduled_trans/transaction_editor/create_auto");
+ create = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ widget = gnc_glade_lookup_widget(togglebutton,
+ "gconf/dialogs/scheduled_trans/transaction_editor/notify");
+ gtk_widget_set_sensitive(widget, create);
}
@@ -1639,99 +1639,99 @@
typedef struct _acct_deletion_handler_data
{
- GList *affected_sxes;
- GtkWidget *dialog;
+ GList *affected_sxes;
+ GtkWidget *dialog;
} acct_deletion_handler_data;
static void
_open_editors(GtkDialog *dialog, gint response_code, gpointer data)
{
- acct_deletion_handler_data *adhd = (acct_deletion_handler_data *)data;
- gtk_widget_hide_all(adhd->dialog);
- {
- GList *sx_iter;
- for (sx_iter = adhd->affected_sxes; sx_iter; sx_iter = sx_iter->next)
+ acct_deletion_handler_data *adhd = (acct_deletion_handler_data *)data;
+ gtk_widget_hide_all(adhd->dialog);
{
- gnc_ui_scheduled_xaction_editor_dialog_create((SchedXaction*)sx_iter->data,
- FALSE);
+ GList *sx_iter;
+ for (sx_iter = adhd->affected_sxes; sx_iter; sx_iter = sx_iter->next)
+ {
+ gnc_ui_scheduled_xaction_editor_dialog_create((SchedXaction*)sx_iter->data,
+ FALSE);
+ }
}
- }
- g_list_free(adhd->affected_sxes);
- gtk_widget_destroy(GTK_WIDGET(adhd->dialog));
- g_free(adhd);
+ g_list_free(adhd->affected_sxes);
+ gtk_widget_destroy(GTK_WIDGET(adhd->dialog));
+ g_free(adhd);
}
static void
_sx_engine_event_handler(QofEntity *ent, QofEventId event_type, gpointer user_data, gpointer evt_data)
{
- Account *acct;
- QofBook *book;
- GList *affected_sxes;
+ Account *acct;
+ QofBook *book;
+ GList *affected_sxes;
- if (!(event_type & QOF_EVENT_DESTROY))
- return;
- if (!GNC_IS_ACCOUNT(ent))
- return;
- acct = GNC_ACCOUNT(ent);
- book = qof_instance_get_book(QOF_INSTANCE(acct));
- affected_sxes = gnc_sx_get_sxes_referencing_account(book, acct);
+ if (!(event_type & QOF_EVENT_DESTROY))
+ return;
+ if (!GNC_IS_ACCOUNT(ent))
+ return;
+ acct = GNC_ACCOUNT(ent);
+ book = qof_instance_get_book(QOF_INSTANCE(acct));
+ affected_sxes = gnc_sx_get_sxes_referencing_account(book, acct);
- if (g_list_length(affected_sxes) == 0)
- return;
+ if (g_list_length(affected_sxes) == 0)
+ return;
- {
- GList *sx_iter;
- acct_deletion_handler_data *data;
- GladeXML *xml;
- GtkWidget *dialog;
- GtkListStore *name_list;
- GtkTreeView *list;
- GtkTreeViewColumn *name_column;
- GtkCellRenderer *renderer;
+ {
+ GList *sx_iter;
+ acct_deletion_handler_data *data;
+ GladeXML *xml;
+ GtkWidget *dialog;
+ GtkListStore *name_list;
+ GtkTreeView *list;
+ GtkTreeViewColumn *name_column;
+ GtkCellRenderer *renderer;
- xml = gnc_glade_xml_new("sched-xact.glade", "Account Deletion");
- dialog = glade_xml_get_widget(xml, "Account Deletion");
- list = GTK_TREE_VIEW(glade_xml_get_widget(xml, "sx_list"));
+ xml = gnc_glade_xml_new("sched-xact.glade", "Account Deletion");
+ dialog = glade_xml_get_widget(xml, "Account Deletion");
+ list = GTK_TREE_VIEW(glade_xml_get_widget(xml, "sx_list"));
- data = (acct_deletion_handler_data*)g_new0(acct_deletion_handler_data, 1);
- data->dialog = dialog;
- data->affected_sxes = affected_sxes;
- name_list = gtk_list_store_new(1, G_TYPE_STRING);
- for (sx_iter = affected_sxes; sx_iter != NULL; sx_iter = sx_iter->next)
- {
- SchedXaction *sx;
- GtkTreeIter iter;
- gchar *sx_name;
+ data = (acct_deletion_handler_data*)g_new0(acct_deletion_handler_data, 1);
+ data->dialog = dialog;
+ data->affected_sxes = affected_sxes;
+ name_list = gtk_list_store_new(1, G_TYPE_STRING);
+ for (sx_iter = affected_sxes; sx_iter != NULL; sx_iter = sx_iter->next)
+ {
+ SchedXaction *sx;
+ GtkTreeIter iter;
+ gchar *sx_name;
- sx = (SchedXaction*)sx_iter->data;
- sx_name = xaccSchedXactionGetName(sx);
- gtk_list_store_append(name_list, &iter);
- gtk_list_store_set(name_list, &iter, 0, sx_name, -1);
- }
- gtk_tree_view_set_model(list, GTK_TREE_MODEL(name_list));
- g_object_unref(G_OBJECT(name_list));
+ sx = (SchedXaction*)sx_iter->data;
+ sx_name = xaccSchedXactionGetName(sx);
+ gtk_list_store_append(name_list, &iter);
+ gtk_list_store_set(name_list, &iter, 0, sx_name, -1);
+ }
+ gtk_tree_view_set_model(list, GTK_TREE_MODEL(name_list));
+ g_object_unref(G_OBJECT(name_list));
- renderer = gtk_cell_renderer_text_new();
- name_column = gtk_tree_view_column_new_with_attributes(_("Name"),
- renderer,
- "text", 0, NULL);
- gtk_tree_view_append_column(list, name_column);
+ renderer = gtk_cell_renderer_text_new();
+ name_column = gtk_tree_view_column_new_with_attributes(_("Name"),
+ renderer,
+ "text", 0, NULL);
+ gtk_tree_view_append_column(list, name_column);
- g_signal_connect(G_OBJECT(dialog), "response",
- G_CALLBACK(_open_editors), data);
+ g_signal_connect(G_OBJECT(dialog), "response",
+ G_CALLBACK(_open_editors), data);
- gtk_widget_show_all(GTK_WIDGET(dialog));
- }
+ gtk_widget_show_all(GTK_WIDGET(dialog));
+ }
}
void
gnc_ui_sx_initialize (void)
{
- _sx_engine_event_handler_id = qof_event_register_handler(_sx_engine_event_handler, NULL);
+ _sx_engine_event_handler_id = qof_event_register_handler(_sx_engine_event_handler, NULL);
- gnc_hook_add_dangler(HOOK_BOOK_OPENED,
- (GFunc)gnc_sx_sxsincelast_book_opened, NULL);
- gnc_preferences_add_page (SX_GLADE_FILE,
- "sx_prefs",
- _("Scheduled Transactions"));
+ gnc_hook_add_dangler(HOOK_BOOK_OPENED,
+ (GFunc)gnc_sx_sxsincelast_book_opened, NULL);
+ gnc_preferences_add_page (SX_GLADE_FILE,
+ "sx_prefs",
+ _("Scheduled Transactions"));
}
Modified: gnucash/trunk/src/gnome/dialog-sx-since-last-run.c
===================================================================
--- gnucash/trunk/src/gnome/dialog-sx-since-last-run.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome/dialog-sx-since-last-run.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -47,10 +47,10 @@
struct _GncSxSinceLastRunDialog
{
- GtkWidget *dialog;
- GncSxSlrTreeModelAdapter *editing_model;
- GtkTreeView *instance_view;
- GtkToggleButton *review_created_txns_toggle;
+ GtkWidget *dialog;
+ GncSxSlrTreeModelAdapter *editing_model;
+ GtkTreeView *instance_view;
+ GtkToggleButton *review_created_txns_toggle;
};
/* ------------------------------------------------------------ */
@@ -59,19 +59,19 @@
struct _GncSxSlrTreeModelAdapter
{
- GObject parent;
+ GObject parent;
- /* protected: */
- gulong updated_cb_id;
- gboolean disposed;
+ /* protected: */
+ gulong updated_cb_id;
+ gboolean disposed;
- GncSxInstanceModel *instances;
- GtkTreeStore *real;
+ GncSxInstanceModel *instances;
+ GtkTreeStore *real;
};
typedef struct _GncSxSlrTreeModelAdapterClass
{
- GObjectClass parent;
+ GObjectClass parent;
} GncSxSlrTreeModelAdapterClass;
GType gnc_sx_slr_tree_model_adapter_get_type(void);
@@ -115,8 +115,8 @@
static void
_var_numeric_to_string(gnc_numeric *value, GString **str)
{
- *str = g_string_sized_new(5);
- g_string_printf(*str, "%0.2f", gnc_numeric_to_double(*value));
+ *str = g_string_sized_new(5);
+ g_string_printf(*str, "%0.2f", gnc_numeric_to_double(*value));
}
/* ------------------------------------------------------------ */
@@ -124,185 +124,185 @@
GType
gnc_sx_slr_tree_model_adapter_get_type(void)
{
- static GType gsstma_type = 0;
- if (gsstma_type == 0) {
- static const GTypeInfo info = {
- sizeof (GncSxSlrTreeModelAdapterClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)gnc_sx_slr_tree_model_adapter_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GncSxSlrTreeModelAdapter),
- 0, /* n_preallocs */
- (GInstanceInitFunc)gnc_sx_slr_tree_model_adapter_init /* instance_init */
- };
- static const GInterfaceInfo itreeModel_info = {
- (GInterfaceInitFunc) gnc_sx_slr_tree_model_adapter_interface_init, /* interface_init */
- NULL, /* interface_finalize */
- NULL /* interface_data */
- };
+ static GType gsstma_type = 0;
+ if (gsstma_type == 0) {
+ static const GTypeInfo info = {
+ sizeof (GncSxSlrTreeModelAdapterClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)gnc_sx_slr_tree_model_adapter_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (GncSxSlrTreeModelAdapter),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc)gnc_sx_slr_tree_model_adapter_init /* instance_init */
+ };
+ static const GInterfaceInfo itreeModel_info = {
+ (GInterfaceInitFunc) gnc_sx_slr_tree_model_adapter_interface_init, /* interface_init */
+ NULL, /* interface_finalize */
+ NULL /* interface_data */
+ };
- gsstma_type = g_type_register_static (G_TYPE_OBJECT,
- "GncSxSlrTreeModelAdapterType",
- &info, 0);
- g_type_add_interface_static(gsstma_type,
- GTK_TYPE_TREE_MODEL,
- &itreeModel_info);
- }
- return gsstma_type;
+ gsstma_type = g_type_register_static (G_TYPE_OBJECT,
+ "GncSxSlrTreeModelAdapterType",
+ &info, 0);
+ g_type_add_interface_static(gsstma_type,
+ GTK_TYPE_TREE_MODEL,
+ &itreeModel_info);
+ }
+ return gsstma_type;
}
static void
gnc_sx_slr_tree_model_adapter_class_init(GncSxSlrTreeModelAdapterClass *klass)
{
- GObjectClass *obj_class;
+ GObjectClass *obj_class;
- parent_class = g_type_class_peek_parent(klass);
+ parent_class = g_type_class_peek_parent(klass);
- obj_class = G_OBJECT_CLASS(klass);
+ obj_class = G_OBJECT_CLASS(klass);
- obj_class->dispose = gnc_sx_slr_tree_model_adapter_dispose;
- obj_class->finalize = gnc_sx_slr_tree_model_adapter_finalize;
+ obj_class->dispose = gnc_sx_slr_tree_model_adapter_dispose;
+ obj_class->finalize = gnc_sx_slr_tree_model_adapter_finalize;
}
static GtkTreeModelFlags
gsslrtma_get_flags(GtkTreeModel *tree_model)
{
- return gtk_tree_model_get_flags(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real));
+ return gtk_tree_model_get_flags(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real));
}
static gint
gsslrtma_get_n_columns(GtkTreeModel *tree_model)
{
- return gtk_tree_model_get_n_columns(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real));
+ return gtk_tree_model_get_n_columns(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real));
}
static GType
gsslrtma_get_column_type(GtkTreeModel *tree_model, gint index)
{
- return gtk_tree_model_get_column_type(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), index);
+ return gtk_tree_model_get_column_type(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), index);
}
static gboolean
gsslrtma_get_iter(GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- GtkTreePath *path)
+ GtkTreeIter *iter,
+ GtkTreePath *path)
{
- return gtk_tree_model_get_iter(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, path);
+ return gtk_tree_model_get_iter(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, path);
}
static GtkTreePath*
gsslrtma_get_path(GtkTreeModel *tree_model,
- GtkTreeIter *iter)
+ GtkTreeIter *iter)
{
- return gtk_tree_model_get_path(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_get_path(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static void
gsslrtma_get_value(GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gint column,
- GValue *value)
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
{
- gtk_tree_model_get_value(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, column, value);
+ gtk_tree_model_get_value(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, column, value);
}
static gboolean
gsslrtma_iter_next(GtkTreeModel *tree_model,
- GtkTreeIter *iter)
+ GtkTreeIter *iter)
{
- return gtk_tree_model_iter_next(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_iter_next(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static gboolean
gsslrtma_iter_children(GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- GtkTreeIter *parent)
+ GtkTreeIter *iter,
+ GtkTreeIter *parent)
{
- return gtk_tree_model_iter_children(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent);
+ return gtk_tree_model_iter_children(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent);
}
static gboolean
gsslrtma_iter_has_child(GtkTreeModel *tree_model,
- GtkTreeIter *iter)
+ GtkTreeIter *iter)
{
- return gtk_tree_model_iter_has_child(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_iter_has_child(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static gint
gsslrtma_iter_n_children(GtkTreeModel *tree_model,
- GtkTreeIter *iter)
+ GtkTreeIter *iter)
{
- return gtk_tree_model_iter_n_children(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_iter_n_children(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static gboolean
gsslrtma_iter_nth_child(GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- GtkTreeIter *parent,
- gint n)
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint n)
{
- return gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent, n);
+ return gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent, n);
}
static gboolean
gsslrtma_iter_parent(GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- GtkTreeIter *child)
+ GtkTreeIter *iter,
+ GtkTreeIter *child)
{
- return gtk_tree_model_iter_parent(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, child);
+ return gtk_tree_model_iter_parent(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter, child);
}
static void
gsslrtma_ref_node(GtkTreeModel *tree_model,
- GtkTreeIter *iter)
+ GtkTreeIter *iter)
{
- gtk_tree_model_ref_node(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ gtk_tree_model_ref_node(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static void
gsslrtma_unref_node(GtkTreeModel *tree_model,
- GtkTreeIter *iter)
+ GtkTreeIter *iter)
{
- gtk_tree_model_unref_node(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ gtk_tree_model_unref_node(GTK_TREE_MODEL(GNC_SX_SLR_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static void
gnc_sx_slr_tree_model_adapter_interface_init(gpointer g_iface, gpointer iface_data)
{
- GtkTreeModelIface *tree_model = (GtkTreeModelIface*)g_iface;
- tree_model->get_flags = gsslrtma_get_flags;
- tree_model->get_n_columns = gsslrtma_get_n_columns;
- tree_model->get_column_type = gsslrtma_get_column_type;
- tree_model->get_iter = gsslrtma_get_iter;
- tree_model->get_path = gsslrtma_get_path;
- tree_model->get_value = gsslrtma_get_value;
- tree_model->iter_next = gsslrtma_iter_next;
- tree_model->iter_children = gsslrtma_iter_children;
- tree_model->iter_has_child = gsslrtma_iter_has_child;
- tree_model->iter_n_children = gsslrtma_iter_n_children;
- tree_model->iter_nth_child = gsslrtma_iter_nth_child;
- tree_model->iter_parent = gsslrtma_iter_parent;
- tree_model->ref_node = gsslrtma_ref_node;
- tree_model->unref_node = gsslrtma_unref_node;
+ GtkTreeModelIface *tree_model = (GtkTreeModelIface*)g_iface;
+ tree_model->get_flags = gsslrtma_get_flags;
+ tree_model->get_n_columns = gsslrtma_get_n_columns;
+ tree_model->get_column_type = gsslrtma_get_column_type;
+ tree_model->get_iter = gsslrtma_get_iter;
+ tree_model->get_path = gsslrtma_get_path;
+ tree_model->get_value = gsslrtma_get_value;
+ tree_model->iter_next = gsslrtma_iter_next;
+ tree_model->iter_children = gsslrtma_iter_children;
+ tree_model->iter_has_child = gsslrtma_iter_has_child;
+ tree_model->iter_n_children = gsslrtma_iter_n_children;
+ tree_model->iter_nth_child = gsslrtma_iter_nth_child;
+ tree_model->iter_parent = gsslrtma_iter_parent;
+ tree_model->ref_node = gsslrtma_ref_node;
+ tree_model->unref_node = gsslrtma_unref_node;
}
static void
gsslrtma_proxy_row_changed(GtkTreeModel *treemodel,
- GtkTreePath *arg1,
- GtkTreeIter *arg2,
- gpointer user_data)
+ GtkTreePath *arg1,
+ GtkTreeIter *arg2,
+ gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-changed", arg1, arg2);
+ g_signal_emit_by_name(user_data, "row-changed", arg1, arg2);
}
static void
gsslrtma_proxy_row_deleted(GtkTreeModel *treemodel,
- GtkTreePath *arg1,
- gpointer user_data)
+ GtkTreePath *arg1,
+ gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-deleted", arg1);
+ g_signal_emit_by_name(user_data, "row-deleted", arg1);
}
static void
@@ -311,7 +311,7 @@
GtkTreeIter *arg2,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-has-child-toggled", arg1, arg2);
+ g_signal_emit_by_name(user_data, "row-has-child-toggled", arg1, arg2);
}
static void
@@ -320,7 +320,7 @@
GtkTreeIter *arg2,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-inserted", arg1, arg2);
+ g_signal_emit_by_name(user_data, "row-inserted", arg1, arg2);
}
static void
@@ -330,45 +330,45 @@
gpointer arg3,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "rows-reordered", arg1, arg2, arg3);
+ g_signal_emit_by_name(user_data, "rows-reordered", arg1, arg2, arg3);
}
// model columns
enum {
- SLR_MODEL_COL_NAME = 0,
- SLR_MODEL_COL_INSTANCE_STATE,
- SLR_MODEL_COL_VARAIBLE_VALUE,
- SLR_MODEL_COL_INSTANCE_VISIBILITY,
- SLR_MODEL_COL_VARIABLE_VISIBILITY,
- SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY,
+ SLR_MODEL_COL_NAME = 0,
+ SLR_MODEL_COL_INSTANCE_STATE,
+ SLR_MODEL_COL_VARAIBLE_VALUE,
+ SLR_MODEL_COL_INSTANCE_VISIBILITY,
+ SLR_MODEL_COL_VARIABLE_VISIBILITY,
+ SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY,
};
static void
gnc_sx_slr_tree_model_adapter_init(GTypeInstance *instance, gpointer klass)
{
- GncSxSlrTreeModelAdapter *adapter = GNC_SX_SLR_TREE_MODEL_ADAPTER(instance);
- // columns: thing-name, instance-state, variable-value, instance-visible, variable-visible, instance_state_sensitivity
- // at depth=0: <sx>, N/A, N/A, N/A N/A, N/A
- // at depth=1: <instance>, <state>, N/A, <valid>, N/A, <valid>
- // at depth=2: <variable>, N/A, <value>, N/A, <valid>, N/A
- adapter->real = gtk_tree_store_new(6, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
+ GncSxSlrTreeModelAdapter *adapter = GNC_SX_SLR_TREE_MODEL_ADAPTER(instance);
+ // columns: thing-name, instance-state, variable-value, instance-visible, variable-visible, instance_state_sensitivity
+ // at depth=0: <sx>, N/A, N/A, N/A N/A, N/A
+ // at depth=1: <instance>, <state>, N/A, <valid>, N/A, <valid>
+ // at depth=2: <variable>, N/A, <value>, N/A, <valid>, N/A
+ adapter->real = gtk_tree_store_new(6, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
- g_signal_connect(adapter->real, "row-changed", G_CALLBACK(gsslrtma_proxy_row_changed), adapter);
- g_signal_connect(adapter->real, "row-deleted", G_CALLBACK(gsslrtma_proxy_row_deleted), adapter);
- g_signal_connect(adapter->real, "row-has-child-toggled", G_CALLBACK(gsslrtma_proxy_row_has_child_toggled), adapter);
- g_signal_connect(adapter->real, "row-inserted", G_CALLBACK(gsslrtma_proxy_row_inserted), adapter);
- g_signal_connect(adapter->real, "rows-reordered", G_CALLBACK(gsslrtma_proxy_rows_reordered), adapter);
+ g_signal_connect(adapter->real, "row-changed", G_CALLBACK(gsslrtma_proxy_row_changed), adapter);
+ g_signal_connect(adapter->real, "row-deleted", G_CALLBACK(gsslrtma_proxy_row_deleted), adapter);
+ g_signal_connect(adapter->real, "row-has-child-toggled", G_CALLBACK(gsslrtma_proxy_row_has_child_toggled), adapter);
+ g_signal_connect(adapter->real, "row-inserted", G_CALLBACK(gsslrtma_proxy_row_inserted), adapter);
+ g_signal_connect(adapter->real, "rows-reordered", G_CALLBACK(gsslrtma_proxy_rows_reordered), adapter);
}
/* @@fixme: i18n. **/
/* @@fixme: non-staticize. **/
static char* gnc_sx_instance_state_names[] = {
- ("Ignored"),
- ("Postponed"),
- ("To-Create"),
- ("Reminder"),
- ("Created"),
- NULL
+ ("Ignored"),
+ ("Postponed"),
+ ("To-Create"),
+ ("Reminder"),
+ ("Created"),
+ NULL
};
static GtkTreeModel* _singleton_slr_state_model = NULL;
@@ -376,295 +376,295 @@
GtkTreeModel*
gnc_sx_get_slr_state_model(void)
{
- if (_singleton_slr_state_model == NULL)
- {
- int i;
- GtkTreeIter iter;
+ if (_singleton_slr_state_model == NULL)
+ {
+ int i;
+ GtkTreeIter iter;
- _singleton_slr_state_model = GTK_TREE_MODEL(gtk_list_store_new(1, G_TYPE_STRING));
- for (i = 0; i != SX_INSTANCE_STATE_CREATED; i++)
- {
- gtk_list_store_insert_with_values(GTK_LIST_STORE(_singleton_slr_state_model),
- &iter,
- SX_INSTANCE_STATE_MAX_STATE + 1,
- 0, gnc_sx_instance_state_names[i], -1);
- }
- }
- return _singleton_slr_state_model;
+ _singleton_slr_state_model = GTK_TREE_MODEL(gtk_list_store_new(1, G_TYPE_STRING));
+ for (i = 0; i != SX_INSTANCE_STATE_CREATED; i++)
+ {
+ gtk_list_store_insert_with_values(GTK_LIST_STORE(_singleton_slr_state_model),
+ &iter,
+ SX_INSTANCE_STATE_MAX_STATE + 1,
+ 0, gnc_sx_instance_state_names[i], -1);
+ }
+ }
+ return _singleton_slr_state_model;
}
static void
_consume_excess_rows(GtkTreeStore *store, int last_index, GtkTreeIter *parent_iter, GtkTreeIter *maybe_invalid_iter)
{
- if (last_index == -1)
- {
- // try to get whatever was there beforehand, if it exists
- if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(store), maybe_invalid_iter, parent_iter))
- return;
- }
- else
- {
- // increment the iter, or bail out.
- if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(store), maybe_invalid_iter))
- return;
- }
+ if (last_index == -1)
+ {
+ // try to get whatever was there beforehand, if it exists
+ if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(store), maybe_invalid_iter, parent_iter))
+ return;
+ }
+ else
+ {
+ // increment the iter, or bail out.
+ if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(store), maybe_invalid_iter))
+ return;
+ }
- // consume until we're done.
- while (gtk_tree_store_remove(store, maybe_invalid_iter));
+ // consume until we're done.
+ while (gtk_tree_store_remove(store, maybe_invalid_iter));
}
static void
gsslrtma_populate_tree_store(GncSxSlrTreeModelAdapter *model)
{
- GtkTreeIter sx_tree_iter;
- GList *sx_iter;
- int instances_index = -1;
+ GtkTreeIter sx_tree_iter;
+ GList *sx_iter;
+ int instances_index = -1;
- for (sx_iter = model->instances->sx_instance_list; sx_iter != NULL; sx_iter = sx_iter->next)
- {
- GncSxInstances *instances = (GncSxInstances*)sx_iter->data;
- FreqSpec *fs;
- GString *frequency_str;
- char last_occur_date_buf[MAX_DATE_LENGTH+1];
- char next_occur_date_buf[MAX_DATE_LENGTH+1];
+ for (sx_iter = model->instances->sx_instance_list; sx_iter != NULL; sx_iter = sx_iter->next)
+ {
+ GncSxInstances *instances = (GncSxInstances*)sx_iter->data;
+ FreqSpec *fs;
+ GString *frequency_str;
+ char last_occur_date_buf[MAX_DATE_LENGTH+1];
+ char next_occur_date_buf[MAX_DATE_LENGTH+1];
- frequency_str = g_string_sized_new(32);
- fs = xaccSchedXactionGetFreqSpec(instances->sx);
- xaccFreqSpecGetFreqStr(fs, frequency_str);
+ frequency_str = g_string_sized_new(32);
+ fs = xaccSchedXactionGetFreqSpec(instances->sx);
+ xaccFreqSpecGetFreqStr(fs, frequency_str);
- {
- GDate *last_occur = xaccSchedXactionGetLastOccurDate(instances->sx);
- if (last_occur == NULL || !g_date_valid(last_occur))
- {
- g_stpcpy(last_occur_date_buf, "never");
- }
- else
- {
- qof_print_gdate(last_occur_date_buf,
- MAX_DATE_LENGTH,
- last_occur);
- }
- }
+ {
+ GDate *last_occur = xaccSchedXactionGetLastOccurDate(instances->sx);
+ if (last_occur == NULL || !g_date_valid(last_occur))
+ {
+ g_stpcpy(last_occur_date_buf, "never");
+ }
+ else
+ {
+ qof_print_gdate(last_occur_date_buf,
+ MAX_DATE_LENGTH,
+ last_occur);
+ }
+ }
- qof_print_gdate(next_occur_date_buf, MAX_DATE_LENGTH, &instances->next_instance_date);
+ qof_print_gdate(next_occur_date_buf, MAX_DATE_LENGTH, &instances->next_instance_date);
- if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real), &sx_tree_iter, NULL, ++instances_index))
- {
- gtk_tree_store_append(model->real, &sx_tree_iter, NULL);
- }
- gtk_tree_store_set(model->real, &sx_tree_iter,
- SLR_MODEL_COL_NAME, xaccSchedXactionGetName(instances->sx),
- SLR_MODEL_COL_INSTANCE_STATE, NULL,
- SLR_MODEL_COL_VARAIBLE_VALUE, NULL,
- SLR_MODEL_COL_INSTANCE_VISIBILITY, FALSE,
- SLR_MODEL_COL_VARIABLE_VISIBILITY, FALSE,
- SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, FALSE,
- -1);
- g_string_free(frequency_str, TRUE);
+ if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real), &sx_tree_iter, NULL, ++instances_index))
+ {
+ gtk_tree_store_append(model->real, &sx_tree_iter, NULL);
+ }
+ gtk_tree_store_set(model->real, &sx_tree_iter,
+ SLR_MODEL_COL_NAME, xaccSchedXactionGetName(instances->sx),
+ SLR_MODEL_COL_INSTANCE_STATE, NULL,
+ SLR_MODEL_COL_VARAIBLE_VALUE, NULL,
+ SLR_MODEL_COL_INSTANCE_VISIBILITY, FALSE,
+ SLR_MODEL_COL_VARIABLE_VISIBILITY, FALSE,
+ SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, FALSE,
+ -1);
+ g_string_free(frequency_str, TRUE);
- // Insert instance information
- {
- GList *inst_iter;
- GtkTreeIter inst_tree_iter;
- char instance_date_buf[MAX_DATE_LENGTH+1];
- int instance_index = -1;
+ // Insert instance information
+ {
+ GList *inst_iter;
+ GtkTreeIter inst_tree_iter;
+ char instance_date_buf[MAX_DATE_LENGTH+1];
+ int instance_index = -1;
- for (inst_iter = instances->list; inst_iter != NULL; inst_iter = inst_iter->next)
- {
- GncSxInstance *inst = (GncSxInstance*)inst_iter->data;
- qof_print_gdate(instance_date_buf, MAX_DATE_LENGTH, &inst->date);
+ for (inst_iter = instances->list; inst_iter != NULL; inst_iter = inst_iter->next)
+ {
+ GncSxInstance *inst = (GncSxInstance*)inst_iter->data;
+ qof_print_gdate(instance_date_buf, MAX_DATE_LENGTH, &inst->date);
- if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real), &inst_tree_iter, &sx_tree_iter, ++instance_index))
- {
- gtk_tree_store_append(model->real, &inst_tree_iter, &sx_tree_iter);
- }
- gtk_tree_store_set(model->real, &inst_tree_iter,
- SLR_MODEL_COL_NAME, instance_date_buf,
- SLR_MODEL_COL_INSTANCE_STATE, gnc_sx_instance_state_names[inst->state],
- SLR_MODEL_COL_VARAIBLE_VALUE, NULL,
- SLR_MODEL_COL_INSTANCE_VISIBILITY, TRUE,
- SLR_MODEL_COL_VARIABLE_VISIBILITY, FALSE,
- SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, inst->state != SX_INSTANCE_STATE_CREATED,
- -1);
+ if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real), &inst_tree_iter, &sx_tree_iter, ++instance_index))
+ {
+ gtk_tree_store_append(model->real, &inst_tree_iter, &sx_tree_iter);
+ }
+ gtk_tree_store_set(model->real, &inst_tree_iter,
+ SLR_MODEL_COL_NAME, instance_date_buf,
+ SLR_MODEL_COL_INSTANCE_STATE, gnc_sx_instance_state_names[inst->state],
+ SLR_MODEL_COL_VARAIBLE_VALUE, NULL,
+ SLR_MODEL_COL_INSTANCE_VISIBILITY, TRUE,
+ SLR_MODEL_COL_VARIABLE_VISIBILITY, FALSE,
+ SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, inst->state != SX_INSTANCE_STATE_CREATED,
+ -1);
- // Insert variable information
+ // Insert variable information
+ {
+ GList *vars = NULL, *var_iter;
+ GtkTreeIter var_tree_iter;
+ gint visible_variable_index = -1;
+
+ vars = gnc_sx_instance_get_variables(inst);
+ for (var_iter = vars; var_iter != NULL; var_iter = var_iter->next)
{
- GList *vars = NULL, *var_iter;
- GtkTreeIter var_tree_iter;
- gint visible_variable_index = -1;
+ GncSxVariable *var = (GncSxVariable*)var_iter->data;
+ GString *tmp_str;
- vars = gnc_sx_instance_get_variables(inst);
- for (var_iter = vars; var_iter != NULL; var_iter = var_iter->next)
- {
- GncSxVariable *var = (GncSxVariable*)var_iter->data;
- GString *tmp_str;
+ if (!var->editable)
+ continue;
- if (!var->editable)
- continue;
+ if (gnc_numeric_check(var->value) == GNC_ERROR_OK)
+ {
+ _var_numeric_to_string(&var->value, &tmp_str);
+ }
+ else
+ {
+ tmp_str = g_string_new("(need value)");
+ }
- if (gnc_numeric_check(var->value) == GNC_ERROR_OK)
- {
- _var_numeric_to_string(&var->value, &tmp_str);
- }
- else
- {
- tmp_str = g_string_new("(need value)");
- }
-
- if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real),
- &var_tree_iter, &inst_tree_iter,
- ++visible_variable_index))
- {
- gtk_tree_store_append(model->real, &var_tree_iter, &inst_tree_iter);
- }
- gtk_tree_store_set(model->real, &var_tree_iter,
- SLR_MODEL_COL_NAME, var->name,
- SLR_MODEL_COL_INSTANCE_STATE, NULL,
- SLR_MODEL_COL_VARAIBLE_VALUE, tmp_str->str,
- SLR_MODEL_COL_INSTANCE_VISIBILITY, FALSE,
- SLR_MODEL_COL_VARIABLE_VISIBILITY, TRUE,
- SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, FALSE
- -1);
- g_string_free(tmp_str, TRUE);
- }
- g_list_free(vars);
-
- _consume_excess_rows(model->real, visible_variable_index, &inst_tree_iter, &var_tree_iter);
+ if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real),
+ &var_tree_iter, &inst_tree_iter,
+ ++visible_variable_index))
+ {
+ gtk_tree_store_append(model->real, &var_tree_iter, &inst_tree_iter);
+ }
+ gtk_tree_store_set(model->real, &var_tree_iter,
+ SLR_MODEL_COL_NAME, var->name,
+ SLR_MODEL_COL_INSTANCE_STATE, NULL,
+ SLR_MODEL_COL_VARAIBLE_VALUE, tmp_str->str,
+ SLR_MODEL_COL_INSTANCE_VISIBILITY, FALSE,
+ SLR_MODEL_COL_VARIABLE_VISIBILITY, TRUE,
+ SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, FALSE
+ -1);
+ g_string_free(tmp_str, TRUE);
}
- }
+ g_list_free(vars);
+
+ _consume_excess_rows(model->real, visible_variable_index, &inst_tree_iter, &var_tree_iter);
+ }
+ }
- // if there are more instance iters, remove
- _consume_excess_rows(model->real, instance_index, &sx_tree_iter, &inst_tree_iter);
- }
- }
- _consume_excess_rows(model->real, instances_index, NULL, &sx_tree_iter);
+ // if there are more instance iters, remove
+ _consume_excess_rows(model->real, instance_index, &sx_tree_iter, &inst_tree_iter);
+ }
+ }
+ _consume_excess_rows(model->real, instances_index, NULL, &sx_tree_iter);
}
GncSxInstanceModel*
gnc_sx_slr_tree_model_adapter_get_instance_model(GncSxSlrTreeModelAdapter *slr_model)
{
- return slr_model->instances;
+ return slr_model->instances;
}
GncSxInstances*
gnc_sx_slr_tree_model_adapter_get_sx_instances(GncSxSlrTreeModelAdapter *model, GtkTreeIter *iter)
{
- return _gnc_sx_slr_tree_model_adapter_get_sx_instances(model, iter, TRUE);
+ return _gnc_sx_slr_tree_model_adapter_get_sx_instances(model, iter, TRUE);
}
static GncSxInstances*
_gnc_sx_slr_tree_model_adapter_get_sx_instances(GncSxSlrTreeModelAdapter *model, GtkTreeIter *iter, gboolean check_depth)
{
- GtkTreePath *path;
- gint *indices, index;
- path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), iter);
- if (check_depth && gtk_tree_path_get_depth(path) != 1)
- {
- gtk_tree_path_free(path);
- return NULL;
- }
- indices = gtk_tree_path_get_indices(path);
- index = indices[0];
- gtk_tree_path_free(path);
+ GtkTreePath *path;
+ gint *indices, index;
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), iter);
+ if (check_depth && gtk_tree_path_get_depth(path) != 1)
+ {
+ gtk_tree_path_free(path);
+ return NULL;
+ }
+ indices = gtk_tree_path_get_indices(path);
+ index = indices[0];
+ gtk_tree_path_free(path);
- return (GncSxInstances*)g_list_nth_data(model->instances->sx_instance_list, index);
+ return (GncSxInstances*)g_list_nth_data(model->instances->sx_instance_list, index);
}
GncSxInstance*
gnc_sx_slr_model_get_instance(GncSxSlrTreeModelAdapter *model, GtkTreeIter *iter)
{
- return _gnc_sx_slr_model_get_instance(model, iter, TRUE);
+ return _gnc_sx_slr_model_get_instance(model, iter, TRUE);
}
static GncSxInstance*
_gnc_sx_slr_model_get_instance(GncSxSlrTreeModelAdapter *model, GtkTreeIter *iter, gboolean check_depth)
{
- GtkTreePath *path;
- gint *indices, instances_index, instance_index;
- GncSxInstances *instances;
- path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), iter);
- if (check_depth && gtk_tree_path_get_depth(path) != 2)
- {
- gtk_tree_path_free(path);
- return NULL;
- }
- indices = gtk_tree_path_get_indices(path);
- instances_index = indices[0];
- instance_index = indices[1];
- gtk_tree_path_free(path);
+ GtkTreePath *path;
+ gint *indices, instances_index, instance_index;
+ GncSxInstances *instances;
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), iter);
+ if (check_depth && gtk_tree_path_get_depth(path) != 2)
+ {
+ gtk_tree_path_free(path);
+ return NULL;
+ }
+ indices = gtk_tree_path_get_indices(path);
+ instances_index = indices[0];
+ instance_index = indices[1];
+ gtk_tree_path_free(path);
- instances = (GncSxInstances*)g_list_nth_data(model->instances->sx_instance_list, instances_index);
- if (instance_index < 0 || instance_index >= g_list_length(instances->list))
- {
- return NULL;
- }
+ instances = (GncSxInstances*)g_list_nth_data(model->instances->sx_instance_list, instances_index);
+ if (instance_index < 0 || instance_index >= g_list_length(instances->list))
+ {
+ return NULL;
+ }
- return (GncSxInstance*)g_list_nth_data(instances->list, instance_index);
+ return (GncSxInstance*)g_list_nth_data(instances->list, instance_index);
}
gboolean
gnc_sx_slr_model_get_instance_and_variable(GncSxSlrTreeModelAdapter *model, GtkTreeIter *iter, GncSxInstance **instance_loc, GncSxVariable **var_loc)
{
- GtkTreePath *path;
- gint *indices, variable_index;
- GncSxInstance *instance;
- GList *variables;
+ GtkTreePath *path;
+ gint *indices, variable_index;
+ GncSxInstance *instance;
+ GList *variables;
- instance = _gnc_sx_slr_model_get_instance(model, iter, FALSE);
- if (instance == NULL)
- {
- return FALSE;
- }
- variables = gnc_sx_instance_get_variables(instance);
+ instance = _gnc_sx_slr_model_get_instance(model, iter, FALSE);
+ if (instance == NULL)
+ {
+ return FALSE;
+ }
+ variables = gnc_sx_instance_get_variables(instance);
- path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), iter);
- if (gtk_tree_path_get_depth(path) != 3)
- {
- gtk_tree_path_free(path);
- return FALSE;
- }
- indices = gtk_tree_path_get_indices(path);
- variable_index = indices[2];
- gtk_tree_path_free(path);
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), iter);
+ if (gtk_tree_path_get_depth(path) != 3)
+ {
+ gtk_tree_path_free(path);
+ return FALSE;
+ }
+ indices = gtk_tree_path_get_indices(path);
+ variable_index = indices[2];
+ gtk_tree_path_free(path);
- if (variable_index < 0 || variable_index >= g_list_length(variables))
- {
- g_list_free(variables);
- return FALSE;
- }
+ if (variable_index < 0 || variable_index >= g_list_length(variables))
+ {
+ g_list_free(variables);
+ return FALSE;
+ }
- if (instance_loc != NULL)
- {
- *instance_loc = instance;
- }
+ if (instance_loc != NULL)
+ {
+ *instance_loc = instance;
+ }
- if (var_loc != NULL)
- {
- // *var_loc = (GncSxVariable*)g_list_nth_data(variables, variable_index);
- GList *list_iter = variables;
- for (; list_iter != NULL; list_iter = list_iter->next)
- {
- GncSxVariable *var = (GncSxVariable*)list_iter->data;
- if (!var->editable)
- continue;
- if (variable_index-- == 0)
- {
- *var_loc = var;
- break;
- }
- }
- }
+ if (var_loc != NULL)
+ {
+ // *var_loc = (GncSxVariable*)g_list_nth_data(variables, variable_index);
+ GList *list_iter = variables;
+ for (; list_iter != NULL; list_iter = list_iter->next)
+ {
+ GncSxVariable *var = (GncSxVariable*)list_iter->data;
+ if (!var->editable)
+ continue;
+ if (variable_index-- == 0)
+ {
+ *var_loc = var;
+ break;
+ }
+ }
+ }
- g_list_free(variables);
- return TRUE;
+ g_list_free(variables);
+ return TRUE;
}
void
gnc_sx_slr_model_change_instance_state(GncSxSlrTreeModelAdapter *model, GncSxInstance *instance, GncSxInstanceState new_state)
{
- // @fixme: pop this out a level.
- gnc_sx_instance_model_change_instance_state(model->instances, instance, new_state);
+ // @fixme: pop this out a level.
+ gnc_sx_instance_model_change_instance_state(model->instances, instance, new_state);
}
/**
@@ -673,167 +673,167 @@
static gint
_variable_list_index(GList *variables, GncSxVariable *variable)
{
- gint index = 0;
- for (; variables != NULL; variables = variables->next)
- {
- GncSxVariable *var = (GncSxVariable*)variables->data;
- if (!var->editable)
- continue;
- if (variable == var)
- return index;
- index++;
- }
- return -1;
+ gint index = 0;
+ for (; variables != NULL; variables = variables->next)
+ {
+ GncSxVariable *var = (GncSxVariable*)variables->data;
+ if (!var->editable)
+ continue;
+ if (variable == var)
+ return index;
+ index++;
+ }
+ return -1;
}
static GtkTreePath*
_get_path_for_variable(GncSxSlrTreeModelAdapter *model, GncSxInstance *instance, GncSxVariable *variable)
{
- GList *variables;
- int indices[3];
- GtkTreePath *path;
+ GList *variables;
+ int indices[3];
+ GtkTreePath *path;
- indices[0] = g_list_index(model->instances->sx_instance_list, instance->parent);
- if (indices[0] == -1)
- return NULL;
- indices[1] = g_list_index(instance->parent->list, instance);
- if (indices[1] == -1)
- return NULL;
- variables = gnc_sx_instance_get_variables(instance);
- indices[2] = _variable_list_index(variables, variable);
- g_list_free(variables);
- if (indices[2] == -1)
- return NULL;
- path = gtk_tree_path_new_from_indices(indices[0], indices[1], indices[2], -1);
- return path;
+ indices[0] = g_list_index(model->instances->sx_instance_list, instance->parent);
+ if (indices[0] == -1)
+ return NULL;
+ indices[1] = g_list_index(instance->parent->list, instance);
+ if (indices[1] == -1)
+ return NULL;
+ variables = gnc_sx_instance_get_variables(instance);
+ indices[2] = _variable_list_index(variables, variable);
+ g_list_free(variables);
+ if (indices[2] == -1)
+ return NULL;
+ path = gtk_tree_path_new_from_indices(indices[0], indices[1], indices[2], -1);
+ return path;
}
void
gnc_sx_slr_model_change_variable(GncSxSlrTreeModelAdapter *model, GncSxInstance *instance, GncSxVariable *variable, gnc_numeric *new_value)
{
- gnc_sx_instance_model_set_variable(model->instances, instance, variable, new_value);
+ gnc_sx_instance_model_set_variable(model->instances, instance, variable, new_value);
}
static void
gsslrtma_added_cb(GncSxInstanceModel *instances, SchedXaction *added_sx, gpointer user_data)
{
- GncSxSlrTreeModelAdapter *model = GNC_SX_SLR_TREE_MODEL_ADAPTER(user_data);
- // this is wasteful, but fine.
- gsslrtma_populate_tree_store(model);
+ GncSxSlrTreeModelAdapter *model = GNC_SX_SLR_TREE_MODEL_ADAPTER(user_data);
+ // this is wasteful, but fine.
+ gsslrtma_populate_tree_store(model);
}
static void
gsslrtma_updated_cb(GncSxInstanceModel *instances, SchedXaction *updated_sx, gpointer user_data)
{
- GncSxSlrTreeModelAdapter *model = GNC_SX_SLR_TREE_MODEL_ADAPTER(user_data);
- gnc_sx_instance_model_update_sx_instances(instances, updated_sx);
- gsslrtma_populate_tree_store(model);
+ GncSxSlrTreeModelAdapter *model = GNC_SX_SLR_TREE_MODEL_ADAPTER(user_data);
+ gnc_sx_instance_model_update_sx_instances(instances, updated_sx);
+ gsslrtma_populate_tree_store(model);
}
static void
gsslrtma_removing_cb(GncSxInstanceModel *instances, SchedXaction *to_remove_sx, gpointer user_data)
{
- GncSxSlrTreeModelAdapter *model = GNC_SX_SLR_TREE_MODEL_ADAPTER(user_data);
- GtkTreeIter tree_iter;
- GList *iter;
- int index = 0;
- // get index, create path, remove
- for (iter = instances->sx_instance_list; iter != NULL; iter = iter->next, index++)
- {
- GncSxInstances *instances = (GncSxInstances*)iter->data;
- if (instances->sx == to_remove_sx)
- break;
- }
- if (iter == NULL)
- return; // couldn't find sx in our model, which is weird.
- if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real), &tree_iter, NULL, index))
- return; // perr(couldn't get something that should exist.
- gtk_tree_store_remove(model->real, &tree_iter);
+ GncSxSlrTreeModelAdapter *model = GNC_SX_SLR_TREE_MODEL_ADAPTER(user_data);
+ GtkTreeIter tree_iter;
+ GList *iter;
+ int index = 0;
+ // get index, create path, remove
+ for (iter = instances->sx_instance_list; iter != NULL; iter = iter->next, index++)
+ {
+ GncSxInstances *instances = (GncSxInstances*)iter->data;
+ if (instances->sx == to_remove_sx)
+ break;
+ }
+ if (iter == NULL)
+ return; // couldn't find sx in our model, which is weird.
+ if (!gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(model->real), &tree_iter, NULL, index))
+ return; // perr(couldn't get something that should exist.
+ gtk_tree_store_remove(model->real, &tree_iter);
- gnc_sx_instance_model_remove_sx_instances(instances, to_remove_sx);
+ gnc_sx_instance_model_remove_sx_instances(instances, to_remove_sx);
}
static void
gnc_sx_slr_tree_model_adapter_dispose(GObject *obj)
{
- GncSxSlrTreeModelAdapter *adapter;
- g_return_if_fail(obj != NULL);
- adapter = GNC_SX_SLR_TREE_MODEL_ADAPTER(obj);
- g_return_if_fail(!adapter->disposed);
- adapter->disposed = TRUE;
+ GncSxSlrTreeModelAdapter *adapter;
+ g_return_if_fail(obj != NULL);
+ adapter = GNC_SX_SLR_TREE_MODEL_ADAPTER(obj);
+ g_return_if_fail(!adapter->disposed);
+ adapter->disposed = TRUE;
- g_object_unref(G_OBJECT(adapter->instances));
- adapter->instances = NULL;
- g_object_unref(G_OBJECT(adapter->real));
- adapter->real = NULL;
+ g_object_unref(G_OBJECT(adapter->instances));
+ adapter->instances = NULL;
+ g_object_unref(G_OBJECT(adapter->real));
+ adapter->real = NULL;
- G_OBJECT_CLASS(parent_class)->dispose(obj);
+ G_OBJECT_CLASS(parent_class)->dispose(obj);
}
static void
gnc_sx_slr_tree_model_adapter_finalize(GObject *obj)
{
- g_return_if_fail(obj != NULL);
- G_OBJECT_CLASS(parent_class)->finalize(obj);
+ g_return_if_fail(obj != NULL);
+ G_OBJECT_CLASS(parent_class)->finalize(obj);
}
GncSxSlrTreeModelAdapter*
gnc_sx_slr_tree_model_adapter_new(GncSxInstanceModel *instances)
{
- GncSxSlrTreeModelAdapter *rtn;
- rtn = GNC_SX_SLR_TREE_MODEL_ADAPTER(g_object_new(GNC_TYPE_SX_SLR_TREE_MODEL_ADAPTER, NULL));
- rtn->instances = instances;
- g_object_ref(G_OBJECT(rtn->instances));
- gsslrtma_populate_tree_store(rtn);
- g_signal_connect(G_OBJECT(rtn->instances), "added", (GCallback)gsslrtma_added_cb, (gpointer)rtn);
- rtn->updated_cb_id = g_signal_connect(G_OBJECT(rtn->instances), "updated", (GCallback)gsslrtma_updated_cb, (gpointer)rtn);
- g_signal_connect(G_OBJECT(rtn->instances), "removing", (GCallback)gsslrtma_removing_cb, (gpointer)rtn);
- return rtn;
+ GncSxSlrTreeModelAdapter *rtn;
+ rtn = GNC_SX_SLR_TREE_MODEL_ADAPTER(g_object_new(GNC_TYPE_SX_SLR_TREE_MODEL_ADAPTER, NULL));
+ rtn->instances = instances;
+ g_object_ref(G_OBJECT(rtn->instances));
+ gsslrtma_populate_tree_store(rtn);
+ g_signal_connect(G_OBJECT(rtn->instances), "added", (GCallback)gsslrtma_added_cb, (gpointer)rtn);
+ rtn->updated_cb_id = g_signal_connect(G_OBJECT(rtn->instances), "updated", (GCallback)gsslrtma_updated_cb, (gpointer)rtn);
+ g_signal_connect(G_OBJECT(rtn->instances), "removing", (GCallback)gsslrtma_removing_cb, (gpointer)rtn);
+ return rtn;
}
void
gnc_sx_sxsincelast_book_opened(void)
{
- GncSxInstanceModel *inst_model;
- GncSxSummary summary;
+ GncSxInstanceModel *inst_model;
+ GncSxSummary summary;
- if (!gnc_gconf_get_bool(GCONF_SECTION, "show_at_file_open", NULL))
- return;
+ if (!gnc_gconf_get_bool(GCONF_SECTION, "show_at_file_open", NULL))
+ return;
- inst_model = gnc_sx_get_current_instances();
- gnc_sx_instance_model_summarize(inst_model, &summary);
- gnc_sx_summary_print(&summary);
- gnc_sx_instance_model_effect_change(inst_model, TRUE, NULL, NULL);
+ inst_model = gnc_sx_get_current_instances();
+ gnc_sx_instance_model_summarize(inst_model, &summary);
+ gnc_sx_summary_print(&summary);
+ gnc_sx_instance_model_effect_change(inst_model, TRUE, NULL, NULL);
- if (summary.need_dialog)
- {
- gnc_ui_sx_since_last_run_dialog(inst_model);
- }
- else
- {
- if (summary.num_auto_create_no_notify_instances != 0)
- {
- gnc_info_dialog
- (NULL,
- ngettext
- ("There are no Scheduled Transactions to be entered at this time. "
- "(%d transaction automatically created)",
- "There are no Scheduled Transactions to be entered at this time. "
- "(%d transactions automatically created)",
- summary.num_auto_create_no_notify_instances),
- summary.num_auto_create_no_notify_instances);
- }
- }
- g_object_unref(G_OBJECT(inst_model));
+ if (summary.need_dialog)
+ {
+ gnc_ui_sx_since_last_run_dialog(inst_model);
+ }
+ else
+ {
+ if (summary.num_auto_create_no_notify_instances != 0)
+ {
+ gnc_info_dialog
+ (NULL,
+ ngettext
+ ("There are no Scheduled Transactions to be entered at this time. "
+ "(%d transaction automatically created)",
+ "There are no Scheduled Transactions to be entered at this time. "
+ "(%d transactions automatically created)",
+ summary.num_auto_create_no_notify_instances),
+ summary.num_auto_create_no_notify_instances);
+ }
+ }
+ g_object_unref(G_OBJECT(inst_model));
}
void
gnc_ui_sxsincelast_dialog_create(void)
{
- GncSxInstanceModel *model = gnc_sx_get_current_instances();
- gnc_sx_instance_model_effect_change(model, TRUE, NULL, NULL);
- gnc_ui_sx_since_last_run_dialog(model);
- g_object_unref(G_OBJECT(model));
+ GncSxInstanceModel *model = gnc_sx_get_current_instances();
+ gnc_sx_instance_model_effect_change(model, TRUE, NULL, NULL);
+ gnc_ui_sx_since_last_run_dialog(model);
+ g_object_unref(G_OBJECT(model));
}
static void
@@ -842,37 +842,37 @@
const gchar *value,
GncSxSinceLastRunDialog *dialog)
{
- GtkTreeIter tree_iter;
- GncSxInstance *inst;
- int i;
- GncSxInstanceState new_state;
+ GtkTreeIter tree_iter;
+ GncSxInstance *inst;
+ int i;
+ GncSxInstanceState new_state;
- for (i = 0; i < SX_INSTANCE_STATE_CREATED; i++)
- {
- if (strcmp(value, gnc_sx_instance_state_names[i]) == 0)
- break;
- }
- if (i == SX_INSTANCE_STATE_CREATED)
- {
- g_warning("unknown value [%s]", value);
- return;
- }
- new_state = i;
+ for (i = 0; i < SX_INSTANCE_STATE_CREATED; i++)
+ {
+ if (strcmp(value, gnc_sx_instance_state_names[i]) == 0)
+ break;
+ }
+ if (i == SX_INSTANCE_STATE_CREATED)
+ {
+ g_warning("unknown value [%s]", value);
+ return;
+ }
+ new_state = i;
- if (!gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(dialog->editing_model), &tree_iter, path))
- {
- g_warning("unknown path [%s]", path);
- return;
- }
+ if (!gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(dialog->editing_model), &tree_iter, path))
+ {
+ g_warning("unknown path [%s]", path);
+ return;
+ }
- inst = gnc_sx_slr_model_get_instance(dialog->editing_model, &tree_iter);
- if (inst == NULL)
- {
- g_warning("invalid path [%s]", path);
- return;
- }
+ inst = gnc_sx_slr_model_get_instance(dialog->editing_model, &tree_iter);
+ if (inst == NULL)
+ {
+ g_warning("invalid path [%s]", path);
+ return;
+ }
- gnc_sx_slr_model_change_instance_state(dialog->editing_model, inst, new_state);
+ gnc_sx_slr_model_change_instance_state(dialog->editing_model, inst, new_state);
}
static void
@@ -881,221 +881,220 @@
const gchar *value,
GncSxSinceLastRunDialog *dialog)
{
- GncSxVariable *var;
- GncSxInstance *inst;
- GtkTreeIter tree_iter;
- gnc_numeric parsed_num;
- char *endStr = NULL;
+ GncSxVariable *var;
+ GncSxInstance *inst;
+ GtkTreeIter tree_iter;
+ gnc_numeric parsed_num;
+ char *endStr = NULL;
- g_debug("variable to [%s] at path [%s]", value, path);
- if (!gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(dialog->editing_model), &tree_iter, path))
- {
- g_warning("invalid path [%s]", path);
- return;
- }
+ g_debug("variable to [%s] at path [%s]", value, path);
+ if (!gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(dialog->editing_model), &tree_iter, path))
+ {
+ g_warning("invalid path [%s]", path);
+ return;
+ }
- if (!gnc_sx_slr_model_get_instance_and_variable(dialog->editing_model, &tree_iter, &inst, &var))
- {
- g_critical("path [%s] doesn't correspond to a valid variable", path);
- return;
- }
+ if (!gnc_sx_slr_model_get_instance_and_variable(dialog->editing_model, &tree_iter, &inst, &var))
+ {
+ g_critical("path [%s] doesn't correspond to a valid variable", path);
+ return;
+ }
- if (!xaccParseAmount(value, TRUE, &parsed_num, &endStr)
- || gnc_numeric_check(parsed_num) != GNC_ERROR_OK)
- {
- gchar *value_copy = g_strdup(value);
- g_debug("value=[%s] endStr[%s]", value, endStr);
- if (strlen(g_strstrip(value_copy)) == 0)
- {
- gnc_numeric invalid_num = gnc_numeric_error(GNC_ERROR_ARG);
- // @fixme? Change to gnc_sx_slr_model_clear_variable(...)?
- gnc_sx_slr_model_change_variable(dialog->editing_model, inst, var, &invalid_num);
- }
- else
- {
- g_warning("error parsing value [%s]", value);
- }
- g_free(value_copy);
- return;
- }
- gnc_sx_slr_model_change_variable(dialog->editing_model, inst, var, &parsed_num);
+ if (!xaccParseAmount(value, TRUE, &parsed_num, &endStr)
+ || gnc_numeric_check(parsed_num) != GNC_ERROR_OK)
+ {
+ gchar *value_copy = g_strdup(value);
+ g_debug("value=[%s] endStr[%s]", value, endStr);
+ if (strlen(g_strstrip(value_copy)) == 0)
+ {
+ gnc_numeric invalid_num = gnc_numeric_error(GNC_ERROR_ARG);
+ // @fixme? Change to gnc_sx_slr_model_clear_variable(...)?
+ gnc_sx_slr_model_change_variable(dialog->editing_model, inst, var, &invalid_num);
+ }
+ else
+ {
+ g_warning("error parsing value [%s]", value);
+ }
+ g_free(value_copy);
+ return;
+ }
+ gnc_sx_slr_model_change_variable(dialog->editing_model, inst, var, &parsed_num);
}
GncSxSinceLastRunDialog*
gnc_ui_sx_since_last_run_dialog(GncSxInstanceModel *sx_instances)
{
- GncSxSinceLastRunDialog *dialog;
- GladeXML *glade;
+ GncSxSinceLastRunDialog *dialog;
+ GladeXML *glade;
- dialog = g_new0(GncSxSinceLastRunDialog, 1);
- glade = gnc_glade_xml_new("sched-xact.glade", "since-last-run-dialog");
- dialog->dialog = glade_xml_get_widget(glade, "since-last-run-dialog");
+ dialog = g_new0(GncSxSinceLastRunDialog, 1);
+ glade = gnc_glade_xml_new("sched-xact.glade", "since-last-run-dialog");
+ dialog->dialog = glade_xml_get_widget(glade, "since-last-run-dialog");
- dialog->editing_model = gnc_sx_slr_tree_model_adapter_new(sx_instances);
- // gobject-2.10: g_object_ref_sink(G_OBJECT(dialog->editing_model));
- g_object_ref(G_OBJECT(dialog->editing_model));
+ dialog->editing_model = gnc_sx_slr_tree_model_adapter_new(sx_instances);
+ // gobject-2.10: g_object_ref_sink(G_OBJECT(dialog->editing_model));
+ g_object_ref(G_OBJECT(dialog->editing_model));
- {
- GtkPaned *paned;
+ {
+ GtkPaned *paned;
- paned = GTK_PANED(glade_xml_get_widget(glade, "paned"));
- gtk_paned_set_position(paned, 240);
- }
+ paned = GTK_PANED(glade_xml_get_widget(glade, "paned"));
+ gtk_paned_set_position(paned, 240);
+ }
- dialog->review_created_txns_toggle = GTK_TOGGLE_BUTTON(glade_xml_get_widget(glade, "review_txn_toggle"));
+ dialog->review_created_txns_toggle = GTK_TOGGLE_BUTTON(glade_xml_get_widget(glade, "review_txn_toggle"));
- {
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *col;
+ {
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *col;
- dialog->instance_view = GTK_TREE_VIEW(glade_xml_get_widget(glade, "instance_view"));
- gtk_tree_view_set_model(dialog->instance_view, GTK_TREE_MODEL(dialog->editing_model));
+ dialog->instance_view = GTK_TREE_VIEW(glade_xml_get_widget(glade, "instance_view"));
+ gtk_tree_view_set_model(dialog->instance_view, GTK_TREE_MODEL(dialog->editing_model));
- renderer = gtk_cell_renderer_text_new();
- col = gtk_tree_view_column_new_with_attributes("SX, Instance, Variable", renderer,
- "text", SLR_MODEL_COL_NAME,
- NULL);
- gtk_tree_view_append_column(dialog->instance_view, col);
+ renderer = gtk_cell_renderer_text_new();
+ col = gtk_tree_view_column_new_with_attributes("SX, Instance, Variable", renderer,
+ "text", SLR_MODEL_COL_NAME,
+ NULL);
+ gtk_tree_view_append_column(dialog->instance_view, col);
- renderer = gtk_cell_renderer_combo_new();
- g_object_set(G_OBJECT(renderer),
- "model", gnc_sx_get_slr_state_model(),
- "text-column", 0,
- "has-entry", FALSE,
- "editable", TRUE,
- NULL);
- g_signal_connect(G_OBJECT(renderer),
- "edited",
- G_CALLBACK(instance_state_changed_cb),
- dialog);
- col = gtk_tree_view_column_new_with_attributes("Instance State", renderer,
- "text", SLR_MODEL_COL_INSTANCE_STATE,
- "visible", SLR_MODEL_COL_INSTANCE_VISIBILITY,
- // you might think only "sensitive" is required to
- // control the ability of the combo box to select
- // a new state, but you'd be wrong.
- "editable", SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY,
- "sensitive", SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY,
- NULL);
- gtk_tree_view_append_column(dialog->instance_view, col);
+ renderer = gtk_cell_renderer_combo_new();
+ g_object_set(G_OBJECT(renderer),
+ "model", gnc_sx_get_slr_state_model(),
+ "text-column", 0,
+ "has-entry", FALSE,
+ "editable", TRUE,
+ NULL);
+ g_signal_connect(G_OBJECT(renderer),
+ "edited",
+ G_CALLBACK(instance_state_changed_cb),
+ dialog);
+ col = gtk_tree_view_column_new_with_attributes("Instance State", renderer,
+ "text", SLR_MODEL_COL_INSTANCE_STATE,
+ "visible", SLR_MODEL_COL_INSTANCE_VISIBILITY,
+ // you might think only "sensitive" is required to
+ // control the ability of the combo box to select
+ // a new state, but you'd be wrong.
+ "editable", SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY,
+ "sensitive", SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY,
+ NULL);
+ gtk_tree_view_append_column(dialog->instance_view, col);
-
- renderer = gtk_cell_renderer_text_new();
- g_object_set(G_OBJECT(renderer),
- "editable", TRUE,
- NULL);
- g_signal_connect(G_OBJECT(renderer),
- "edited",
- G_CALLBACK(variable_value_changed_cb),
- dialog);
- col = gtk_tree_view_column_new_with_attributes("Variable Value", renderer,
- "text", SLR_MODEL_COL_VARAIBLE_VALUE,
- "visible", SLR_MODEL_COL_VARIABLE_VISIBILITY,
- NULL);
- gtk_tree_view_append_column(dialog->instance_view, col);
+ renderer = gtk_cell_renderer_text_new();
+ g_object_set(G_OBJECT(renderer),
+ "editable", TRUE,
+ NULL);
+ g_signal_connect(G_OBJECT(renderer),
+ "edited",
+ G_CALLBACK(variable_value_changed_cb),
+ dialog);
+ col = gtk_tree_view_column_new_with_attributes("Variable Value", renderer,
+ "text", SLR_MODEL_COL_VARAIBLE_VALUE,
+ "visible", SLR_MODEL_COL_VARIABLE_VISIBILITY,
+ NULL);
+ gtk_tree_view_append_column(dialog->instance_view, col);
- gtk_tree_view_expand_all(dialog->instance_view);
- }
+ gtk_tree_view_expand_all(dialog->instance_view);
+ }
- g_signal_connect(G_OBJECT(dialog->dialog), "response", G_CALLBACK(dialog_response_cb), dialog);
+ g_signal_connect(G_OBJECT(dialog->dialog), "response", G_CALLBACK(dialog_response_cb), dialog);
- gtk_widget_show_all(dialog->dialog);
+ gtk_widget_show_all(dialog->dialog);
- return dialog;
+ return dialog;
}
static void
_show_created_transactions(GncSxSinceLastRunDialog *app_dialog, GList *created_txn_guids)
{
- GNCLedgerDisplay *ledger;
- GncPluginPage *page;
- Query *book_query, *guid_query, *query;
- GList *guid_iter;
+ GNCLedgerDisplay *ledger;
+ GncPluginPage *page;
+ Query *book_query, *guid_query, *query;
+ GList *guid_iter;
- book_query = xaccMallocQuery();
- guid_query = xaccMallocQuery();
- xaccQuerySetBook(book_query, gnc_get_current_book());
- for (guid_iter = created_txn_guids; guid_iter != NULL; guid_iter = guid_iter->next)
- {
- xaccQueryAddGUIDMatch(guid_query, (GUID*)guid_iter->data, GNC_ID_TRANS, QUERY_OR);
- }
- query = xaccQueryMerge(book_query, guid_query, QUERY_AND);
+ book_query = xaccMallocQuery();
+ guid_query = xaccMallocQuery();
+ xaccQuerySetBook(book_query, gnc_get_current_book());
+ for (guid_iter = created_txn_guids; guid_iter != NULL; guid_iter = guid_iter->next)
+ {
+ xaccQueryAddGUIDMatch(guid_query, (GUID*)guid_iter->data, GNC_ID_TRANS, QUERY_OR);
+ }
+ query = xaccQueryMerge(book_query, guid_query, QUERY_AND);
- // inspired by dialog-find-transactions:do_find_cb:
- ledger = gnc_ledger_display_query(query, SEARCH_LEDGER, REG_STYLE_JOURNAL);
- gnc_ledger_display_refresh(ledger);
- page = gnc_plugin_page_register_new_ledger(ledger);
- g_object_set(G_OBJECT(page), "page-name", _("Created Transactions"), NULL);
- gnc_main_window_open_page(NULL, page);
+ // inspired by dialog-find-transactions:do_find_cb:
+ ledger = gnc_ledger_display_query(query, SEARCH_LEDGER, REG_STYLE_JOURNAL);
+ gnc_ledger_display_refresh(ledger);
+ page = gnc_plugin_page_register_new_ledger(ledger);
+ g_object_set(G_OBJECT(page), "page-name", _("Created Transactions"), NULL);
+ gnc_main_window_open_page(NULL, page);
- xaccFreeQuery(query);
- xaccFreeQuery(book_query);
- xaccFreeQuery(guid_query);
+ xaccFreeQuery(query);
+ xaccFreeQuery(book_query);
+ xaccFreeQuery(guid_query);
}
static GList*
gnc_sx_slr_model_check_variables(GncSxSlrTreeModelAdapter *editing_model)
{
- return gnc_sx_instance_model_check_variables(editing_model->instances);
+ return gnc_sx_instance_model_check_variables(editing_model->instances);
}
static void
dialog_response_cb(GtkDialog *dialog, gint response_id, GncSxSinceLastRunDialog *app_dialog)
{
- GList *created_txns = NULL;
- switch (response_id)
- {
- case GTK_RESPONSE_OK:
- // @@fixme validate current state(GError *errs);
- // - instance state constraints
- // - required variable binding
- // - ability to create transactions
- {
- GList *unbound_variables;
- unbound_variables = gnc_sx_slr_model_check_variables(app_dialog->editing_model);
- g_message("%d variables unbound", g_list_length(unbound_variables));
- if (g_list_length(unbound_variables) > 0)
- {
- // focus first variable
- GncSxVariableNeeded *first_unbound;
- GtkTreePath *variable_path;
- GtkTreeViewColumn *variable_col;
- gint variable_view_column = 2;
- gboolean start_editing = TRUE;
+ GList *created_txns = NULL;
+ switch (response_id)
+ {
+ case GTK_RESPONSE_OK:
+ // @@fixme validate current state(GError *errs);
+ // - instance state constraints
+ // - required variable binding
+ // - ability to create transactions
+ {
+ GList *unbound_variables;
+ unbound_variables = gnc_sx_slr_model_check_variables(app_dialog->editing_model);
+ g_message("%d variables unbound", g_list_length(unbound_variables));
+ if (g_list_length(unbound_variables) > 0)
+ {
+ // focus first variable
+ GncSxVariableNeeded *first_unbound;
+ GtkTreePath *variable_path;
+ GtkTreeViewColumn *variable_col;
+ gint variable_view_column = 2;
+ gboolean start_editing = TRUE;
- first_unbound = (GncSxVariableNeeded*)unbound_variables->data;
- variable_path = _get_path_for_variable(app_dialog->editing_model, first_unbound->instance, first_unbound->variable);
- variable_col = gtk_tree_view_get_column(app_dialog->instance_view, variable_view_column);
+ first_unbound = (GncSxVariableNeeded*)unbound_variables->data;
+ variable_path = _get_path_for_variable(app_dialog->editing_model, first_unbound->instance, first_unbound->variable);
+ variable_col = gtk_tree_view_get_column(app_dialog->instance_view, variable_view_column);
- gtk_tree_view_set_cursor(app_dialog->instance_view, variable_path, variable_col, start_editing);
+ gtk_tree_view_set_cursor(app_dialog->instance_view, variable_path, variable_col, start_editing);
- gtk_tree_path_free(variable_path);
- g_list_foreach(unbound_variables, (GFunc)g_free, NULL);
- g_list_free(unbound_variables);
- return;
- }
- }
- gnc_suspend_gui_refresh();
- gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &created_txns, NULL);
- gnc_resume_gui_refresh();
- if (gtk_toggle_button_get_active(app_dialog->review_created_txns_toggle)
- && g_list_length(created_txns) > 0)
- {
- _show_created_transactions(app_dialog, created_txns);
- }
- g_list_free(created_txns);
- created_txns = NULL;
- /* FALLTHROUGH */
- case GTK_RESPONSE_CANCEL:
- case GTK_RESPONSE_DELETE_EVENT:
- gtk_widget_destroy(GTK_WIDGET(dialog));
- g_object_unref(G_OBJECT(app_dialog->editing_model));
- app_dialog->editing_model = NULL;
- break;
- default:
- g_error("unknown response id [%d]", response_id);
- break;
- }
+ gtk_tree_path_free(variable_path);
+ g_list_foreach(unbound_variables, (GFunc)g_free, NULL);
+ g_list_free(unbound_variables);
+ return;
+ }
+ }
+ gnc_suspend_gui_refresh();
+ gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &created_txns, NULL);
+ gnc_resume_gui_refresh();
+ if (gtk_toggle_button_get_active(app_dialog->review_created_txns_toggle)
+ && g_list_length(created_txns) > 0)
+ {
+ _show_created_transactions(app_dialog, created_txns);
+ }
+ g_list_free(created_txns);
+ created_txns = NULL;
+ /* FALLTHROUGH */
+ case GTK_RESPONSE_CANCEL:
+ case GTK_RESPONSE_DELETE_EVENT:
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+ g_object_unref(G_OBJECT(app_dialog->editing_model));
+ app_dialog->editing_model = NULL;
+ break;
+ default:
+ g_error("unknown response id [%d]", response_id);
+ break;
+ }
}
/**
@@ -1108,8 +1107,7 @@
GList **created_transaction_guids,
GList **creation_errors)
{
- g_signal_handler_block(model->instances, model->updated_cb_id);
- gnc_sx_instance_model_effect_change(model->instances, auto_create_only, created_transaction_guids, creation_errors);
- g_signal_handler_unblock(model->instances, model->updated_cb_id);
+ g_signal_handler_block(model->instances, model->updated_cb_id);
+ gnc_sx_instance_model_effect_change(model->instances, auto_create_only, created_transaction_guids, creation_errors);
+ g_signal_handler_unblock(model->instances, model->updated_cb_id);
}
-
Modified: gnucash/trunk/src/gnome/dialog-sx-since-last-run.h
===================================================================
--- gnucash/trunk/src/gnome/dialog-sx-since-last-run.h 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome/dialog-sx-since-last-run.h 2007-02-19 19:01:47 UTC (rev 15625)
@@ -47,6 +47,4 @@
// eliminate...
void gnc_ui_sxsincelast_dialog_create(void);
-//void gnc_sx_slr_model_effect_change(GncSxSlrTreeModelAdapter *model, gboolean auto_create_only, GList **created_transaction_guids, GList **creation_errors);
-
#endif
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -67,18 +67,18 @@
typedef struct GncPluginPageSxListPrivate
{
- gboolean disposed;
+ gboolean disposed;
- GtkWidget* widget;
- gint gnc_component_id;
+ GtkWidget* widget;
+ gint gnc_component_id;
- GladeXML* gxml;
- GncSxInstanceDenseCalAdapter *dense_cal_model;
- GncDenseCal* gdcal;
+ GladeXML* gxml;
+ GncSxInstanceDenseCalAdapter *dense_cal_model;
+ GncDenseCal* gdcal;
- GncSxInstanceModel* instances;
- GncSxListTreeModelAdapter* tree_model;
- GtkTreeView* tree_view;
+ GncSxInstanceModel* instances;
+ GncSxListTreeModelAdapter* tree_model;
+ GtkTreeView* tree_view;
} GncPluginPageSxListPrivate;
#define GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(o) \
@@ -110,13 +110,13 @@
/* Command callbacks */
static GtkActionEntry gnc_plugin_page_sx_list_actions [] = {
- { "SxListAction", NULL, N_("Scheduled"), NULL, NULL, NULL },
- { "SxListNewAction", GNC_STOCK_NEW_ACCOUNT, N_("New"), NULL,
- N_("Create a new scheduled transaction"), G_CALLBACK(gnc_plugin_page_sx_list_cmd_new) },
- { "SxListEditAction", GNC_STOCK_EDIT_ACCOUNT, N_("Edit"), NULL,
- N_("Edit the selected scheduled transaction"), G_CALLBACK(gnc_plugin_page_sx_list_cmd_edit) },
- { "SxListDeleteAction", GNC_STOCK_DELETE_ACCOUNT, N_("Delete"), NULL,
- N_("Delete the selected scheduled transaction"), G_CALLBACK(gnc_plugin_page_sx_list_cmd_delete) },
+ { "SxListAction", NULL, N_("Scheduled"), NULL, NULL, NULL },
+ { "SxListNewAction", GNC_STOCK_NEW_ACCOUNT, N_("New"), NULL,
+ N_("Create a new scheduled transaction"), G_CALLBACK(gnc_plugin_page_sx_list_cmd_new) },
+ { "SxListEditAction", GNC_STOCK_EDIT_ACCOUNT, N_("Edit"), NULL,
+ N_("Edit the selected scheduled transaction"), G_CALLBACK(gnc_plugin_page_sx_list_cmd_edit) },
+ { "SxListDeleteAction", GNC_STOCK_DELETE_ACCOUNT, N_("Delete"), NULL,
+ N_("Delete the selected scheduled transaction"), G_CALLBACK(gnc_plugin_page_sx_list_cmd_delete) },
};
/** The number of actions provided by this plugin. */
static guint gnc_plugin_page_sx_list_n_actions = G_N_ELEMENTS (gnc_plugin_page_sx_list_actions);
@@ -124,302 +124,302 @@
GType
gnc_plugin_page_sx_list_get_type (void)
{
- static GType gnc_plugin_page_sx_list_type = 0;
+ static GType gnc_plugin_page_sx_list_type = 0;
- if (gnc_plugin_page_sx_list_type == 0) {
- static const GTypeInfo our_info = {
- sizeof (GncPluginPageSxListClass),
- NULL,
- NULL,
- (GClassInitFunc) gnc_plugin_page_sx_list_class_init,
- NULL,
- NULL,
- sizeof (GncPluginPageSxList),
- 0,
- (GInstanceInitFunc) gnc_plugin_page_sx_list_init
- };
+ if (gnc_plugin_page_sx_list_type == 0) {
+ static const GTypeInfo our_info = {
+ sizeof (GncPluginPageSxListClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) gnc_plugin_page_sx_list_class_init,
+ NULL,
+ NULL,
+ sizeof (GncPluginPageSxList),
+ 0,
+ (GInstanceInitFunc) gnc_plugin_page_sx_list_init
+ };
- gnc_plugin_page_sx_list_type = g_type_register_static (GNC_TYPE_PLUGIN_PAGE,
- GNC_PLUGIN_PAGE_SX_LIST_NAME,
- &our_info, 0);
- }
+ gnc_plugin_page_sx_list_type = g_type_register_static (GNC_TYPE_PLUGIN_PAGE,
+ GNC_PLUGIN_PAGE_SX_LIST_NAME,
+ &our_info, 0);
+ }
- return gnc_plugin_page_sx_list_type;
+ return gnc_plugin_page_sx_list_type;
}
GncPluginPage *
gnc_plugin_page_sx_list_new (void)
{
- GncPluginPageSxList *plugin_page;
- plugin_page = g_object_new(GNC_TYPE_PLUGIN_PAGE_SX_LIST, NULL);
- return GNC_PLUGIN_PAGE(plugin_page);
+ GncPluginPageSxList *plugin_page;
+ plugin_page = g_object_new(GNC_TYPE_PLUGIN_PAGE_SX_LIST, NULL);
+ return GNC_PLUGIN_PAGE(plugin_page);
}
static void
gnc_plugin_page_sx_list_class_init (GncPluginPageSxListClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- GncPluginPageClass *gnc_plugin_class = GNC_PLUGIN_PAGE_CLASS(klass);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GncPluginPageClass *gnc_plugin_class = GNC_PLUGIN_PAGE_CLASS(klass);
- parent_class = g_type_class_peek_parent(klass);
+ parent_class = g_type_class_peek_parent(klass);
- object_class->dispose = gnc_plugin_page_sx_list_dispose;
- object_class->finalize = gnc_plugin_page_sx_list_finalize;
+ object_class->dispose = gnc_plugin_page_sx_list_dispose;
+ object_class->finalize = gnc_plugin_page_sx_list_finalize;
- gnc_plugin_class->tab_icon = GNC_STOCK_ACCOUNT;
- gnc_plugin_class->plugin_name = GNC_PLUGIN_PAGE_SX_LIST_NAME;
- gnc_plugin_class->create_widget = gnc_plugin_page_sx_list_create_widget;
- gnc_plugin_class->destroy_widget = gnc_plugin_page_sx_list_destroy_widget;
- gnc_plugin_class->save_page = gnc_plugin_page_sx_list_save_page;
- gnc_plugin_class->recreate_page = gnc_plugin_page_sx_list_recreate_page;
+ gnc_plugin_class->tab_icon = GNC_STOCK_ACCOUNT;
+ gnc_plugin_class->plugin_name = GNC_PLUGIN_PAGE_SX_LIST_NAME;
+ gnc_plugin_class->create_widget = gnc_plugin_page_sx_list_create_widget;
+ gnc_plugin_class->destroy_widget = gnc_plugin_page_sx_list_destroy_widget;
+ gnc_plugin_class->save_page = gnc_plugin_page_sx_list_save_page;
+ gnc_plugin_class->recreate_page = gnc_plugin_page_sx_list_recreate_page;
- g_type_class_add_private(klass, sizeof(GncPluginPageSxListPrivate));
+ g_type_class_add_private(klass, sizeof(GncPluginPageSxListPrivate));
}
static void
gnc_plugin_page_sx_list_init (GncPluginPageSxList *plugin_page)
{
- GtkActionGroup *action_group;
- GncPluginPageSxListPrivate *priv;
- GncPluginPage *parent;
+ GtkActionGroup *action_group;
+ GncPluginPageSxListPrivate *priv;
+ GncPluginPage *parent;
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(plugin_page);
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(plugin_page);
- /* Init parent declared variables */
- parent = GNC_PLUGIN_PAGE(plugin_page);
- g_object_set(G_OBJECT(plugin_page),
- "page-name", _("Scheduled Transactions"),
- "page-uri", "default:",
- "ui-description", "gnc-plugin-page-sx-list-ui.xml",
- NULL);
+ /* Init parent declared variables */
+ parent = GNC_PLUGIN_PAGE(plugin_page);
+ g_object_set(G_OBJECT(plugin_page),
+ "page-name", _("Scheduled Transactions"),
+ "page-uri", "default:",
+ "ui-description", "gnc-plugin-page-sx-list-ui.xml",
+ NULL);
- /* change me when the system supports multiple books */
- gnc_plugin_page_add_book(parent, gnc_get_current_book());
+ /* change me when the system supports multiple books */
+ gnc_plugin_page_add_book(parent, gnc_get_current_book());
- /* Create menu and toolbar information */
- action_group =
- gnc_plugin_page_create_action_group(parent,
- "GncPluginPageSxListActions");
- gtk_action_group_add_actions(action_group,
- gnc_plugin_page_sx_list_actions,
- gnc_plugin_page_sx_list_n_actions,
- plugin_page);
- /* gnc_plugin_init_short_names (action_group, toolbar_labels); */
+ /* Create menu and toolbar information */
+ action_group =
+ gnc_plugin_page_create_action_group(parent,
+ "GncPluginPageSxListActions");
+ gtk_action_group_add_actions(action_group,
+ gnc_plugin_page_sx_list_actions,
+ gnc_plugin_page_sx_list_n_actions,
+ plugin_page);
+ /* gnc_plugin_init_short_names (action_group, toolbar_labels); */
}
static void
gnc_plugin_page_sx_list_dispose(GObject *object)
{
- GncPluginPageSxList *page;
- GncPluginPageSxListPrivate *priv;
+ GncPluginPageSxList *page;
+ GncPluginPageSxListPrivate *priv;
- page = GNC_PLUGIN_PAGE_SX_LIST (object);
- g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST (page));
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- g_return_if_fail(priv != NULL);
+ page = GNC_PLUGIN_PAGE_SX_LIST (object);
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST (page));
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ g_return_if_fail(priv != NULL);
- g_return_if_fail(!priv->disposed);
- priv->disposed = TRUE;
+ g_return_if_fail(!priv->disposed);
+ priv->disposed = TRUE;
- g_object_unref(G_OBJECT(priv->dense_cal_model));
- priv->dense_cal_model = NULL;
- gtk_widget_unref(GTK_WIDGET(priv->gdcal));
- priv->gdcal = NULL;
- g_object_unref(G_OBJECT(priv->tree_model));
- priv->tree_model = NULL;
- g_object_unref(G_OBJECT(priv->instances));
- priv->instances = NULL;
+ g_object_unref(G_OBJECT(priv->dense_cal_model));
+ priv->dense_cal_model = NULL;
+ gtk_widget_unref(GTK_WIDGET(priv->gdcal));
+ priv->gdcal = NULL;
+ g_object_unref(G_OBJECT(priv->tree_model));
+ priv->tree_model = NULL;
+ g_object_unref(G_OBJECT(priv->instances));
+ priv->instances = NULL;
- G_OBJECT_CLASS (parent_class)->dispose(object);
+ G_OBJECT_CLASS (parent_class)->dispose(object);
}
static void
gnc_plugin_page_sx_list_finalize (GObject *object)
{
- GncPluginPageSxList *page;
- GncPluginPageSxListPrivate *priv;
+ GncPluginPageSxList *page;
+ GncPluginPageSxListPrivate *priv;
- page = GNC_PLUGIN_PAGE_SX_LIST (object);
- g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST (page));
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- g_return_if_fail(priv != NULL);
+ page = GNC_PLUGIN_PAGE_SX_LIST (object);
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST (page));
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ g_return_if_fail(priv != NULL);
- // by virtue of being a g_type_instance_..._private, does the private
- // data get freed somewhere else?
+ // by virtue of being a g_type_instance_..._private, does the private
+ // data get freed somewhere else?
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
/* Virtual Functions */
static void
gnc_plugin_page_sx_list_refresh_cb (GHashTable *changes, gpointer user_data)
{
- GncPluginPageSxList *page = user_data;
- GncPluginPageSxListPrivate *priv;
+ GncPluginPageSxList *page = user_data;
+ GncPluginPageSxListPrivate *priv;
- g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST(page));
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST(page));
- /* We're only looking for forced updates here. */
- if (changes)
- return;
+ /* We're only looking for forced updates here. */
+ if (changes)
+ return;
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- gtk_widget_queue_draw(priv->widget);
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ gtk_widget_queue_draw(priv->widget);
}
static void
gnc_plugin_page_sx_list_close_cb (gpointer user_data)
{
- GncPluginPage *plugin_page;
- GncPluginPageSxList *page;
+ GncPluginPage *plugin_page;
+ GncPluginPageSxList *page;
- plugin_page = GNC_PLUGIN_PAGE(user_data);
- page = GNC_PLUGIN_PAGE_SX_LIST (plugin_page);
- gnc_main_window_close_page(plugin_page);
+ plugin_page = GNC_PLUGIN_PAGE(user_data);
+ page = GNC_PLUGIN_PAGE_SX_LIST (plugin_page);
+ gnc_main_window_close_page(plugin_page);
}
static void
gppsl_selection_changed_cb(GtkTreeSelection *selection, gpointer user_data)
{
- GncPluginPage *page;
- GtkAction *edit_action, *delete_action;
- gboolean selection_state = TRUE;
+ GncPluginPage *page;
+ GtkAction *edit_action, *delete_action;
+ gboolean selection_state = TRUE;
- page = GNC_PLUGIN_PAGE(user_data);
- edit_action = gnc_plugin_page_get_action(page, "SxListEditAction");
- delete_action = gnc_plugin_page_get_action(page, "SxListDeleteAction");
- selection_state
- = gtk_tree_selection_count_selected_rows(selection) == 0
- ? FALSE
- : TRUE;
- gtk_action_set_sensitive(edit_action, selection_state);
- gtk_action_set_sensitive(delete_action, selection_state);
+ page = GNC_PLUGIN_PAGE(user_data);
+ edit_action = gnc_plugin_page_get_action(page, "SxListEditAction");
+ delete_action = gnc_plugin_page_get_action(page, "SxListDeleteAction");
+ selection_state
+ = gtk_tree_selection_count_selected_rows(selection) == 0
+ ? FALSE
+ : TRUE;
+ gtk_action_set_sensitive(edit_action, selection_state);
+ gtk_action_set_sensitive(delete_action, selection_state);
}
static GtkWidget *
gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
{
- GncPluginPageSxList *page;
- GncPluginPageSxListPrivate *priv;
+ GncPluginPageSxList *page;
+ GncPluginPageSxListPrivate *priv;
- page = GNC_PLUGIN_PAGE_SX_LIST(plugin_page);
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- if (priv->widget != NULL)
- return priv->widget;
+ page = GNC_PLUGIN_PAGE_SX_LIST(plugin_page);
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ if (priv->widget != NULL)
+ return priv->widget;
- priv->gxml = gnc_glade_xml_new("sched-xact.glade", "sx-list-vbox");
- priv->widget = glade_xml_get_widget(priv->gxml, "sx-list-vbox");
+ priv->gxml = gnc_glade_xml_new("sched-xact.glade", "sx-list-vbox");
+ priv->widget = glade_xml_get_widget(priv->gxml, "sx-list-vbox");
- {
- //gint half_way;
- // half_way = plugin_page->notebook_page->allocation.height * 0.5;
- // fixme; get a real value:
- gtk_paned_set_position(GTK_PANED(priv->widget), 160);
- }
+ {
+ //gint half_way;
+ // half_way = plugin_page->notebook_page->allocation.height * 0.5;
+ // fixme; get a real value:
+ gtk_paned_set_position(GTK_PANED(priv->widget), 160);
+ }
- {
- GDate end;
- g_date_clear(&end, 1);
- g_date_set_time_t(&end, time(NULL));
- g_date_add_years(&end, 1);
- priv->instances = GNC_SX_INSTANCE_MODEL(gnc_sx_get_instances(&end, TRUE));
- }
+ {
+ GDate end;
+ g_date_clear(&end, 1);
+ g_date_set_time_t(&end, time(NULL));
+ g_date_add_years(&end, 1);
+ priv->instances = GNC_SX_INSTANCE_MODEL(gnc_sx_get_instances(&end, TRUE));
+ }
- {
- GtkAction *edit_action, *delete_action;
- edit_action = gnc_plugin_page_get_action(GNC_PLUGIN_PAGE(page), "SxListEditAction");
- delete_action = gnc_plugin_page_get_action(GNC_PLUGIN_PAGE(page), "SxListDeleteAction");
- gtk_action_set_sensitive(edit_action, FALSE);
- gtk_action_set_sensitive(delete_action, FALSE);
- }
+ {
+ GtkAction *edit_action, *delete_action;
+ edit_action = gnc_plugin_page_get_action(GNC_PLUGIN_PAGE(page), "SxListEditAction");
+ delete_action = gnc_plugin_page_get_action(GNC_PLUGIN_PAGE(page), "SxListDeleteAction");
+ gtk_action_set_sensitive(edit_action, FALSE);
+ gtk_action_set_sensitive(delete_action, FALSE);
+ }
- {
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
- GtkTreeSelection *selection;
+ {
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
- priv->tree_model = gnc_sx_list_tree_model_adapter_new(priv->instances);
- priv->tree_view = GTK_TREE_VIEW(glade_xml_get_widget(priv->gxml, "sx_list"));
- gtk_tree_view_set_model(priv->tree_view, GTK_TREE_MODEL(priv->tree_model));
+ priv->tree_model = gnc_sx_list_tree_model_adapter_new(priv->instances);
+ priv->tree_view = GTK_TREE_VIEW(glade_xml_get_widget(priv->gxml, "sx_list"));
+ gtk_tree_view_set_model(priv->tree_view, GTK_TREE_MODEL(priv->tree_model));
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("Name", renderer, "text", SXLTMA_COL_NAME, NULL);
- gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_NAME);
- gtk_tree_view_append_column(priv->tree_view, column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Name", renderer, "text", SXLTMA_COL_NAME, NULL);
+ gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_NAME);
+ gtk_tree_view_append_column(priv->tree_view, column);
- renderer = gtk_cell_renderer_toggle_new();
- column = gtk_tree_view_column_new_with_attributes("Enabled", renderer, "active", SXLTMA_COL_ENABLED, NULL);
- gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_ENABLED);
- gtk_tree_view_append_column(priv->tree_view, column);
+ renderer = gtk_cell_renderer_toggle_new();
+ column = gtk_tree_view_column_new_with_attributes("Enabled", renderer, "active", SXLTMA_COL_ENABLED, NULL);
+ gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_ENABLED);
+ gtk_tree_view_append_column(priv->tree_view, column);
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("Frequency", renderer, "text", SXLTMA_COL_FREQUENCY, NULL);
- gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_FREQUENCY);
- gtk_tree_view_append_column(priv->tree_view, column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Frequency", renderer, "text", SXLTMA_COL_FREQUENCY, NULL);
+ gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_FREQUENCY);
+ gtk_tree_view_append_column(priv->tree_view, column);
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("Last Occur", renderer, "text", SXLTMA_COL_LAST_OCCUR, NULL);
- gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_LAST_OCCUR);
- gtk_tree_view_append_column(priv->tree_view, column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Last Occur", renderer, "text", SXLTMA_COL_LAST_OCCUR, NULL);
+ gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_LAST_OCCUR);
+ gtk_tree_view_append_column(priv->tree_view, column);
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes("Next Occur", renderer, "text", SXLTMA_COL_NEXT_OCCUR, NULL);
- gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_NEXT_OCCUR);
- gtk_tree_view_append_column(priv->tree_view, column);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("Next Occur", renderer, "text", SXLTMA_COL_NEXT_OCCUR, NULL);
+ gtk_tree_view_column_set_sort_column_id(column, SXLTMA_COL_NEXT_OCCUR);
+ gtk_tree_view_append_column(priv->tree_view, column);
- selection = gtk_tree_view_get_selection(priv->tree_view);
- gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
- g_signal_connect(G_OBJECT(selection), "changed", (GCallback)gppsl_selection_changed_cb, (gpointer)page);
+ selection = gtk_tree_view_get_selection(priv->tree_view);
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
+ g_signal_connect(G_OBJECT(selection), "changed", (GCallback)gppsl_selection_changed_cb, (gpointer)page);
- g_signal_connect(G_OBJECT(priv->tree_view), "row-activated", (GCallback)gppsl_row_activated_cb, (gpointer)page);
- }
+ g_signal_connect(G_OBJECT(priv->tree_view), "row-activated", (GCallback)gppsl_row_activated_cb, (gpointer)page);
+ }
- {
- GtkWidget *w;
+ {
+ GtkWidget *w;
- priv->dense_cal_model = gnc_sx_instance_dense_cal_adapter_new(GNC_SX_INSTANCE_MODEL(priv->instances));
- priv->gdcal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model(GNC_DENSE_CAL_MODEL(priv->dense_cal_model)));
- // gobject-2.10: g_object_ref_sink(G_OBJECT(priv->gdcal));
- g_object_ref(G_OBJECT(priv->gdcal));
- gtk_object_sink(GTK_OBJECT(priv->gdcal));
+ priv->dense_cal_model = gnc_sx_instance_dense_cal_adapter_new(GNC_SX_INSTANCE_MODEL(priv->instances));
+ priv->gdcal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model(GNC_DENSE_CAL_MODEL(priv->dense_cal_model)));
+ // gobject-2.10: g_object_ref_sink(G_OBJECT(priv->gdcal));
+ g_object_ref(G_OBJECT(priv->gdcal));
+ gtk_object_sink(GTK_OBJECT(priv->gdcal));
- gnc_dense_cal_set_months_per_col(priv->gdcal, 4);
- gnc_dense_cal_set_num_months(priv->gdcal, 12);
+ gnc_dense_cal_set_months_per_col(priv->gdcal, 4);
+ gnc_dense_cal_set_num_months(priv->gdcal, 12);
- w = glade_xml_get_widget(priv->gxml, "upcoming_cal_hbox");
- gtk_container_add(GTK_CONTAINER(w), GTK_WIDGET(priv->gdcal));
- gtk_widget_show_all(w);
- }
+ w = glade_xml_get_widget(priv->gxml, "upcoming_cal_hbox");
+ gtk_container_add(GTK_CONTAINER(w), GTK_WIDGET(priv->gdcal));
+ gtk_widget_show_all(w);
+ }
- priv->gnc_component_id = gnc_register_gui_component("plugin-page-sx-list",
- gnc_plugin_page_sx_list_refresh_cb,
- gnc_plugin_page_sx_list_close_cb,
- page);
+ priv->gnc_component_id = gnc_register_gui_component("plugin-page-sx-list",
+ gnc_plugin_page_sx_list_refresh_cb,
+ gnc_plugin_page_sx_list_close_cb,
+ page);
- /* @@fixme */
- /* gnc_restore_window_size(SX_LIST_GCONF_SECTION, GTK_WINDOW(priv->widget)); */
+ /* @@fixme */
+ /* gnc_restore_window_size(SX_LIST_GCONF_SECTION, GTK_WINDOW(priv->widget)); */
- return priv->widget;
+ return priv->widget;
}
static void
gnc_plugin_page_sx_list_destroy_widget (GncPluginPage *plugin_page)
{
- GncPluginPageSxList *page;
- GncPluginPageSxListPrivate *priv;
+ GncPluginPageSxList *page;
+ GncPluginPageSxListPrivate *priv;
- page = GNC_PLUGIN_PAGE_SX_LIST (plugin_page);
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ page = GNC_PLUGIN_PAGE_SX_LIST (plugin_page);
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- if (priv->widget) {
- g_object_unref(G_OBJECT(priv->widget));
- priv->widget = NULL;
- }
+ if (priv->widget) {
+ g_object_unref(G_OBJECT(priv->widget));
+ priv->widget = NULL;
+ }
- if (priv->gnc_component_id) {
- gnc_unregister_gui_component(priv->gnc_component_id);
- priv->gnc_component_id = 0;
- }
+ if (priv->gnc_component_id) {
+ gnc_unregister_gui_component(priv->gnc_component_id);
+ priv->gnc_component_id = 0;
+ }
}
/**
@@ -435,19 +435,19 @@
GKeyFile *key_file,
const gchar *group_name)
{
- GncPluginPageSxList *page;
- GncPluginPageSxListPrivate *priv;
+ GncPluginPageSxList *page;
+ GncPluginPageSxListPrivate *priv;
- g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST(plugin_page));
- g_return_if_fail(key_file != NULL);
- g_return_if_fail(group_name != NULL);
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST(plugin_page));
+ g_return_if_fail(key_file != NULL);
+ g_return_if_fail(group_name != NULL);
- page = GNC_PLUGIN_PAGE_SX_LIST(plugin_page);
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ page = GNC_PLUGIN_PAGE_SX_LIST(plugin_page);
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
#if 0
- gnc_tree_view_account_save(GNC_TREE_VIEW_ACCOUNT(priv->tree_view),
- &priv->fd, key_file, group_name);
+ gnc_tree_view_account_save(GNC_TREE_VIEW_ACCOUNT(priv->tree_view),
+ &priv->fd, key_file, group_name);
#endif /* 0 */
}
@@ -464,24 +464,24 @@
GKeyFile *key_file,
const gchar *group_name)
{
- GncPluginPageSxList *page;
- GncPluginPageSxListPrivate *priv;
+ GncPluginPageSxList *page;
+ GncPluginPageSxListPrivate *priv;
- g_return_val_if_fail(key_file, NULL);
- g_return_val_if_fail(group_name, NULL);
+ g_return_val_if_fail(key_file, NULL);
+ g_return_val_if_fail(group_name, NULL);
- /* Create the new page. */
- page = GNC_PLUGIN_PAGE_SX_LIST(gnc_plugin_page_sx_list_new());
- priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ /* Create the new page. */
+ page = GNC_PLUGIN_PAGE_SX_LIST(gnc_plugin_page_sx_list_new());
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- /* Install it now so we can them manipulate the created widget */
- gnc_main_window_open_page(GNC_MAIN_WINDOW(window), GNC_PLUGIN_PAGE(page));
+ /* Install it now so we can them manipulate the created widget */
+ gnc_main_window_open_page(GNC_MAIN_WINDOW(window), GNC_PLUGIN_PAGE(page));
#if 0
- gnc_tree_view_account_restore(GNC_TREE_VIEW_ACCOUNT(priv->tree_view),
- &priv->fd, key_file, group_name);
+ gnc_tree_view_account_restore(GNC_TREE_VIEW_ACCOUNT(priv->tree_view),
+ &priv->fd, key_file, group_name);
#endif /* 0 */
- return GNC_PLUGIN_PAGE(page);
+ return GNC_PLUGIN_PAGE(page);
}
@@ -490,60 +490,60 @@
static SchedXaction*
_sx_for_path(gpointer data, gpointer user_data)
{
- GtkTreeIter iter;
- GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, (GtkTreePath*)data);
- return gnc_sx_list_tree_model_adapter_get_sx_instances(model, &iter)->sx;
+ GtkTreeIter iter;
+ GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, (GtkTreePath*)data);
+ return gnc_sx_list_tree_model_adapter_get_sx_instances(model, &iter)->sx;
}
static void
gnc_plugin_page_sx_list_cmd_new(GtkAction *action, GncPluginPageSxList *page)
{
- FreqSpec *fs;
- SchedXaction *new_sx;
- gboolean new_sx_flag = TRUE;
+ FreqSpec *fs;
+ SchedXaction *new_sx;
+ gboolean new_sx_flag = TRUE;
- new_sx = xaccSchedXactionMalloc(gnc_get_current_book());
- /* Give decent initial FreqSpec for SX */
- fs = xaccSchedXactionGetFreqSpec(new_sx);
- {
- GDate *now;
- now = g_date_new();
- g_date_set_time_t(now, time(NULL));
- xaccFreqSpecSetMonthly(fs, now, 1);
- xaccFreqSpecSetUIType(fs, UIFREQ_MONTHLY);
- g_date_free(now);
- }
- gnc_ui_scheduled_xaction_editor_dialog_create(new_sx, new_sx_flag);
+ new_sx = xaccSchedXactionMalloc(gnc_get_current_book());
+ /* Give decent initial FreqSpec for SX */
+ fs = xaccSchedXactionGetFreqSpec(new_sx);
+ {
+ GDate *now;
+ now = g_date_new();
+ g_date_set_time_t(now, time(NULL));
+ xaccFreqSpecSetMonthly(fs, now, 1);
+ xaccFreqSpecSetUIType(fs, UIFREQ_MONTHLY);
+ g_date_free(now);
+ }
+ gnc_ui_scheduled_xaction_editor_dialog_create(new_sx, new_sx_flag);
}
static void
_edit_sx(gpointer data, gpointer user_data)
{
- gnc_ui_scheduled_xaction_editor_dialog_create((SchedXaction*)data, FALSE);
+ gnc_ui_scheduled_xaction_editor_dialog_create((SchedXaction*)data, FALSE);
}
static void
gnc_plugin_page_sx_list_cmd_edit(GtkAction *action, GncPluginPageSxList *page)
{
- GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- GtkTreeSelection *selection;
- GList *selected_paths, *to_edit;
- GtkTreeModel *model;
+ GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ GtkTreeSelection *selection;
+ GList *selected_paths, *to_edit;
+ GtkTreeModel *model;
- selection = gtk_tree_view_get_selection(priv->tree_view);
- selected_paths = gtk_tree_selection_get_selected_rows(selection, &model);
- if (g_list_length(selected_paths) == 0)
- {
- g_warning("no selection edit.");
- return;
- }
+ selection = gtk_tree_view_get_selection(priv->tree_view);
+ selected_paths = gtk_tree_selection_get_selected_rows(selection, &model);
+ if (g_list_length(selected_paths) == 0)
+ {
+ g_warning("no selection edit.");
+ return;
+ }
- to_edit = gnc_g_list_map(selected_paths, (GncGMapFunc)_sx_for_path, model);
- g_list_foreach(to_edit, (GFunc)_edit_sx, NULL);
- g_list_free(to_edit);
- g_list_foreach(selected_paths, (GFunc)gtk_tree_path_free, NULL);
- g_list_free(selected_paths);
+ to_edit = gnc_g_list_map(selected_paths, (GncGMapFunc)_sx_for_path, model);
+ g_list_foreach(to_edit, (GFunc)_edit_sx, NULL);
+ g_list_free(to_edit);
+ g_list_foreach(selected_paths, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selected_paths);
}
static void
@@ -552,55 +552,55 @@
GtkTreeViewColumn *column,
gpointer user_data)
{
- GncPluginPageSxList *page = GNC_PLUGIN_PAGE_SX_LIST(user_data);
- GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- SchedXaction *sx = _sx_for_path(path, priv->tree_model);
- gnc_ui_scheduled_xaction_editor_dialog_create(sx, FALSE);
+ GncPluginPageSxList *page = GNC_PLUGIN_PAGE_SX_LIST(user_data);
+ GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ SchedXaction *sx = _sx_for_path(path, priv->tree_model);
+ gnc_ui_scheduled_xaction_editor_dialog_create(sx, FALSE);
}
static void
_destroy_sx(gpointer data, gpointer user_data)
{
- SchedXactions *sxes;
- SchedXaction *sx = (SchedXaction*)data;
- GNCBook *book;
- book = gnc_get_current_book();
- sxes = gnc_book_get_schedxactions(book);
- gnc_sxes_del_sx(sxes, sx);
- xaccSchedXactionFree(sx);
+ SchedXactions *sxes;
+ SchedXaction *sx = (SchedXaction*)data;
+ GNCBook *book;
+ book = gnc_get_current_book();
+ sxes = gnc_book_get_schedxactions(book);
+ gnc_sxes_del_sx(sxes, sx);
+ xaccSchedXactionFree(sx);
}
static void
gnc_plugin_page_sx_list_cmd_delete(GtkAction *action, GncPluginPageSxList *page)
{
- GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
- GtkTreeSelection *selection;
- GList *selected_paths, *to_delete = NULL;
- GtkTreeModel *model;
+ GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
+ GtkTreeSelection *selection;
+ GList *selected_paths, *to_delete = NULL;
+ GtkTreeModel *model;
- /* @@fixme -- add (suppressible?) confirmation dialog */
+ /* @@fixme -- add (suppressible?) confirmation dialog */
- selection = gtk_tree_view_get_selection(priv->tree_view);
- selected_paths = gtk_tree_selection_get_selected_rows(selection, &model);
- if (g_list_length(selected_paths) == 0)
- {
- g_warning("no selection for delete.");
- return;
- }
+ selection = gtk_tree_view_get_selection(priv->tree_view);
+ selected_paths = gtk_tree_selection_get_selected_rows(selection, &model);
+ if (g_list_length(selected_paths) == 0)
+ {
+ g_warning("no selection for delete.");
+ return;
+ }
- to_delete = gnc_g_list_map(selected_paths, (GncGMapFunc)_sx_for_path, model);
- {
- GList *list;
- for (list = to_delete; list != NULL; list = list->next)
- {
- g_debug("to-delete [%s]\n", xaccSchedXactionGetName((SchedXaction*)list->data));
- }
- }
- g_list_foreach(to_delete, (GFunc)_destroy_sx, NULL);
- g_list_free(to_delete);
- g_list_foreach(selected_paths, (GFunc)gtk_tree_path_free, NULL);
- g_list_free(selected_paths);
+ to_delete = gnc_g_list_map(selected_paths, (GncGMapFunc)_sx_for_path, model);
+ {
+ GList *list;
+ for (list = to_delete; list != NULL; list = list->next)
+ {
+ g_debug("to-delete [%s]\n", xaccSchedXactionGetName((SchedXaction*)list->data));
+ }
+ }
+ g_list_foreach(to_delete, (GFunc)_destroy_sx, NULL);
+ g_list_free(to_delete);
+ g_list_foreach(selected_paths, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selected_paths);
}
/** @} */
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.h
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.h 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.h 2007-02-19 19:01:47 UTC (rev 15625)
@@ -53,12 +53,12 @@
/* typedefs & structures */
typedef struct
{
- GncPluginPage gnc_plugin_page;
+ GncPluginPage gnc_plugin_page;
} GncPluginPageSxList;
typedef struct
{
- GncPluginPageClass gnc_plugin_page;
+ GncPluginPageClass gnc_plugin_page;
} GncPluginPageSxListClass;
/* function prototypes */
Modified: gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -29,18 +29,18 @@
struct _GncSxListTreeModelAdapter
{
- GObject parent;
+ GObject parent;
- /* protected */
- gboolean disposed;
- GncSxInstanceModel *instances;
- GtkTreeStore *orig;
- GtkTreeModelSort *real;
+ /* protected */
+ gboolean disposed;
+ GncSxInstanceModel *instances;
+ GtkTreeStore *orig;
+ GtkTreeModelSort *real;
};
struct _GncSxListTreeModelAdapterClass
{
- GObjectClass parent;
+ GObjectClass parent;
};
static GObjectClass *parent_class = NULL;
@@ -57,71 +57,71 @@
GType
gnc_sx_list_tree_model_adapter_get_type(void)
{
- static GType type = 0;
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof (GncSxListTreeModelAdapterClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)gnc_sx_list_tree_model_adapter_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GncSxListTreeModelAdapter),
- 0, /* n_preallocs */
- (GInstanceInitFunc)gnc_sx_list_tree_model_adapter_init /* instance_init */
- };
- static const GInterfaceInfo itree_model_info = {
- (GInterfaceInitFunc) gsltma_tree_model_interface_init, /* interface_init */
- NULL, /* interface_finalize */
- NULL /* interface_data */
- };
- static const GInterfaceInfo itree_sortable_info = {
- (GInterfaceInitFunc) gsltma_tree_sortable_interface_init, /* interface_init */
- NULL, /* interface_finalize */
- NULL /* interface_data */
- };
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (GncSxListTreeModelAdapterClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)gnc_sx_list_tree_model_adapter_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (GncSxListTreeModelAdapter),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc)gnc_sx_list_tree_model_adapter_init /* instance_init */
+ };
+ static const GInterfaceInfo itree_model_info = {
+ (GInterfaceInitFunc) gsltma_tree_model_interface_init, /* interface_init */
+ NULL, /* interface_finalize */
+ NULL /* interface_data */
+ };
+ static const GInterfaceInfo itree_sortable_info = {
+ (GInterfaceInitFunc) gsltma_tree_sortable_interface_init, /* interface_init */
+ NULL, /* interface_finalize */
+ NULL /* interface_data */
+ };
- type = g_type_register_static (G_TYPE_OBJECT,
- "GncSxListTreeModelAdapterType",
- &info, 0);
- g_type_add_interface_static(type,
- GTK_TYPE_TREE_MODEL,
- &itree_model_info);
- g_type_add_interface_static(type,
- GTK_TYPE_TREE_SORTABLE,
- &itree_sortable_info);
- }
- return type;
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "GncSxListTreeModelAdapterType",
+ &info, 0);
+ g_type_add_interface_static(type,
+ GTK_TYPE_TREE_MODEL,
+ &itree_model_info);
+ g_type_add_interface_static(type,
+ GTK_TYPE_TREE_SORTABLE,
+ &itree_sortable_info);
+ }
+ return type;
}
static void
gnc_sx_list_tree_model_adapter_class_init(GncSxListTreeModelAdapterClass *klass)
{
- GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
- parent_class = g_type_class_peek_parent(klass);
+ parent_class = g_type_class_peek_parent(klass);
- obj_class->dispose = gnc_sx_list_tree_model_adapter_dispose;
- obj_class->finalize = gnc_sx_list_tree_model_adapter_finalize;
+ obj_class->dispose = gnc_sx_list_tree_model_adapter_dispose;
+ obj_class->finalize = gnc_sx_list_tree_model_adapter_finalize;
}
static GtkTreeModelFlags
gsltma_get_flags(GtkTreeModel *tree_model)
{
- return gtk_tree_model_get_flags(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real));
+ return gtk_tree_model_get_flags(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real));
}
static gint
gsltma_get_n_columns(GtkTreeModel *tree_model)
{
- return gtk_tree_model_get_n_columns(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real));
+ return gtk_tree_model_get_n_columns(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real));
}
static GType
gsltma_get_column_type(GtkTreeModel *tree_model, gint index)
{
- return gtk_tree_model_get_column_type(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), index);
+ return gtk_tree_model_get_column_type(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), index);
}
static gboolean
@@ -129,14 +129,14 @@
GtkTreeIter *iter,
GtkTreePath *path)
{
- return gtk_tree_model_get_iter(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, path);
+ return gtk_tree_model_get_iter(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, path);
}
static GtkTreePath*
gsltma_get_path(GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- return gtk_tree_model_get_path(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_get_path(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static void
@@ -145,14 +145,14 @@
gint column,
GValue *value)
{
- gtk_tree_model_get_value(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, column, value);
+ gtk_tree_model_get_value(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, column, value);
}
static gboolean
gsltma_iter_next(GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- return gtk_tree_model_iter_next(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_iter_next(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static gboolean
@@ -160,21 +160,21 @@
GtkTreeIter *iter,
GtkTreeIter *parent)
{
- return gtk_tree_model_iter_children(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent);
+ return gtk_tree_model_iter_children(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent);
}
static gboolean
gsltma_iter_has_child(GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- return gtk_tree_model_iter_has_child(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_iter_has_child(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static gint
gsltma_iter_n_children(GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- return gtk_tree_model_iter_n_children(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ return gtk_tree_model_iter_n_children(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static gboolean
@@ -183,7 +183,7 @@
GtkTreeIter *parent,
gint n)
{
- return gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent, n);
+ return gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, parent, n);
}
static gboolean
@@ -191,41 +191,41 @@
GtkTreeIter *iter,
GtkTreeIter *child)
{
- return gtk_tree_model_iter_parent(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, child);
+ return gtk_tree_model_iter_parent(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter, child);
}
static void
gsltma_ref_node(GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- gtk_tree_model_ref_node(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ gtk_tree_model_ref_node(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static void
gsltma_unref_node(GtkTreeModel *tree_model,
GtkTreeIter *iter)
{
- gtk_tree_model_unref_node(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
+ gtk_tree_model_unref_node(GTK_TREE_MODEL(GNC_SX_LIST_TREE_MODEL_ADAPTER(tree_model)->real), iter);
}
static void
gsltma_tree_model_interface_init(gpointer g_iface, gpointer iface_data)
{
- GtkTreeModelIface *tree_model = (GtkTreeModelIface*)g_iface;
- tree_model->get_flags = gsltma_get_flags;
- tree_model->get_n_columns = gsltma_get_n_columns;
- tree_model->get_column_type = gsltma_get_column_type;
- tree_model->get_iter = gsltma_get_iter;
- tree_model->get_path = gsltma_get_path;
- tree_model->get_value = gsltma_get_value;
- tree_model->iter_next = gsltma_iter_next;
- tree_model->iter_children = gsltma_iter_children;
- tree_model->iter_has_child = gsltma_iter_has_child;
- tree_model->iter_n_children = gsltma_iter_n_children;
- tree_model->iter_nth_child = gsltma_iter_nth_child;
- tree_model->iter_parent = gsltma_iter_parent;
- tree_model->ref_node = gsltma_ref_node;
- tree_model->unref_node = gsltma_unref_node;
+ GtkTreeModelIface *tree_model = (GtkTreeModelIface*)g_iface;
+ tree_model->get_flags = gsltma_get_flags;
+ tree_model->get_n_columns = gsltma_get_n_columns;
+ tree_model->get_column_type = gsltma_get_column_type;
+ tree_model->get_iter = gsltma_get_iter;
+ tree_model->get_path = gsltma_get_path;
+ tree_model->get_value = gsltma_get_value;
+ tree_model->iter_next = gsltma_iter_next;
+ tree_model->iter_children = gsltma_iter_children;
+ tree_model->iter_has_child = gsltma_iter_has_child;
+ tree_model->iter_n_children = gsltma_iter_n_children;
+ tree_model->iter_nth_child = gsltma_iter_nth_child;
+ tree_model->iter_parent = gsltma_iter_parent;
+ tree_model->ref_node = gsltma_ref_node;
+ tree_model->unref_node = gsltma_unref_node;
}
static gboolean
@@ -233,9 +233,9 @@
gint *sort_column_id,
GtkSortType *order)
{
- return gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
- sort_column_id,
- order);
+ return gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
+ sort_column_id,
+ order);
}
static void
@@ -243,9 +243,9 @@
gint sort_column_id,
GtkSortType order)
{
- gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
- sort_column_id,
- order);
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
+ sort_column_id,
+ order);
}
static void
@@ -255,11 +255,11 @@
gpointer data,
GtkDestroyNotify destroy)
{
- gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
- sort_column_id,
- func,
- data,
- destroy);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
+ sort_column_id,
+ func,
+ data,
+ destroy);
}
static void
@@ -268,30 +268,30 @@
gpointer data,
GtkDestroyNotify destroy)
{
- gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
- func, data, destroy);
+ gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real),
+ func, data, destroy);
}
static gboolean
gsltma_has_default_sort_func(GtkTreeSortable *sortable)
{
- return gtk_tree_sortable_has_default_sort_func(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real));
+ return gtk_tree_sortable_has_default_sort_func(GTK_TREE_SORTABLE(GNC_SX_LIST_TREE_MODEL_ADAPTER(sortable)->real));
}
static void
gsltma_tree_sortable_interface_init(gpointer g_iface, gpointer iface_data)
{
- GtkTreeSortableIface *tree_sortable = (GtkTreeSortableIface*)g_iface;
- tree_sortable->get_sort_column_id = gsltma_get_sort_column_id;
- tree_sortable->set_sort_column_id = gsltma_set_sort_column_id;
- tree_sortable->set_sort_func = gsltma_set_sort_func;
- tree_sortable->set_default_sort_func = gsltma_set_default_sort_func;
- tree_sortable->has_default_sort_func = gsltma_has_default_sort_func;
- tree_sortable->get_sort_column_id = gsltma_get_sort_column_id;
- tree_sortable->set_sort_column_id = gsltma_set_sort_column_id;
- tree_sortable->set_sort_func = gsltma_set_sort_func;
- tree_sortable->set_default_sort_func = gsltma_set_default_sort_func;
- tree_sortable->has_default_sort_func = gsltma_has_default_sort_func;
+ GtkTreeSortableIface *tree_sortable = (GtkTreeSortableIface*)g_iface;
+ tree_sortable->get_sort_column_id = gsltma_get_sort_column_id;
+ tree_sortable->set_sort_column_id = gsltma_set_sort_column_id;
+ tree_sortable->set_sort_func = gsltma_set_sort_func;
+ tree_sortable->set_default_sort_func = gsltma_set_default_sort_func;
+ tree_sortable->has_default_sort_func = gsltma_has_default_sort_func;
+ tree_sortable->get_sort_column_id = gsltma_get_sort_column_id;
+ tree_sortable->set_sort_column_id = gsltma_set_sort_column_id;
+ tree_sortable->set_sort_func = gsltma_set_sort_func;
+ tree_sortable->set_default_sort_func = gsltma_set_default_sort_func;
+ tree_sortable->has_default_sort_func = gsltma_has_default_sort_func;
}
static void
@@ -300,7 +300,7 @@
GtkTreeIter *arg2,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-changed", arg1, arg2);
+ g_signal_emit_by_name(user_data, "row-changed", arg1, arg2);
}
static void
@@ -308,7 +308,7 @@
GtkTreePath *arg1,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-deleted", arg1);
+ g_signal_emit_by_name(user_data, "row-deleted", arg1);
}
static void
@@ -317,7 +317,7 @@
GtkTreeIter *arg2,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-has-child-toggled", arg1, arg2);
+ g_signal_emit_by_name(user_data, "row-has-child-toggled", arg1, arg2);
}
static void
@@ -326,7 +326,7 @@
GtkTreeIter *arg2,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "row-inserted", arg1, arg2);
+ g_signal_emit_by_name(user_data, "row-inserted", arg1, arg2);
}
static void
@@ -336,281 +336,281 @@
gpointer arg3,
gpointer user_data)
{
- g_signal_emit_by_name(user_data, "rows-reordered", arg1, arg2, arg3);
+ g_signal_emit_by_name(user_data, "rows-reordered", arg1, arg2, arg3);
}
static void
gsltma_proxy_sort_column_changed(GtkTreeSortable *sortable, gpointer user_data)
{
- g_signal_emit_by_name(user_data, "sort-column-changed");
+ g_signal_emit_by_name(user_data, "sort-column-changed");
}
static gint
_name_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
{
- gint rtn;
- GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- GncSxInstances *a_inst, *b_inst;
- gchar *a_caseless, *b_caseless;
+ gint rtn;
+ GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ GncSxInstances *a_inst, *b_inst;
+ gchar *a_caseless, *b_caseless;
- a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
- b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
+ a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
+ b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
- if (a_inst == NULL && b_inst == NULL) return 0;
- if (a_inst == NULL) return 1;
- if (b_inst == NULL) return -1;
+ if (a_inst == NULL && b_inst == NULL) return 0;
+ if (a_inst == NULL) return 1;
+ if (b_inst == NULL) return -1;
- a_caseless = g_utf8_casefold(xaccSchedXactionGetName(a_inst->sx), -1);
- b_caseless = g_utf8_casefold(xaccSchedXactionGetName(b_inst->sx), -1);
- rtn = safe_strcmp(a_caseless, b_caseless);
- g_free(a_caseless);
- g_free(b_caseless);
+ a_caseless = g_utf8_casefold(xaccSchedXactionGetName(a_inst->sx), -1);
+ b_caseless = g_utf8_casefold(xaccSchedXactionGetName(b_inst->sx), -1);
+ rtn = safe_strcmp(a_caseless, b_caseless);
+ g_free(a_caseless);
+ g_free(b_caseless);
- return rtn;
+ return rtn;
}
static gint
_freq_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
{
- GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- GncSxInstances *a_inst, *b_inst;
+ GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ GncSxInstances *a_inst, *b_inst;
- a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
- b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
+ a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
+ b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
- if (a_inst == NULL && b_inst == NULL) return 0;
- if (a_inst == NULL) return 1;
- if (b_inst == NULL) return -1;
+ if (a_inst == NULL && b_inst == NULL) return 0;
+ if (a_inst == NULL) return 1;
+ if (b_inst == NULL) return -1;
- return gnc_freq_spec_compare(xaccSchedXactionGetFreqSpec(a_inst->sx),
- xaccSchedXactionGetFreqSpec(b_inst->sx));
+ return gnc_freq_spec_compare(xaccSchedXactionGetFreqSpec(a_inst->sx),
+ xaccSchedXactionGetFreqSpec(b_inst->sx));
}
static gint
_safe_invalidable_date_compare(GDate *a, GDate *b)
{
- if (!g_date_valid(a) && !g_date_valid(b))
- {
- return 0;
- }
- if (!g_date_valid(a))
- {
- return 1;
- }
- if (!g_date_valid(b))
- {
- return -1;
- }
- return g_date_compare(a, b);
+ if (!g_date_valid(a) && !g_date_valid(b))
+ {
+ return 0;
+ }
+ if (!g_date_valid(a))
+ {
+ return 1;
+ }
+ if (!g_date_valid(b))
+ {
+ return -1;
+ }
+ return g_date_compare(a, b);
}
static gint
_last_occur_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
{
- GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- GncSxInstances *a_inst, *b_inst;
+ GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ GncSxInstances *a_inst, *b_inst;
- a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
- b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
+ a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
+ b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
- return _safe_invalidable_date_compare(xaccSchedXactionGetLastOccurDate(a_inst->sx),
- xaccSchedXactionGetLastOccurDate(b_inst->sx));
+ return _safe_invalidable_date_compare(xaccSchedXactionGetLastOccurDate(a_inst->sx),
+ xaccSchedXactionGetLastOccurDate(b_inst->sx));
}
static gint
_next_occur_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
{
- GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- GncSxInstances *a_inst, *b_inst;
+ GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ GncSxInstances *a_inst, *b_inst;
- a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
- b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
+ a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
+ b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
- return _safe_invalidable_date_compare(&a_inst->next_instance_date,
- &b_inst->next_instance_date);
+ return _safe_invalidable_date_compare(&a_inst->next_instance_date,
+ &b_inst->next_instance_date);
}
static gint
_enabled_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
{
- GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- GncSxInstances *a_inst, *b_inst;
+ GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ GncSxInstances *a_inst, *b_inst;
- a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
- b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
+ a_inst = gsltma_get_sx_instances_from_orig_iter(adapter, a);
+ b_inst = gsltma_get_sx_instances_from_orig_iter(adapter, b);
- if (xaccSchedXactionGetEnabled(a_inst->sx) && !xaccSchedXactionGetEnabled(b_inst->sx)) return 1;
- if (!xaccSchedXactionGetEnabled(a_inst->sx) && xaccSchedXactionGetEnabled(b_inst->sx)) return -1;
- return 0;
+ if (xaccSchedXactionGetEnabled(a_inst->sx) && !xaccSchedXactionGetEnabled(b_inst->sx)) return 1;
+ if (!xaccSchedXactionGetEnabled(a_inst->sx) && xaccSchedXactionGetEnabled(b_inst->sx)) return -1;
+ return 0;
}
static void
gnc_sx_list_tree_model_adapter_init(GTypeInstance *instance, gpointer klass)
{
- GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(instance);
- adapter->orig = gtk_tree_store_new(5, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
- adapter->real = GTK_TREE_MODEL_SORT(gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(adapter->orig)));
+ GncSxListTreeModelAdapter *adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(instance);
+ adapter->orig = gtk_tree_store_new(5, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+ adapter->real = GTK_TREE_MODEL_SORT(gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(adapter->orig)));
- // setup sorting
- gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_NAME, _name_comparator, adapter, NULL);
- gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_ENABLED, _enabled_comparator, adapter, NULL);
- gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_FREQUENCY, _freq_comparator, adapter, NULL);
- gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_LAST_OCCUR, _last_occur_comparator, adapter, NULL);
- gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_NEXT_OCCUR, _next_occur_comparator, adapter, NULL);
- gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_NEXT_OCCUR, GTK_SORT_ASCENDING);
+ // setup sorting
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_NAME, _name_comparator, adapter, NULL);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_ENABLED, _enabled_comparator, adapter, NULL);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_FREQUENCY, _freq_comparator, adapter, NULL);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_LAST_OCCUR, _last_occur_comparator, adapter, NULL);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_NEXT_OCCUR, _next_occur_comparator, adapter, NULL);
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(adapter->real), SXLTMA_COL_NEXT_OCCUR, GTK_SORT_ASCENDING);
- g_signal_connect(adapter->real, "row-changed", G_CALLBACK(gsltma_proxy_row_changed), adapter);
- g_signal_connect(adapter->real, "row-deleted", G_CALLBACK(gsltma_proxy_row_deleted), adapter);
- g_signal_connect(adapter->real, "row-has-child-toggled", G_CALLBACK(gsltma_proxy_row_has_child_toggled), adapter);
- g_signal_connect(adapter->real, "row-inserted", G_CALLBACK(gsltma_proxy_row_inserted), adapter);
- g_signal_connect(adapter->real, "rows-reordered", G_CALLBACK(gsltma_proxy_rows_reordered), adapter);
+ g_signal_connect(adapter->real, "row-changed", G_CALLBACK(gsltma_proxy_row_changed), adapter);
+ g_signal_connect(adapter->real, "row-deleted", G_CALLBACK(gsltma_proxy_row_deleted), adapter);
+ g_signal_connect(adapter->real, "row-has-child-toggled", G_CALLBACK(gsltma_proxy_row_has_child_toggled), adapter);
+ g_signal_connect(adapter->real, "row-inserted", G_CALLBACK(gsltma_proxy_row_inserted), adapter);
+ g_signal_connect(adapter->real, "rows-reordered", G_CALLBACK(gsltma_proxy_rows_reordered), adapter);
- g_signal_connect(adapter->real, "sort-column-changed", G_CALLBACK(gsltma_proxy_sort_column_changed), adapter);
+ g_signal_connect(adapter->real, "sort-column-changed", G_CALLBACK(gsltma_proxy_sort_column_changed), adapter);
}
static void
_format_conditional_date(GDate *date, char *date_buf, int buf_max_length)
{
- if (date == NULL || !g_date_valid(date))
- {
- g_stpcpy(date_buf, "never");
- }
- else
- {
- qof_print_gdate(date_buf, buf_max_length, date);
- }
+ if (date == NULL || !g_date_valid(date))
+ {
+ g_stpcpy(date_buf, "never");
+ }
+ else
+ {
+ qof_print_gdate(date_buf, buf_max_length, date);
+ }
}
static void
gsltma_populate_tree_store(GncSxListTreeModelAdapter *model)
{
- GtkTreeIter iter;
- GList *list;
+ GtkTreeIter iter;
+ GList *list;
- for (list = model->instances->sx_instance_list; list != NULL; list = list->next)
- {
- GncSxInstances *instances = (GncSxInstances*)list->data;
- gchar *frequency_str;
- char last_occur_date_buf[MAX_DATE_LENGTH+1];
- char next_occur_date_buf[MAX_DATE_LENGTH+1];
+ for (list = model->instances->sx_instance_list; list != NULL; list = list->next)
+ {
+ GncSxInstances *instances = (GncSxInstances*)list->data;
+ gchar *frequency_str;
+ char last_occur_date_buf[MAX_DATE_LENGTH+1];
+ char next_occur_date_buf[MAX_DATE_LENGTH+1];
- frequency_str = recurrenceListToString(gnc_sx_get_schedule(instances->sx));
+ frequency_str = recurrenceListToString(gnc_sx_get_schedule(instances->sx));
- _format_conditional_date(xaccSchedXactionGetLastOccurDate(instances->sx),
- last_occur_date_buf, MAX_DATE_LENGTH);
- _format_conditional_date(&instances->next_instance_date,
- next_occur_date_buf, MAX_DATE_LENGTH);
+ _format_conditional_date(xaccSchedXactionGetLastOccurDate(instances->sx),
+ last_occur_date_buf, MAX_DATE_LENGTH);
+ _format_conditional_date(&instances->next_instance_date,
+ next_occur_date_buf, MAX_DATE_LENGTH);
- gtk_tree_store_append(model->orig, &iter, NULL);
- gtk_tree_store_set(model->orig, &iter,
- SXLTMA_COL_NAME, xaccSchedXactionGetName(instances->sx),
- SXLTMA_COL_ENABLED, xaccSchedXactionGetEnabled(instances->sx),
- SXLTMA_COL_FREQUENCY, frequency_str,
- SXLTMA_COL_LAST_OCCUR, last_occur_date_buf,
- SXLTMA_COL_NEXT_OCCUR, next_occur_date_buf,
- -1);
- g_free(frequency_str);
- }
+ gtk_tree_store_append(model->orig, &iter, NULL);
+ gtk_tree_store_set(model->orig, &iter,
+ SXLTMA_COL_NAME, xaccSchedXactionGetName(instances->sx),
+ SXLTMA_COL_ENABLED, xaccSchedXactionGetEnabled(instances->sx),
+ SXLTMA_COL_FREQUENCY, frequency_str,
+ SXLTMA_COL_LAST_OCCUR, last_occur_date_buf,
+ SXLTMA_COL_NEXT_OCCUR, next_occur_date_buf,
+ -1);
+ g_free(frequency_str);
+ }
}
static void
gsltma_added_cb(GncSxInstanceModel *instances, SchedXaction *sx_added, gpointer user_data)
{
- GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- gtk_tree_store_clear(model->orig);
- gsltma_populate_tree_store(model);
+ GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ gtk_tree_store_clear(model->orig);
+ gsltma_populate_tree_store(model);
}
static void
gsltma_updated_cb(GncSxInstanceModel *instances, SchedXaction *sx_updated, gpointer user_data)
{
- GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- gnc_sx_instance_model_update_sx_instances(instances, sx_updated);
- gtk_tree_store_clear(model->orig);
- gsltma_populate_tree_store(model);
+ GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ gnc_sx_instance_model_update_sx_instances(instances, sx_updated);
+ gtk_tree_store_clear(model->orig);
+ gsltma_populate_tree_store(model);
}
static void
gsltma_removing_cb(GncSxInstanceModel *instances, SchedXaction *sx_removing, gpointer user_data)
{
- GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
- gnc_sx_instance_model_remove_sx_instances(instances, sx_removing);
- gtk_tree_store_clear(model->orig);
- gsltma_populate_tree_store(model);
+ GncSxListTreeModelAdapter *model = GNC_SX_LIST_TREE_MODEL_ADAPTER(user_data);
+ gnc_sx_instance_model_remove_sx_instances(instances, sx_removing);
+ gtk_tree_store_clear(model->orig);
+ gsltma_populate_tree_store(model);
}
GncSxListTreeModelAdapter*
gnc_sx_list_tree_model_adapter_new(GncSxInstanceModel *instances)
{
- GncSxListTreeModelAdapter *rtn;
+ GncSxListTreeModelAdapter *rtn;
- rtn = GNC_SX_LIST_TREE_MODEL_ADAPTER(g_object_new(GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, NULL));
- rtn->instances = instances;
- g_object_ref(G_OBJECT(rtn->instances));
+ rtn = GNC_SX_LIST_TREE_MODEL_ADAPTER(g_object_new(GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, NULL));
+ rtn->instances = instances;
+ g_object_ref(G_OBJECT(rtn->instances));
- gsltma_populate_tree_store(rtn);
+ gsltma_populate_tree_store(rtn);
- g_signal_connect(G_OBJECT(rtn->instances), "added", (GCallback)gsltma_added_cb, (gpointer)rtn);
- g_signal_connect(G_OBJECT(rtn->instances), "updated", (GCallback)gsltma_updated_cb, (gpointer)rtn);
- g_signal_connect(G_OBJECT(rtn->instances), "removing", (GCallback)gsltma_removing_cb, (gpointer)rtn);
+ g_signal_connect(G_OBJECT(rtn->instances), "added", (GCallback)gsltma_added_cb, (gpointer)rtn);
+ g_signal_connect(G_OBJECT(rtn->instances), "updated", (GCallback)gsltma_updated_cb, (gpointer)rtn);
+ g_signal_connect(G_OBJECT(rtn->instances), "removing", (GCallback)gsltma_removing_cb, (gpointer)rtn);
- return rtn;
+ return rtn;
}
GncSxInstances*
gsltma_get_sx_instances_from_orig_iter(GncSxListTreeModelAdapter *model, GtkTreeIter *orig_iter)
{
- GtkTreePath *path;
- gint *indices;
- gint index;
+ GtkTreePath *path;
+ gint *indices;
+ gint index;
- path = gtk_tree_model_get_path(GTK_TREE_MODEL(model->orig), orig_iter);
- if (gtk_tree_path_get_depth(path) > 1)
- {
- gtk_tree_path_free(path);
- return NULL;
- }
- indices = gtk_tree_path_get_indices(path);
- index = indices[0];
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(model->orig), orig_iter);
+ if (gtk_tree_path_get_depth(path) > 1)
+ {
+ gtk_tree_path_free(path);
+ return NULL;
+ }
+ indices = gtk_tree_path_get_indices(path);
+ index = indices[0];
- gtk_tree_path_free(path);
- return (GncSxInstances*)g_list_nth_data(model->instances->sx_instance_list, index);
+ gtk_tree_path_free(path);
+ return (GncSxInstances*)g_list_nth_data(model->instances->sx_instance_list, index);
}
GncSxInstances*
gnc_sx_list_tree_model_adapter_get_sx_instances(GncSxListTreeModelAdapter *model, GtkTreeIter *sort_iter)
{
- GtkTreeIter translated_iter;
- gtk_tree_model_sort_convert_iter_to_child_iter(model->real,
- &translated_iter,
- sort_iter);
- return gsltma_get_sx_instances_from_orig_iter(model, &translated_iter);
+ GtkTreeIter translated_iter;
+ gtk_tree_model_sort_convert_iter_to_child_iter(model->real,
+ &translated_iter,
+ sort_iter);
+ return gsltma_get_sx_instances_from_orig_iter(model, &translated_iter);
}
static void
gnc_sx_list_tree_model_adapter_dispose(GObject *obj)
{
- GncSxListTreeModelAdapter *adapter;
+ GncSxListTreeModelAdapter *adapter;
- g_return_if_fail(obj != NULL);
- adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(obj);
+ g_return_if_fail(obj != NULL);
+ adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(obj);
- if (adapter->disposed) return;
- adapter->disposed = TRUE;
+ if (adapter->disposed) return;
+ adapter->disposed = TRUE;
- g_object_unref(G_OBJECT(adapter->instances));
- adapter->instances = NULL;
- g_object_unref(G_OBJECT(adapter->real));
- adapter->real = NULL;
- g_object_unref(G_OBJECT(adapter->orig));
- adapter->orig = NULL;
+ g_object_unref(G_OBJECT(adapter->instances));
+ adapter->instances = NULL;
+ g_object_unref(G_OBJECT(adapter->real));
+ adapter->real = NULL;
+ g_object_unref(G_OBJECT(adapter->orig));
+ adapter->orig = NULL;
- G_OBJECT_CLASS(parent_class)->dispose(obj);
+ G_OBJECT_CLASS(parent_class)->dispose(obj);
}
static void
gnc_sx_list_tree_model_adapter_finalize(GObject *obj)
{
- g_return_if_fail(obj != NULL);
- G_OBJECT_CLASS(parent_class)->finalize(obj);
+ g_return_if_fail(obj != NULL);
+ G_OBJECT_CLASS(parent_class)->finalize(obj);
}
Modified: gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.h
===================================================================
--- gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.h 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.h 2007-02-19 19:01:47 UTC (rev 15625)
@@ -43,11 +43,11 @@
// model columns
enum {
- SXLTMA_COL_NAME = 0,
- SXLTMA_COL_ENABLED,
- SXLTMA_COL_FREQUENCY,
- SXLTMA_COL_LAST_OCCUR,
- SXLTMA_COL_NEXT_OCCUR
+ SXLTMA_COL_NAME = 0,
+ SXLTMA_COL_ENABLED,
+ SXLTMA_COL_FREQUENCY,
+ SXLTMA_COL_LAST_OCCUR,
+ SXLTMA_COL_NEXT_OCCUR
};
GType gnc_sx_list_tree_model_adapter_get_type(void);
Modified: gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -33,100 +33,100 @@
static void
gnc_dense_cal_model_base_init(gpointer g_class)
{
- static gboolean initialized = FALSE;
+ static gboolean initialized = FALSE;
- if (!initialized)
- {
- gnc_dense_cal_model_signals[GDCM_ADDED]
- = g_signal_new("added",
- G_TYPE_FROM_CLASS(g_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
- 0 /* default offset */,
- NULL /* accumulator */,
- NULL /* accum. data */,
- g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE /* return */,
- 1 /* n_params */,
- G_TYPE_UINT /* param types */
- );
+ if (!initialized)
+ {
+ gnc_dense_cal_model_signals[GDCM_ADDED]
+ = g_signal_new("added",
+ G_TYPE_FROM_CLASS(g_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+ 0 /* default offset */,
+ NULL /* accumulator */,
+ NULL /* accum. data */,
+ g_cclosure_marshal_VOID__UINT,
+ G_TYPE_NONE /* return */,
+ 1 /* n_params */,
+ G_TYPE_UINT /* param types */
+ );
- gnc_dense_cal_model_signals[GDCM_UPDATE]
- = g_signal_new("update",
- G_TYPE_FROM_CLASS(g_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
- 0 /* default offset */,
- NULL /* accumulator */,
- NULL /* accum. data */,
- g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE /* return */,
- 1 /* n_params */,
- G_TYPE_UINT /* param types */
- );
+ gnc_dense_cal_model_signals[GDCM_UPDATE]
+ = g_signal_new("update",
+ G_TYPE_FROM_CLASS(g_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+ 0 /* default offset */,
+ NULL /* accumulator */,
+ NULL /* accum. data */,
+ g_cclosure_marshal_VOID__UINT,
+ G_TYPE_NONE /* return */,
+ 1 /* n_params */,
+ G_TYPE_UINT /* param types */
+ );
- gnc_dense_cal_model_signals[GDCM_REMOVE]
- = g_signal_new("removing",
- G_TYPE_FROM_CLASS(g_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
- 0 /* default offset */,
- NULL /* accumulator */,
- NULL /* accum. data */,
- g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE /* return */,
- 1 /* n_params */,
- G_TYPE_UINT /* param types */
- );
+ gnc_dense_cal_model_signals[GDCM_REMOVE]
+ = g_signal_new("removing",
+ G_TYPE_FROM_CLASS(g_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+ 0 /* default offset */,
+ NULL /* accumulator */,
+ NULL /* accum. data */,
+ g_cclosure_marshal_VOID__UINT,
+ G_TYPE_NONE /* return */,
+ 1 /* n_params */,
+ G_TYPE_UINT /* param types */
+ );
- initialized = TRUE;
- }
+ initialized = TRUE;
+ }
}
GType
gnc_dense_cal_model_get_type(void)
{
- static GType type = 0;
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof(GncDenseCalModelIface),
- gnc_dense_cal_model_base_init, /* base_init */
- NULL, /* base_finalize */
- NULL, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- 0,
- 0, /* n_preallocs */
- NULL /* instance_init */
- };
- type = g_type_register_static(G_TYPE_INTERFACE, "GncDenseCalModel", &info, 0);
- }
- return type;
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof(GncDenseCalModelIface),
+ gnc_dense_cal_model_base_init, /* base_init */
+ NULL, /* base_finalize */
+ NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ 0,
+ 0, /* n_preallocs */
+ NULL /* instance_init */
+ };
+ type = g_type_register_static(G_TYPE_INTERFACE, "GncDenseCalModel", &info, 0);
+ }
+ return type;
}
GList*
gnc_dense_cal_model_get_contained(GncDenseCalModel *model)
{
- return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_contained)(model);
+ return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_contained)(model);
}
gchar*
gnc_dense_cal_model_get_name(GncDenseCalModel *model, guint tag)
{
- return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_name)(model, tag);
+ return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_name)(model, tag);
}
gchar*
gnc_dense_cal_model_get_info(GncDenseCalModel *model, guint tag)
{
- return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_info)(model, tag);
+ return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_info)(model, tag);
}
gint
gnc_dense_cal_model_get_instance_count(GncDenseCalModel *model, guint tag)
{
- return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_instance_count)(model, tag);
+ return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_instance_count)(model, tag);
}
void
gnc_dense_cal_model_get_instance(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date)
{
- return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_instance)(model, tag, instance_index, date);
+ return (*GNC_DENSE_CAL_MODEL_GET_INTERFACE(model)->get_instance)(model, tag, instance_index, date);
}
Modified: gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.h
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.h 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome-utils/gnc-dense-cal-model.h 2007-02-19 19:01:47 UTC (rev 15625)
@@ -37,19 +37,19 @@
typedef struct _GncDenseCalModel GncDenseCalModel; /* non existant */
typedef struct _GncDenseCalModelIface
{
- GTypeInterface parent;
+ GTypeInterface parent;
- /* signals */
- void (*insert)(GncDenseCalModel *mdl, gint tag);
- void (*update)(GncDenseCalModel *mdl, gint tag);
- void (*remove)(GncDenseCalModel *mdl, gint tag);
+ /* signals */
+ void (*insert)(GncDenseCalModel *mdl, gint tag);
+ void (*update)(GncDenseCalModel *mdl, gint tag);
+ void (*remove)(GncDenseCalModel *mdl, gint tag);
- /* virtual table */
- GList* (*get_contained)(GncDenseCalModel *model);
- gchar* (*get_name)(GncDenseCalModel *model, guint tag);
- gchar* (*get_info)(GncDenseCalModel *model, guint tag);
- gint (*get_instance_count)(GncDenseCalModel *model, guint tag);
- void (*get_instance)(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date);
+ /* virtual table */
+ GList* (*get_contained)(GncDenseCalModel *model);
+ gchar* (*get_name)(GncDenseCalModel *model, guint tag);
+ gchar* (*get_info)(GncDenseCalModel *model, guint tag);
+ gint (*get_instance_count)(GncDenseCalModel *model, guint tag);
+ void (*get_instance)(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date);
} GncDenseCalModelIface;
GType gnc_dense_cal_model_get_type(void);
Modified: gnucash/trunk/src/gnome-utils/gnc-dense-cal-store.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-dense-cal-store.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome-utils/gnc-dense-cal-store.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -31,22 +31,22 @@
struct _GncDenseCalStore
{
- GObject parent;
+ GObject parent;
- GDate start_date;
- gdcs_end_type end_type;
- GDate end_date;
- gint n_occurrences;
- gchar *name;
- gchar *info;
- int num_marks;
- int num_real_marks;
- GDate **cal_marks;
+ GDate start_date;
+ gdcs_end_type end_type;
+ GDate end_date;
+ gint n_occurrences;
+ gchar *name;
+ gchar *info;
+ int num_marks;
+ int num_real_marks;
+ GDate **cal_marks;
};
struct _GncDenseCalStoreClass
{
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
static GObjectClass *parent_class = NULL;
@@ -64,132 +64,132 @@
static void
gnc_dense_cal_store_class_init(GncDenseCalStoreClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- parent_class = g_type_class_peek_parent(klass);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ parent_class = g_type_class_peek_parent(klass);
- object_class->finalize = gnc_dense_cal_store_finalize;
+ object_class->finalize = gnc_dense_cal_store_finalize;
}
static void
gnc_dense_cal_store_iface_init(gpointer g_iface, gpointer iface_data)
{
- GncDenseCalModelIface *iface = (GncDenseCalModelIface*)g_iface;
- iface->get_contained = gdcs_get_contained;
- iface->get_name = gdcs_get_name;
- iface->get_info = gdcs_get_info;
- iface->get_instance_count = gdcs_get_instance_count;
- iface->get_instance = gdcs_get_instance;
+ GncDenseCalModelIface *iface = (GncDenseCalModelIface*)g_iface;
+ iface->get_contained = gdcs_get_contained;
+ iface->get_name = gdcs_get_name;
+ iface->get_info = gdcs_get_info;
+ iface->get_instance_count = gdcs_get_instance_count;
+ iface->get_instance = gdcs_get_instance;
}
GType
gnc_dense_cal_store_get_type(void)
{
- static GType type = 0;
- if (type == 0)
- {
- static const GTypeInfo info = {
- sizeof (GncDenseCalStoreClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)gnc_dense_cal_store_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(GncDenseCalStore),
- 0, /* n_preallocs */
- NULL /* instance_init */
- };
- static const GInterfaceInfo iDenseCalModelInfo = {
- (GInterfaceInitFunc)gnc_dense_cal_store_iface_init,
- NULL, /* interface finalize */
- NULL, /* interface data */
- };
- type = g_type_register_static(G_TYPE_OBJECT, "GncDenseCalStore", &info, 0);
- g_type_add_interface_static(type,
- GNC_TYPE_DENSE_CAL_MODEL,
- &iDenseCalModelInfo);
- }
- return type;
+ static GType type = 0;
+ if (type == 0)
+ {
+ static const GTypeInfo info = {
+ sizeof (GncDenseCalStoreClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc)gnc_dense_cal_store_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(GncDenseCalStore),
+ 0, /* n_preallocs */
+ NULL /* instance_init */
+ };
+ static const GInterfaceInfo iDenseCalModelInfo = {
+ (GInterfaceInitFunc)gnc_dense_cal_store_iface_init,
+ NULL, /* interface finalize */
+ NULL, /* interface data */
+ };
+ type = g_type_register_static(G_TYPE_OBJECT, "GncDenseCalStore", &info, 0);
+ g_type_add_interface_static(type,
+ GNC_TYPE_DENSE_CAL_MODEL,
+ &iDenseCalModelInfo);
+ }
+ return type;
}
GncDenseCalStore*
gnc_dense_cal_store_new(int num_marks)
{
- GncDenseCalStore *model = g_object_new(GNC_TYPE_DENSE_CAL_STORE, NULL);
- model->num_marks = num_marks;
- model->cal_marks = g_new0(GDate*, num_marks);
- {
- int i = 0;
- for (i = 0; i < model->num_marks; i++)
- {
- model->cal_marks[i] = g_date_new();
- }
- }
- model->num_real_marks = 0;
- g_date_clear(&model->start_date, 1);
- g_date_set_time_t(&model->start_date, time(NULL));
- model->end_type = NEVER_END;
- g_date_clear(&model->end_date, 1);
- g_date_set_time_t(&model->end_date, time(NULL));
- model->n_occurrences = 0;
- return model;
+ GncDenseCalStore *model = g_object_new(GNC_TYPE_DENSE_CAL_STORE, NULL);
+ model->num_marks = num_marks;
+ model->cal_marks = g_new0(GDate*, num_marks);
+ {
+ int i = 0;
+ for (i = 0; i < model->num_marks; i++)
+ {
+ model->cal_marks[i] = g_date_new();
+ }
+ }
+ model->num_real_marks = 0;
+ g_date_clear(&model->start_date, 1);
+ g_date_set_time_t(&model->start_date, time(NULL));
+ model->end_type = NEVER_END;
+ g_date_clear(&model->end_date, 1);
+ g_date_set_time_t(&model->end_date, time(NULL));
+ model->n_occurrences = 0;
+ return model;
}
void
gnc_dense_cal_store_clear(GncDenseCalStore *model)
{
- model->num_real_marks = 0;
- g_signal_emit_by_name(model, "update", GUINT_TO_POINTER(1));
+ model->num_real_marks = 0;
+ g_signal_emit_by_name(model, "update", GUINT_TO_POINTER(1));
}
void
gnc_dense_cal_store_update_name(GncDenseCalStore *model, gchar *name)
{
- if (model->name != NULL)
- {
- g_free(model->name);
- }
- model->name = g_strdup(name);
- g_signal_emit_by_name(model, "update", GUINT_TO_POINTER(1));
+ if (model->name != NULL)
+ {
+ g_free(model->name);
+ }
+ model->name = g_strdup(name);
+ g_signal_emit_by_name(model, "update", GUINT_TO_POINTER(1));
}
void
gnc_dense_cal_store_update_info(GncDenseCalStore *model, gchar *info)
{
- if (model->info != NULL)
- {
- g_free(model->info);
- }
- model->info = g_strdup(info);
- g_signal_emit_by_name(model, "update", GUINT_TO_POINTER(1));
+ if (model->info != NULL)
+ {
+ g_free(model->info);
+ }
+ model->info = g_strdup(info);
+ g_signal_emit_by_name(model, "update", GUINT_TO_POINTER(1));
}
static void
gdcs_generic_update(GncDenseCalStore *trans, GDate *start, FreqSpec *fs)
{
- int i;
- GDate date;
+ int i;
+ GDate date;
- date = *start;
- /* go one day before what's in the box so we can get the correct start
- * date. */
- g_date_subtract_days(&date, 1);
- xaccFreqSpecGetNextInstance(fs, &date, &date);
+ date = *start;
+ /* go one day before what's in the box so we can get the correct start
+ * date. */
+ g_date_subtract_days(&date, 1);
+ xaccFreqSpecGetNextInstance(fs, &date, &date);
- i = 0;
- while ((i < trans->num_marks)
- && g_date_valid(&date)
- /* Do checking against end restriction. */
- && ((trans->end_type == NEVER_END)
- || (trans->end_type == END_ON_DATE
- && g_date_compare(&date, &trans->end_date) <= 0)
- || (trans->end_type == END_AFTER_N_OCCS
- && i < trans->n_occurrences)))
- {
- *trans->cal_marks[i++] = date;
- xaccFreqSpecGetNextInstance(fs, &date, &date);
- }
- trans->num_real_marks = (i == 0 ? 0 : (i-1));
- g_signal_emit_by_name(trans, "update", GUINT_TO_POINTER(1));
+ i = 0;
+ while ((i < trans->num_marks)
+ && g_date_valid(&date)
+ /* Do checking against end restriction. */
+ && ((trans->end_type == NEVER_END)
+ || (trans->end_type == END_ON_DATE
+ && g_date_compare(&date, &trans->end_date) <= 0)
+ || (trans->end_type == END_AFTER_N_OCCS
+ && i < trans->n_occurrences)))
+ {
+ *trans->cal_marks[i++] = date;
+ xaccFreqSpecGetNextInstance(fs, &date, &date);
+ }
+ trans->num_real_marks = (i == 0 ? 0 : (i-1));
+ g_signal_emit_by_name(trans, "update", GUINT_TO_POINTER(1));
}
static void
@@ -225,24 +225,24 @@
void
gnc_dense_cal_store_update_no_end(GncDenseCalStore *model, GDate *start, FreqSpec *fs)
{
- model->end_type = NEVER_END;
- gdcs_generic_update(model, start, fs);
+ model->end_type = NEVER_END;
+ gdcs_generic_update(model, start, fs);
}
void
gnc_dense_cal_store_update_count_end(GncDenseCalStore *model, GDate *start, FreqSpec *fs, int num_occur)
{
- model->end_type = END_AFTER_N_OCCS;
- model->n_occurrences = num_occur;
- gdcs_generic_update(model, start, fs);
+ model->end_type = END_AFTER_N_OCCS;
+ model->n_occurrences = num_occur;
+ gdcs_generic_update(model, start, fs);
}
void
gnc_dense_cal_store_update_date_end(GncDenseCalStore *model, GDate *start, FreqSpec *fs, GDate *end_date)
{
- model->end_type = END_ON_DATE;
- model->end_date = *end_date;
- gdcs_generic_update(model, start, fs);
+ model->end_type = END_ON_DATE;
+ model->end_date = *end_date;
+ gdcs_generic_update(model, start, fs);
}
void
@@ -263,83 +263,83 @@
void
gnc_dense_cal_store_update_recurrences_date_end(GncDenseCalStore *model, GDate *start, GList *recurrences, GDate *end_date)
{
- model->end_type = END_ON_DATE;
- model->end_date = *end_date;
- gdcs_generic_update_recurrences(model, start, recurrences);
+ model->end_type = END_ON_DATE;
+ model->end_date = *end_date;
+ gdcs_generic_update_recurrences(model, start, recurrences);
}
static GList*
gdcs_get_contained(GncDenseCalModel *model)
{
- GList *rtn = NULL;
- rtn = g_list_append(rtn, GUINT_TO_POINTER(1));
- return rtn;
+ GList *rtn = NULL;
+ rtn = g_list_append(rtn, GUINT_TO_POINTER(1));
+ return rtn;
}
static gchar*
gdcs_get_name(GncDenseCalModel *model, guint tag)
{
- GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
- // assert(tag == 1)
- return mdl->name;
+ GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
+ // assert(tag == 1)
+ return mdl->name;
}
static gchar*
gdcs_get_info(GncDenseCalModel *model, guint tag)
{
- GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
- // assert(tag == 1)
- return mdl->info;
+ GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
+ // assert(tag == 1)
+ return mdl->info;
}
static gint
gdcs_get_instance_count(GncDenseCalModel *model, guint tag)
{
- GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
- // assert(tag == 1)
- return mdl->num_real_marks;
+ GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
+ // assert(tag == 1)
+ return mdl->num_real_marks;
}
static void
gdcs_get_instance(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date)
{
- GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
- // assert(tag == 1)
- // assert 0 < instance_index < model->num_marks;
- *date = *mdl->cal_marks[instance_index];
+ GncDenseCalStore *mdl = GNC_DENSE_CAL_STORE(model);
+ // assert(tag == 1)
+ // assert 0 < instance_index < model->num_marks;
+ *date = *mdl->cal_marks[instance_index];
}
static void
gnc_dense_cal_store_finalize(GObject *obj)
{
- int i;
- GncDenseCalStore *store;
- g_return_if_fail(obj != NULL);
+ int i;
+ GncDenseCalStore *store;
+ g_return_if_fail(obj != NULL);
- store = GNC_DENSE_CAL_STORE(obj);
+ store = GNC_DENSE_CAL_STORE(obj);
- if (store->name != NULL)
- {
- g_free(store->name);
- store->name = NULL;
- }
+ if (store->name != NULL)
+ {
+ g_free(store->name);
+ store->name = NULL;
+ }
- if (store->info != NULL)
- {
- g_free(store->info);
- store->info = NULL;
- }
+ if (store->info != NULL)
+ {
+ g_free(store->info);
+ store->info = NULL;
+ }
- for (i = 0; i < store->num_marks; i++)
- {
- g_free(store->cal_marks[i]);
- store->cal_marks[i] = NULL;
- }
- if (store->cal_marks != NULL)
- {
- g_free(store->cal_marks);
- store->cal_marks = NULL;
- }
+ for (i = 0; i < store->num_marks; i++)
+ {
+ g_free(store->cal_marks[i]);
+ store->cal_marks[i] = NULL;
+ }
+ if (store->cal_marks != NULL)
+ {
+ g_free(store->cal_marks);
+ store->cal_marks = NULL;
+ }
- G_OBJECT_CLASS(parent_class)->finalize(obj);
+ G_OBJECT_CLASS(parent_class)->finalize(obj);
}
Modified: gnucash/trunk/src/gnome-utils/gnc-dense-cal.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-dense-cal.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome-utils/gnc-dense-cal.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -96,7 +96,7 @@
static gint gnc_dense_cal_motion_notify(GtkWidget *widget,
GdkEventMotion *event);
static gint gnc_dense_cal_button_press(GtkWidget *widget,
- GdkEventButton *evt);
+ GdkEventButton *evt);
static inline int day_width_at(GncDenseCal *dcal, guint xScale);
static inline int day_width(GncDenseCal *dcal);
@@ -132,7 +132,7 @@
static void month_coords(GncDenseCal *dcal, int monthOfCal, GList **outList);
static void doc_coords(GncDenseCal *dcal, int dayOfCal,
- int *x1, int *y1, int *x2, int *y2);
+ int *x1, int *y1, int *x2, int *y2);
static void gdc_mark_add(GncDenseCal *dcal, guint tag, gchar *name, gchar *info, guint size, GDate **dateArray);
static void gdc_mark_remove(GncDenseCal *dcal, guint mark_to_remove);
@@ -149,20 +149,20 @@
* locale.*/
static const gchar *month_name(int mon)
{
- static gchar buf[MONTH_NAME_BUFSIZE];
- GDate date;
- gint arbitrary_year = 1977;
+ static gchar buf[MONTH_NAME_BUFSIZE];
+ GDate date;
+ gint arbitrary_year = 1977;
- memset(buf, 0, MONTH_NAME_BUFSIZE);
- g_date_clear(&date, 1);
+ memset(buf, 0, MONTH_NAME_BUFSIZE);
+ g_date_clear(&date, 1);
- g_date_set_year(&date, arbitrary_year);
- g_date_set_day(&date, 1);
- // g_date API is 1..12 (not 0..11)
- g_date_set_month(&date, mon+1);
- g_date_strftime(buf, MONTH_NAME_BUFSIZE-1, "%b", &date);
+ g_date_set_year(&date, arbitrary_year);
+ g_date_set_day(&date, 1);
+ // g_date API is 1..12 (not 0..11)
+ g_date_set_month(&date, mon+1);
+ g_date_strftime(buf, MONTH_NAME_BUFSIZE-1, "%b", &date);
- return buf;
+ return buf;
}
/* Takes the number of days since Sunday, in the range 0 to 6. Returns
* the abbreviated weekday name according to the current locale. */
@@ -184,1041 +184,1041 @@
GType
gnc_dense_cal_get_type()
{
- static GType dense_cal_type = 0;
+ static GType dense_cal_type = 0;
- if (dense_cal_type == 0) {
- static const GTypeInfo dense_cal_info = {
- sizeof (GncDenseCalClass),
- NULL,
- NULL,
- (GClassInitFunc) gnc_dense_cal_class_init,
- NULL,
- NULL,
- sizeof (GncDenseCal),
- 0,
- (GInstanceInitFunc) gnc_dense_cal_init,
- NULL
- };
+ if (dense_cal_type == 0) {
+ static const GTypeInfo dense_cal_info = {
+ sizeof (GncDenseCalClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) gnc_dense_cal_class_init,
+ NULL,
+ NULL,
+ sizeof (GncDenseCal),
+ 0,
+ (GInstanceInitFunc) gnc_dense_cal_init,
+ NULL
+ };
- dense_cal_type = g_type_register_static(GTK_TYPE_WIDGET,
- "GncDenseCal",
- &dense_cal_info, 0);
- }
+ dense_cal_type = g_type_register_static(GTK_TYPE_WIDGET,
+ "GncDenseCal",
+ &dense_cal_info, 0);
+ }
- return dense_cal_type;
+ return dense_cal_type;
}
static void
gnc_dense_cal_class_init(GncDenseCalClass *klass)
{
- GObjectClass *object_class;
- GtkWidgetClass *widget_class;
+ GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
- object_class = G_OBJECT_CLASS (klass);
- widget_class = GTK_WIDGET_CLASS (klass);
+ object_class = G_OBJECT_CLASS (klass);
+ widget_class = GTK_WIDGET_CLASS (klass);
- parent_class = g_type_class_peek_parent (klass);
+ parent_class = g_type_class_peek_parent (klass);
- object_class->finalize = gnc_dense_cal_finalize;
- object_class->dispose = gnc_dense_cal_dispose;
+ object_class->finalize = gnc_dense_cal_finalize;
+ object_class->dispose = gnc_dense_cal_dispose;
- widget_class->realize = gnc_dense_cal_realize;
- widget_class->expose_event = gnc_dense_cal_expose;
- widget_class->size_request = gnc_dense_cal_size_request;
- widget_class->size_allocate = gnc_dense_cal_size_allocate;
- widget_class->motion_notify_event = gnc_dense_cal_motion_notify;
- widget_class->button_press_event = gnc_dense_cal_button_press;
+ widget_class->realize = gnc_dense_cal_realize;
+ widget_class->expose_event = gnc_dense_cal_expose;
+ widget_class->size_request = gnc_dense_cal_size_request;
+ widget_class->size_allocate = gnc_dense_cal_size_allocate;
+ widget_class->motion_notify_event = gnc_dense_cal_motion_notify;
+ widget_class->button_press_event = gnc_dense_cal_button_press;
}
static void
gnc_dense_cal_init(GncDenseCal *dcal)
{
- gboolean colorAllocSuccess;
+ gboolean colorAllocSuccess;
- dcal->disposed = FALSE;
- dcal->initialized = FALSE;
- dcal->markData = NULL;
- dcal->numMarks = 0;
- dcal->marks = NULL;
- dcal->lastMarkTag = 0;
+ dcal->disposed = FALSE;
+ dcal->initialized = FALSE;
+ dcal->markData = NULL;
+ dcal->numMarks = 0;
+ dcal->marks = NULL;
+ dcal->lastMarkTag = 0;
- dcal->showPopup = FALSE;
+ dcal->showPopup = FALSE;
- dcal->transPopup = GTK_WINDOW(gtk_window_new(GTK_WINDOW_POPUP));
- {
- GtkWidget *vbox, *hbox;
- GtkWidget *l;
- GtkListStore *tree_data;
- GtkTreeView *tree_view;
+ dcal->transPopup = GTK_WINDOW(gtk_window_new(GTK_WINDOW_POPUP));
+ {
+ GtkWidget *vbox, *hbox;
+ GtkWidget *l;
+ GtkListStore *tree_data;
+ GtkTreeView *tree_view;
- vbox = gtk_vbox_new(FALSE, 5);
- hbox = gtk_hbox_new(FALSE, 5);
+ vbox = gtk_vbox_new(FALSE, 5);
+ hbox = gtk_hbox_new(FALSE, 5);
- l = gtk_label_new(_("Date: "));
- gtk_container_add(GTK_CONTAINER(hbox), l);
- l = gtk_label_new("YY/MM/DD");
- g_object_set_data(G_OBJECT(dcal->transPopup), "dateLabel", l);
- gtk_container_add(GTK_CONTAINER(hbox), l);
- gtk_container_add(GTK_CONTAINER(vbox), hbox);
+ l = gtk_label_new(_("Date: "));
+ gtk_container_add(GTK_CONTAINER(hbox), l);
+ l = gtk_label_new("YY/MM/DD");
+ g_object_set_data(G_OBJECT(dcal->transPopup), "dateLabel", l);
+ gtk_container_add(GTK_CONTAINER(hbox), l);
+ gtk_container_add(GTK_CONTAINER(vbox), hbox);
- gtk_container_add(GTK_CONTAINER(vbox), gtk_hseparator_new());
+ gtk_container_add(GTK_CONTAINER(vbox), gtk_hseparator_new());
- tree_data = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
- tree_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(tree_data)));
- gtk_tree_view_insert_column_with_attributes(tree_view, -1, _("Name"), gtk_cell_renderer_text_new(), "text", 0, NULL);
- gtk_tree_view_insert_column_with_attributes(tree_view, -1, _("Frequency"), gtk_cell_renderer_text_new(), "text", 1, NULL);
- g_object_set_data(G_OBJECT(dcal->transPopup), "model", tree_data);
- gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(tree_view));
+ tree_data = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
+ tree_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(tree_data)));
+ gtk_tree_view_insert_column_with_attributes(tree_view, -1, _("Name"), gtk_cell_renderer_text_new(), "text", 0, NULL);
+ gtk_tree_view_insert_column_with_attributes(tree_view, -1, _("Frequency"), gtk_cell_renderer_text_new(), "text", 1, NULL);
+ g_object_set_data(G_OBJECT(dcal->transPopup), "model", tree_data);
+ gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(tree_view));
- gtk_container_add(GTK_CONTAINER(dcal->transPopup), vbox);
+ gtk_container_add(GTK_CONTAINER(dcal->transPopup), vbox);
- gtk_widget_realize(GTK_WIDGET(dcal->transPopup));
- }
+ gtk_widget_realize(GTK_WIDGET(dcal->transPopup));
+ }
- gdk_color_parse(MONTH_THIS_COLOR, &dcal->weekColors[MONTH_THIS]);
- gdk_color_parse(MONTH_THAT_COLOR, &dcal->weekColors[MONTH_THAT]);
- if (gdk_colormap_alloc_colors(gdk_colormap_get_system(),
- dcal->weekColors,
- MAX_COLORS, TRUE, TRUE,
- &colorAllocSuccess) > 0)
- {
- g_error("error allocating colors");
- }
+ gdk_color_parse(MONTH_THIS_COLOR, &dcal->weekColors[MONTH_THIS]);
+ gdk_color_parse(MONTH_THAT_COLOR, &dcal->weekColors[MONTH_THAT]);
+ if (gdk_colormap_alloc_colors(gdk_colormap_get_system(),
+ dcal->weekColors,
+ MAX_COLORS, TRUE, TRUE,
+ &colorAllocSuccess) > 0)
+ {
+ g_error("error allocating colors");
+ }
- /* Deal with the various label sizes. */
- {
- gint i;
- gint maxWidth, maxHeight;
- gint width;
- GtkStyle *style;
- PangoLayout *layout;
- const PangoFontDescription *existing_font_desc;
- PangoFontDescription *font_desc;
- gint font_size;
- gint font_size_reduction_units = 1;
+ /* Deal with the various label sizes. */
+ {
+ gint i;
+ gint maxWidth, maxHeight;
+ gint width;
+ GtkStyle *style;
+ PangoLayout *layout;
+ const PangoFontDescription *existing_font_desc;
+ PangoFontDescription *font_desc;
+ gint font_size;
+ gint font_size_reduction_units = 1;
- layout = gtk_widget_create_pango_layout(GTK_WIDGET(dcal), NULL);
+ layout = gtk_widget_create_pango_layout(GTK_WIDGET(dcal), NULL);
- style = gtk_widget_get_style(GTK_WIDGET(dcal));
+ style = gtk_widget_get_style(GTK_WIDGET(dcal));
- font_desc = pango_font_description_copy(style->font_desc);
- font_size = pango_font_description_get_size(font_desc);
- font_size -= font_size_reduction_units * PANGO_SCALE;
- pango_font_description_set_size(font_desc, font_size);
- gtk_widget_modify_font(GTK_WIDGET(dcal), font_desc);
- pango_font_description_free(font_desc);
+ font_desc = pango_font_description_copy(style->font_desc);
+ font_size = pango_font_description_get_size(font_desc);
+ font_size -= font_size_reduction_units * PANGO_SCALE;
+ pango_font_description_set_size(font_desc, font_size);
+ gtk_widget_modify_font(GTK_WIDGET(dcal), font_desc);
+ pango_font_description_free(font_desc);
- maxWidth = maxHeight = 0;
- for (i=0; i<12; i++)
- {
- gint w, h;
- pango_layout_set_text(layout, month_name(i), -1);
- pango_layout_get_pixel_size(layout, &w, &h);
- maxWidth = MAX(maxWidth, w);
- maxHeight = MAX(maxHeight, h);
- }
+ maxWidth = maxHeight = 0;
+ for (i=0; i<12; i++)
+ {
+ gint w, h;
+ pango_layout_set_text(layout, month_name(i), -1);
+ pango_layout_get_pixel_size(layout, &w, &h);
+ maxWidth = MAX(maxWidth, w);
+ maxHeight = MAX(maxHeight, h);
+ }
- // these two were reversed, before...
- dcal->label_width = maxWidth;
- dcal->label_height = maxHeight;
+ // these two were reversed, before...
+ dcal->label_width = maxWidth;
+ dcal->label_height = maxHeight;
- g_object_unref(layout);
- }
+ g_object_unref(layout);
+ }
- dcal->month = G_DATE_JANUARY;
- dcal->year = 1970;
+ dcal->month = G_DATE_JANUARY;
+ dcal->year = 1970;
- dcal->numMonths = 12;
- dcal->monthsPerCol = 3;
- dcal->leftPadding = 2;
- dcal->topPadding = 2;
+ dcal->numMonths = 12;
+ dcal->monthsPerCol = 3;
+ dcal->leftPadding = 2;
+ dcal->topPadding = 2;
- {
- GDate *now = g_date_new();
- g_date_set_time_t(now, time(NULL));
- gnc_dense_cal_set_month(dcal, g_date_get_month(now));
- gnc_dense_cal_set_year(dcal, g_date_get_year(now));
- g_date_free(now);
- }
+ {
+ GDate *now = g_date_new();
+ g_date_set_time_t(now, time(NULL));
+ gnc_dense_cal_set_month(dcal, g_date_get_month(now));
+ gnc_dense_cal_set_year(dcal, g_date_get_year(now));
+ g_date_free(now);
+ }
- recompute_extents(dcal);
- recompute_mark_storage(dcal);
+ recompute_extents(dcal);
+ recompute_mark_storage(dcal);
- /* Now that we're "sure" of our configuration, compute initial
- * scaling factors; will be increased when we're allocated enough
- * space to scale up. */
- {
- PangoLayout *layout;
- int width_88, height_88;
- int width_XXX, height_XXX;
+ /* Now that we're "sure" of our configuration, compute initial
+ * scaling factors; will be increased when we're allocated enough
+ * space to scale up. */
+ {
+ PangoLayout *layout;
+ int width_88, height_88;
+ int width_XXX, height_XXX;
- layout = gtk_widget_create_pango_layout(GTK_WIDGET(dcal), NULL);
- pango_layout_set_text(layout, "88", -1);
- pango_layout_get_pixel_size(layout, &width_88, &height_88);
+ layout = gtk_widget_create_pango_layout(GTK_WIDGET(dcal), NULL);
+ pango_layout_set_text(layout, "88", -1);
+ pango_layout_get_pixel_size(layout, &width_88, &height_88);
- pango_layout_set_text(layout, "XXX", -1);
- pango_layout_get_pixel_size(layout, &width_XXX, &height_XXX);
+ pango_layout_set_text(layout, "XXX", -1);
+ pango_layout_get_pixel_size(layout, &width_XXX, &height_XXX);
- dcal->min_x_scale = dcal->x_scale = width_88 + 2;
- dcal->min_y_scale = dcal->y_scale = MAX(floor((float)width_XXX / 3.), height_88 + 2);
+ dcal->min_x_scale = dcal->x_scale = width_88 + 2;
+ dcal->min_y_scale = dcal->y_scale = MAX(floor((float)width_XXX / 3.), height_88 + 2);
- dcal->dayLabelHeight = height_88;
+ dcal->dayLabelHeight = height_88;
- g_object_unref(layout);
- }
- dcal->initialized = TRUE;
+ g_object_unref(layout);
+ }
+ dcal->initialized = TRUE;
}
GtkWidget*
gnc_dense_cal_new(void)
{
- GncDenseCal *dcal;
- dcal = g_object_new(GNC_TYPE_DENSE_CAL, NULL);
- return GTK_WIDGET(dcal);
+ GncDenseCal *dcal;
+ dcal = g_object_new(GNC_TYPE_DENSE_CAL, NULL);
+ return GTK_WIDGET(dcal);
}
GtkWidget*
gnc_dense_cal_new_with_model(GncDenseCalModel *model)
{
- GncDenseCal *cal = GNC_DENSE_CAL(gnc_dense_cal_new());
- gnc_dense_cal_set_model(cal, model);
- return GTK_WIDGET(cal);
+ GncDenseCal *cal = GNC_DENSE_CAL(gnc_dense_cal_new());
+ gnc_dense_cal_set_model(cal, model);
+ return GTK_WIDGET(cal);
}
static void
recompute_first_of_month_offset(GncDenseCal *dcal)
{
- GDate *tmpDate;
+ GDate *tmpDate;
- tmpDate = g_date_new_dmy(1, dcal->month, dcal->year);
- dcal->firstOfMonthOffset = g_date_get_weekday(tmpDate) % 7;
- g_date_free(tmpDate);
+ tmpDate = g_date_new_dmy(1, dcal->month, dcal->year);
+ dcal->firstOfMonthOffset = g_date_get_weekday(tmpDate) % 7;
+ g_date_free(tmpDate);
}
void
gnc_dense_cal_set_month(GncDenseCal *dcal, GDateMonth mon)
{
- dcal->month = mon;
- recompute_first_of_month_offset(dcal);
- recompute_extents(dcal);
- if (GTK_WIDGET_REALIZED(dcal))
- {
- recompute_x_y_scales(dcal);
- gnc_dense_cal_draw_to_buffer(dcal);
- gtk_widget_queue_draw(GTK_WIDGET(dcal));
- }
+ dcal->month = mon;
+ recompute_first_of_month_offset(dcal);
+ recompute_extents(dcal);
+ if (GTK_WIDGET_REALIZED(dcal))
+ {
+ recompute_x_y_scales(dcal);
+ gnc_dense_cal_draw_to_buffer(dcal);
+ gtk_widget_queue_draw(GTK_WIDGET(dcal));
+ }
}
void
gnc_dense_cal_set_year(GncDenseCal *dcal, guint year)
{
- dcal->year = year;
- recompute_first_of_month_offset(dcal);
- recompute_extents(dcal);
- if (GTK_WIDGET_REALIZED(dcal))
- {
- recompute_x_y_scales(dcal);
- gnc_dense_cal_draw_to_buffer(dcal);
- gtk_widget_queue_draw(GTK_WIDGET(dcal));
- }
+ dcal->year = year;
+ recompute_first_of_month_offset(dcal);
+ recompute_extents(dcal);
+ if (GTK_WIDGET_REALIZED(dcal))
+ {
+ recompute_x_y_scales(dcal);
+ gnc_dense_cal_draw_to_buffer(dcal);
+ gtk_widget_queue_draw(GTK_WIDGET(dcal));
+ }
}
void
gnc_dense_cal_set_num_months(GncDenseCal *dcal, guint num_months)
{
- dcal->numMonths = num_months;
- recompute_extents(dcal);
- recompute_mark_storage(dcal);
- if (GTK_WIDGET_REALIZED(dcal))
- {
- recompute_x_y_scales(dcal);
- gnc_dense_cal_draw_to_buffer(dcal);
- gtk_widget_queue_draw(GTK_WIDGET(dcal));
- }
+ dcal->numMonths = num_months;
+ recompute_extents(dcal);
+ recompute_mark_storage(dcal);
+ if (GTK_WIDGET_REALIZED(dcal))
+ {
+ recompute_x_y_scales(dcal);
+ gnc_dense_cal_draw_to_buffer(dcal);
+ gtk_widget_queue_draw(GTK_WIDGET(dcal));
+ }
}
void
gnc_dense_cal_set_months_per_col(GncDenseCal *dcal, guint monthsPerCol)
{
- dcal->monthsPerCol = monthsPerCol;
- recompute_x_y_scales(dcal);
+ dcal->monthsPerCol = monthsPerCol;
+ recompute_x_y_scales(dcal);
}
guint
gnc_dense_cal_get_num_months(GncDenseCal *dcal)
{
- return dcal->numMonths;
+ return dcal->numMonths;
}
GDateMonth
gnc_dense_cal_get_month(GncDenseCal *dcal)
{
- return dcal->month;
+ return dcal->month;
}
GDateYear
gnc_dense_cal_get_year(GncDenseCal *dcal)
{
- return dcal->year;
+ return dcal->year;
}
static void
gnc_dense_cal_dispose (GObject *object)
{
- int i;
- GncDenseCal *dcal;
- g_return_if_fail(object != NULL);
- g_return_if_fail(GNC_IS_DENSE_CAL(object));
+ int i;
+ GncDenseCal *dcal;
+ g_return_if_fail(object != NULL);
+ g_return_if_fail(GNC_IS_DENSE_CAL(object));
- dcal = GNC_DENSE_CAL(object);
+ dcal = GNC_DENSE_CAL(object);
- if (dcal->disposed)
- return;
- dcal->disposed = TRUE;
+ if (dcal->disposed)
+ return;
+ dcal->disposed = TRUE;
- if (GTK_WIDGET_REALIZED(dcal->transPopup))
- {
- gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
- gtk_widget_destroy(GTK_WIDGET(dcal->transPopup));
- dcal->transPopup = NULL;
- }
+ if (GTK_WIDGET_REALIZED(dcal->transPopup))
+ {
+ gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
+ gtk_widget_destroy(GTK_WIDGET(dcal->transPopup));
+ dcal->transPopup = NULL;
+ }
- if (dcal->drawbuf)
- {
- g_object_unref(dcal->drawbuf);
- dcal->drawbuf = NULL;
- }
+ if (dcal->drawbuf)
+ {
+ g_object_unref(dcal->drawbuf);
+ dcal->drawbuf = NULL;
+ }
- /* FIXME: we have a bunch of cleanup to do, here. */
+ /* FIXME: we have a bunch of cleanup to do, here. */
- gdc_free_all_mark_data(dcal);
+ gdc_free_all_mark_data(dcal);
- g_object_unref(G_OBJECT(dcal->model));
+ g_object_unref(G_OBJECT(dcal->model));
- if (G_OBJECT_CLASS (parent_class)->dispose)
- G_OBJECT_CLASS(parent_class)->dispose(object);
+ if (G_OBJECT_CLASS (parent_class)->dispose)
+ G_OBJECT_CLASS(parent_class)->dispose(object);
}
static void
gnc_dense_cal_finalize (GObject *object)
{
- GncDenseCal *dcal;
- g_return_if_fail (object != NULL);
- g_return_if_fail (GNC_IS_DENSE_CAL (object));
+ GncDenseCal *dcal;
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GNC_IS_DENSE_CAL (object));
- dcal = GNC_DENSE_CAL(object);
+ dcal = GNC_DENSE_CAL(object);
- if (G_OBJECT_CLASS (parent_class)->finalize)
- G_OBJECT_CLASS(parent_class)->finalize(object);
+ if (G_OBJECT_CLASS (parent_class)->finalize)
+ G_OBJECT_CLASS(parent_class)->finalize(object);
}
static void
gnc_dense_cal_realize (GtkWidget *widget)
{
- GncDenseCal *dcal;
- GdkWindowAttr attributes;
- gint attributes_mask;
+ GncDenseCal *dcal;
+ GdkWindowAttr attributes;
+ gint attributes_mask;
- g_return_if_fail(widget != NULL);
- g_return_if_fail(GNC_IS_DENSE_CAL (widget));
+ g_return_if_fail(widget != NULL);
+ g_return_if_fail(GNC_IS_DENSE_CAL (widget));
- GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED);
- dcal = GNC_DENSE_CAL(widget);
+ GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED);
+ dcal = GNC_DENSE_CAL(widget);
- attributes.x = widget->allocation.x;
- attributes.y = widget->allocation.y;
- attributes.width = widget->allocation.width;
- attributes.height = widget->allocation.height;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.event_mask =
- gtk_widget_get_events(widget)
- | GDK_EXPOSURE_MASK
- | GDK_BUTTON_PRESS_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_POINTER_MOTION_MASK
- | GDK_POINTER_MOTION_HINT_MASK;
- attributes.visual = gtk_widget_get_visual(widget);
- attributes.colormap = gtk_widget_get_colormap(widget);
+ attributes.x = widget->allocation.x;
+ attributes.y = widget->allocation.y;
+ attributes.width = widget->allocation.width;
+ attributes.height = widget->allocation.height;
+ attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.window_type = GDK_WINDOW_CHILD;
+ attributes.event_mask =
+ gtk_widget_get_events(widget)
+ | GDK_EXPOSURE_MASK
+ | GDK_BUTTON_PRESS_MASK
+ | GDK_BUTTON_RELEASE_MASK
+ | GDK_POINTER_MOTION_MASK
+ | GDK_POINTER_MOTION_HINT_MASK;
+ attributes.visual = gtk_widget_get_visual(widget);
+ attributes.colormap = gtk_widget_get_colormap(widget);
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
- widget->window = gdk_window_new(widget->parent->window, &attributes, attributes_mask);
+ widget->window = gdk_window_new(widget->parent->window, &attributes, attributes_mask);
- widget->style = gtk_style_attach(widget->style, widget->window);
+ widget->style = gtk_style_attach(widget->style, widget->window);
- gdk_window_set_user_data(widget->window, widget);
+ gdk_window_set_user_data(widget->window, widget);
- gdc_reconfig(dcal);
+ gdc_reconfig(dcal);
- gtk_style_set_background(widget->style, widget->window, GTK_STATE_ACTIVE);
+ gtk_style_set_background(widget->style, widget->window, GTK_STATE_ACTIVE);
}
static void
gdc_reconfig(GncDenseCal *dcal)
{
- GtkWidget *widget = GTK_WIDGET(dcal);
+ GtkWidget *widget = GTK_WIDGET(dcal);
- if (dcal->drawbuf)
- g_object_unref(dcal->drawbuf);
- dcal->drawbuf = gdk_pixmap_new(widget->window,
- widget->allocation.width,
- widget->allocation.height,
- -1);
- gnc_dense_cal_draw_to_buffer(dcal);
+ if (dcal->drawbuf)
+ g_object_unref(dcal->drawbuf);
+ dcal->drawbuf = gdk_pixmap_new(widget->window,
+ widget->allocation.width,
+ widget->allocation.height,
+ -1);
+ gnc_dense_cal_draw_to_buffer(dcal);
}
static void
gnc_dense_cal_size_request(GtkWidget *widget,
GtkRequisition *requisition)
{
- GncDenseCal *dcal = GNC_DENSE_CAL(widget);
- if (!dcal->initialized)
- {
- g_warning("Uninitialized size request\n");
- requisition->width = DENSE_CAL_DEFAULT_WIDTH;
- requisition->height = DENSE_CAL_DEFAULT_HEIGHT;
- return;
- }
- requisition->width =
- (dcal->leftPadding * 2)
- + (num_cols(dcal)* (col_width_at(dcal, dcal->min_x_scale)
- + dcal->label_width))
- + ((num_cols(dcal)-1) * COL_BORDER_SIZE);
- requisition->height =
- (dcal->topPadding * 2)
- + MINOR_BORDER_SIZE
- + dcal->dayLabelHeight
- + (num_weeks_per_col(dcal)
- * week_height_at(dcal, dcal->min_y_scale));
+ GncDenseCal *dcal = GNC_DENSE_CAL(widget);
+ if (!dcal->initialized)
+ {
+ g_warning("Uninitialized size request\n");
+ requisition->width = DENSE_CAL_DEFAULT_WIDTH;
+ requisition->height = DENSE_CAL_DEFAULT_HEIGHT;
+ return;
+ }
+ requisition->width =
+ (dcal->leftPadding * 2)
+ + (num_cols(dcal)* (col_width_at(dcal, dcal->min_x_scale)
+ + dcal->label_width))
+ + ((num_cols(dcal)-1) * COL_BORDER_SIZE);
+ requisition->height =
+ (dcal->topPadding * 2)
+ + MINOR_BORDER_SIZE
+ + dcal->dayLabelHeight
+ + (num_weeks_per_col(dcal)
+ * week_height_at(dcal, dcal->min_y_scale));
}
static void
recompute_x_y_scales(GncDenseCal *dcal)
{
- GtkWidget *widget;
- int denom;
- int width, height;
+ GtkWidget *widget;
+ int denom;
+ int width, height;
- widget = GTK_WIDGET(dcal);
+ widget = GTK_WIDGET(dcal);
- width = DENSE_CAL_DEFAULT_WIDTH;
- height = DENSE_CAL_DEFAULT_HEIGHT;
- if (dcal->initialized)
- {
- width = widget->allocation.width;
- height = widget->allocation.height;
- }
+ width = DENSE_CAL_DEFAULT_WIDTH;
+ height = DENSE_CAL_DEFAULT_HEIGHT;
+ if (dcal->initialized)
+ {
+ width = widget->allocation.width;
+ height = widget->allocation.height;
+ }
- /* FIXME: there's something slightly wrong in the x_scale computation that
- * lets us draw larger than our area. */
- denom = 7 * num_cols(dcal);
- g_assert(denom != 0);
- dcal->x_scale = (gint)((width
- - (dcal->leftPadding * 2)
- - (num_cols(dcal) * ((8 * MINOR_BORDER_SIZE)
- + dcal->label_width))
- - ((num_cols(dcal)-1) * COL_BORDER_SIZE))
- / denom);
- dcal->x_scale = MAX(dcal->x_scale, dcal->min_x_scale);
+ /* FIXME: there's something slightly wrong in the x_scale computation that
+ * lets us draw larger than our area. */
+ denom = 7 * num_cols(dcal);
+ g_assert(denom != 0);
+ dcal->x_scale = (gint)((width
+ - (dcal->leftPadding * 2)
+ - (num_cols(dcal) * ((8 * MINOR_BORDER_SIZE)
+ + dcal->label_width))
+ - ((num_cols(dcal)-1) * COL_BORDER_SIZE))
+ / denom);
+ dcal->x_scale = MAX(dcal->x_scale, dcal->min_x_scale);
- denom = num_weeks_per_col(dcal);
- g_assert(denom != 0);
- dcal->y_scale = (gint)((height
- - (dcal->topPadding * 2)
- - MINOR_BORDER_SIZE
- - dcal->dayLabelHeight
- - (num_weeks_per_col(dcal)-1
- * MINOR_BORDER_SIZE))
- / denom);
- dcal->y_scale = MAX(dcal->y_scale, dcal->min_y_scale);
+ denom = num_weeks_per_col(dcal);
+ g_assert(denom != 0);
+ dcal->y_scale = (gint)((height
+ - (dcal->topPadding * 2)
+ - MINOR_BORDER_SIZE
+ - dcal->dayLabelHeight
+ - (num_weeks_per_col(dcal)-1
+ * MINOR_BORDER_SIZE))
+ / denom);
+ dcal->y_scale = MAX(dcal->y_scale, dcal->min_y_scale);
}
static void
gdc_free_all_mark_data(GncDenseCal *dcal)
{
- int i;
- GList *l;
- for (i=0; i < dcal->numMarks; i++)
- {
- /* Each of these just contains an elt of dcal->markData,
- * which we're about to free, below... */
- g_list_free(dcal->marks[i]);
- }
- g_free(dcal->marks);
- dcal->marks = NULL;
- /* Remove the old mark data. */
- for (l = dcal->markData; l; l = l->next)
- {
- g_list_free(((gdc_mark_data*)l->data)->ourMarks);
- g_free((gdc_mark_data*)l->data);
- }
- g_list_free(dcal->markData);
- dcal->markData = NULL;
+ int i;
+ GList *l;
+ for (i=0; i < dcal->numMarks; i++)
+ {
+ /* Each of these just contains an elt of dcal->markData,
+ * which we're about to free, below... */
+ g_list_free(dcal->marks[i]);
+ }
+ g_free(dcal->marks);
+ dcal->marks = NULL;
+ /* Remove the old mark data. */
+ for (l = dcal->markData; l; l = l->next)
+ {
+ g_list_free(((gdc_mark_data*)l->data)->ourMarks);
+ g_free((gdc_mark_data*)l->data);
+ }
+ g_list_free(dcal->markData);
+ dcal->markData = NULL;
}
static void
recompute_mark_storage(GncDenseCal *dcal)
{
- if (dcal->marks == NULL)
- goto createNew;
- gdc_free_all_mark_data(dcal);
+ if (dcal->marks == NULL)
+ goto createNew;
+ gdc_free_all_mark_data(dcal);
- createNew:
- dcal->numMarks = num_weeks(dcal) * 7;
- dcal->marks = g_new0(GList*, dcal->numMarks);
- if (dcal->model)
- gdc_add_markings(dcal);
+createNew:
+ dcal->numMarks = num_weeks(dcal) * 7;
+ dcal->marks = g_new0(GList*, dcal->numMarks);
+ if (dcal->model)
+ gdc_add_markings(dcal);
}
static void
recompute_extents(GncDenseCal *dcal)
{
- GDate date;
- gint start_week, end_week;
+ GDate date;
+ gint start_week, end_week;
- g_date_clear(&date, 1);
- g_date_set_dmy(&date, 1, dcal->month, dcal->year);
- start_week = g_date_get_sunday_week_of_year(&date);
- g_date_add_months(&date, dcal->numMonths);
- end_week = g_date_get_sunday_week_of_year(&date);
- if (g_date_get_year(&date) != dcal->year)
- end_week += g_date_get_sunday_weeks_in_year(dcal->year);
- dcal->num_weeks = end_week - start_week + 1;
+ g_date_clear(&date, 1);
+ g_date_set_dmy(&date, 1, dcal->month, dcal->year);
+ start_week = g_date_get_sunday_week_of_year(&date);
+ g_date_add_months(&date, dcal->numMonths);
+ end_week = g_date_get_sunday_week_of_year(&date);
+ if (g_date_get_year(&date) != dcal->year)
+ end_week += g_date_get_sunday_weeks_in_year(dcal->year);
+ dcal->num_weeks = end_week - start_week + 1;
}
static void
gnc_dense_cal_size_allocate(GtkWidget *widget,
GtkAllocation *allocation)
{
- GncDenseCal *dcal;
+ GncDenseCal *dcal;
- g_return_if_fail(widget != NULL);
- g_return_if_fail(GNC_IS_DENSE_CAL (widget));
- g_return_if_fail(allocation != NULL);
+ g_return_if_fail(widget != NULL);
+ g_return_if_fail(GNC_IS_DENSE_CAL (widget));
+ g_return_if_fail(allocation != NULL);
- dcal = GNC_DENSE_CAL(widget);
+ dcal = GNC_DENSE_CAL(widget);
- widget->allocation = *allocation;
+ widget->allocation = *allocation;
- if (GTK_WIDGET_REALIZED(widget)) {
- gdk_window_move_resize(widget->window,
- allocation->x, allocation->y,
- allocation->width,
- allocation->height);
+ if (GTK_WIDGET_REALIZED(widget)) {
+ gdk_window_move_resize(widget->window,
+ allocation->x, allocation->y,
+ allocation->width,
+ allocation->height);
- /* We want to know how many px we can increase every day
- * [width] or week [height]. */
- recompute_x_y_scales(dcal);
+ /* We want to know how many px we can increase every day
+ * [width] or week [height]. */
+ recompute_x_y_scales(dcal);
- gdc_reconfig(dcal);
- }
+ gdc_reconfig(dcal);
+ }
}
static void
free_rect(gpointer data, gpointer ud)
{
- g_free((GdkRectangle*)data);
+ g_free((GdkRectangle*)data);
}
static gint
gnc_dense_cal_expose(GtkWidget *widget,
- GdkEventExpose *event)
+ GdkEventExpose *event)
{
- GncDenseCal *dcal;
- GdkGC *gc;
+ GncDenseCal *dcal;
+ GdkGC *gc;
- g_return_val_if_fail(widget != NULL, FALSE);
- g_return_val_if_fail(GNC_IS_DENSE_CAL(widget), FALSE);
- g_return_val_if_fail(event != NULL, FALSE);
+ g_return_val_if_fail(widget != NULL, FALSE);
+ g_return_val_if_fail(GNC_IS_DENSE_CAL(widget), FALSE);
+ g_return_val_if_fail(event != NULL, FALSE);
- if (event->count > 0)
- return FALSE;
+ if (event->count > 0)
+ return FALSE;
- dcal = GNC_DENSE_CAL(widget);
- gc = widget->style->fg_gc[GTK_WIDGET_STATE(widget)];
- gdk_draw_drawable(GDK_DRAWABLE(widget->window),
- gc,
- GDK_DRAWABLE(dcal->drawbuf),
- 0, 0, 0, 0,
- widget->allocation.width,
- widget->allocation.height);
+ dcal = GNC_DENSE_CAL(widget);
+ gc = widget->style->fg_gc[GTK_WIDGET_STATE(widget)];
+ gdk_draw_drawable(GDK_DRAWABLE(widget->window),
+ gc,
+ GDK_DRAWABLE(dcal->drawbuf),
+ 0, 0, 0, 0,
+ widget->allocation.width,
+ widget->allocation.height);
- return FALSE;
+ return FALSE;
}
static void
gnc_dense_cal_draw_to_buffer(GncDenseCal *dcal)
{
- GtkWidget *widget;
- gint i;
- int maxWidth;
- PangoLayout *layout;
+ GtkWidget *widget;
+ gint i;
+ int maxWidth;
+ PangoLayout *layout;
- widget = &dcal->widget;
+ widget = &dcal->widget;
- if (!dcal->drawbuf)
- return;
+ if (!dcal->drawbuf)
+ return;
- layout = gtk_widget_create_pango_layout(GTK_WIDGET(dcal), NULL);
+ layout = gtk_widget_create_pango_layout(GTK_WIDGET(dcal), NULL);
- gdk_draw_rectangle(dcal->drawbuf,
- widget->style->white_gc,
- TRUE,
- 0, 0,
- widget->allocation.width,
- widget->allocation.height);
+ gdk_draw_rectangle(dcal->drawbuf,
+ widget->style->white_gc,
+ TRUE,
+ 0, 0,
+ widget->allocation.width,
+ widget->allocation.height);
- /* Fill in alternating month colors. */
- {
- gint i;
- GdkGC *gc;
- GdkRectangle *rect;
- GList *mcList, *mcListIter;
+ /* Fill in alternating month colors. */
+ {
+ gint i;
+ GdkGC *gc;
+ GdkRectangle *rect;
+ GList *mcList, *mcListIter;
- gc = gdk_gc_new(dcal->widget.window);
- gdk_gc_copy(gc, widget->style->fg_gc[GTK_WIDGET_STATE(widget)]);
+ gc = gdk_gc_new(dcal->widget.window);
+ gdk_gc_copy(gc, widget->style->fg_gc[GTK_WIDGET_STATE(widget)]);
- /* reset all of the month position offsets. */
- for (i=0; i<12; i++)
- {
- dcal->monthPositions[i].x = dcal->monthPositions[i].y = -1;
- }
+ /* reset all of the month position offsets. */
+ for (i=0; i<12; i++)
+ {
+ dcal->monthPositions[i].x = dcal->monthPositions[i].y = -1;
+ }
- /* Paint the weeks for the upcoming N months. */
- for (i=0; i < dcal->numMonths; i++)
- {
- gdk_gc_set_foreground(gc, &dcal->weekColors[ i % 2 ]);
+ /* Paint the weeks for the upcoming N months. */
+ for (i=0; i < dcal->numMonths; i++)
+ {
+ gdk_gc_set_foreground(gc, &dcal->weekColors[ i % 2 ]);
- mcList = NULL;
- month_coords(dcal, i, &mcList);
- dcal->monthPositions[i].x
- = floor(i/dcal->monthsPerCol)
- * (col_width(dcal) + COL_BORDER_SIZE);
- dcal->monthPositions[i].y = ((GdkRectangle*)mcList->next->data)->y;
- for (mcListIter = mcList; mcListIter != NULL; mcListIter = mcListIter->next)
- {
- rect = (GdkRectangle*)mcListIter->data;
- gdk_draw_rectangle(dcal->drawbuf, gc,
- TRUE, rect->x, rect->y,
- rect->width - 2, rect->height);
- }
- g_list_foreach(mcList, free_rect, NULL);
- g_list_free(mcList);
- }
+ mcList = NULL;
+ month_coords(dcal, i, &mcList);
+ dcal->monthPositions[i].x
+ = floor(i/dcal->monthsPerCol)
+ * (col_width(dcal) + COL_BORDER_SIZE);
+ dcal->monthPositions[i].y = ((GdkRectangle*)mcList->next->data)->y;
+ for (mcListIter = mcList; mcListIter != NULL; mcListIter = mcListIter->next)
+ {
+ rect = (GdkRectangle*)mcListIter->data;
+ gdk_draw_rectangle(dcal->drawbuf, gc,
+ TRUE, rect->x, rect->y,
+ rect->width - 2, rect->height);
+ }
+ g_list_foreach(mcList, free_rect, NULL);
+ g_list_free(mcList);
+ }
- gdk_gc_destroy(gc);
- }
+ gdk_gc_destroy(gc);
+ }
- /* Hilight the marked days. */
- {
- int i;
- int x1, x2, y1, y2;
- GdkColor markColor, black;
- GdkGCValues current_values;
+ /* Hilight the marked days. */
+ {
+ int i;
+ int x1, x2, y1, y2;
+ GdkColor markColor, black;
+ GdkGCValues current_values;
- gdk_gc_get_values(widget->style->fg_gc[widget->state], ¤t_values);
+ gdk_gc_get_values(widget->style->fg_gc[widget->state], ¤t_values);
- gdk_color_parse(MARK_COLOR, &markColor);
- gdk_colormap_alloc_color(gdk_colormap_get_system(), &markColor, TRUE, TRUE);
+ gdk_color_parse(MARK_COLOR, &markColor);
+ gdk_colormap_alloc_color(gdk_colormap_get_system(), &markColor, TRUE, TRUE);
- gdk_gc_set_foreground(widget->style->fg_gc[widget->state], &markColor);
- for (i=0; i<dcal->numMarks; i++)
- {
- if (dcal->marks[i] != NULL)
- {
- int w,h, x_offset, y_offset, circle_delta;
+ gdk_gc_set_foreground(widget->style->fg_gc[widget->state], &markColor);
+ for (i=0; i<dcal->numMarks; i++)
+ {
+ if (dcal->marks[i] != NULL)
+ {
+ int w,h, x_offset, y_offset, circle_delta;
- doc_coords(dcal, i, &x1, &y1, &x2, &y2);
- w = x2 - x1;
- h = y2 - y1;
+ doc_coords(dcal, i, &x1, &y1, &x2, &y2);
+ w = x2 - x1;
+ h = y2 - y1;
- x_offset = x1;
- y_offset = y1;
+ x_offset = x1;
+ y_offset = y1;
- circle_delta = ABS(w-h) / 2;
- if (w < h)
- {
- y_offset += circle_delta;
- }
- else
- {
- x_offset += circle_delta;
- }
+ circle_delta = ABS(w-h) / 2;
+ if (w < h)
+ {
+ y_offset += circle_delta;
+ }
+ else
+ {
+ x_offset += circle_delta;
+ }
- gdk_draw_arc(dcal->drawbuf,
- widget->style->fg_gc[widget->state],
- TRUE,
- x_offset, y_offset, MIN(w,h), MIN(w,h),
- 0 * 64,
- 360 * 64);
- }
- }
+ gdk_draw_arc(dcal->drawbuf,
+ widget->style->fg_gc[widget->state],
+ TRUE,
+ x_offset, y_offset, MIN(w,h), MIN(w,h),
+ 0 * 64,
+ 360 * 64);
+ }
+ }
- // reset to the previous foreground color.
- gdk_gc_set_foreground(widget->style->fg_gc[widget->state], ¤t_values.foreground);
- }
+ // reset to the previous foreground color.
+ gdk_gc_set_foreground(widget->style->fg_gc[widget->state], ¤t_values.foreground);
+ }
- for (i=0; i < num_cols(dcal); i++)
- {
- gint x, y, w, h;
- gint j;
+ for (i=0; i < num_cols(dcal); i++)
+ {
+ gint x, y, w, h;
+ gint j;
- pango_layout_set_text(layout, "S", -1);
- pango_layout_get_pixel_size(layout, NULL, &dcal->dayLabelHeight);
+ pango_layout_set_text(layout, "S", -1);
+ pango_layout_get_pixel_size(layout, NULL, &dcal->dayLabelHeight);
- x = dcal->leftPadding
- + (i * (col_width(dcal)+COL_BORDER_SIZE))
- + dcal->label_width;
- y = dcal->topPadding + dcal->dayLabelHeight;
- w = col_width(dcal) - COL_BORDER_SIZE - dcal->label_width - 2;
- h = col_height(dcal);
+ x = dcal->leftPadding
+ + (i * (col_width(dcal)+COL_BORDER_SIZE))
+ + dcal->label_width;
+ y = dcal->topPadding + dcal->dayLabelHeight;
+ w = col_width(dcal) - COL_BORDER_SIZE - dcal->label_width - 2;
+ h = col_height(dcal);
- /* draw the outside border [inside the month labels] */
- gdk_draw_rectangle(dcal->drawbuf,
- widget->style->fg_gc[widget->state],
- FALSE, x, y, w, h);
- /* draw the week seperations */
- for (j=0; j < num_weeks_per_col(dcal); j++)
- {
- gint wy = y + (j * week_height(dcal));
- gdk_draw_line(dcal->drawbuf,
- widget->style->fg_gc[widget->state],
- x, wy,
- x + w, wy);
- }
+ /* draw the outside border [inside the month labels] */
+ gdk_draw_rectangle(dcal->drawbuf,
+ widget->style->fg_gc[widget->state],
+ FALSE, x, y, w, h);
+ /* draw the week seperations */
+ for (j=0; j < num_weeks_per_col(dcal); j++)
+ {
+ gint wy = y + (j * week_height(dcal));
+ gdk_draw_line(dcal->drawbuf,
+ widget->style->fg_gc[widget->state],
+ x, wy,
+ x + w, wy);
+ }
- /* draw the day seperations */
- for (j=1; j<7; j++)
- {
- gint dx = x + (j * day_width(dcal));
- gdk_draw_line(dcal->drawbuf,
- widget->style->fg_gc[widget->state],
- dx, y,
- dx, y + col_height(dcal));
- }
+ /* draw the day seperations */
+ for (j=1; j<7; j++)
+ {
+ gint dx = x + (j * day_width(dcal));
+ gdk_draw_line(dcal->drawbuf,
+ widget->style->fg_gc[widget->state],
+ dx, y,
+ dx, y + col_height(dcal));
+ }
- /* draw the day labels */
- pango_layout_set_text(layout, "88", -1);
- pango_layout_get_pixel_size(layout, &maxWidth, NULL);
+ /* draw the day labels */
+ pango_layout_set_text(layout, "88", -1);
+ pango_layout_get_pixel_size(layout, &maxWidth, NULL);
- if (dcal->x_scale > maxWidth)
- {
- for (j=0; j<7; j++)
- {
- int day_label_width;
- gint label_x_offset, label_y_offset;
+ if (dcal->x_scale > maxWidth)
+ {
+ for (j=0; j<7; j++)
+ {
+ int day_label_width;
+ gint label_x_offset, label_y_offset;
- pango_layout_set_text(layout, day_label(j), -1);
- pango_layout_get_pixel_size(layout, &day_label_width, NULL);
- label_x_offset = x
- + (j * day_width(dcal))
- + (day_width(dcal)/2)
- - (day_label_width / 2);
- label_y_offset = y - dcal->dayLabelHeight;
- pango_layout_set_text(layout, day_label(j), -1);
- gdk_draw_layout(GDK_DRAWABLE(dcal->drawbuf), widget->style->fg_gc[widget->state],
- label_x_offset, label_y_offset,
- layout);
+ pango_layout_set_text(layout, day_label(j), -1);
+ pango_layout_get_pixel_size(layout, &day_label_width, NULL);
+ label_x_offset = x
+ + (j * day_width(dcal))
+ + (day_width(dcal)/2)
+ - (day_label_width / 2);
+ label_y_offset = y - dcal->dayLabelHeight;
+ pango_layout_set_text(layout, day_label(j), -1);
+ gdk_draw_layout(GDK_DRAWABLE(dcal->drawbuf), widget->style->fg_gc[widget->state],
+ label_x_offset, label_y_offset,
+ layout);
- }
- }
- }
+ }
+ }
+ }
- /* Month labels. */
- {
- gint i;
- PangoMatrix matrix = PANGO_MATRIX_INIT;
+ /* Month labels. */
+ {
+ gint i;
+ PangoMatrix matrix = PANGO_MATRIX_INIT;
- pango_matrix_rotate(&matrix, 90.);
- pango_context_set_matrix(gtk_widget_get_pango_context(GTK_WIDGET(dcal)), &matrix);
+ pango_matrix_rotate(&matrix, 90.);
+ pango_context_set_matrix(gtk_widget_get_pango_context(GTK_WIDGET(dcal)), &matrix);
- for (i=0; i<12; i++)
- {
- guint x, y, idx;
+ for (i=0; i<12; i++)
+ {
+ guint x, y, idx;
- if (dcal->monthPositions[i].x == -1)
- break;
- idx = (dcal->month - 1 + i) % 12;
- pango_layout_set_text(layout, month_name(i), -1);
- gdk_draw_layout(GDK_DRAWABLE(dcal->drawbuf),
- widget->style->fg_gc[widget->state],
- dcal->leftPadding + dcal->monthPositions[i].x,
- dcal->monthPositions[i].y,
- layout);
- }
+ if (dcal->monthPositions[i].x == -1)
+ break;
+ idx = (dcal->month - 1 + i) % 12;
+ pango_layout_set_text(layout, month_name(i), -1);
+ gdk_draw_layout(GDK_DRAWABLE(dcal->drawbuf),
+ widget->style->fg_gc[widget->state],
+ dcal->leftPadding + dcal->monthPositions[i].x,
+ dcal->monthPositions[i].y,
+ layout);
+ }
- // reset rotation
- pango_matrix_rotate(&matrix, -90.);
- pango_context_set_matrix(gtk_widget_get_pango_context(GTK_WIDGET(dcal)), &matrix);
- }
+ // reset rotation
+ pango_matrix_rotate(&matrix, -90.);
+ pango_context_set_matrix(gtk_widget_get_pango_context(GTK_WIDGET(dcal)), &matrix);
+ }
- /* Try the per-day strings [dates] */
- {
- GDate d, eoc;
- gint doc;
- gchar dayNumBuf[3];
- gint numW, numH;
- gint x1, y1, x2, y2, w, h;
+ /* Try the per-day strings [dates] */
+ {
+ GDate d, eoc;
+ gint doc;
+ gchar dayNumBuf[3];
+ gint numW, numH;
+ gint x1, y1, x2, y2, w, h;
- g_date_set_dmy(&d, 1, dcal->month, dcal->year);
- eoc = d;
- g_date_add_months(&eoc, dcal->numMonths);
- for (doc = 0; g_date_get_julian(&d) < g_date_get_julian(&eoc); g_date_add_days(&d, 1), doc++)
- {
- doc_coords(dcal, doc, &x1, &y1, &x2, &y2);
- memset(dayNumBuf, 0, 3);
- snprintf(dayNumBuf, 3, "%d", g_date_get_day(&d));
- pango_layout_set_text(layout, dayNumBuf, -1);
- pango_layout_get_pixel_size(layout, &numW, &numH);
- w = (x2 - x1)+1;
- h = (y2 - y1)+1;
- gdk_draw_layout(GDK_DRAWABLE(dcal->drawbuf),
- widget->style->fg_gc[widget->state],
- x1 + (w/2) - (numW/2),
- y1 + (h/2) - (numH/2),
- layout);
- }
- }
+ g_date_set_dmy(&d, 1, dcal->month, dcal->year);
+ eoc = d;
+ g_date_add_months(&eoc, dcal->numMonths);
+ for (doc = 0; g_date_get_julian(&d) < g_date_get_julian(&eoc); g_date_add_days(&d, 1), doc++)
+ {
+ doc_coords(dcal, doc, &x1, &y1, &x2, &y2);
+ memset(dayNumBuf, 0, 3);
+ snprintf(dayNumBuf, 3, "%d", g_date_get_day(&d));
+ pango_layout_set_text(layout, dayNumBuf, -1);
+ pango_layout_get_pixel_size(layout, &numW, &numH);
+ w = (x2 - x1)+1;
+ h = (y2 - y1)+1;
+ gdk_draw_layout(GDK_DRAWABLE(dcal->drawbuf),
+ widget->style->fg_gc[widget->state],
+ x1 + (w/2) - (numW/2),
+ y1 + (h/2) - (numH/2),
+ layout);
+ }
+ }
- {
- GdkRectangle update_rect;
- update_rect.x = 0;
- update_rect.y = 0;
- update_rect.width = widget->allocation.width;
- update_rect.height = widget->allocation.height;
- gtk_widget_draw(GTK_WIDGET(dcal), &update_rect);
- }
+ {
+ GdkRectangle update_rect;
+ update_rect.x = 0;
+ update_rect.y = 0;
+ update_rect.width = widget->allocation.width;
+ update_rect.height = widget->allocation.height;
+ gtk_widget_draw(GTK_WIDGET(dcal), &update_rect);
+ }
}
static void
populate_hover_window(GncDenseCal *dcal, gint doc)
{
- GtkWidget *w;
- GDate *date;
- static const int MAX_STRFTIME_BUF_LEN = 64;
- gchar strftimeBuf[MAX_STRFTIME_BUF_LEN];
+ GtkWidget *w;
+ GDate *date;
+ static const int MAX_STRFTIME_BUF_LEN = 64;
+ gchar strftimeBuf[MAX_STRFTIME_BUF_LEN];
- if (doc >= 0)
- {
- GObject *o;
- GtkListStore *model;
- GList *l;
+ if (doc >= 0)
+ {
+ GObject *o;
+ GtkListStore *model;
+ GList *l;
- w = GTK_WIDGET(g_object_get_data(G_OBJECT(dcal->transPopup), "dateLabel"));
- date = g_date_new_dmy(1, dcal->month, dcal->year);
- g_date_add_days(date, doc);
- /* Note: the ISO date format (%F or equivalently
- * %Y-%m-%d) is not a good idea here since many
- * locales will want to use a very different date
- * format. Please leave the specification of the date
- * format up to the locale and use %x here. */
- g_date_strftime(strftimeBuf, MAX_STRFTIME_BUF_LEN-1, "%x", date);
- gtk_label_set_text(GTK_LABEL(w), strftimeBuf);
+ w = GTK_WIDGET(g_object_get_data(G_OBJECT(dcal->transPopup), "dateLabel"));
+ date = g_date_new_dmy(1, dcal->month, dcal->year);
+ g_date_add_days(date, doc);
+ /* Note: the ISO date format (%F or equivalently
+ * %Y-%m-%d) is not a good idea here since many
+ * locales will want to use a very different date
+ * format. Please leave the specification of the date
+ * format up to the locale and use %x here. */
+ g_date_strftime(strftimeBuf, MAX_STRFTIME_BUF_LEN-1, "%x", date);
+ gtk_label_set_text(GTK_LABEL(w), strftimeBuf);
- o = G_OBJECT(dcal->transPopup);
- model = GTK_LIST_STORE(g_object_get_data(o, "model"));
- gtk_list_store_clear(model);
- for (l = dcal->marks[doc]; l; l = l->next)
- {
- GtkTreeIter iter;
- gdc_mark_data *gdcmd;
+ o = G_OBJECT(dcal->transPopup);
+ model = GTK_LIST_STORE(g_object_get_data(o, "model"));
+ gtk_list_store_clear(model);
+ for (l = dcal->marks[doc]; l; l = l->next)
+ {
+ GtkTreeIter iter;
+ gdc_mark_data *gdcmd;
- gdcmd = (gdc_mark_data*)l->data;
- gtk_list_store_insert(model, &iter, INT_MAX);
- gtk_list_store_set(model, &iter, 0, (gdcmd->name ? gdcmd->name : _("(unnamed)")), 1, gdcmd->info, -1);
- }
+ gdcmd = (gdc_mark_data*)l->data;
+ gtk_list_store_insert(model, &iter, INT_MAX);
+ gtk_list_store_set(model, &iter, 0, (gdcmd->name ? gdcmd->name : _("(unnamed)")), 1, gdcmd->info, -1);
+ }
- g_date_free(date);
- }
+ g_date_free(date);
+ }
}
static gint
gnc_dense_cal_button_press(GtkWidget *widget,
- GdkEventButton *evt)
+ GdkEventButton *evt)
{
- gint doc;
- GncDenseCal *dcal = GNC_DENSE_CAL(widget);
+ gint doc;
+ GncDenseCal *dcal = GNC_DENSE_CAL(widget);
- doc = wheres_this(dcal, evt->x, evt->y);
- dcal->showPopup = ~(dcal->showPopup);
- if (dcal->showPopup && doc >= 0)
- {
- // Do the move twice in case the WM is ignoring the first one
- // because the window hasn't been shown, yet. The WM is free
- // to ignore our move and place windows according to it's own
- // strategy, but hopefully it'll listen to us. Certainly the
- // second move after show_all'ing the window should do the
- // trick with a bit of flicker.
- gtk_window_move(GTK_WINDOW(dcal->transPopup), evt->x_root+5, evt->y_root+5);
- populate_hover_window(dcal, doc);
- gtk_widget_show_all(GTK_WIDGET(dcal->transPopup));
- gtk_window_move(GTK_WINDOW(dcal->transPopup), evt->x_root+5, evt->y_root+5);
- }
- else
- {
- gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
- }
- return FALSE;
+ doc = wheres_this(dcal, evt->x, evt->y);
+ dcal->showPopup = ~(dcal->showPopup);
+ if (dcal->showPopup && doc >= 0)
+ {
+ // Do the move twice in case the WM is ignoring the first one
+ // because the window hasn't been shown, yet. The WM is free
+ // to ignore our move and place windows according to it's own
+ // strategy, but hopefully it'll listen to us. Certainly the
+ // second move after show_all'ing the window should do the
+ // trick with a bit of flicker.
+ gtk_window_move(GTK_WINDOW(dcal->transPopup), evt->x_root+5, evt->y_root+5);
+ populate_hover_window(dcal, doc);
+ gtk_widget_show_all(GTK_WIDGET(dcal->transPopup));
+ gtk_window_move(GTK_WINDOW(dcal->transPopup), evt->x_root+5, evt->y_root+5);
+ }
+ else
+ {
+ gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
+ }
+ return FALSE;
}
static gint
gnc_dense_cal_motion_notify(GtkWidget *widget,
GdkEventMotion *event)
{
- GncDenseCal *dcal;
- gint doc;
- int unused;
- int x_root_offset, y_root_offset;
- GdkModifierType unused2;
+ GncDenseCal *dcal;
+ gint doc;
+ int unused;
+ int x_root_offset, y_root_offset;
+ GdkModifierType unused2;
- dcal = GNC_DENSE_CAL(widget);
- if (!dcal->showPopup)
- return FALSE;
+ dcal = GNC_DENSE_CAL(widget);
+ if (!dcal->showPopup)
+ return FALSE;
- x_root_offset = event->x_root;
- y_root_offset = event->y_root;
+ x_root_offset = event->x_root;
+ y_root_offset = event->y_root;
- /* As per http://www.gtk.org/tutorial/sec-eventhandling.html */
- if (event->is_hint)
- gdk_window_get_pointer(event->window, &unused, &unused, &unused2);
- gdk_window_move(GTK_WIDGET(dcal->transPopup)->window,
- x_root_offset+5, y_root_offset+5);
- doc = wheres_this(dcal, event->x, event->y);
- if (doc >= 0)
- {
- populate_hover_window(dcal, doc);
- gtk_widget_show_all(GTK_WIDGET(dcal->transPopup));
- }
- else
- {
- gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
- }
- return TRUE;
+ /* As per http://www.gtk.org/tutorial/sec-eventhandling.html */
+ if (event->is_hint)
+ gdk_window_get_pointer(event->window, &unused, &unused, &unused2);
+ gdk_window_move(GTK_WIDGET(dcal->transPopup)->window,
+ x_root_offset+5, y_root_offset+5);
+ doc = wheres_this(dcal, event->x, event->y);
+ if (doc >= 0)
+ {
+ populate_hover_window(dcal, doc);
+ gtk_widget_show_all(GTK_WIDGET(dcal->transPopup));
+ }
+ else
+ {
+ gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
+ }
+ return TRUE;
}
static inline int
day_width_at(GncDenseCal *dcal, guint xScale)
{
- return xScale + MINOR_BORDER_SIZE;
+ return xScale + MINOR_BORDER_SIZE;
}
static inline int
day_width(GncDenseCal *dcal)
{
- return day_width_at(dcal, dcal->x_scale);
+ return day_width_at(dcal, dcal->x_scale);
}
static inline int
day_height_at(GncDenseCal *dcal, guint yScale)
{
- return yScale + MINOR_BORDER_SIZE;
+ return yScale + MINOR_BORDER_SIZE;
}
static inline int
day_height(GncDenseCal *dcal)
{
- return day_height_at(dcal, dcal->y_scale);
+ return day_height_at(dcal, dcal->y_scale);
}
static inline int
week_width_at(GncDenseCal *dcal, guint xScale)
{
- return day_width_at(dcal, xScale) * 7;
+ return day_width_at(dcal, xScale) * 7;
}
static inline int
week_width(GncDenseCal *dcal)
{
- return week_width_at(dcal, dcal->x_scale);
+ return week_width_at(dcal, dcal->x_scale);
}
static inline int
week_height_at(GncDenseCal *dcal, guint yScale)
{
- return day_height_at(dcal, yScale);
+ return day_height_at(dcal, yScale);
}
static inline int
week_height(GncDenseCal *dcal)
{
- return week_height_at(dcal, dcal->y_scale);
+ return week_height_at(dcal, dcal->y_scale);
}
static inline int
col_width_at(GncDenseCal *dcal, guint xScale)
{
- return (week_width_at(dcal, xScale)
- + dcal->label_width
- + COL_BORDER_SIZE);
+ return (week_width_at(dcal, xScale)
+ + dcal->label_width
+ + COL_BORDER_SIZE);
}
static inline int
col_width(GncDenseCal *dcal)
{
- return col_width_at(dcal, dcal->x_scale);
+ return col_width_at(dcal, dcal->x_scale);
}
static inline int
col_height(GncDenseCal *dcal)
{
- return week_height(dcal) * num_weeks_per_col(dcal);
+ return week_height(dcal) * num_weeks_per_col(dcal);
}
static inline int
num_cols(GncDenseCal *dcal)
{
- return ceil((float)dcal->numMonths / (float)dcal->monthsPerCol);
+ return ceil((float)dcal->numMonths / (float)dcal->monthsPerCol);
}
static inline int
num_weeks(GncDenseCal *dcal)
{
- return dcal->num_weeks;
+ return dcal->num_weeks;
}
static
int num_weeks_per_col(GncDenseCal *dcal)
{
- int num_weeks_toRet, numCols, i;
- GDate *start,*end;
- int startWeek, endWeek;
+ int num_weeks_toRet, numCols, i;
+ GDate *start,*end;
+ int startWeek, endWeek;
- start = g_date_new();
- end = g_date_new();
+ start = g_date_new();
+ end = g_date_new();
- num_weeks_toRet = 0;
- numCols = num_cols(dcal);
+ num_weeks_toRet = 0;
+ numCols = num_cols(dcal);
- for (i=0; i<numCols; i++)
- {
- g_date_set_dmy(start, 1,
- ((dcal->month - 1
- + (i * dcal->monthsPerCol)) % 12)
- + 1,
- dcal->year + floor((dcal->month - 1
- + (i*dcal->monthsPerCol))
- / 12));
- *end = *start;
- /* Add the smaller of (the number of months in the
- * calendar-display, minus the number of months shown in the
- * previous columns) or (the number of months in a column) */
- g_date_add_months(end, MIN(dcal->numMonths,
- MIN(dcal->monthsPerCol,
- dcal->numMonths
- - ((i-1)
- * dcal->monthsPerCol))));
- g_date_subtract_days(end, 1);
- startWeek = g_date_get_sunday_week_of_year(start);
- endWeek = g_date_get_sunday_week_of_year(end);
- if (endWeek < startWeek)
- {
- endWeek += g_date_get_sunday_weeks_in_year(g_date_get_year(start));
- }
- num_weeks_toRet = MAX(num_weeks_toRet, (endWeek - startWeek)+1);
- }
- return num_weeks_toRet;
+ for (i=0; i<numCols; i++)
+ {
+ g_date_set_dmy(start, 1,
+ ((dcal->month - 1
+ + (i * dcal->monthsPerCol)) % 12)
+ + 1,
+ dcal->year + floor((dcal->month - 1
+ + (i*dcal->monthsPerCol))
+ / 12));
+ *end = *start;
+ /* Add the smaller of (the number of months in the
+ * calendar-display, minus the number of months shown in the
+ * previous columns) or (the number of months in a column) */
+ g_date_add_months(end, MIN(dcal->numMonths,
+ MIN(dcal->monthsPerCol,
+ dcal->numMonths
+ - ((i-1)
+ * dcal->monthsPerCol))));
+ g_date_subtract_days(end, 1);
+ startWeek = g_date_get_sunday_week_of_year(start);
+ endWeek = g_date_get_sunday_week_of_year(end);
+ if (endWeek < startWeek)
+ {
+ endWeek += g_date_get_sunday_weeks_in_year(g_date_get_year(start));
+ }
+ num_weeks_toRet = MAX(num_weeks_toRet, (endWeek - startWeek)+1);
+ }
+ return num_weeks_toRet;
}
/**
@@ -1230,122 +1230,122 @@
static void
month_coords(GncDenseCal *dcal, int monthOfCal, GList **outList)
{
- gint weekRow, colNum, previousMonthsInCol, monthOffset;
- gint start;
- GDate *startD, *endD;
- GdkRectangle *rect;
- gint startWk, endWk;
+ gint weekRow, colNum, previousMonthsInCol, monthOffset;
+ gint start;
+ GDate *startD, *endD;
+ GdkRectangle *rect;
+ gint startWk, endWk;
- if (monthOfCal > dcal->numMonths)
- return;
+ if (monthOfCal > dcal->numMonths)
+ return;
- colNum = floor(monthOfCal / dcal->monthsPerCol);
- monthOffset = colNum * dcal->monthsPerCol;
- previousMonthsInCol = MAX(0, (monthOfCal % dcal->monthsPerCol));
+ colNum = floor(monthOfCal / dcal->monthsPerCol);
+ monthOffset = colNum * dcal->monthsPerCol;
+ previousMonthsInCol = MAX(0, (monthOfCal % dcal->monthsPerCol));
- startD = g_date_new();
- endD = g_date_new();
+ startD = g_date_new();
+ endD = g_date_new();
- /* Calculate the number of weeks in the column before the month we're
- * interested in. */
- weekRow = 0;
- if (previousMonthsInCol > 0)
- {
- g_date_set_dmy(startD, 1,
- ((dcal->month - 1 + monthOffset) % 12) + 1,
- dcal->year + floor((dcal->month-1+monthOffset)/12));
- /* get the week of the top of the column */
- startWk = g_date_get_sunday_week_of_year(startD);
- /* get the week of the end of the previous months */
- *endD = *startD;
- g_date_add_months(endD, previousMonthsInCol);
- g_date_subtract_days(endD, 1);
- endWk = g_date_get_sunday_week_of_year(endD);
- if (endWk < startWk)
- {
- endWk += g_date_get_sunday_weeks_in_year(g_date_get_year(startD));
- }
- /* determine how many weeks are before the month we're
- * interested in. */
- weekRow = endWk - startWk;
- if (g_date_get_weekday(endD) == G_DATE_SATURDAY)
- {
- weekRow++;
- }
- }
+ /* Calculate the number of weeks in the column before the month we're
+ * interested in. */
+ weekRow = 0;
+ if (previousMonthsInCol > 0)
+ {
+ g_date_set_dmy(startD, 1,
+ ((dcal->month - 1 + monthOffset) % 12) + 1,
+ dcal->year + floor((dcal->month-1+monthOffset)/12));
+ /* get the week of the top of the column */
+ startWk = g_date_get_sunday_week_of_year(startD);
+ /* get the week of the end of the previous months */
+ *endD = *startD;
+ g_date_add_months(endD, previousMonthsInCol);
+ g_date_subtract_days(endD, 1);
+ endWk = g_date_get_sunday_week_of_year(endD);
+ if (endWk < startWk)
+ {
+ endWk += g_date_get_sunday_weeks_in_year(g_date_get_year(startD));
+ }
+ /* determine how many weeks are before the month we're
+ * interested in. */
+ weekRow = endWk - startWk;
+ if (g_date_get_weekday(endD) == G_DATE_SATURDAY)
+ {
+ weekRow++;
+ }
+ }
- g_date_set_dmy(startD, 1,
- ((dcal->month - 1 + monthOfCal) % 12) + 1,
- dcal->year + floor((dcal->month-1+monthOfCal)/12));
- *endD = *startD;
- g_date_add_months(endD, 1);
- g_date_subtract_days(endD, 1);
- /* Get the first week. */
- {
- start = g_date_get_weekday(startD) % 7;
- rect = g_new0(GdkRectangle, 1);
- rect->x = dcal->leftPadding
- + MINOR_BORDER_SIZE
- + (colNum * (col_width(dcal) + COL_BORDER_SIZE))
- + dcal->label_width
- + (start * day_width(dcal));
- rect->y = dcal->topPadding
- + dcal->dayLabelHeight
- + MINOR_BORDER_SIZE
- + (weekRow * week_height(dcal));
- rect->width = (7 - start) * day_width(dcal);
- rect->height = week_height(dcal);
- *outList = g_list_append(*outList, (gpointer)rect);
- rect = NULL;
- }
+ g_date_set_dmy(startD, 1,
+ ((dcal->month - 1 + monthOfCal) % 12) + 1,
+ dcal->year + floor((dcal->month-1+monthOfCal)/12));
+ *endD = *startD;
+ g_date_add_months(endD, 1);
+ g_date_subtract_days(endD, 1);
+ /* Get the first week. */
+ {
+ start = g_date_get_weekday(startD) % 7;
+ rect = g_new0(GdkRectangle, 1);
+ rect->x = dcal->leftPadding
+ + MINOR_BORDER_SIZE
+ + (colNum * (col_width(dcal) + COL_BORDER_SIZE))
+ + dcal->label_width
+ + (start * day_width(dcal));
+ rect->y = dcal->topPadding
+ + dcal->dayLabelHeight
+ + MINOR_BORDER_SIZE
+ + (weekRow * week_height(dcal));
+ rect->width = (7 - start) * day_width(dcal);
+ rect->height = week_height(dcal);
+ *outList = g_list_append(*outList, (gpointer)rect);
+ rect = NULL;
+ }
- /* Get the middle weeks. */
- {
- gint i, weekStart, weekEnd;
+ /* Get the middle weeks. */
+ {
+ gint i, weekStart, weekEnd;
- weekStart = g_date_get_sunday_week_of_year(startD)+1;
- weekEnd = g_date_get_sunday_week_of_year(endD);
- for (i=weekStart; i<weekEnd; i++) {
- rect = g_new0(GdkRectangle, 1);
- rect->x = dcal->leftPadding
- + MINOR_BORDER_SIZE
- + dcal->label_width
- + (colNum * (col_width(dcal) + COL_BORDER_SIZE));
- rect->y = dcal->topPadding
- + dcal->dayLabelHeight
- + MINOR_BORDER_SIZE
- + ((weekRow + (i-weekStart) + 1) * week_height(dcal));
- rect->width = week_width(dcal);
- rect->height = week_height(dcal);
+ weekStart = g_date_get_sunday_week_of_year(startD)+1;
+ weekEnd = g_date_get_sunday_week_of_year(endD);
+ for (i=weekStart; i<weekEnd; i++) {
+ rect = g_new0(GdkRectangle, 1);
+ rect->x = dcal->leftPadding
+ + MINOR_BORDER_SIZE
+ + dcal->label_width
+ + (colNum * (col_width(dcal) + COL_BORDER_SIZE));
+ rect->y = dcal->topPadding
+ + dcal->dayLabelHeight
+ + MINOR_BORDER_SIZE
+ + ((weekRow + (i-weekStart) + 1) * week_height(dcal));
+ rect->width = week_width(dcal);
+ rect->height = week_height(dcal);
- *outList = g_list_append(*outList, (gpointer)rect);
- rect = NULL;
- }
- }
+ *outList = g_list_append(*outList, (gpointer)rect);
+ rect = NULL;
+ }
+ }
- /* Get the last week. */
- {
- rect = g_new0(GdkRectangle, 1);
- rect->x = dcal->leftPadding
- + MINOR_BORDER_SIZE
- + dcal->label_width
- + (colNum * (col_width(dcal) + COL_BORDER_SIZE));
- rect->y = dcal->topPadding
- + MINOR_BORDER_SIZE
- + dcal->dayLabelHeight
- + ((weekRow
- + (g_date_get_sunday_week_of_year(endD)
- - g_date_get_sunday_week_of_year(startD)))
- * week_height(dcal));
- rect->width = ((g_date_get_weekday(endD) % 7)+1) * day_width(dcal);
- rect->height = week_height(dcal);
+ /* Get the last week. */
+ {
+ rect = g_new0(GdkRectangle, 1);
+ rect->x = dcal->leftPadding
+ + MINOR_BORDER_SIZE
+ + dcal->label_width
+ + (colNum * (col_width(dcal) + COL_BORDER_SIZE));
+ rect->y = dcal->topPadding
+ + MINOR_BORDER_SIZE
+ + dcal->dayLabelHeight
+ + ((weekRow
+ + (g_date_get_sunday_week_of_year(endD)
+ - g_date_get_sunday_week_of_year(startD)))
+ * week_height(dcal));
+ rect->width = ((g_date_get_weekday(endD) % 7)+1) * day_width(dcal);
+ rect->height = week_height(dcal);
- *outList = g_list_append(*outList, (gpointer)rect);
- rect = NULL;
- }
+ *outList = g_list_append(*outList, (gpointer)rect);
+ rect = NULL;
+ }
- g_date_free(startD);
- g_date_free(endD);
+ g_date_free(startD);
+ g_date_free(endD);
}
/* FIXME: make this more like month_coords */
@@ -1353,48 +1353,48 @@
doc_coords(GncDenseCal *dcal, int dayOfCal,
int *x1, int *y1, int *x2, int *y2)
{
- GDate d;
- gint docMonth;
- gint d_week_of_cal, top_of_col_week_of_cal;
- gint colNum, dayCol, weekRow;
+ GDate d;
+ gint docMonth;
+ gint d_week_of_cal, top_of_col_week_of_cal;
+ gint colNum, dayCol, weekRow;
- /* FIXME: add range checks */
- g_date_set_dmy(&d, 1, dcal->month, dcal->year);
- g_date_add_days(&d, dayOfCal);
- docMonth = g_date_get_month(&d);
- if (g_date_get_year(&d) != dcal->year)
- {
- docMonth += 12;
- }
- colNum = floor((float)(docMonth - dcal->month) / (float)dcal->monthsPerCol);
- dayCol = g_date_get_weekday(&d) % 7;
- d_week_of_cal = g_date_get_sunday_week_of_year(&d);
- g_date_set_dmy(&d, 1, dcal->month, dcal->year);
- g_date_add_months(&d, (colNum * dcal->monthsPerCol));
- top_of_col_week_of_cal = g_date_get_sunday_week_of_year(&d);
- if (d_week_of_cal < top_of_col_week_of_cal)
- {
- d_week_of_cal += g_date_get_sunday_weeks_in_year(dcal->year);
- }
- weekRow = d_week_of_cal - top_of_col_week_of_cal;
+ /* FIXME: add range checks */
+ g_date_set_dmy(&d, 1, dcal->month, dcal->year);
+ g_date_add_days(&d, dayOfCal);
+ docMonth = g_date_get_month(&d);
+ if (g_date_get_year(&d) != dcal->year)
+ {
+ docMonth += 12;
+ }
+ colNum = floor((float)(docMonth - dcal->month) / (float)dcal->monthsPerCol);
+ dayCol = g_date_get_weekday(&d) % 7;
+ d_week_of_cal = g_date_get_sunday_week_of_year(&d);
+ g_date_set_dmy(&d, 1, dcal->month, dcal->year);
+ g_date_add_months(&d, (colNum * dcal->monthsPerCol));
+ top_of_col_week_of_cal = g_date_get_sunday_week_of_year(&d);
+ if (d_week_of_cal < top_of_col_week_of_cal)
+ {
+ d_week_of_cal += g_date_get_sunday_weeks_in_year(dcal->year);
+ }
+ weekRow = d_week_of_cal - top_of_col_week_of_cal;
- /* top-left corner */
- /* FIXME: this has the math to make the mark-cells come out right,
- * which it shouldn't. */
- *x1 = dcal->leftPadding
- + MINOR_BORDER_SIZE
- + dcal->label_width
- + (colNum * (col_width(dcal) + COL_BORDER_SIZE))
- + (dayCol * day_width(dcal))
- + (day_width(dcal)/4);
- *y1 = dcal->topPadding
- + MINOR_BORDER_SIZE
- + dcal->dayLabelHeight
- + (weekRow * week_height(dcal))
- + (day_height(dcal)/4);
+ /* top-left corner */
+ /* FIXME: this has the math to make the mark-cells come out right,
+ * which it shouldn't. */
+ *x1 = dcal->leftPadding
+ + MINOR_BORDER_SIZE
+ + dcal->label_width
+ + (colNum * (col_width(dcal) + COL_BORDER_SIZE))
+ + (dayCol * day_width(dcal))
+ + (day_width(dcal)/4);
+ *y1 = dcal->topPadding
+ + MINOR_BORDER_SIZE
+ + dcal->dayLabelHeight
+ + (weekRow * week_height(dcal))
+ + (day_height(dcal)/4);
- *x2 = *x1 + (day_width(dcal)/2);
- *y2 = *y1 + (day_height(dcal)/2);
+ *x2 = *x1 + (day_width(dcal)/2);
+ *y2 = *y1 + (day_height(dcal)/2);
}
/**
@@ -1404,212 +1404,212 @@
static gint
wheres_this(GncDenseCal *dcal, int x, int y)
{
- gint colNum, weekRow, dayCol, dayOfCal;
- GDate d, startD;
+ gint colNum, weekRow, dayCol, dayOfCal;
+ GDate d, startD;
- x -= dcal->leftPadding;
- y -= dcal->topPadding;
+ x -= dcal->leftPadding;
+ y -= dcal->topPadding;
- if ((x < 0) || (y < 0))
- {
- return -1;
- }
- if ((x >= GTK_WIDGET(dcal)->allocation.width)
- || (y >= GTK_WIDGET(dcal)->allocation.height))
- {
- return -1;
- }
+ if ((x < 0) || (y < 0))
+ {
+ return -1;
+ }
+ if ((x >= GTK_WIDGET(dcal)->allocation.width)
+ || (y >= GTK_WIDGET(dcal)->allocation.height))
+ {
+ return -1;
+ }
- /* "outside of displayed table" check */
- if (x >= (num_cols(dcal) * (col_width(dcal) + COL_BORDER_SIZE)))
- {
- return -1;
- }
- if (y >= col_height(dcal))
- {
- return -1;
- }
+ /* "outside of displayed table" check */
+ if (x >= (num_cols(dcal) * (col_width(dcal) + COL_BORDER_SIZE)))
+ {
+ return -1;
+ }
+ if (y >= col_height(dcal))
+ {
+ return -1;
+ }
- /* coords -> year-relative-values */
- colNum = floor(x / (col_width(dcal)+COL_BORDER_SIZE));
+ /* coords -> year-relative-values */
+ colNum = floor(x / (col_width(dcal)+COL_BORDER_SIZE));
- x %= (col_width(dcal)+COL_BORDER_SIZE);
- x -= dcal->label_width;
- if (x < 0)
- {
- return -1;
- }
- if (x >= day_width(dcal) * 7)
- {
- return -1;
- }
+ x %= (col_width(dcal)+COL_BORDER_SIZE);
+ x -= dcal->label_width;
+ if (x < 0)
+ {
+ return -1;
+ }
+ if (x >= day_width(dcal) * 7)
+ {
+ return -1;
+ }
- y -= dcal->dayLabelHeight;
- if (y < 0)
- {
- return -1;
- }
+ y -= dcal->dayLabelHeight;
+ if (y < 0)
+ {
+ return -1;
+ }
- dayCol = floor((float)x / (float)day_width(dcal));
- weekRow = floor((float)y / (float)week_height(dcal));
+ dayCol = floor((float)x / (float)day_width(dcal));
+ weekRow = floor((float)y / (float)week_height(dcal));
- g_date_set_dmy(&startD, 1, dcal->month, dcal->year);
- d = startD;
- g_date_add_months(&d, (colNum * dcal->monthsPerCol));
- dayCol -= (g_date_get_weekday(&d) % 7);
- if (weekRow == 0)
- {
- if (dayCol < 0)
- {
- return -1;
- }
- }
- g_date_add_days(&d, dayCol + (weekRow * 7));
+ g_date_set_dmy(&startD, 1, dcal->month, dcal->year);
+ d = startD;
+ g_date_add_months(&d, (colNum * dcal->monthsPerCol));
+ dayCol -= (g_date_get_weekday(&d) % 7);
+ if (weekRow == 0)
+ {
+ if (dayCol < 0)
+ {
+ return -1;
+ }
+ }
+ g_date_add_days(&d, dayCol + (weekRow * 7));
- /* Check to make sure we're within the column's displayed range. */
- {
- GDate ccd;
- g_date_set_dmy(&ccd, 1, dcal->month, dcal->year);
- g_date_add_months(&ccd, (colNum+1) * dcal->monthsPerCol);
- if (g_date_get_julian(&d) >= g_date_get_julian(&ccd))
- {
- return -1;
- }
- }
+ /* Check to make sure we're within the column's displayed range. */
+ {
+ GDate ccd;
+ g_date_set_dmy(&ccd, 1, dcal->month, dcal->year);
+ g_date_add_months(&ccd, (colNum+1) * dcal->monthsPerCol);
+ if (g_date_get_julian(&d) >= g_date_get_julian(&ccd))
+ {
+ return -1;
+ }
+ }
- dayOfCal = g_date_get_julian(&d) - g_date_get_julian(&startD);
+ dayOfCal = g_date_get_julian(&d) - g_date_get_julian(&startD);
- /* one more check before returning... */
- g_date_subtract_months(&d, dcal->numMonths);
- if (g_date_get_julian(&d) >= g_date_get_julian(&startD))
- {
- /* we're past the end of the displayed calendar, thus -1 */
- g_debug("%d >= %d", g_date_get_julian(&d), g_date_get_julian(&startD));
- return -1;
- }
+ /* one more check before returning... */
+ g_date_subtract_months(&d, dcal->numMonths);
+ if (g_date_get_julian(&d) >= g_date_get_julian(&startD))
+ {
+ /* we're past the end of the displayed calendar, thus -1 */
+ g_debug("%d >= %d", g_date_get_julian(&d), g_date_get_julian(&startD));
+ return -1;
+ }
- return dayOfCal;
+ return dayOfCal;
}
static gint
gdc_get_doc_offset(GncDenseCal *dcal, GDate *d)
{
- gint toRet;
- /* soc == start-of-calendar */
- GDate soc;
+ gint toRet;
+ /* soc == start-of-calendar */
+ GDate soc;
- g_date_clear(&soc, 1);
- g_date_set_dmy(&soc, 1, dcal->month, dcal->year);
- /* ensure not before calendar start. */
- if (g_date_get_julian(d) < g_date_get_julian(&soc))
- return -1;
- /* do computation here, since we're going to change the
- * start-of-calendar date. */
- toRet = g_date_get_julian(d) - g_date_get_julian(&soc);
- /* ensure not after end of visible calendar. */
- g_date_add_months(&soc, dcal->numMonths);
- if (g_date_get_julian(d) > g_date_get_julian(&soc))
- return -1;
- /* return pre-computed value. */
- return toRet;
+ g_date_clear(&soc, 1);
+ g_date_set_dmy(&soc, 1, dcal->month, dcal->year);
+ /* ensure not before calendar start. */
+ if (g_date_get_julian(d) < g_date_get_julian(&soc))
+ return -1;
+ /* do computation here, since we're going to change the
+ * start-of-calendar date. */
+ toRet = g_date_get_julian(d) - g_date_get_julian(&soc);
+ /* ensure not after end of visible calendar. */
+ g_date_add_months(&soc, dcal->numMonths);
+ if (g_date_get_julian(d) > g_date_get_julian(&soc))
+ return -1;
+ /* return pre-computed value. */
+ return toRet;
}
static void
gdc_add_tag_markings(GncDenseCal *cal, guint tag)
{
- gchar *name, *info;
- gint num_marks, idx;
- GDate **dates;
+ gchar *name, *info;
+ gint num_marks, idx;
+ GDate **dates;
- // copy the values into the old marking function.
- name = gnc_dense_cal_model_get_name(cal->model, tag);
- info = gnc_dense_cal_model_get_info(cal->model, tag);
- num_marks = gnc_dense_cal_model_get_instance_count(cal->model, tag);
+ // copy the values into the old marking function.
+ name = gnc_dense_cal_model_get_name(cal->model, tag);
+ info = gnc_dense_cal_model_get_info(cal->model, tag);
+ num_marks = gnc_dense_cal_model_get_instance_count(cal->model, tag);
- if (num_marks == 0)
- return;
+ if (num_marks == 0)
+ return;
- dates = g_new0(GDate*, num_marks);
- for (idx = 0; idx < num_marks; idx++)
- {
- dates[idx] = g_date_new();
- gnc_dense_cal_model_get_instance(cal->model, tag, idx, dates[idx]);
- }
+ dates = g_new0(GDate*, num_marks);
+ for (idx = 0; idx < num_marks; idx++)
+ {
+ dates[idx] = g_date_new();
+ gnc_dense_cal_model_get_instance(cal->model, tag, idx, dates[idx]);
+ }
- gdc_mark_add(cal, tag, name, info, num_marks, dates);
+ gdc_mark_add(cal, tag, name, info, num_marks, dates);
- for (idx = 0; idx < num_marks; idx++)
- {
- g_date_free(dates[idx]);
- }
- g_free(dates);
+ for (idx = 0; idx < num_marks; idx++)
+ {
+ g_date_free(dates[idx]);
+ }
+ g_free(dates);
}
static void
gdc_add_markings(GncDenseCal *cal)
{
- GList *tags;
- tags = gnc_dense_cal_model_get_contained(cal->model);
- for (; tags != NULL; tags = tags->next)
- {
- guint tag = GPOINTER_TO_UINT(tags->data);
- gdc_add_tag_markings(cal, tag);
- }
+ GList *tags;
+ tags = gnc_dense_cal_model_get_contained(cal->model);
+ for (; tags != NULL; tags = tags->next)
+ {
+ guint tag = GPOINTER_TO_UINT(tags->data);
+ gdc_add_tag_markings(cal, tag);
+ }
}
static void
gdc_remove_markings(GncDenseCal *cal)
{
- GList *tags;
- tags = gnc_dense_cal_model_get_contained(cal->model);
- for (; tags != NULL; tags = tags->next)
- {
- guint tag = GPOINTER_TO_UINT(tags->data);
- gdc_mark_remove(cal, tag);
- }
+ GList *tags;
+ tags = gnc_dense_cal_model_get_contained(cal->model);
+ for (; tags != NULL; tags = tags->next)
+ {
+ guint tag = GPOINTER_TO_UINT(tags->data);
+ gdc_mark_remove(cal, tag);
+ }
}
static void
gdc_model_added_cb(GncDenseCalModel *model, guint added_tag, gpointer user_data)
{
- GncDenseCal *cal = GNC_DENSE_CAL(user_data);
- g_debug("gdc_model_added_cb update\n");
- gdc_add_tag_markings(cal, added_tag);
+ GncDenseCal *cal = GNC_DENSE_CAL(user_data);
+ g_debug("gdc_model_added_cb update\n");
+ gdc_add_tag_markings(cal, added_tag);
}
static void
gdc_model_update_cb(GncDenseCalModel *model, guint update_tag, gpointer user_data)
{
- GncDenseCal *cal = GNC_DENSE_CAL(user_data);
- g_debug("gdc_model_update_cb update for tag [%d]\n", update_tag);
- gdc_mark_remove(cal, update_tag);
- gdc_add_tag_markings(cal, update_tag);
+ GncDenseCal *cal = GNC_DENSE_CAL(user_data);
+ g_debug("gdc_model_update_cb update for tag [%d]\n", update_tag);
+ gdc_mark_remove(cal, update_tag);
+ gdc_add_tag_markings(cal, update_tag);
}
static void
gdc_model_removing_cb(GncDenseCalModel *model, guint remove_tag, gpointer user_data)
{
- GncDenseCal *cal = GNC_DENSE_CAL(user_data);
- g_debug("gdc_model_removing_cb update [%d]\n", remove_tag);
- gdc_mark_remove(cal, remove_tag);
+ GncDenseCal *cal = GNC_DENSE_CAL(user_data);
+ g_debug("gdc_model_removing_cb update [%d]\n", remove_tag);
+ gdc_mark_remove(cal, remove_tag);
}
void
gnc_dense_cal_set_model(GncDenseCal *cal, GncDenseCalModel *model)
{
- if (cal->model != NULL)
- {
- gdc_remove_markings(cal);
- g_object_unref(G_OBJECT(cal->model));
- cal->model = NULL;
- }
- cal->model = model;
- g_object_ref(G_OBJECT(model));
- g_signal_connect(G_OBJECT(cal->model), "added", (GCallback)gdc_model_added_cb, cal);
- g_signal_connect(G_OBJECT(cal->model), "update", (GCallback)gdc_model_update_cb, cal);
- g_signal_connect(G_OBJECT(cal->model), "removing", (GCallback)gdc_model_removing_cb, cal);
+ if (cal->model != NULL)
+ {
+ gdc_remove_markings(cal);
+ g_object_unref(G_OBJECT(cal->model));
+ cal->model = NULL;
+ }
+ cal->model = model;
+ g_object_ref(G_OBJECT(model));
+ g_signal_connect(G_OBJECT(cal->model), "added", (GCallback)gdc_model_added_cb, cal);
+ g_signal_connect(G_OBJECT(cal->model), "update", (GCallback)gdc_model_update_cb, cal);
+ g_signal_connect(G_OBJECT(cal->model), "removing", (GCallback)gdc_model_removing_cb, cal);
- gdc_add_markings(cal);
+ gdc_add_markings(cal);
}
/**
@@ -1623,89 +1623,89 @@
guint size,
GDate **dateArray)
{
- guint i;
- gint doc;
- gdc_mark_data *newMark;
- GDate *d;
+ guint i;
+ gint doc;
+ gdc_mark_data *newMark;
+ GDate *d;
- if (size == 0)
- {
- g_error("0 size not allowed\n");
- return;
- }
+ if (size == 0)
+ {
+ g_error("0 size not allowed\n");
+ return;
+ }
- newMark = g_new0(gdc_mark_data, 1);
- newMark->name = NULL;
- if (name)
- newMark->name = g_strdup(name);
- newMark->info = NULL;
- if (info)
- newMark->info = g_strdup(info);
- newMark->tag = tag;
- newMark->ourMarks = NULL;
- g_debug("saving mark with tag [%d]\n", newMark->tag);
+ newMark = g_new0(gdc_mark_data, 1);
+ newMark->name = NULL;
+ if (name)
+ newMark->name = g_strdup(name);
+ newMark->info = NULL;
+ if (info)
+ newMark->info = g_strdup(info);
+ newMark->tag = tag;
+ newMark->ourMarks = NULL;
+ g_debug("saving mark with tag [%d]\n", newMark->tag);
- for (i=0; i<size; i++)
- {
- d = dateArray[i];
- doc = gdc_get_doc_offset(dcal, d);
- if (doc < 0)
- continue;
- if (doc >= dcal->numMarks)
- {
- /* It's not going to get any better, so just
- * stop processing. */
- break;
- }
- dcal->marks[doc] = g_list_append(dcal->marks[doc], newMark);
- newMark->ourMarks = g_list_append(newMark->ourMarks,
- GINT_TO_POINTER(doc));
- }
- dcal->markData = g_list_append(dcal->markData, (gpointer)newMark);
- gnc_dense_cal_draw_to_buffer(dcal);
- gtk_widget_queue_draw(GTK_WIDGET(dcal));
+ for (i=0; i<size; i++)
+ {
+ d = dateArray[i];
+ doc = gdc_get_doc_offset(dcal, d);
+ if (doc < 0)
+ continue;
+ if (doc >= dcal->numMarks)
+ {
+ /* It's not going to get any better, so just
+ * stop processing. */
+ break;
+ }
+ dcal->marks[doc] = g_list_append(dcal->marks[doc], newMark);
+ newMark->ourMarks = g_list_append(newMark->ourMarks,
+ GINT_TO_POINTER(doc));
+ }
+ dcal->markData = g_list_append(dcal->markData, (gpointer)newMark);
+ gnc_dense_cal_draw_to_buffer(dcal);
+ gtk_widget_queue_draw(GTK_WIDGET(dcal));
}
static void
gdc_mark_remove(GncDenseCal *dcal, guint mark_to_remove)
{
- GList *iter, *calendar_marks;
- gint day_of_cal;
- gdc_mark_data *mark_data;
+ GList *iter, *calendar_marks;
+ gint day_of_cal;
+ gdc_mark_data *mark_data;
- /* Ignore non-realistic marks */
- if ((gint)mark_to_remove == -1)
- {
- g_debug("mark_to_remove = -1");
- return;
- }
+ /* Ignore non-realistic marks */
+ if ((gint)mark_to_remove == -1)
+ {
+ g_debug("mark_to_remove = -1");
+ return;
+ }
- mark_data = NULL;
- for (iter = dcal->markData; iter != NULL; iter = iter->next)
- {
- mark_data = (gdc_mark_data*)iter->data;
- if (mark_data->tag == mark_to_remove)
- break;
- }
- if (iter == NULL)
- {
- g_warning("couldn't find tag [%d]", mark_to_remove);
- return;
- }
- if (mark_data == NULL)
- {
- g_debug("mark_data == null");
- return;
- }
+ mark_data = NULL;
+ for (iter = dcal->markData; iter != NULL; iter = iter->next)
+ {
+ mark_data = (gdc_mark_data*)iter->data;
+ if (mark_data->tag == mark_to_remove)
+ break;
+ }
+ if (iter == NULL)
+ {
+ g_warning("couldn't find tag [%d]", mark_to_remove);
+ return;
+ }
+ if (mark_data == NULL)
+ {
+ g_debug("mark_data == null");
+ return;
+ }
- for (calendar_marks = mark_data->ourMarks; calendar_marks != NULL; calendar_marks = calendar_marks->next)
- {
- day_of_cal = GPOINTER_TO_INT(calendar_marks->data);
- dcal->marks[day_of_cal] = g_list_remove(dcal->marks[day_of_cal], mark_data);
- }
- g_list_free(mark_data->ourMarks);
- dcal->markData = g_list_remove(dcal->markData, mark_data);
- g_free(mark_data);
- gnc_dense_cal_draw_to_buffer(dcal);
- gtk_widget_queue_draw(GTK_WIDGET(dcal));
+ for (calendar_marks = mark_data->ourMarks; calendar_marks != NULL; calendar_marks = calendar_marks->next)
+ {
+ day_of_cal = GPOINTER_TO_INT(calendar_marks->data);
+ dcal->marks[day_of_cal] = g_list_remove(dcal->marks[day_of_cal], mark_data);
+ }
+ g_list_free(mark_data->ourMarks);
+ dcal->markData = g_list_remove(dcal->markData, mark_data);
+ g_free(mark_data);
+ gnc_dense_cal_draw_to_buffer(dcal);
+ gtk_widget_queue_draw(GTK_WIDGET(dcal));
}
Modified: gnucash/trunk/src/gnome-utils/gnc-dense-cal.h
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-dense-cal.h 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome-utils/gnc-dense-cal.h 2007-02-19 19:01:47 UTC (rev 15625)
@@ -42,7 +42,7 @@
typedef struct _gdc_month_coords
{
- gint x, y;
+ gint x, y;
} gdc_month_coords;
enum GDC_COLORS
@@ -84,39 +84,39 @@
GdkColor weekColors[MAX_COLORS];
- guint label_width;
- guint label_height;
- guint dayLabelHeight;
+ guint label_width;
+ guint label_height;
+ guint dayLabelHeight;
- GncDenseCalModel *model;
+ GncDenseCalModel *model;
- guint lastMarkTag;
+ guint lastMarkTag;
- /**
- * A GList of gdc_mark_data structs, one for each active/valid markTag.
- **/
- GList *markData;
- int numMarks;
- /* array of GList*s of per-cell markings. */
- GList **marks;
+ /**
+ * A GList of gdc_mark_data structs, one for each active/valid markTag.
+ **/
+ GList *markData;
+ int numMarks;
+ /* array of GList*s of per-cell markings. */
+ GList **marks;
- int disposed; /* private */
+ int disposed; /* private */
};
struct _GncDenseCalClass
{
- GtkWidgetClass parent_class;
+ GtkWidgetClass parent_class;
};
typedef struct _gdc_mark_data
{
- gchar *name;
- gchar *info;
- guint tag;
- /**
- * A GList of the dcal->marks indexes containing this mark.
- **/
- GList *ourMarks;
+ gchar *name;
+ gchar *info;
+ guint tag;
+ /**
+ * A GList of the dcal->marks indexes containing this mark.
+ **/
+ GList *ourMarks;
} gdc_mark_data;
GtkWidget* gnc_dense_cal_new (void);
Modified: gnucash/trunk/src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c 2007-02-19 19:00:37 UTC (rev 15624)
+++ gnucash/trunk/src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c 2007-02-19 19:01:47 UTC (rev 15625)
@@ -41,230 +41,230 @@
struct _GncSxInstanceDenseCalAdapterClass
{
- GObjectClass parent;
+ GObjectClass parent;
};
struct _GncSxInstanceDenseCalAdapter
{
- GObject parent;
- gboolean disposed;
- GncSxInstanceModel *instances;
+ GObject parent;
+ gboolean disposed;
+ GncSxInstanceModel *instances;
};
static void
gnc_sx_instance_dense_cal_adapter_class_init(GncSxInstanceDenseCalAdapterClass *klass)
{
- GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+ GObjectClass *obj_class = G_OBJECT_CLASS(klass);
- obj_class->dispose = gnc_sx_instance_dense_cal_adapter_dispose;
- obj_class->finalize = gnc_sx_instance_dense_cal_adapter_finalize;
+ obj_class->dispose = gnc_sx_instance_dense_cal_adapter_dispose;
+ obj_class->finalize = gnc_sx_instance_dense_cal_adapter_finalize;
- parent_class = g_type_class_peek_parent(klass);
+ parent_class = g_type_class_peek_parent(klass);
}
static void
gnc_sx_instance_dense_cal_adapter_init(GTypeInstance *instance, gpointer klass)
{
- /*GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(instance);*/
- ; /* nop */
+ /*GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(instance);*/
+ ; /* nop */
}
static void
gnc_sx_instance_dense_cal_adapter_interface_init(gpointer g_iface, gpointer iface_data)
{
- GncDenseCalModelIface *iface = (GncDenseCalModelIface*)g_iface;
- iface->get_contained = gsidca_get_contained;
- iface->get_name = gsidca_get_name;
- iface->get_info = gsidca_get_info;
- iface->get_instance_count = gsidca_get_instance_count;
- iface->get_instance = gsidca_get_instance;
+ GncDenseCalModelIface *iface = (GncDenseCalModelIface*)g_iface;
+ iface->get_contained = gsidca_get_contained;
+ iface->get_name = gsidca_get_name;
+ iface->get_info = gsidca_get_info;
+ iface->get_instance_count = gsidca_get_instance_count;
+ iface->get_instance = gsidca_get_instance;
}
static void
gsidca_instances_added_cb(GncSxInstanceModel *model, SchedXaction *sx_added, gpointer user_data)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
- g_debug("instance added\n");
- if (xaccSchedXactionGetEnabled(sx_added))
- {
- g_signal_emit_by_name(adapter, "added", GPOINTER_TO_UINT(sx_added));
- }
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
+ g_debug("instance added\n");
+ if (xaccSchedXactionGetEnabled(sx_added))
+ {
+ g_signal_emit_by_name(adapter, "added", GPOINTER_TO_UINT(sx_added));
+ }
}
static void
gsidca_instances_updated_cb(GncSxInstanceModel *model, SchedXaction *sx_updated, gpointer user_data)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
- gnc_sx_instance_model_update_sx_instances(model, sx_updated);
- g_debug("instances updated\n");
- if (xaccSchedXactionGetEnabled(sx_updated))
- {
- g_signal_emit_by_name(adapter, "update", GPOINTER_TO_UINT((gpointer)sx_updated));
- }
- else
- {
- g_signal_emit_by_name(adapter, "removing", GPOINTER_TO_UINT((gpointer)sx_updated));
- }
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
+ gnc_sx_instance_model_update_sx_instances(model, sx_updated);
+ g_debug("instances updated\n");
+ if (xaccSchedXactionGetEnabled(sx_updated))
+ {
+ g_signal_emit_by_name(adapter, "update", GPOINTER_TO_UINT((gpointer)sx_updated));
+ }
+ else
+ {
+ g_signal_emit_by_name(adapter, "removing", GPOINTER_TO_UINT((gpointer)sx_updated));
+ }
}
static void
gsidca_instances_removing_cb(GncSxInstanceModel *model, SchedXaction *sx_to_be_removed, gpointer user_data)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
- g_debug("removing instance...\n");
- g_signal_emit_by_name(adapter, "removing", GPOINTER_TO_UINT(sx_to_be_removed));
- gnc_sx_instance_model_remove_sx_instances(model, sx_to_be_removed);
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
+ g_debug("removing instance...\n");
+ g_signal_emit_by_name(adapter, "removing", GPOINTER_TO_UINT(sx_to_be_removed));
+ gnc_sx_instance_model_remove_sx_instances(model, sx_to_be_removed);
}
GncSxInstanceDenseCalAdapter*
gnc_sx_instance_dense_cal_adapter_new(GncSxInstanceModel *instances)
{
- GncSxInstanceDenseCalAdapter *adapter = g_object_new(GNC_TYPE_SX_INSTANCE_DENSE_CAL_ADAPTER, NULL);
- adapter->instances = instances;
- g_object_ref(G_OBJECT(adapter->instances));
+ GncSxInstanceDenseCalAdapter *adapter = g_object_new(GNC_TYPE_SX_INSTANCE_DENSE_CAL_ADAPTER, NULL);
+ adapter->instances = instances;
+ g_object_ref(G_OBJECT(adapter->instances));
- g_signal_connect(instances, "added", (GCallback)gsidca_instances_added_cb, adapter);
- g_signal_connect(instances, "updated", (GCallback)gsidca_instances_updated_cb, adapter);
- g_signal_connect(instances, "removing", (GCallback)gsidca_instances_removing_cb, adapter);
- return adapter;
+ g_signal_connect(instances, "added", (GCallback)gsidca_instances_added_cb, adapter);
+ g_signal_connect(instances, "updated", (GCallback)gsidca_instances_updated_cb, adapter);
+ g_signal_connect(instances, "removing", (GCallback)gsidca_instances_removing_cb, adapter);
+ return adapter;
}
GType
gnc_sx_instance_dense_cal_adapter_get_type(void)
{
- static GType type = 0;
- if (type == 0)
- {
- static const GTypeInfo info = {
- sizeof (GncSxInstanceDenseCalAdapterClass),
- NULL, /* base init */
- NULL, /* base finalize */
- (GClassInitFunc)gnc_sx_instance_dense_cal_adapter_class_init,
- NULL, /* class finalize */
- NULL, /* class data */
- sizeof(GncSxInstanceDenseCalAdapter),
- 0, /* n_preallocs */
- (GInstanceInitFunc)gnc_sx_instance_dense_cal_adapter_init
- };
- static const GInterfaceInfo iDenseCalModelInfo = {
- (GInterfaceInitFunc)gnc_sx_instance_dense_cal_adapter_interface_init,
- NULL, /* interface finalize */
- NULL, /* interface data */
- };
+ static GType type = 0;
+ if (type == 0)
+ {
+ static const GTypeInfo info = {
+ sizeof (GncSxInstanceDenseCalAdapterClass),
+ NULL, /* base init */
+ NULL, /* base finalize */
+ (GClassInitFunc)gnc_sx_instance_dense_cal_adapter_class_init,
+ NULL, /* class finalize */
+ NULL, /* class data */
+ sizeof(GncSxInstanceDenseCalAdapter),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc)gnc_sx_instance_dense_cal_adapter_init
+ };
+ static const GInterfaceInfo iDenseCalModelInfo = {
+ (GInterfaceInitFunc)gnc_sx_instance_dense_cal_adapter_interface_init,
+ NULL, /* interface finalize */
+ NULL, /* interface data */
+ };
- type = g_type_register_static (G_TYPE_OBJECT,
- "GncSxInstanceDenseCalAdapterType",
- &info, 0);
- g_type_add_interface_static(type,
- GNC_TYPE_DENSE_CAL_MODEL,
- &iDenseCalModelInfo);
- }
- return type;
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "GncSxInstanceDenseCalAdapterType",
+ &info, 0);
+ g_type_add_interface_static(type,
+ GNC_TYPE_DENSE_CAL_MODEL,
+ &iDenseCalModelInfo);
+ }
+ return type;
}
static gint
gsidca_find_sx_with_tag(gconstpointer list_data,
gconstpointer find_data)
{
- GncSxInstances *sx_instances = (GncSxInstances*)list_data;
- return (GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)) == find_data ? 0 : 1);
+ GncSxInstances *sx_instances = (GncSxInstances*)list_data;
+ return (GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)) == find_data ? 0 : 1);
}
// @@ fixme this list is leaked.
static GList*
gsidca_get_contained(GncDenseCalModel *model)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
- //"removing return gnc_g_list_map(instances->sxes, sx_to_tag, null);
- GList *list = NULL, *sxes;
- for (sxes = adapter->instances->sx_instance_list; sxes != NULL; sxes = sxes->next)
- {
- GncSxInstances *sx_instances = (GncSxInstances*)sxes->data;
- if (xaccSchedXactionGetEnabled(sx_instances->sx))
- {
- list = g_list_append(list, GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)));
- }
- }
- return list;
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
+ //"removing return gnc_g_list_map(instances->sxes, sx_to_tag, null);
+ GList *list = NULL, *sxes;
+ for (sxes = adapter->instances->sx_instance_list; sxes != NULL; sxes = sxes->next)
+ {
+ GncSxInstances *sx_instances = (GncSxInstances*)sxes->data;
+ if (xaccSchedXactionGetEnabled(sx_instances->sx))
+ {
+ list = g_list_append(list, GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)));
+ }
+ }
+ return list;
}
static gchar*
gsidca_get_name(GncDenseCalModel *model, guint tag)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
- GncSxInstances *insts
- = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
- if (insts == NULL)
- return NULL;
- return xaccSchedXactionGetName(insts->sx);
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
+ GncSxInstances *insts
+ = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
+ if (insts == NULL)
+ return NULL;
+ return xaccSchedXactionGetName(insts->sx);
}
static gchar*
gsidca_get_info(GncDenseCalModel *model, guint tag)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
- // g_list_find(instances->sxes, {sx_to_tag, tag}).get_freq_spec().get_freq_str();
- FreqSpec *spec;
- GString *info;
- gchar *info_str;
- GncSxInstances *insts
- = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
- if (insts == NULL)
- return NULL;
- spec = xaccSchedXactionGetFreqSpec(insts->sx);
- info = g_string_sized_new(16);
- xaccFreqSpecGetFreqStr(spec, info);
- info_str = info->str; // @fixme leaked... :/
- g_string_free(info, FALSE);
- return info_str;
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
+ // g_list_find(instances->sxes, {sx_to_tag, tag}).get_freq_spec().get_freq_str();
+ FreqSpec *spec;
+ GString *info;
+ gchar *info_str;
+ GncSxInstances *insts
+ = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
+ if (insts == NULL)
+ return NULL;
+ spec = xaccSchedXactionGetFreqSpec(insts->sx);
+ info = g_string_sized_new(16);
+ xaccFreqSpecGetFreqStr(spec, info);
+ info_str = info->str; // @fixme leaked... :/
+ g_string_free(info, FALSE);
+ return info_str;
}
static gint
gsidca_get_instance_count(GncDenseCalModel *model, guint tag)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
- // g_list_find(instances->sxes, {sx_to_tag, tag}).length();
- GncSxInstances *insts
- = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
- if (insts == NULL)
- return 0;
- return g_list_length(insts->list);
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
+ // g_list_find(instances->sxes, {sx_to_tag, tag}).length();
+ GncSxInstances *insts
+ = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
+ if (insts == NULL)
+ return 0;
+ return g_list_length(insts->list);
}
static void
gsidca_get_instance(GncDenseCalModel *model, guint tag, gint instance_index, GDate *date)
{
- GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
- GncSxInstance *inst;
- GncSxInstances *insts
- = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
- if (insts == NULL)
- return;
- inst = (GncSxInstance*)g_list_nth_data(insts->list, instance_index);
- g_date_valid(&inst->date);
- *date = inst->date;
- g_date_valid(date);
+ GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(model);
+ GncSxInstance *inst;
+ GncSxInstances *insts
+ = (GncSxInstances*)g_list_find_custom(adapter->instances->sx_instance_list, GUINT_TO_POINTER(tag), gsidca_find_sx_with_tag)->data;
+ if (insts == NULL)
+ return;
+ inst = (GncSxInstance*)g_list_nth_data(insts->list, instance_index);
+ g_date_valid(&inst->date);
+ *date = inst->date;
+ g_date_valid(date);
}
static void
gnc_sx_instance_dense_cal_adapter_dispose(GObject *obj)
{
- GncSxInstanceDenseCalAdapter *adapter;
- g_return_if_fail(obj != NULL);
- adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(obj);
- // g_return_if_fail(!adapter->disposed);
- if (adapter->disposed) return;
- adapter->disposed = TRUE;
+ GncSxInstanceDenseCalAdapter *adapter;
+ g_return_if_fail(obj != NULL);
+ adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(obj);
+ // g_return_if_fail(!adapter->disposed);
+ if (adapter->disposed) return;
+ adapter->disposed = TRUE;
- g_object_unref(G_OBJECT(adapter->instances));
- adapter->instances = NULL;
+ g_object_unref(G_OBJECT(adapter->instances));
+ adapter->instances = NULL;
- G_OBJECT_CLASS(parent_class)->dispose(obj);
+ G_OBJECT_CLASS(parent_class)->dispose(obj);
}
static void gnc_sx_instance_dense_cal_adapter_finalize(GObject *obj)
{
- g_return_if_fail(obj != NULL);
- // nop
- G_OBJECT_CLASS(parent_class)->finalize(obj);
+ g_return_if_fail(obj != NULL);
+ // nop
+ G_OBJECT_CLASS(parent_class)->finalize(obj);
}
More information about the gnucash-changes
mailing list