r22766 - gnucash/trunk/src/gnome - Bug 683881 Partial implementation.

Mike Evans mikee at code.gnucash.org
Fri Feb 8 06:02:56 EST 2013


Author: mikee
Date: 2013-02-08 06:02:55 -0500 (Fri, 08 Feb 2013)
New Revision: 22766
Trac: http://svn.gnucash.org/trac/changeset/22766

Modified:
   gnucash/trunk/src/gnome/gnc-plugin-page-register.c
   gnucash/trunk/src/gnome/gnc-split-reg.c
   gnucash/trunk/src/gnome/gnc-split-reg.h
   gnucash/trunk/src/gnome/gtkbuilder/gnc-plugin-page-register.glade
Log:
Bug 683881 Partial implementation.

TODO:
  Saving search preferences doesn't save reverse sort.
  The blank_split remains at the bottom of the register when reverse
  sorted.

Modified: gnucash/trunk/src/gnome/gnc-plugin-page-register.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-register.c	2013-02-07 15:13:25 UTC (rev 22765)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-register.c	2013-02-08 11:02:55 UTC (rev 22766)
@@ -107,6 +107,7 @@
 void gnc_plugin_page_register_sort_button_cb(GtkToggleButton *button, GncPluginPageRegister *page);
 void gnc_plugin_page_register_sort_response_cb(GtkDialog *dialog, gint response, GncPluginPageRegister *plugin_page);
 void gnc_plugin_page_register_sort_order_save_cb(GtkToggleButton *button, GncPluginPageRegister *page);
+void gnc_plugin_page_register_sort_order_reverse_cb(GtkToggleButton *button, GncPluginPageRegister *page);
 
 static gchar *gnc_plugin_page_register_get_sort_order (GncPluginPage *plugin_page);
 void gnc_plugin_page_register_set_sort_order (GncPluginPage *plugin_page, const gchar *sort_order);
@@ -491,6 +492,7 @@
         SortType original_sort_type;
         gboolean original_save_order;
         gboolean save_order;
+        gboolean reverse_order;
     } sd;
 
     struct
@@ -918,6 +920,7 @@
     {
         /* Set the sort order for the split register and status of save order button */
         priv->sd.save_order = FALSE;
+        priv->sd.reverse_order = FALSE;
         order = gnc_plugin_page_register_get_sort_order(plugin_page);
 
         PINFO("Loaded Sort order is %s", order);
@@ -1761,7 +1764,42 @@
     LEAVE(" ");
 }
 
+/** This function is called whenever the reverse sort order is checked
+ *  or unchecked which allows reversing of the sort order.
+ *
+ *  @param button The toggle button that was changed.
+ *
+ *  @param page A pointer to the GncPluginPageRegister that is
+ *  associated with this sort order dialog.
+ */
+void
+gnc_plugin_page_register_sort_order_reverse_cb (GtkToggleButton *button,
+        GncPluginPageRegister *page)
+        
+{
+    GncPluginPageRegisterPrivate *priv;
 
+    g_return_if_fail(GTK_IS_CHECK_BUTTON(button));
+    g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
+
+    ENTER("Reverse toggle button (%p), plugin_page %p", button, page);
+
+    /* Compute the new save sort order */
+    priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);
+
+    if (gtk_toggle_button_get_active(button))
+    {
+        gnc_split_reg_set_sort_reversed(priv->gsr, FALSE);
+        priv->sd.reverse_order = TRUE;
+      }
+    else
+    {
+        gnc_split_reg_set_sort_reversed(priv->gsr, TRUE);
+        priv->sd.reverse_order = FALSE;
+      }
+    LEAVE(" ");
+}
+
 /************************************************************/
 /*                    "Filter By" Dialog                    */
 /************************************************************/
@@ -2872,6 +2910,11 @@
     button = GTK_WIDGET(gtk_builder_get_object (builder, "sort_save"));
     if (priv->sd.save_order == TRUE)
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
+    
+    /* Set the button for the current reverse_order order */
+    button = GTK_WIDGET(gtk_builder_get_object (builder, "sort_reverse"));    
+    if(priv->sd.reverse_order == TRUE)
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
 
     priv->sd.num_radio = GTK_WIDGET(gtk_builder_get_object (builder, "BY_NUM"));
     priv->sd.act_radio = GTK_WIDGET(gtk_builder_get_object (builder, "BY_ACTION"));

Modified: gnucash/trunk/src/gnome/gnc-split-reg.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-split-reg.c	2013-02-07 15:13:25 UTC (rev 22765)
+++ gnucash/trunk/src/gnome/gnc-split-reg.c	2013-02-08 11:02:55 UTC (rev 22766)
@@ -152,6 +152,7 @@
 void gnc_split_reg_sort_action_cb (GtkWidget *w, gpointer data);
 void gnc_split_reg_sort_notes_cb (GtkWidget *w, gpointer data);
 
+
 void gnc_split_reg_destroy_cb(GtkWidget *widget, gpointer data);
 void gnc_split_reg_size_allocate( GtkWidget *widget,
                                   GtkAllocation *allocation,
@@ -1720,6 +1721,15 @@
     gnc_split_reg_sort(gsr, BY_NOTES);
 }
 
+
+void 
+gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev)
+{
+  Query *query = gnc_ledger_display_get_query( gsr->ledger );
+  qof_query_set_sort_increasing (query, rev, rev, rev);
+  gnc_ledger_display_refresh( gsr->ledger );
+}
+
 void
 gnc_split_reg_handle_exchange_cb (GtkWidget *w, gpointer data)
 {
@@ -2112,6 +2122,7 @@
     gnc_split_reg_sort_force( gsr, t, force );
 }
 
+
 GtkWidget*
 gnc_split_reg_get_summarybar( GNCSplitReg *gsr )
 {

Modified: gnucash/trunk/src/gnome/gnc-split-reg.h
===================================================================
--- gnucash/trunk/src/gnome/gnc-split-reg.h	2013-02-07 15:13:25 UTC (rev 22765)
+++ gnucash/trunk/src/gnome/gnc-split-reg.h	2013-02-08 11:02:55 UTC (rev 22766)
@@ -193,6 +193,12 @@
 void gnc_split_reg_set_sort_type_force( GNCSplitReg *gsr, SortType t, gboolean force);
 
 /**
+ * Set/get sort order of register
+ **/ 
+void gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev);
+
+
+/**
  * Gets/sets the style of the GNCSplitReg.
  **/
 void gnc_split_reg_change_style (GNCSplitReg *gsr, SplitRegisterStyle style);

Modified: gnucash/trunk/src/gnome/gtkbuilder/gnc-plugin-page-register.glade
===================================================================
--- gnucash/trunk/src/gnome/gtkbuilder/gnc-plugin-page-register.glade	2013-02-07 15:13:25 UTC (rev 22765)
+++ gnucash/trunk/src/gnome/gtkbuilder/gnc-plugin-page-register.glade	2013-02-08 11:02:55 UTC (rev 22766)
@@ -1,7 +1,6 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkDialog" id="Duplicate Transaction Dialog">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -11,12 +10,12 @@
     <property name="modal">True</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox15">
+      <object class="GtkBox" id="dialog-vbox15">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="spacing">6</property>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area15">
+          <object class="GtkButtonBox" id="dialog-action_area15">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
@@ -214,12 +213,12 @@
     <property name="type_hint">dialog</property>
     <signal name="response" handler="gnc_plugin_page_register_filter_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox19">
+      <object class="GtkBox" id="dialog-vbox19">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="spacing">6</property>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area21">
+          <object class="GtkButtonBox" id="dialog-action_area21">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
@@ -789,12 +788,12 @@
     <property name="type_hint">dialog</property>
     <signal name="response" handler="gnc_plugin_page_register_sort_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox17">
+      <object class="GtkBox" id="dialog-vbox17">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="spacing">6</property>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area19">
+          <object class="GtkButtonBox" id="dialog-action_area19">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
@@ -1090,6 +1089,23 @@
                     <property name="position">0</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkCheckButton" id="sort_reverse">
+                    <property name="label" translatable="yes">Reverse Order</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="gnc_plugin_page_register_sort_order_reverse_cb" swapped="no"/>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
               </object>
               <packing>
                 <property name="expand">True</property>
@@ -1121,12 +1137,12 @@
     <property name="window_position">center-on-parent</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox16">
+      <object class="GtkBox" id="dialog-vbox16">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="spacing">6</property>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area18">
+          <object class="GtkButtonBox" id="dialog-action_area18">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
@@ -1196,8 +1212,6 @@
                 <property name="activates_default">True</property>
                 <property name="primary_icon_activatable">False</property>
                 <property name="secondary_icon_activatable">False</property>
-                <property name="primary_icon_sensitive">True</property>
-                <property name="secondary_icon_sensitive">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>



More information about the gnucash-changes mailing list