Skip to content

Commit

Permalink
Bug 683881 Partial implementation.
Browse files Browse the repository at this point in the history
TODO:
  Saving search preferences doesn't save reverse sort.
  The blank_split remains at the bottom of the register when reverse
  sorted.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@22766 57a11ea4-9604-0410-9ed3-97b8803252fd
  • Loading branch information
EvansMike committed Feb 8, 2013
1 parent 9ba6e69 commit 679d59e
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 12 deletions.
43 changes: 43 additions & 0 deletions src/gnome/gnc-plugin-page-register.c
Expand Up @@ -107,6 +107,7 @@ static void gnc_plugin_page_register_summarybar_position_changed(GConfEntry *ent
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);
Expand Down Expand Up @@ -491,6 +492,7 @@ typedef struct GncPluginPageRegisterPrivate
SortType original_sort_type;
gboolean original_save_order;
gboolean save_order;
gboolean reverse_order;
} sd;

struct
Expand Down Expand Up @@ -918,6 +920,7 @@ gnc_plugin_page_register_create_widget (GncPluginPage *plugin_page)
{
/* 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);
Expand Down Expand Up @@ -1761,6 +1764,41 @@ gnc_plugin_page_register_sort_order_save_cb (GtkToggleButton *button,
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 */
Expand Down Expand Up @@ -2872,6 +2910,11 @@ gnc_plugin_page_register_cmd_view_sort_by (GtkAction *action,
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"));
Expand Down
11 changes: 11 additions & 0 deletions src/gnome/gnc-split-reg.c
Expand Up @@ -152,6 +152,7 @@ void gnc_split_reg_sort_desc_cb (GtkWidget *w, gpointer data);
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,
Expand Down Expand Up @@ -1720,6 +1721,15 @@ gnc_split_reg_sort_notes_cb(GtkWidget *w, gpointer data)
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)
{
Expand Down Expand Up @@ -2112,6 +2122,7 @@ gnc_split_reg_set_sort_type_force( GNCSplitReg *gsr, SortType t, gboolean force
gnc_split_reg_sort_force( gsr, t, force );
}


GtkWidget*
gnc_split_reg_get_summarybar( GNCSplitReg *gsr )
{
Expand Down
6 changes: 6 additions & 0 deletions src/gnome/gnc-split-reg.h
Expand Up @@ -192,6 +192,12 @@ SortType gnc_split_reg_get_sort_type( GNCSplitReg *gsr );
void gnc_split_reg_set_sort_type( GNCSplitReg *gsr, SortType t );
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.
**/
Expand Down
38 changes: 26 additions & 12 deletions src/gnome/gtkbuilder/gnc-plugin-page-register.glade
@@ -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>
Expand All @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down

0 comments on commit 679d59e

Please sign in to comment.