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