Reformat schedule transaction source files for white space

This commit is contained in:
Robert Fewell 2021-04-18 13:05:29 +01:00
parent c2a7b8eaaf
commit 2da78db5e4
4 changed files with 493 additions and 480 deletions

View File

@ -1,34 +1,36 @@
/*
* gnc-sx-list-tree-model-adapter.c
*
* Copyright (C) 2006 Josh Sled <jsled@asynchronous.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 and/or version 3 of the GNU General Public
* License as published by the Free Software Foundation.
*
* As a special exception, permission is granted to link the binary module
* resultant from this code with the OpenSSL project's "OpenSSL" library (or
* modified versions of it that use the same license as the "OpenSSL"
* library), and distribute the linked executable. You must obey the GNU
* General Public License in all respects for all of the code used other than
* "OpenSSL". If you modify this file, you may extend this exception to your
* version of the file, but you are not obligated to do so. If you do not
* wish to do so, delete this exception statement from your version of this
* file.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, contact:
*
* Free Software Foundation Voice: +1-617-542-5942
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
* Boston, MA 02110-1301, USA gnu@gnu.org
*/
/********************************************************************\
* gnc-sx-list-tree-model-adapter.c *
* *
* Copyright (C) 2006 Joshua Sled <jsled@asynchronous.org> *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of version 2 and/or version 3 of the *
* GNU General Public License as published by the Free Software *
* Foundation. *
* *
* As a special exception, permission is granted to link the binary *
* module resultant from this code with the OpenSSL project's *
* "OpenSSL" library (or modified versions of it that use the same *
* license as the "OpenSSL" library), and distribute the linked *
* executable. You must obey the GNU General Public License in all *
* respects for all of the code used other than "OpenSSL". If you *
* modify this file, you may extend this exception to your version *
* of the file, but you are not obligated to do so. If you do not *
* wish to do so, delete this exception statement from your version *
* of this file. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License*
* along with this program; if not, contact: *
* *
* Free Software Foundation Voice: +1-617-542-5942 *
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
* Boston, MA 02110-1301, USA gnu@gnu.org *
\********************************************************************/
#include <config.h>
#include <glib.h>
@ -66,19 +68,19 @@ enum
static GObjectClass *parent_class = NULL;
static void gnc_sx_list_tree_model_adapter_class_init(GncSxListTreeModelAdapterClass *klass);
static void gsltma_tree_model_interface_init(gpointer g_iface, gpointer iface_data);
static void gsltma_tree_sortable_interface_init(gpointer g_iface, gpointer iface_data);
static void gnc_sx_list_tree_model_adapter_init(GTypeInstance *instance, gpointer klass);
static void gnc_sx_list_tree_model_adapter_dispose(GObject *obj);
static void gnc_sx_list_tree_model_adapter_finalize(GObject *obj);
static void gnc_sx_list_tree_model_adapter_class_init (GncSxListTreeModelAdapterClass *klass);
static void gsltma_tree_model_interface_init (gpointer g_iface, gpointer iface_data);
static void gsltma_tree_sortable_interface_init (gpointer g_iface, gpointer iface_data);
static void gnc_sx_list_tree_model_adapter_init (GTypeInstance *instance, gpointer klass);
static void gnc_sx_list_tree_model_adapter_dispose (GObject *obj);
static void gnc_sx_list_tree_model_adapter_finalize (GObject *obj);
static guint gnc_sx_list_tree_model_adapter_signals[LAST_SIGNAL] = {0};
static GncSxInstances* gsltma_get_sx_instances_from_orig_iter(GncSxListTreeModelAdapter *model, GtkTreeIter *orig_iter);
static GncSxInstances* gsltma_get_sx_instances_from_orig_iter (GncSxListTreeModelAdapter *model, GtkTreeIter *orig_iter);
GType
gnc_sx_list_tree_model_adapter_get_type(void)
gnc_sx_list_tree_model_adapter_get_type (void)
{
static GType type = 0;
if (type == 0)
@ -111,29 +113,29 @@ gnc_sx_list_tree_model_adapter_get_type(void)
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);
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)
gnc_sx_list_tree_model_adapter_class_init (GncSxListTreeModelAdapterClass *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;
gnc_sx_list_tree_model_adapter_signals[MODEL_POPULATED] =
g_signal_new("model_populated",
G_TYPE_FROM_CLASS (obj_class),
G_TYPE_FROM_CLASS(obj_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GncSxListTreeModelAdapterClass, model_populated),
NULL, NULL,
@ -144,109 +146,109 @@ gnc_sx_list_tree_model_adapter_class_init(GncSxListTreeModelAdapterClass *klass)
}
static GtkTreeModelFlags
gsltma_get_flags(GtkTreeModel *tree_model)
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)
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)
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
gsltma_get_iter(GtkTreeModel *tree_model,
GtkTreeIter *iter,
GtkTreePath *path)
gsltma_get_iter (GtkTreeModel *tree_model,
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)
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
gsltma_get_value(GtkTreeModel *tree_model,
GtkTreeIter *iter,
gint column,
GValue *value)
gsltma_get_value (GtkTreeModel *tree_model,
GtkTreeIter *iter,
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)
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
gsltma_iter_children(GtkTreeModel *tree_model,
GtkTreeIter *iter,
GtkTreeIter *parent)
gsltma_iter_children (GtkTreeModel *tree_model,
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)
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)
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
gsltma_iter_nth_child(GtkTreeModel *tree_model,
GtkTreeIter *iter,
GtkTreeIter *parent,
gint n)
gsltma_iter_nth_child (GtkTreeModel *tree_model,
GtkTreeIter *iter,
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
gsltma_iter_parent(GtkTreeModel *tree_model,
GtkTreeIter *iter,
GtkTreeIter *child)
gsltma_iter_parent (GtkTreeModel *tree_model,
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)
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)
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)
gsltma_tree_model_interface_init (gpointer g_iface, gpointer iface_data)
{
GtkTreeModelIface *tree_model = (GtkTreeModelIface*)g_iface;
tree_model->get_flags = gsltma_get_flags;
@ -266,57 +268,59 @@ gsltma_tree_model_interface_init(gpointer g_iface, gpointer iface_data)
}
static gboolean
gsltma_get_sort_column_id(GtkTreeSortable *sortable,
gint *sort_column_id,
GtkSortType *order)
gsltma_get_sort_column_id (GtkTreeSortable *sortable,
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
gsltma_set_sort_column_id(GtkTreeSortable *sortable,
gint sort_column_id,
GtkSortType order)
gsltma_set_sort_column_id (GtkTreeSortable *sortable,
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
gsltma_set_sort_func(GtkTreeSortable *sortable,
gint sort_column_id,
GtkTreeIterCompareFunc func,
gpointer data,
GDestroyNotify destroy)
gsltma_set_sort_func (GtkTreeSortable *sortable,
gint sort_column_id,
GtkTreeIterCompareFunc func,
gpointer data,
GDestroyNotify 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
gsltma_set_default_sort_func(GtkTreeSortable *sortable,
GtkTreeIterCompareFunc func,
gpointer data,
GDestroyNotify destroy)
gsltma_set_default_sort_func (GtkTreeSortable *sortable,
GtkTreeIterCompareFunc func,
gpointer data,
GDestroyNotify 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)
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)
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;
@ -332,193 +336,189 @@ gsltma_tree_sortable_interface_init(gpointer g_iface, gpointer iface_data)
}
static void
gsltma_proxy_row_changed(GtkTreeModel *treemodel,
GtkTreePath *arg1,
GtkTreeIter *arg2,
gpointer user_data)
{
g_signal_emit_by_name(user_data, "row-changed", arg1, arg2);
}
static void
gsltma_proxy_row_deleted(GtkTreeModel *treemodel,
GtkTreePath *arg1,
gpointer user_data)
{
g_signal_emit_by_name(user_data, "row-deleted", arg1);
}
static void
gsltma_proxy_row_has_child_toggled(GtkTreeModel *treemodel,
GtkTreePath *arg1,
GtkTreeIter *arg2,
gpointer user_data)
{
g_signal_emit_by_name(user_data, "row-has-child-toggled", arg1, arg2);
}
static void
gsltma_proxy_row_inserted(GtkTreeModel *treemodel,
gsltma_proxy_row_changed (GtkTreeModel *treemodel,
GtkTreePath *arg1,
GtkTreeIter *arg2,
gpointer user_data)
{
g_signal_emit_by_name(user_data, "row-inserted", arg1, arg2);
g_signal_emit_by_name (user_data, "row-changed", arg1, arg2);
}
static void
gsltma_proxy_rows_reordered(GtkTreeModel *treemodel,
GtkTreePath *arg1,
GtkTreeIter *arg2,
gpointer arg3,
gpointer user_data)
gsltma_proxy_row_deleted (GtkTreeModel *treemodel,
GtkTreePath *arg1,
gpointer user_data)
{
g_signal_emit_by_name(user_data, "rows-reordered", arg1, arg2, arg3);
g_signal_emit_by_name (user_data, "row-deleted", arg1);
}
static void
gsltma_proxy_sort_column_changed(GtkTreeSortable *sortable, gpointer user_data)
gsltma_proxy_row_has_child_toggled (GtkTreeModel *treemodel,
GtkTreePath *arg1,
GtkTreeIter *arg2,
gpointer user_data)
{
g_signal_emit_by_name(user_data, "sort-column-changed");
g_signal_emit_by_name (user_data, "row-has-child-toggled", arg1, arg2);
}
static void
gsltma_proxy_row_inserted (GtkTreeModel *treemodel,
GtkTreePath *arg1,
GtkTreeIter *arg2,
gpointer user_data)
{
g_signal_emit_by_name (user_data, "row-inserted", arg1, arg2);
}
static void
gsltma_proxy_rows_reordered (GtkTreeModel *treemodel,
GtkTreePath *arg1,
GtkTreeIter *arg2,
gpointer arg3,
gpointer user_data)
{
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");
}
static gint
_name_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
_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;
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;
a_caseless = g_utf8_casefold(xaccSchedXactionGetName(a_inst->sx), -1);
b_caseless = g_utf8_casefold(xaccSchedXactionGetName(b_inst->sx), -1);
rtn = g_strcmp0(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 = g_strcmp0 (a_caseless, b_caseless);
g_free (a_caseless);
g_free (b_caseless);
return rtn;
}
static gint
_freq_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
_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;
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;
return recurrenceListCmp(gnc_sx_get_schedule(a_inst->sx), gnc_sx_get_schedule(b_inst->sx));
return recurrenceListCmp (gnc_sx_get_schedule (a_inst->sx), gnc_sx_get_schedule (b_inst->sx));
}
static gint
_safe_invalidable_date_compare(const GDate *a, const GDate *b)
_safe_invalidable_date_compare (const GDate *a, const GDate *b)
{
if (!g_date_valid(a) && !g_date_valid(b))
if (!g_date_valid (a) && !g_date_valid (b))
{
return 0;
}
if (!g_date_valid(a))
if (!g_date_valid (a))
{
return 1;
}
if (!g_date_valid(b))
if (!g_date_valid (b))
{
return -1;
}
return g_date_compare(a, b);
return g_date_compare (a, b);
}
static gint
_last_occur_comparator(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
_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;
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)
_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;
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)
_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;
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;
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)
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)));
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);
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(const GDate *date, char *date_buf, int buf_max_length)
_format_conditional_date (const GDate *date, char *date_buf, int buf_max_length)
{
if (date == NULL || !g_date_valid(date))
{
g_stpcpy(date_buf, _("never"));
}
if (date == NULL || !g_date_valid (date))
g_stpcpy (date_buf, _("never"));
else
{
qof_print_gdate(date_buf, buf_max_length, date);
}
qof_print_gdate (date_buf, buf_max_length, date);
}
static void
gsltma_populate_tree_store(GncSxListTreeModelAdapter *model)
gsltma_populate_tree_store (GncSxListTreeModelAdapter *model)
{
GtkTreeIter iter;
GList *list;
@ -530,124 +530,124 @@ gsltma_populate_tree_store(GncSxListTreeModelAdapter *model)
char last_occur_date_buf[MAX_DATE_LENGTH+1];
char next_occur_date_buf[MAX_DATE_LENGTH+1];
frequency_str = recurrenceListToCompactString(gnc_sx_get_schedule(instances->sx));
frequency_str = recurrenceListToCompactString (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);
}
g_signal_emit_by_name (model, "model_populated");
}
static void
gsltma_added_cb(GncSxInstanceModel *instances, SchedXaction *sx_added, gpointer user_data)
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);
gtk_tree_store_clear (model->orig);
gsltma_populate_tree_store (model);
}
static void
gsltma_updated_cb(GncSxInstanceModel *instances, SchedXaction *sx_updated, gpointer user_data)
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);
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)
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);
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)
gnc_sx_list_tree_model_adapter_new (GncSxInstanceModel *instances)
{
GncSxListTreeModelAdapter *rtn;
rtn = GNC_SX_LIST_TREE_MODEL_ADAPTER(g_object_new(GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, NULL));
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));
g_object_ref (G_OBJECT(rtn->instances));
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;
}
GncSxInstances*
gsltma_get_sx_instances_from_orig_iter(GncSxListTreeModelAdapter *model, GtkTreeIter *orig_iter)
gsltma_get_sx_instances_from_orig_iter (GncSxListTreeModelAdapter *model, GtkTreeIter *orig_iter)
{
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)
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);
gtk_tree_path_free (path);
return NULL;
}
indices = gtk_tree_path_get_indices(path);
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)
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);
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)
gnc_sx_list_tree_model_adapter_dispose (GObject *obj)
{
GncSxListTreeModelAdapter *adapter;
g_return_if_fail(obj != NULL);
g_return_if_fail (obj != NULL);
adapter = GNC_SX_LIST_TREE_MODEL_ADAPTER(obj);
if (adapter->disposed) return;
adapter->disposed = TRUE;
g_object_unref(G_OBJECT(adapter->instances));
g_object_unref (G_OBJECT(adapter->instances));
adapter->instances = NULL;
g_object_unref(G_OBJECT(adapter->real));
g_object_unref (G_OBJECT(adapter->real));
adapter->real = NULL;
g_object_unref(G_OBJECT(adapter->orig));
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)
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);
}

View File

@ -1,24 +1,36 @@
/*
* gnc-sx-list-tree-model-adapter.h
*
* Copyright (C) 2006 Josh Sled <jsled@asynchronous.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 and/or version 3 of the GNU General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, contact:
*
* Free Software Foundation Voice: +1-617-542-5942
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
* Boston, MA 02110-1301, USA gnu@gnu.org
*/
/********************************************************************\
* gnc-sx-list-tree-model-adapter.h *
* *
* Copyright (C) 2006 Joshua Sled <jsled@asynchronous.org> *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of version 2 and/or version 3 of the *
* GNU General Public License as published by the Free Software *
* Foundation. *
* *
* As a special exception, permission is granted to link the binary *
* module resultant from this code with the OpenSSL project's *
* "OpenSSL" library (or modified versions of it that use the same *
* license as the "OpenSSL" library), and distribute the linked *
* executable. You must obey the GNU General Public License in all *
* respects for all of the code used other than "OpenSSL". If you *
* modify this file, you may extend this exception to your version *
* of the file, but you are not obligated to do so. If you do not *
* wish to do so, delete this exception statement from your version *
* of this file. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License*
* along with this program; if not, contact: *
* *
* Free Software Foundation Voice: +1-617-542-5942 *
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
* Boston, MA 02110-1301, USA gnu@gnu.org *
\********************************************************************/
#ifndef _GNC_SX_LIST_TREE_MODEL_ADAPTER_H
#define _GNC_SX_LIST_TREE_MODEL_ADAPTER_H
@ -31,12 +43,12 @@
G_BEGIN_DECLS
#define GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER (gnc_sx_list_tree_model_adapter_get_type ())
#define GNC_SX_LIST_TREE_MODEL_ADAPTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, GncSxListTreeModelAdapter))
#define GNC_SX_LIST_TREE_MODEL_ADAPTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, GncSxListTreeModelAdapterClass))
#define GNC_IS_SX_LIST_TREE_MODEL_ADAPTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER))
#define GNC_IS_SX_LIST_TREE_MODEL_ADAPTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER))
#define GNC_SX_LIST_TREE_MODEL_ADAPTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, GncSxListTreeModelAdapterClass))
#define GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER (gnc_sx_list_tree_model_adapter_get_type ())
#define GNC_SX_LIST_TREE_MODEL_ADAPTER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, GncSxListTreeModelAdapter))
#define GNC_SX_LIST_TREE_MODEL_ADAPTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, GncSxListTreeModelAdapterClass))
#define GNC_IS_SX_LIST_TREE_MODEL_ADAPTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER))
#define GNC_IS_SX_LIST_TREE_MODEL_ADAPTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER))
#define GNC_SX_LIST_TREE_MODEL_ADAPTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNC_TYPE_SX_LIST_TREE_MODEL_ADAPTER, GncSxListTreeModelAdapterClass))
typedef struct _GncSxListTreeModelAdapter GncSxListTreeModelAdapter;
typedef struct _GncSxListTreeModelAdapterClass GncSxListTreeModelAdapterClass;
@ -51,10 +63,10 @@ enum
SXLTMA_COL_NEXT_OCCUR
};
GType gnc_sx_list_tree_model_adapter_get_type(void);
GncSxListTreeModelAdapter* gnc_sx_list_tree_model_adapter_new(GncSxInstanceModel *instances);
GType gnc_sx_list_tree_model_adapter_get_type (void);
GncSxListTreeModelAdapter* gnc_sx_list_tree_model_adapter_new (GncSxInstanceModel *instances);
GncSxInstances* gnc_sx_list_tree_model_adapter_get_sx_instances(GncSxListTreeModelAdapter *model, GtkTreeIter *iter);
GncSxInstances* gnc_sx_list_tree_model_adapter_get_sx_instances (GncSxListTreeModelAdapter *model, GtkTreeIter *iter);
G_END_DECLS

View File

@ -100,7 +100,7 @@ typedef struct GncPluginPageSxListPrivate
} GncPluginPageSxListPrivate;
#define GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(o) \
((GncPluginPageSxListPrivate*)g_type_instance_get_private((GTypeInstance*)o, GNC_TYPE_PLUGIN_PAGE_SX_LIST))
((GncPluginPageSxListPrivate*)g_type_instance_get_private ((GTypeInstance*)o, GNC_TYPE_PLUGIN_PAGE_SX_LIST))
static GObjectClass *parent_class = NULL;
@ -110,25 +110,25 @@ static GObjectClass *parent_class = NULL;
/* Plugin Actions */
static void gnc_plugin_page_sx_list_class_init (GncPluginPageSxListClass *klass);
static void gnc_plugin_page_sx_list_init (GncPluginPageSxList *plugin_page);
static void gnc_plugin_page_sx_list_dispose(GObject *object);
static void gnc_plugin_page_sx_list_finalize(GObject *object);
static void gnc_plugin_page_sx_list_dispose (GObject *object);
static void gnc_plugin_page_sx_list_finalize (GObject *object);
static GtkWidget *gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page);
static void gnc_plugin_page_sx_list_destroy_widget (GncPluginPage *plugin_page);
static void gnc_plugin_page_sx_list_save_page (GncPluginPage *plugin_page, GKeyFile *file, const gchar *group);
static GncPluginPage *gnc_plugin_page_sx_list_recreate_page (GtkWidget *window, GKeyFile *file, const gchar *group);
static void gppsl_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data);
static void gppsl_row_activated_cb (GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data);
static void gnc_plugin_page_sx_list_cmd_new(GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_edit(GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_new (GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_edit (GtkAction *action, GncPluginPageSxList *page);
#ifdef REGISTER2_ENABLED
/*################## Added for Reg2 #################*/
static void gnc_plugin_page_sx_list_cmd_new2(GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_edit2(GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_new2 (GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_edit2 (GtkAction *action, GncPluginPageSxList *page);
/*################## Added for Reg2 #################*/
#endif
static void gnc_plugin_page_sx_list_cmd_delete(GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_delete (GtkAction *action, GncPluginPageSxList *page);
static void gnc_plugin_page_sx_list_cmd_refresh (GtkAction *action, GncPluginPageSxList *page);
/* Command callbacks */
@ -168,11 +168,11 @@ static GtkActionEntry gnc_plugin_page_sx_list_actions [] =
{
"ViewRefreshAction", "view-refresh", N_("_Refresh"), "<primary>r",
N_("Refresh this window"), G_CALLBACK (gnc_plugin_page_sx_list_cmd_refresh)
N_("Refresh this window"), G_CALLBACK(gnc_plugin_page_sx_list_cmd_refresh)
},
};
/** 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);
static guint gnc_plugin_page_sx_list_n_actions = G_N_ELEMENTS(gnc_plugin_page_sx_list_actions);
GncPluginPage *
gnc_plugin_page_sx_list_new (void)
@ -255,40 +255,40 @@ gnc_plugin_page_sx_list_init (GncPluginPageSxList *plugin_page)
NULL);
#endif
gnc_plugin_page_add_book(parent, gnc_get_current_book());
gnc_plugin_page_add_book (parent, gnc_get_current_book());
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_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)
gnc_plugin_page_sx_list_dispose (GObject *object)
{
GncPluginPageSxList *page;
GncPluginPageSxListPrivate *priv;
page = GNC_PLUGIN_PAGE_SX_LIST (object);
g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST (page));
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 != NULL);
g_return_if_fail(!priv->disposed);
g_return_if_fail (!priv->disposed);
priv->disposed = TRUE;
g_object_unref(G_OBJECT(priv->dense_cal_model));
g_object_unref (G_OBJECT(priv->dense_cal_model));
priv->dense_cal_model = NULL;
g_object_unref(GTK_WIDGET(priv->gdcal));
g_object_unref (GTK_WIDGET(priv->gdcal));
priv->gdcal = NULL;
g_object_unref(G_OBJECT(priv->instances));
g_object_unref (G_OBJECT(priv->instances));
priv->instances = NULL;
G_OBJECT_CLASS (parent_class)->dispose(object);
G_OBJECT_CLASS(parent_class)->dispose (object);
}
@ -298,12 +298,12 @@ gnc_plugin_page_sx_list_finalize (GObject *object)
GncPluginPageSxList *page;
GncPluginPageSxListPrivate *priv;
page = GNC_PLUGIN_PAGE_SX_LIST (object);
g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST (page));
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 != NULL);
G_OBJECT_CLASS (parent_class)->finalize (object);
G_OBJECT_CLASS(parent_class)->finalize (object);
}
@ -314,14 +314,14 @@ gnc_plugin_page_sx_list_refresh_cb (GHashTable *changes, gpointer user_data)
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;
priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
gtk_widget_queue_draw(priv->widget);
gtk_widget_queue_draw (priv->widget);
}
@ -329,26 +329,26 @@ static void
gnc_plugin_page_sx_list_close_cb (gpointer user_data)
{
GncPluginPage *plugin_page = GNC_PLUGIN_PAGE(user_data);
gnc_main_window_close_page(plugin_page);
gnc_main_window_close_page (plugin_page);
}
static void
gppsl_selection_changed_cb(GtkTreeSelection *selection, gpointer user_data)
gppsl_selection_changed_cb (GtkTreeSelection *selection, gpointer user_data)
{
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");
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
= 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);
gtk_action_set_sensitive (edit_action, selection_state);
gtk_action_set_sensitive (delete_action, selection_state);
}
@ -435,74 +435,74 @@ gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
/* Add vbox and label */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_box_set_homogeneous (GTK_BOX (vbox), FALSE);
gtk_paned_pack1( GTK_PANED(widget), vbox, TRUE, FALSE);
gtk_box_set_homogeneous (GTK_BOX(vbox), FALSE);
gtk_paned_pack1 (GTK_PANED(widget), vbox, TRUE, FALSE);
label = gtk_label_new (_("Transactions"));
gnc_widget_style_context_add_class (GTK_WIDGET(label), "gnc-class-strong");
gtk_widget_set_margin_start (GTK_WIDGET(label), 6);
gnc_label_set_alignment (label, 0.0, 0);
gtk_widget_show (label);
gtk_box_pack_start ( GTK_BOX(vbox), label, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX(vbox), label, FALSE, FALSE, 0);
gtk_widget_show (vbox);
/* Create scrolled window for top area */
swin = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
swin = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(swin),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start ( GTK_BOX(vbox), swin, TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX(vbox), swin, TRUE, TRUE, 5);
gtk_widget_show (swin);
{
// 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);
gtk_paned_set_position (GTK_PANED(priv->widget), 160);
}
{
GDate end;
g_date_clear(&end, 1);
g_date_clear (&end, 1);
gnc_gdate_set_today (&end);
g_date_add_years(&end, 1);
priv->instances = GNC_SX_INSTANCE_MODEL(gnc_sx_get_instances(&end, TRUE));
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);
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);
}
{
GtkTreeSelection *selection;
GtkTreePath *path = gtk_tree_path_new_first ();
priv->tree_view = GTK_TREE_VIEW(gnc_tree_view_sx_list_new(priv->instances));
g_object_set(G_OBJECT(priv->tree_view),
"state-section", STATE_SECTION,
"show-column-menu", TRUE,
NULL);
gtk_container_add(GTK_CONTAINER( swin ), GTK_WIDGET(priv->tree_view));
priv->tree_view = GTK_TREE_VIEW(gnc_tree_view_sx_list_new (priv->instances));
g_object_set (G_OBJECT(priv->tree_view),
"state-section", STATE_SECTION,
"show-column-menu", TRUE,
NULL);
gtk_container_add (GTK_CONTAINER( swin ), GTK_WIDGET(priv->tree_view));
selection = gtk_tree_view_get_selection(priv->tree_view);
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
selection = gtk_tree_view_get_selection (priv->tree_view);
gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
gtk_tree_selection_select_path (selection, path);
gtk_tree_path_free (path);
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(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(gtk_tree_view_get_model (GTK_TREE_VIEW(priv->tree_view))),
"model-populated", (GCallback)gppsl_model_populated_cb, (gpointer)page);
}
/* Add vbox and label */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_box_set_homogeneous (GTK_BOX (vbox), FALSE);
gtk_paned_pack2( GTK_PANED(widget), vbox, TRUE, FALSE);
gtk_box_set_homogeneous (GTK_BOX(vbox), FALSE);
gtk_paned_pack2 (GTK_PANED(widget), vbox, TRUE, FALSE);
label = gtk_label_new (_("Upcoming Transactions"));
gnc_widget_style_context_add_class (GTK_WIDGET(label), "gnc-class-strong");
@ -510,34 +510,34 @@ gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
gnc_label_set_alignment (label, 0.0, 0);
gtk_widget_show (label);
gtk_box_pack_start ( GTK_BOX(vbox), label, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX(vbox), label, FALSE, FALSE, 0);
gtk_widget_show (vbox);
/* Create scrolled window for bottom area */
swin = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
swin = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(swin),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start ( GTK_BOX(vbox), swin, TRUE, TRUE, 5);
gtk_box_pack_start (GTK_BOX(vbox), swin, TRUE, TRUE, 5);
gtk_widget_show (swin);
{
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)));
g_object_ref_sink(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)));
g_object_ref_sink (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);
gtk_container_add (GTK_CONTAINER(swin), GTK_WIDGET(priv->gdcal));
}
priv->gnc_component_id = gnc_register_gui_component("plugin-page-sx-list",
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);
gnc_gui_component_set_session (priv->gnc_component_id,
gnc_get_current_session());
gnc_get_current_session ());
g_signal_connect (G_OBJECT(plugin_page), "inserted",
G_CALLBACK(gnc_plugin_page_inserted_cb),
@ -553,7 +553,7 @@ gnc_plugin_page_sx_list_destroy_widget (GncPluginPage *plugin_page)
GncPluginPageSxList *page;
GncPluginPageSxListPrivate *priv;
page = GNC_PLUGIN_PAGE_SX_LIST (plugin_page);
page = GNC_PLUGIN_PAGE_SX_LIST(plugin_page);
priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
// Remove the page_changed signal callback
@ -564,7 +564,7 @@ gnc_plugin_page_sx_list_destroy_widget (GncPluginPage *plugin_page)
if (priv->widget)
{
g_object_unref(G_OBJECT(priv->widget));
g_object_unref (G_OBJECT(priv->widget));
priv->widget = NULL;
}
@ -573,7 +573,7 @@ gnc_plugin_page_sx_list_destroy_widget (GncPluginPage *plugin_page)
if (priv->gnc_component_id)
{
gnc_unregister_gui_component(priv->gnc_component_id);
gnc_unregister_gui_component (priv->gnc_component_id);
priv->gnc_component_id = 0;
}
}
@ -594,18 +594,18 @@ gnc_plugin_page_sx_list_save_page (GncPluginPage *plugin_page,
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);
g_key_file_set_integer(key_file, group_name, "dense_cal_num_months",
gnc_dense_cal_get_num_months(priv->gdcal));
g_key_file_set_integer (key_file, group_name, "dense_cal_num_months",
gnc_dense_cal_get_num_months (priv->gdcal));
g_key_file_set_integer(key_file, group_name, "paned_position",
gtk_paned_get_position(GTK_PANED(priv->widget)));
g_key_file_set_integer (key_file, group_name, "paned_position",
gtk_paned_get_position (GTK_PANED(priv->widget)));
}
@ -625,33 +625,33 @@ gnc_plugin_page_sx_list_recreate_page (GtkWidget *window,
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());
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));
gnc_main_window_open_page (GNC_MAIN_WINDOW(window), GNC_PLUGIN_PAGE(page));
{
GError *err = NULL;
gint num_months = g_key_file_get_integer(key_file, group_name, "dense_cal_num_months", &err);
gint num_months = g_key_file_get_integer (key_file, group_name, "dense_cal_num_months", &err);
if (err == NULL)
gnc_dense_cal_set_num_months(priv->gdcal, num_months);
gnc_dense_cal_set_num_months (priv->gdcal, num_months);
else
g_error_free(err);
g_error_free (err);
}
{
GError *err = NULL;
gint paned_position = g_key_file_get_integer(key_file, group_name,
gint paned_position = g_key_file_get_integer (key_file, group_name,
"paned_position", &err);
if (err == NULL)
gtk_paned_set_position(GTK_PANED(priv->widget), paned_position);
gtk_paned_set_position (GTK_PANED(priv->widget), paned_position);
else
g_error_free(err);
g_error_free (err);
}
return GNC_PLUGIN_PAGE(page);
@ -659,35 +659,9 @@ gnc_plugin_page_sx_list_recreate_page (GtkWidget *window,
static void
gnc_plugin_page_sx_list_cmd_new(GtkAction *action, GncPluginPageSxList *page)
gnc_plugin_page_sx_list_cmd_new (GtkAction *action, GncPluginPageSxList *page)
{
GtkWindow *window = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page)));
SchedXaction *new_sx;
gboolean new_sx_flag = TRUE;
new_sx = xaccSchedXactionMalloc(gnc_get_current_book());
{
GDate now;
Recurrence *r = g_new0(Recurrence, 1);
GList *schedule;
g_date_clear(&now, 1);
gnc_gdate_set_today (&now);
recurrenceSet(r, 1, PERIOD_MONTH, &now, WEEKEND_ADJ_NONE);
schedule = gnc_sx_get_schedule(new_sx);
schedule = g_list_append(schedule, r);
gnc_sx_set_schedule(new_sx, schedule);
}
gnc_ui_scheduled_xaction_editor_dialog_create(window, new_sx, new_sx_flag);
gppsl_update_selected_list (page, TRUE, new_sx);
}
#ifdef REGISTER2_ENABLED
/*################## Added for Reg2 #################*/
static void
gnc_plugin_page_sx_list_cmd_new2 (GtkAction *action, GncPluginPageSxList *page)
{
GtkWindow *window = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page)));
GtkWindow *window = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(page)));
SchedXaction *new_sx;
gboolean new_sx_flag = TRUE;
@ -699,7 +673,33 @@ gnc_plugin_page_sx_list_cmd_new2 (GtkAction *action, GncPluginPageSxList *page)
g_date_clear (&now, 1);
gnc_gdate_set_today (&now);
recurrenceSet(r, 1, PERIOD_MONTH, &now, WEEKEND_ADJ_NONE);
recurrenceSet (r, 1, PERIOD_MONTH, &now, WEEKEND_ADJ_NONE);
schedule = gnc_sx_get_schedule (new_sx);
schedule = g_list_append (schedule, r);
gnc_sx_set_schedule (new_sx, schedule);
}
gnc_ui_scheduled_xaction_editor_dialog_create (window, new_sx, new_sx_flag);
gppsl_update_selected_list (page, TRUE, new_sx);
}
#ifdef REGISTER2_ENABLED
/*################## Added for Reg2 #################*/
static void
gnc_plugin_page_sx_list_cmd_new2 (GtkAction *action, GncPluginPageSxList *page)
{
GtkWindow *window = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(page)));
SchedXaction *new_sx;
gboolean new_sx_flag = TRUE;
new_sx = xaccSchedXactionMalloc (gnc_get_current_book());
{
GDate now;
Recurrence *r = g_new0 (Recurrence, 1);
GList *schedule;
g_date_clear (&now, 1);
gnc_gdate_set_today (&now);
recurrenceSet (r, 1, PERIOD_MONTH, &now, WEEKEND_ADJ_NONE);
schedule = gnc_sx_get_schedule (new_sx);
schedule = g_list_append (schedule, r);
gnc_sx_set_schedule (new_sx, schedule);
@ -723,7 +723,7 @@ gnc_plugin_page_sx_list_cmd_refresh (GtkAction *action, GncPluginPageSxList *pag
static void
_edit_sx(gpointer data, gpointer user_data)
{
gnc_ui_scheduled_xaction_editor_dialog_create(GTK_WINDOW(user_data),
gnc_ui_scheduled_xaction_editor_dialog_create (GTK_WINDOW(user_data),
(SchedXaction*)data, FALSE);
}
@ -739,44 +739,44 @@ _edit_sx2 (gpointer data, gpointer user_data)
#endif
static SchedXaction*
_argument_reorder_fn(GtkTreePath* list_path_data, GncTreeViewSxList* user_tree_view)
_argument_reorder_fn (GtkTreePath* list_path_data, GncTreeViewSxList* user_tree_view)
{
return gnc_tree_view_sx_list_get_sx_from_path(user_tree_view, list_path_data);
return gnc_tree_view_sx_list_get_sx_from_path (user_tree_view, list_path_data);
}
static void
gnc_plugin_page_sx_list_cmd_edit(GtkAction *action, GncPluginPageSxList *page)
gnc_plugin_page_sx_list_cmd_edit (GtkAction *action, GncPluginPageSxList *page)
{
GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
GtkWindow *window = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page)));
GtkWindow *window = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(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)
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.");
g_warning ("no selection edit.");
return;
}
to_edit = gnc_g_list_map(selected_paths,
(GncGMapFunc)_argument_reorder_fn,
priv->tree_view);
to_edit = gnc_g_list_map (selected_paths,
(GncGMapFunc)_argument_reorder_fn,
priv->tree_view);
gppsl_update_selected_list (page, TRUE, NULL);
for (GList *list = to_edit; list != NULL; list = list->next)
{
g_debug("to-edit [%s]\n", xaccSchedXactionGetName ((SchedXaction*)list->data));
g_debug ("to-edit [%s]\n", xaccSchedXactionGetName ((SchedXaction*)list->data));
gppsl_update_selected_list (page, FALSE, list->data);
}
g_list_foreach(to_edit, (GFunc)_edit_sx, window);
g_list_free(to_edit);
g_list_foreach(selected_paths, (GFunc)gtk_tree_path_free, NULL);
g_list_free(selected_paths);
g_list_foreach (to_edit, (GFunc)_edit_sx, window);
g_list_free (to_edit);
g_list_foreach (selected_paths, (GFunc)gtk_tree_path_free, NULL);
g_list_free (selected_paths);
}
#ifdef REGISTER2_ENABLED
@ -784,8 +784,8 @@ gnc_plugin_page_sx_list_cmd_edit(GtkAction *action, GncPluginPageSxList *page)
static void
gnc_plugin_page_sx_list_cmd_edit2 (GtkAction *action, GncPluginPageSxList *page)
{
GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE (page);
GtkWindow *window = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page)));
GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
GtkWindow *window = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(page)));
GtkTreeSelection *selection;
GList *selected_paths, *to_edit;
GtkTreeModel *model;
@ -800,8 +800,8 @@ gnc_plugin_page_sx_list_cmd_edit2 (GtkAction *action, GncPluginPageSxList *page)
to_edit = gnc_g_list_map (selected_paths,
(GncGMapFunc)_argument_reorder_fn,
priv->tree_view);
g_list_foreach(to_edit, (GFunc)_edit_sx2, window);
priv->tree_view);
g_list_foreach (to_edit, (GFunc)_edit_sx2, window);
g_list_free (to_edit);
g_list_foreach (selected_paths, (GFunc)gtk_tree_path_free, NULL);
g_list_free (selected_paths);
@ -810,17 +810,18 @@ gnc_plugin_page_sx_list_cmd_edit2 (GtkAction *action, GncPluginPageSxList *page)
#endif
static void
gppsl_row_activated_cb(GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
gppsl_row_activated_cb (GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
{
GncPluginPageSxList *page = GNC_PLUGIN_PAGE_SX_LIST(user_data);
GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
GtkWindow *window = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page)));
GtkWindow *window = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(page)));
SchedXaction *sx = gnc_tree_view_sx_list_get_sx_from_path(GNC_TREE_VIEW_SX_LIST(priv->tree_view), path);
gnc_ui_scheduled_xaction_editor_dialog_create(window, sx, FALSE);
SchedXaction *sx = gnc_tree_view_sx_list_get_sx_from_path (
GNC_TREE_VIEW_SX_LIST(priv->tree_view), path);
gnc_ui_scheduled_xaction_editor_dialog_create (window, sx, FALSE);
gppsl_update_selected_list (page, TRUE, sx);
}
@ -831,16 +832,16 @@ _destroy_sx(gpointer data, gpointer user_data)
SchedXactions *sxes;
SchedXaction *sx = (SchedXaction*)data;
QofBook *book;
book = gnc_get_current_book();
sxes = gnc_book_get_schedxactions(book);
gnc_sxes_del_sx(sxes, sx);
gnc_sx_begin_edit(sx);
xaccSchedXactionDestroy(sx);
book = gnc_get_current_book ();
sxes = gnc_book_get_schedxactions (book);
gnc_sxes_del_sx (sxes, sx);
gnc_sx_begin_edit (sx);
xaccSchedXactionDestroy (sx);
}
static void
gnc_plugin_page_sx_list_cmd_delete(GtkAction *action, GncPluginPageSxList *page)
gnc_plugin_page_sx_list_cmd_delete (GtkAction *action, GncPluginPageSxList *page)
{
GncPluginPageSxListPrivate *priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
GtkTreeSelection *selection;
@ -850,19 +851,19 @@ gnc_plugin_page_sx_list_cmd_delete(GtkAction *action, GncPluginPageSxList *page)
gchar *message = NULL;
gint length;
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)
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.");
g_warning ("no selection for delete.");
return;
}
to_delete = gnc_g_list_map(selected_paths,
(GncGMapFunc)_argument_reorder_fn,
priv->tree_view);
to_delete = gnc_g_list_map (selected_paths,
(GncGMapFunc)_argument_reorder_fn,
priv->tree_view);
window = GTK_WINDOW (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page)));
window = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(page)));
length = g_list_length (to_delete);
@ -876,16 +877,16 @@ gnc_plugin_page_sx_list_cmd_delete(GtkAction *action, GncPluginPageSxList *page)
gppsl_update_selected_list (page, TRUE, NULL);
for (GList *list = to_delete; list != NULL; list = list->next)
{
g_debug("to-delete [%s]\n", xaccSchedXactionGetName((SchedXaction*)list->data));
g_debug("to-delete [%s]\n", xaccSchedXactionGetName ((SchedXaction*)list->data));
gppsl_update_selected_list (page, FALSE, list->data);
}
g_list_foreach(to_delete, (GFunc)_destroy_sx, NULL);
g_list_foreach (to_delete, (GFunc)_destroy_sx, NULL);
}
g_free (message);
g_list_free(to_delete);
g_list_foreach(selected_paths, (GFunc)gtk_tree_path_free, NULL);
g_list_free(selected_paths);
g_list_free (to_delete);
g_list_foreach (selected_paths, (GFunc)gtk_tree_path_free, NULL);
g_list_free (selected_paths);
}
/** @} */

View File

@ -55,11 +55,11 @@ G_BEGIN_DECLS
/* type macros */
#define GNC_TYPE_PLUGIN_PAGE_SX_LIST (gnc_plugin_page_sx_list_get_type ())
#define GNC_PLUGIN_PAGE_SX_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_PLUGIN_PAGE_SX_LIST, GncPluginPageSxList))
#define GNC_PLUGIN_PAGE_SX_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_PLUGIN_PAGE_SX_LIST, GncPluginPageSxListClass))
#define GNC_IS_PLUGIN_PAGE_SX_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_PLUGIN_PAGE_SX_LIST))
#define GNC_IS_PLUGIN_PAGE_SX_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_PLUGIN_PAGE_SX_LIST))
#define GNC_PLUGIN_PAGE_SX_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_PLUGIN_PAGE_SX_LIST, GncPluginPageSxListClass))
#define GNC_PLUGIN_PAGE_SX_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNC_TYPE_PLUGIN_PAGE_SX_LIST, GncPluginPageSxList))
#define GNC_PLUGIN_PAGE_SX_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNC_TYPE_PLUGIN_PAGE_SX_LIST, GncPluginPageSxListClass))
#define GNC_IS_PLUGIN_PAGE_SX_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNC_TYPE_PLUGIN_PAGE_SX_LIST))
#define GNC_IS_PLUGIN_PAGE_SX_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNC_TYPE_PLUGIN_PAGE_SX_LIST))
#define GNC_PLUGIN_PAGE_SX_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNC_TYPE_PLUGIN_PAGE_SX_LIST, GncPluginPageSxListClass))
#define GNC_PLUGIN_PAGE_SX_LIST_NAME "GncPluginPageSxList"
@ -80,12 +80,12 @@ typedef struct
* Retrieve the type number for an "sx list" plugin page.
* @return The type number.
*/
GType gnc_plugin_page_sx_list_get_type(void);
GType gnc_plugin_page_sx_list_get_type (void);
/**
* @return The newly created plugin page.
**/
GncPluginPage *gnc_plugin_page_sx_list_new(void);
GncPluginPage *gnc_plugin_page_sx_list_new (void);
G_END_DECLS