r15511 - gnucash/trunk/src - Enabled SX UI support:

Josh Sled jsled at cvs.gnucash.org
Mon Feb 5 19:45:44 EST 2007


Author: jsled
Date: 2007-02-05 19:45:43 -0500 (Mon, 05 Feb 2007)
New Revision: 15511
Trac: http://svn.gnucash.org/trac/changeset/15511

Modified:
   gnucash/trunk/src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c
   gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
   gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.c
   gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.h
Log:
Enabled SX UI support:
- Add a check-box to the SX list tree-view to show the SX enabled status.
- Don't show non-enabled SX's on the SX dense calendar.
Patch from Peter McAlpine <peter at aoeu.ca>


Modified: gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c	2007-02-06 00:14:10 UTC (rev 15510)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c	2007-02-06 00:45:43 UTC (rev 15511)
@@ -362,6 +362,11 @@
           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_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);

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-06 00:14:10 UTC (rev 15510)
+++ gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.c	2007-02-06 00:45:43 UTC (rev 15511)
@@ -430,15 +430,30 @@
                                            &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;
+
+     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;
+}
+
 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(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+     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);
@@ -492,6 +507,7 @@
           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->str,
                              SXLTMA_COL_LAST_OCCUR, last_occur_date_buf,
                              SXLTMA_COL_NEXT_OCCUR, next_occur_date_buf,

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-06 00:14:10 UTC (rev 15510)
+++ gnucash/trunk/src/gnome/gnc-sx-list-tree-model-adapter.h	2007-02-06 00:45:43 UTC (rev 15511)
@@ -44,6 +44,7 @@
 // model columns
 enum {
      SXLTMA_COL_NAME = 0,
+     SXLTMA_COL_ENABLED,
      SXLTMA_COL_FREQUENCY,
      SXLTMA_COL_LAST_OCCUR,
      SXLTMA_COL_NEXT_OCCUR

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-06 00:14:10 UTC (rev 15510)
+++ gnucash/trunk/src/gnome-utils/gnc-sx-instance-dense-cal-adapter.c	2007-02-06 00:45:43 UTC (rev 15511)
@@ -82,7 +82,10 @@
 {
      GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
      printf("instance added\n");
-     g_signal_emit_by_name(adapter, "added", GPOINTER_TO_UINT(sx_added));
+     if (xaccSchedXactionGetEnabled(sx_added)) 
+     {
+          g_signal_emit_by_name(adapter, "added", GPOINTER_TO_UINT(sx_added));
+     }
 }
 
 static void
@@ -91,7 +94,14 @@
      GncSxInstanceDenseCalAdapter *adapter = GNC_SX_INSTANCE_DENSE_CAL_ADAPTER(user_data);
      gnc_sx_instance_model_update_sx_instances(model, sx_updated);
      printf("instances updated\n");
-     g_signal_emit_by_name(adapter, "update", GPOINTER_TO_UINT((gpointer)sx_updated));
+     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
@@ -167,7 +177,10 @@
      for (sxes = adapter->instances->sx_instance_list; sxes != NULL; sxes = sxes->next)
      {
           GncSxInstances *sx_instances = (GncSxInstances*)sxes->data;
-          list = g_list_append(list, GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)));
+          if (xaccSchedXactionGetEnabled(sx_instances->sx)) 
+          {
+               list = g_list_append(list, GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)));
+          }
      }
      return list;
 }



More information about the gnucash-changes mailing list