Add menu items and code to the register window so a user can limit

transactions to any combination of the Reconciled / Cleared / Voided /
Unreconciled states. #87990


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7689 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
David Hampton
2002-12-16 01:01:01 +00:00
parent ab20128481
commit e6a6b63809
3 changed files with 335 additions and 139 deletions
+7 -5
View File
@@ -191,11 +191,13 @@ void xaccQueryAddDateMatchTT(Query * q,
int use_end, time_t ett,
QueryOp op);
typedef enum {
CLEARED_NO = 1 << 0,
CLEARED_CLEARED = 1 << 1,
CLEARED_RECONCILED = 1 << 2,
CLEARED_FROZEN = 1 << 3,
CLEARED_VOIDED = 1 << 4
CLEARED_NONE = 0x0000,
CLEARED_NO = 0x0001,
CLEARED_CLEARED = 0x0002,
CLEARED_RECONCILED = 0x0004,
CLEARED_FROZEN = 0x0008,
CLEARED_VOIDED = 0x0010,
CLEARED_ALL = 0x001F
} cleared_match_t;
void xaccQueryAddClearedMatch(Query * q, cleared_match_t how, QueryOp op);
+239 -133
View File
@@ -284,36 +284,143 @@
<widget>
<class>GtkMenuItem</class>
<name>gnc_register_date_range_mi</name>
<label>Date _Range</label>
<name>gnc_register_select_trans_mi</name>
<label>S_elect Transactions</label>
<right_justify>False</right_justify>
<widget>
<class>GtkMenu</class>
<name>gnc_register_date_range_mi_menu</name>
<name>gnc_register_select_trans_mi_menu</name>
<widget>
<class>GtkMenuItem</class>
<name>show_all1</name>
<signal>
<name>activate</name>
<handler>gnc_register_date_show_all_cb</handler>
<last_modification_time>Tue, 29 Oct 2002 04:51:17 GMT</last_modification_time>
</signal>
<label>Show _All</label>
<name>gnc_register_date_range_mi</name>
<label>Date _Range</label>
<right_justify>False</right_justify>
<widget>
<class>GtkMenu</class>
<name>gnc_register_date_range_mi_menu</name>
<widget>
<class>GtkMenuItem</class>
<name>show_all1</name>
<signal>
<name>activate</name>
<handler>gnc_register_date_show_all_cb</handler>
<last_modification_time>Tue, 29 Oct 2002 04:51:17 GMT</last_modification_time>
</signal>
<label>Show _All</label>
<right_justify>False</right_justify>
</widget>
<widget>
<class>GtkMenuItem</class>
<name>set_range1</name>
<signal>
<name>activate</name>
<handler>gnc_register_date_range_cb</handler>
<last_modification_time>Tue, 29 Oct 2002 04:51:17 GMT</last_modification_time>
</signal>
<label>Set _Range...</label>
<right_justify>False</right_justify>
</widget>
</widget>
</widget>
<widget>
<class>GtkMenuItem</class>
<name>set_range1</name>
<signal>
<name>activate</name>
<handler>gnc_register_date_range_cb</handler>
<last_modification_time>Tue, 29 Oct 2002 04:51:17 GMT</last_modification_time>
</signal>
<label>Set _Range...</label>
<name>gnc_register_date_range_mi</name>
<label>Status</label>
<right_justify>False</right_justify>
<widget>
<class>GtkMenu</class>
<name>gnc_register_date_range_mi_menu</name>
<widget>
<class>GtkMenuItem</class>
<name>show_all_status</name>
<signal>
<name>activate</name>
<handler>gnc_register_show_all_status_cb</handler>
<last_modification_time>Sun, 15 Dec 2002 07:13:43 GMT</last_modification_time>
</signal>
<label>_All</label>
<right_justify>False</right_justify>
</widget>
<widget>
<class>GtkMenuItem</class>
<name>separator15</name>
<right_justify>False</right_justify>
</widget>
<widget>
<class>GtkCheckMenuItem</class>
<name>show_reconciled</name>
<signal>
<name>activate</name>
<handler>gnc_register_show_one_status_cb</handler>
<last_modification_time>Sun, 15 Dec 2002 07:13:43 GMT</last_modification_time>
</signal>
<label>_Reconciled</label>
<active>True</active>
<always_show_toggle>True</always_show_toggle>
</widget>
<widget>
<class>GtkCheckMenuItem</class>
<name>show_cleared</name>
<signal>
<name>activate</name>
<handler>gnc_register_show_one_status_cb</handler>
<last_modification_time>Sun, 15 Dec 2002 07:13:43 GMT</last_modification_time>
</signal>
<label>_Cleared</label>
<active>True</active>
<always_show_toggle>True</always_show_toggle>
</widget>
<widget>
<class>GtkCheckMenuItem</class>
<name>show_voided</name>
<signal>
<name>activate</name>
<handler>gnc_register_show_one_status_cb</handler>
<last_modification_time>Sun, 15 Dec 2002 07:13:43 GMT</last_modification_time>
</signal>
<label>_Voided</label>
<active>True</active>
<always_show_toggle>True</always_show_toggle>
</widget>
<widget>
<class>GtkCheckMenuItem</class>
<name>show_frozen</name>
<signal>
<name>activate</name>
<handler>gnc_register_show_one_status_cb</handler>
<last_modification_time>Sun, 15 Dec 2002 07:13:43 GMT</last_modification_time>
</signal>
<label>_Frozen</label>
<active>True</active>
<always_show_toggle>True</always_show_toggle>
</widget>
<widget>
<class>GtkCheckMenuItem</class>
<name>show_unreconciled</name>
<signal>
<name>activate</name>
<handler>gnc_register_show_one_status_cb</handler>
<last_modification_time>Sun, 15 Dec 2002 07:13:43 GMT</last_modification_time>
</signal>
<label>_Unreconciled</label>
<active>True</active>
<always_show_toggle>True</always_show_toggle>
</widget>
</widget>
</widget>
</widget>
</widget>
@@ -1059,35 +1166,66 @@
</widget>
</widget>
<widget>
<class>GtkFrame</class>
<name>main_frame</name>
<border_width>5</border_width>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkFrame</class>
<name>main_frame</name>
<border_width>5</border_width>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<class>GtkVBox</class>
<name>vbox97</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
<class>GtkVBox</class>
<name>vbox97</name>
<class>GtkRadioButton</class>
<name>start_earliest</name>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
<handler>gnc_register_date_toggle_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:55:04 GMT</last_modification_time>
</signal>
<label>Show Earliest</label>
<active>True</active>
<draw_indicator>True</draw_indicator>
<group>start</group>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GtkHBox</class>
<name>hbox85</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkRadioButton</class>
<name>start_earliest</name>
<name>start_date</name>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
<handler>gnc_register_date_toggle_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:55:04 GMT</last_modification_time>
<last_modification_time>Sun, 16 Jun 2002 23:54:45 GMT</last_modification_time>
</signal>
<label>Show Earliest</label>
<active>True</active>
<label>Start date:</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
<group>start</group>
<child>
@@ -1099,7 +1237,7 @@
<widget>
<class>GtkHBox</class>
<name>hbox85</name>
<name>start_date_entry</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
@@ -1109,63 +1247,63 @@
</child>
<widget>
<class>GtkRadioButton</class>
<name>start_date</name>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
<handler>gnc_register_date_toggle_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:54:45 GMT</last_modification_time>
</signal>
<label>Start date:</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
<group>start</group>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GtkHBox</class>
<name>start_date_entry</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>Placeholder</class>
</widget>
<class>Placeholder</class>
</widget>
</widget>
</widget>
<widget>
<class>GtkHSeparator</class>
<name>hseparator1</name>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
</widget>
<widget>
<class>GtkHSeparator</class>
<name>hseparator1</name>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
</widget>
<widget>
<class>GtkRadioButton</class>
<name>end_latest</name>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
<handler>gnc_register_date_toggle_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:54:23 GMT</last_modification_time>
</signal>
<label>Show Latest</label>
<active>True</active>
<draw_indicator>True</draw_indicator>
<group>end</group>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GtkHBox</class>
<name>hbox86</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkRadioButton</class>
<name>end_latest</name>
<name>end_date</name>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
<handler>gnc_register_date_toggle_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:54:23 GMT</last_modification_time>
<last_modification_time>Sun, 16 Jun 2002 23:53:30 GMT</last_modification_time>
</signal>
<label>Show Latest</label>
<active>True</active>
<label>End date:</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
<group>end</group>
<child>
@@ -1177,7 +1315,7 @@
<widget>
<class>GtkHBox</class>
<name>hbox86</name>
<name>end_date_entry</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
@@ -1187,63 +1325,31 @@
</child>
<widget>
<class>GtkRadioButton</class>
<name>end_date</name>
<can_focus>True</can_focus>
<signal>
<name>toggled</name>
<handler>gnc_register_date_toggle_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:53:30 GMT</last_modification_time>
</signal>
<label>End date:</label>
<active>False</active>
<draw_indicator>True</draw_indicator>
<group>end</group>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
<class>Placeholder</class>
</widget>
</widget>
<widget>
<class>GtkHBox</class>
<name>end_date_entry</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>Placeholder</class>
</widget>
</widget>
<widget>
<class>GtkButton</class>
<name>today</name>
<sensitive>False</sensitive>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>gnc_register_today_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:56:10 GMT</last_modification_time>
</signal>
<label>Today</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GtkButton</class>
<name>today</name>
<sensitive>False</sensitive>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>gnc_register_today_cb</handler>
<last_modification_time>Sun, 16 Jun 2002 23:56:10 GMT</last_modification_time>
</signal>
<label>Today</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
</widget>
</widget>
</widget>
</widget>
</widget>
+89 -1
View File
@@ -95,6 +95,12 @@ struct _RegWindow
/* pcd = "print check dialog" */
gpointer pcd;
gboolean read_only;
GtkWidget *reconciled_menu_item;
GtkWidget *cleared_menu_item;
GtkWidget *voided_menu_item;
GtkWidget *frozen_menu_item;
GtkWidget *unreconciled_menu_item;
};
GtkWidget *gnc_RegWindow_window (RegWindow *data)
@@ -144,6 +150,8 @@ void gnc_register_exit_cb(GtkWidget *w, gpointer data);
void gnc_register_report_account_cb(GtkWidget *w, gpointer data);
void gnc_register_report_trans_cb(GtkWidget *w, gpointer data);
void gnc_register_print_cb(GtkWidget *w, gpointer data);
void gnc_register_show_all_status_cb(GtkWidget *widget, gpointer data);
void gnc_register_show_one_status_cb(GtkWidget *widget, gpointer data);
void gnc_register_date_cb(GtkWidget *widget, gpointer data);
void gnc_register_date_show_all_cb(GtkWidget *w, gpointer data);
void gnc_register_today_cb(GtkWidget *w, gpointer data);
@@ -329,6 +337,79 @@ gnc_date_range_set_sensitivities(RegWindow *regData)
}
}
static void
gnc_register_show_status(RegWindow *regData)
{
RegDateWindow *regDateData;
GSList *param_list = NULL;
gboolean show_reconciled, show_unreconciled;
cleared_match_t how = 0;
Query *query;
if (!regData)
return;
if (!regData->ledger)
return;
if (GTK_CHECK_MENU_ITEM(regData->reconciled_menu_item)->active)
how |= CLEARED_RECONCILED;
if (GTK_CHECK_MENU_ITEM(regData->cleared_menu_item)->active)
how |= CLEARED_CLEARED;
if (GTK_CHECK_MENU_ITEM(regData->voided_menu_item)->active)
how |= CLEARED_VOIDED;
if (GTK_CHECK_MENU_ITEM(regData->frozen_menu_item)->active)
how |= CLEARED_FROZEN;
if (GTK_CHECK_MENU_ITEM(regData->unreconciled_menu_item)->active)
how |= CLEARED_NO;
query = gnc_ledger_display_get_query( regData->ledger );
if (!query)
return;
regDateData = regData->date_window;
if (regDateData == NULL)
return;
param_list = gncQueryBuildParamList (SPLIT_RECONCILE, NULL);
gncQueryPurgeTerms (query, param_list);
if (how == CLEARED_ALL)
return;
xaccQueryAddClearedMatch(query, how, QUERY_AND);
}
void
gnc_register_show_one_status_cb(GtkWidget *widget, gpointer data)
{
RegWindow *regData = data;
gnc_register_show_status(regData);
gnc_ledger_display_refresh (regData->ledger);
}
void
gnc_register_show_all_status_cb(GtkWidget *widget, gpointer data)
{
RegWindow *regData = data;
/*
* Don't call gtk_check_menu_item_set_active() because this would
* just generate a callback that would then need to be blocked. Set
* the bit directly so the menu items will be displayed correctly
* next time around.
*/
GTK_CHECK_MENU_ITEM(regData->reconciled_menu_item)->active = TRUE;
GTK_CHECK_MENU_ITEM(regData->cleared_menu_item)->active = TRUE;
GTK_CHECK_MENU_ITEM(regData->voided_menu_item)->active = TRUE;
GTK_CHECK_MENU_ITEM(regData->frozen_menu_item)->active = TRUE;
GTK_CHECK_MENU_ITEM(regData->unreconciled_menu_item)->active = TRUE;
gnc_register_show_status(regData);
gnc_ledger_display_refresh (regData->ledger);
}
static void
gnc_register_set_date_range(RegWindow *regData)
{
@@ -885,6 +966,12 @@ regWindowLedger( GNCLedgerDisplay *ledger )
GTK_SIGNAL_FUNC( gnc_register_include_date_adapter ),
regData );
regData->reconciled_menu_item = glade_xml_get_widget( xml, "show_reconciled" );
regData->cleared_menu_item = glade_xml_get_widget( xml, "show_cleared" );
regData->voided_menu_item = glade_xml_get_widget( xml, "show_voided" );
regData->frozen_menu_item = glade_xml_get_widget( xml, "show_frozen" );
regData->unreconciled_menu_item = glade_xml_get_widget( xml, "show_unreconciled" );
/* The menu bar. Menu extension setup needs to come *after* that. */
gnc_register_setup_menu_widgets( regData, xml );
gnc_extensions_menu_setup_with_data( GNOME_APP(register_window),
@@ -940,6 +1027,7 @@ regWindowLedger( GNCLedgerDisplay *ledger )
}
gtk_widget_show_all( GTK_WIDGET(regData->window) );
gtk_widget_hide(regData->frozen_menu_item); // Is this state supported?
gnc_window_adjust_for_screen( GTK_WINDOW(regData->window) );
{
@@ -1013,7 +1101,7 @@ gnc_register_setup_menu_widgets( RegWindow *regData, GladeXML *xml )
gtk_menu_insert( GTK_MENU(menu), tmpMi, (2 + adj) );
gtk_object_unref( GTK_OBJECT(tmpMi) );
gtk_menu_insert( GTK_MENU(menu), gtk_menu_item_new(), (3 + adj) );
tmpMi = glade_xml_get_widget( xml, "gnc_register_date_range_mi" );
tmpMi = glade_xml_get_widget( xml, "gnc_register_select_trans_mi" );
gtk_object_ref( GTK_OBJECT(tmpMi) );
gtk_container_remove( GTK_CONTAINER(regMenu), tmpMi );
gtk_menu_insert( GTK_MENU(menu), tmpMi, (4 + adj) );