Merge Richard Cohwn's 'declare-type-gnc-tree-view' into stable.

This commit is contained in:
John Ralls 2023-06-16 12:41:26 -07:00
commit 915e95e553
11 changed files with 183 additions and 363 deletions

View File

@ -62,7 +62,7 @@ static void gnc_tree_view_account_finalize (GObject *object);
static gboolean gnc_tree_view_search_compare (GtkTreeModel *model, gint column, static gboolean gnc_tree_view_search_compare (GtkTreeModel *model, gint column,
const gchar *key, GtkTreeIter *iter, gpointer search_data); const gchar *key, GtkTreeIter *iter, gpointer search_data);
static void gtva_update_column_names (GncTreeView *view); static void gtva_update_column_names (GncTreeViewAccount *view);
static void gtva_currency_changed_cb (void); static void gtva_currency_changed_cb (void);
static gboolean gnc_tree_view_account_filter_helper (GtkTreeModel *model, static gboolean gnc_tree_view_account_filter_helper (GtkTreeModel *model,
@ -93,8 +93,11 @@ static gboolean
gnc_tree_view_tooltip_cb (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, gnc_tree_view_tooltip_cb (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip,
GtkTooltip *tooltip, gpointer user_data); GtkTooltip *tooltip, gpointer user_data);
typedef struct GncTreeViewAccountPrivate struct _GncTreeViewAccount
{ {
GncTreeView gnc_tree_view;
int stamp;
AccountViewInfo avi; AccountViewInfo avi;
gnc_tree_view_account_filter_func filter_fn; gnc_tree_view_account_filter_func filter_fn;
@ -116,15 +119,12 @@ typedef struct GncTreeViewAccountPrivate
} GncTreeViewAccountPrivate; } GncTreeViewAccountPrivate;
#define GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(o) \
((GncTreeViewAccountPrivate*)gnc_tree_view_account_get_instance_private((GncTreeViewAccount*)o))
/************************************************************/ /************************************************************/
/* g_object required functions */ /* g_object required functions */
/************************************************************/ /************************************************************/
G_DEFINE_TYPE_WITH_PRIVATE(GncTreeViewAccount, gnc_tree_view_account, GNC_TYPE_TREE_VIEW) G_DEFINE_TYPE(GncTreeViewAccount, gnc_tree_view_account, GNC_TYPE_TREE_VIEW)
static void static void
gnc_tree_view_account_class_init (GncTreeViewAccountClass *klass) gnc_tree_view_account_class_init (GncTreeViewAccountClass *klass)
@ -159,42 +159,33 @@ gnc_init_account_view_info(AccountViewInfo *avi)
static void static void
gnc_tree_view_account_init (GncTreeViewAccount *view) gnc_tree_view_account_init (GncTreeViewAccount *view)
{ {
GncTreeViewAccountPrivate *priv;
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL, gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL,
GNC_PREF_ACCOUNT_COLOR, GNC_PREF_ACCOUNT_COLOR,
gnc_tree_view_account_color_update, gnc_tree_view_account_color_update,
view); view);
gnc_init_account_view_info(&priv->avi); gnc_init_account_view_info(&view->avi);
} }
static void static void
gnc_tree_view_account_finalize (GObject *object) gnc_tree_view_account_finalize (GObject *object)
{ {
GncTreeViewAccount *account_view;
GncTreeViewAccountPrivate *priv;
ENTER("view %p", object); ENTER("view %p", object);
g_return_if_fail (object != NULL); g_return_if_fail (object != NULL);
g_return_if_fail (GNC_IS_TREE_VIEW_ACCOUNT (object)); g_return_if_fail (GNC_IS_TREE_VIEW_ACCOUNT (object));
account_view = GNC_TREE_VIEW_ACCOUNT (object); GncTreeViewAccount *view = GNC_TREE_VIEW_ACCOUNT (object);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(account_view);
gnc_prefs_remove_cb_by_func (GNC_PREFS_GROUP_GENERAL, gnc_prefs_remove_cb_by_func (GNC_PREFS_GROUP_GENERAL,
GNC_PREF_ACCOUNT_COLOR, GNC_PREF_ACCOUNT_COLOR,
gnc_tree_view_account_color_update, gnc_tree_view_account_color_update,
account_view); view);
if (priv->filter_destroy) if (view->filter_destroy)
{ {
priv->filter_destroy(priv->filter_data); view->filter_destroy(view->filter_data);
priv->filter_destroy = NULL; view->filter_destroy = NULL;
} }
priv->filter_fn = NULL; view->filter_fn = NULL;
G_OBJECT_CLASS (gnc_tree_view_account_parent_class)->finalize (object); G_OBJECT_CLASS (gnc_tree_view_account_parent_class)->finalize (object);
LEAVE(" "); LEAVE(" ");
@ -663,9 +654,8 @@ acc_color_data_func (GtkTreeViewColumn *col,
GtkCellRenderer *renderer, GtkCellRenderer *renderer,
GtkTreeModel *model, GtkTreeModel *model,
GtkTreeIter *iter, GtkTreeIter *iter,
gpointer view) gpointer data)
{ {
GncTreeViewAccountPrivate *priv;
gchar *acc_color = NULL, *acc_cond_color = NULL; gchar *acc_color = NULL, *acc_cond_color = NULL;
gchar *item; gchar *item;
GdkRGBA color; GdkRGBA color;
@ -692,8 +682,8 @@ acc_color_data_func (GtkTreeViewColumn *col,
/* Determine whether columns other than the /* Determine whether columns other than the
* Account Color column should be colored. */ * Account Color column should be colored. */
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view); GncTreeViewAccount *view = data;
if (priv->show_account_color) if (view->show_account_color)
acc_cond_color = acc_color; acc_cond_color = acc_color;
column_name = g_object_get_data(G_OBJECT(col), PREF_NAME); column_name = g_object_get_data(G_OBJECT(col), PREF_NAME);
@ -717,14 +707,12 @@ acc_color_data_func (GtkTreeViewColumn *col,
static void static void
gnc_tree_view_account_color_update (gpointer gsettings, gchar *key, gpointer user_data) gnc_tree_view_account_color_update (gpointer gsettings, gchar *key, gpointer user_data)
{ {
GncTreeViewAccountPrivate *priv;
GncTreeViewAccount *view; GncTreeViewAccount *view;
g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(user_data)); g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(user_data));
view = user_data; view = user_data;
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
if (g_strcmp0 (key, GNC_PREF_ACCOUNT_COLOR) == 0) if (g_strcmp0 (key, GNC_PREF_ACCOUNT_COLOR) == 0)
priv->show_account_color = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL, key); view->show_account_color = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL, key);
// do a refilter so the tree view background color gets updated // do a refilter so the tree view background color gets updated
gnc_tree_view_account_refilter (view); gnc_tree_view_account_refilter (view);
@ -755,25 +743,21 @@ gnc_tree_view_account_column_add_color (GncTreeViewAccount *view, GtkTreeViewCol
GtkTreeView * GtkTreeView *
gnc_tree_view_account_new_with_root (Account *root, gboolean show_root) gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
{ {
GncTreeView *view;
GtkTreeModel *model, *f_model, *s_model; GtkTreeModel *model, *f_model, *s_model;
GtkTreePath *virtual_root_path = NULL; GtkTreePath *virtual_root_path = NULL;
const gchar *sample_type, *sample_commodity; const gchar *sample_type, *sample_commodity;
GncTreeViewAccountPrivate *priv;
GtkTreeViewColumn *tax_info_column, *acc_color_column, *acc_balance_limit_column; GtkTreeViewColumn *tax_info_column, *acc_color_column, *acc_balance_limit_column;
GtkCellRenderer *renderer; GtkCellRenderer *renderer;
GList *col_list = NULL, *node = NULL; GList *col_list = NULL, *node = NULL;
ENTER(" "); ENTER(" ");
/* Create our view */ /* Create our view */
view = g_object_new (GNC_TYPE_TREE_VIEW_ACCOUNT, GncTreeViewAccount *view = g_object_new (GNC_TYPE_TREE_VIEW_ACCOUNT,
"has-tooltip", true, "has-tooltip", true,
"name", "gnc-id-account-tree", NULL); "name", "gnc-id-account-tree", NULL);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(GNC_TREE_VIEW_ACCOUNT (view));
/* Get the show_account_color value from gsettings */ /* Get the show_account_color value from gsettings */
priv->show_account_color = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL, GNC_PREF_ACCOUNT_COLOR); view->show_account_color = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL, GNC_PREF_ACCOUNT_COLOR);
/* Create/get a pointer to the existing model for this set of books. */ /* Create/get a pointer to the existing model for this set of books. */
model = gnc_tree_model_account_new (root); model = gnc_tree_model_account_new (root);
@ -800,140 +784,140 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
sample_type = xaccAccountGetTypeStr(ACCT_TYPE_CREDIT); sample_type = xaccAccountGetTypeStr(ACCT_TYPE_CREDIT);
sample_commodity = gnc_commodity_get_fullname(gnc_default_currency()); sample_commodity = gnc_commodity_get_fullname(gnc_default_currency());
priv->name_column view->name_column
= gnc_tree_view_add_text_column(view, _("Account Name"), "name", = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Account Name"), "name",
GNC_ICON_ACCOUNT, "Expenses:Entertainment", GNC_ICON_ACCOUNT, "Expenses:Entertainment",
GNC_TREE_MODEL_ACCOUNT_COL_NAME, GNC_TREE_MODEL_ACCOUNT_COL_NAME,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Type"), "type", NULL, sample_type, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Type"), "type", NULL, sample_type,
GNC_TREE_MODEL_ACCOUNT_COL_TYPE, GNC_TREE_MODEL_ACCOUNT_COL_TYPE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Commodity"), "commodity", NULL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Commodity"), "commodity", NULL,
sample_commodity, sample_commodity,
GNC_TREE_MODEL_ACCOUNT_COL_COMMODITY, GNC_TREE_MODEL_ACCOUNT_COL_COMMODITY,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
priv->code_column view->code_column
= gnc_tree_view_add_text_column(view, _("Account Code"), "account-code", NULL, = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Account Code"), "account-code", NULL,
"1-123-1234", "1-123-1234",
GNC_TREE_MODEL_ACCOUNT_COL_CODE, GNC_TREE_MODEL_ACCOUNT_COL_CODE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_code); sort_by_code);
priv->desc_column view->desc_column
= gnc_tree_view_add_text_column(view, _("Description"), "description", NULL, = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Description"), "description", NULL,
"Sample account description.", "Sample account description.",
GNC_TREE_MODEL_ACCOUNT_COL_DESCRIPTION, GNC_TREE_MODEL_ACCOUNT_COL_DESCRIPTION,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_numeric_column(view, _("Last Num"), "lastnum", "12345", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Last Num"), "lastnum", "12345",
GNC_TREE_MODEL_ACCOUNT_COL_LASTNUM, GNC_TREE_MODEL_ACCOUNT_COL_LASTNUM,
GNC_TREE_VIEW_COLUMN_COLOR_NONE, GNC_TREE_VIEW_COLUMN_COLOR_NONE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_numeric_column(view, _("Present"), "present", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Present"), "present",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_PRESENT, GNC_TREE_MODEL_ACCOUNT_COL_PRESENT,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_PRESENT, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_PRESENT,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_present_value); sort_by_present_value);
priv->present_report_column view->present_report_column
= gnc_tree_view_add_numeric_column(view, _("Present (Report)"), "present_report", = gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Present (Report)"), "present_report",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_PRESENT_REPORT, GNC_TREE_MODEL_ACCOUNT_COL_PRESENT_REPORT,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_PRESENT, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_PRESENT,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_present_value); sort_by_present_value);
gnc_tree_view_add_numeric_column(view, _("Balance"), "balance", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Balance"), "balance",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_BALANCE, GNC_TREE_MODEL_ACCOUNT_COL_BALANCE,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_BALANCE, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_BALANCE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_balance_value); sort_by_balance_value);
priv->balance_report_column view->balance_report_column
= gnc_tree_view_add_numeric_column(view, _("Balance (Report)"), "balance_report", = gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Balance (Report)"), "balance_report",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_BALANCE_REPORT, GNC_TREE_MODEL_ACCOUNT_COL_BALANCE_REPORT,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_BALANCE, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_BALANCE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_balance_value); sort_by_balance_value);
gnc_tree_view_add_numeric_column(view, _("Balance (Period)"), "balance-period", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Balance (Period)"), "balance-period",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_BALANCE_PERIOD, GNC_TREE_MODEL_ACCOUNT_COL_BALANCE_PERIOD,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_BALANCE_PERIOD, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_BALANCE_PERIOD,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_balance_period_value); sort_by_balance_period_value);
gnc_tree_view_add_numeric_column(view, _("Cleared"), "cleared", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Cleared"), "cleared",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_CLEARED, GNC_TREE_MODEL_ACCOUNT_COL_CLEARED,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_CLEARED, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_CLEARED,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_cleared_value); sort_by_cleared_value);
priv->cleared_report_column view->cleared_report_column
= gnc_tree_view_add_numeric_column(view, _("Cleared (Report)"), "cleared_report", = gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Cleared (Report)"), "cleared_report",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_CLEARED_REPORT, GNC_TREE_MODEL_ACCOUNT_COL_CLEARED_REPORT,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_CLEARED, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_CLEARED,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_cleared_value); sort_by_cleared_value);
gnc_tree_view_add_numeric_column(view, _("Reconciled"), "reconciled", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Reconciled"), "reconciled",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_RECONCILED, GNC_TREE_MODEL_ACCOUNT_COL_RECONCILED,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_RECONCILED, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_RECONCILED,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_reconciled_value); sort_by_reconciled_value);
priv->reconciled_report_column view->reconciled_report_column
= gnc_tree_view_add_numeric_column(view, _("Reconciled (Report)"), "reconciled_report", = gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Reconciled (Report)"), "reconciled_report",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_RECONCILED_REPORT, GNC_TREE_MODEL_ACCOUNT_COL_RECONCILED_REPORT,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_RECONCILED, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_RECONCILED,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_reconciled_value); sort_by_reconciled_value);
gnc_tree_view_add_text_column(view, _("Last Reconcile Date"), "last-recon-date", NULL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Last Reconcile Date"), "last-recon-date", NULL,
"Last Reconcile Date", "Last Reconcile Date",
GNC_TREE_MODEL_ACCOUNT_COL_RECONCILED_DATE, GNC_TREE_MODEL_ACCOUNT_COL_RECONCILED_DATE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_last_reconcile_date); sort_by_last_reconcile_date);
gnc_tree_view_add_numeric_column(view, _("Future Minimum"), "future_min", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Future Minimum"), "future_min",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_FUTURE_MIN, GNC_TREE_MODEL_ACCOUNT_COL_FUTURE_MIN,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_FUTURE_MIN, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_FUTURE_MIN,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_future_min_value); sort_by_future_min_value);
priv->future_min_report_column view->future_min_report_column
= gnc_tree_view_add_numeric_column(view, _("Future Minimum (Report)"), "future_min_report", = gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Future Minimum (Report)"), "future_min_report",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_FUTURE_MIN_REPORT, GNC_TREE_MODEL_ACCOUNT_COL_FUTURE_MIN_REPORT,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_FUTURE_MIN, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_FUTURE_MIN,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_future_min_value); sort_by_future_min_value);
gnc_tree_view_add_numeric_column(view, _("Total"), "total", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Total"), "total",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_TOTAL, GNC_TREE_MODEL_ACCOUNT_COL_TOTAL,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_TOTAL, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_TOTAL,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_total_value); sort_by_total_value);
priv->total_report_column view->total_report_column
= gnc_tree_view_add_numeric_column(view, _("Total (Report)"), "total_report", = gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Total (Report)"), "total_report",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_TOTAL_REPORT, GNC_TREE_MODEL_ACCOUNT_COL_TOTAL_REPORT,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_TOTAL, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_TOTAL,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_total_value); sort_by_total_value);
gnc_tree_view_add_numeric_column(view, _("Total (Period)"), "total-period", gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Total (Period)"), "total-period",
SAMPLE_ACCOUNT_VALUE, SAMPLE_ACCOUNT_VALUE,
GNC_TREE_MODEL_ACCOUNT_COL_TOTAL_PERIOD, GNC_TREE_MODEL_ACCOUNT_COL_TOTAL_PERIOD,
GNC_TREE_MODEL_ACCOUNT_COL_COLOR_TOTAL_PERIOD, GNC_TREE_MODEL_ACCOUNT_COL_COLOR_TOTAL_PERIOD,
@ -942,7 +926,7 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
/* Translators: The C is the column title and stands for Color, this should be one character */ /* Translators: The C is the column title and stands for Color, this should be one character */
acc_color_column acc_color_column
= gnc_tree_view_add_text_column(view, C_("Column header for 'Color'", "C"), "account-color", NULL, = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), C_("Column header for 'Color'", "C"), "account-color", NULL,
"xx", "xx",
GNC_TREE_VIEW_COLUMN_DATA_NONE, GNC_TREE_VIEW_COLUMN_DATA_NONE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
@ -956,7 +940,7 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
gtk_widget_set_tooltip_text (gtk_tree_view_column_get_button (acc_color_column), _("Account Color")); gtk_widget_set_tooltip_text (gtk_tree_view_column_get_button (acc_color_column), _("Account Color"));
acc_balance_limit_column acc_balance_limit_column
= gnc_tree_view_add_pix_column (view, = gnc_tree_view_add_pix_column (GNC_TREE_VIEW(view),
C_("Column header for 'Balance Limit'", "L"), C_("Column header for 'Balance Limit'", "L"),
"account-balance-limit", "account-balance-limit",
"xx", "xx",
@ -971,15 +955,15 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
/* Also add the full title to the column header as a tooltip */ /* Also add the full title to the column header as a tooltip */
gtk_widget_set_tooltip_text (gtk_tree_view_column_get_button (acc_balance_limit_column), _("Balance Limit")); gtk_widget_set_tooltip_text (gtk_tree_view_column_get_button (acc_balance_limit_column), _("Balance Limit"));
priv->notes_column view->notes_column
= gnc_tree_view_add_text_view_column(view, _("Notes"), "notes", NULL, = gnc_tree_view_add_text_view_column(GNC_TREE_VIEW(view), _("Notes"), "notes", NULL,
"Sample account notes.", "Sample account notes.",
GNC_TREE_MODEL_ACCOUNT_COL_NOTES, GNC_TREE_MODEL_ACCOUNT_COL_NOTES,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
tax_info_column tax_info_column
= gnc_tree_view_add_text_column(view, _("Tax Info"), "tax-info", NULL, = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Tax Info"), "tax-info", NULL,
"Sample tax info.", "Sample tax info.",
GNC_TREE_MODEL_ACCOUNT_COL_TAX_INFO, GNC_TREE_MODEL_ACCOUNT_COL_TAX_INFO,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
@ -992,7 +976,7 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
GTK_TREE_VIEW(view), GTK_TREE_VIEW(view),
NULL); NULL);
gnc_tree_view_add_toggle_column (view, _("Hidden"), gnc_tree_view_add_toggle_column (GNC_TREE_VIEW(view), _("Hidden"),
C_("Column header for 'Hidden'", "H"), C_("Column header for 'Hidden'", "H"),
"hidden", "hidden",
GNC_TREE_MODEL_ACCOUNT_COL_HIDDEN, GNC_TREE_MODEL_ACCOUNT_COL_HIDDEN,
@ -1000,7 +984,7 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
sort_by_hidden, sort_by_hidden,
gnc_tree_view_account_hidden_toggled); gnc_tree_view_account_hidden_toggled);
gnc_tree_view_add_toggle_column(view, _("Placeholder"), gnc_tree_view_add_toggle_column(GNC_TREE_VIEW(view), _("Placeholder"),
C_("Column header for 'Placeholder'", "P"), C_("Column header for 'Placeholder'", "P"),
"placeholder", "placeholder",
GNC_TREE_MODEL_ACCOUNT_COL_PLACEHOLDER, GNC_TREE_MODEL_ACCOUNT_COL_PLACEHOLDER,
@ -1008,7 +992,7 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
sort_by_placeholder, sort_by_placeholder,
gnc_tree_view_account_placeholder_toggled); gnc_tree_view_account_placeholder_toggled);
gnc_tree_view_add_toggle_column(view, _("Opening Balance"), gnc_tree_view_add_toggle_column(GNC_TREE_VIEW(view), _("Opening Balance"),
C_("Column header for 'Opening Balance'", "O"), C_("Column header for 'Opening Balance'", "O"),
"opening-balance", "opening-balance",
GNC_TREE_MODEL_ACCOUNT_COL_OPENING_BALANCE, GNC_TREE_MODEL_ACCOUNT_COL_OPENING_BALANCE,
@ -1033,7 +1017,7 @@ gnc_tree_view_account_new_with_root (Account *root, gboolean show_root)
gtva_update_column_names(view); gtva_update_column_names(view);
/* By default only the first column is visible. */ /* By default only the first column is visible. */
gnc_tree_view_configure_columns(view); gnc_tree_view_configure_columns(GNC_TREE_VIEW(view));
gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (f_model), gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (f_model),
gnc_tree_view_account_filter_helper, gnc_tree_view_account_filter_helper,
view, view,
@ -1206,17 +1190,13 @@ gnc_tree_view_account_clear_model_cache (GncTreeViewAccount *view)
* specified tree. * specified tree.
*/ */
void void
gnc_tree_view_account_get_view_info (GncTreeViewAccount *account_view, gnc_tree_view_account_get_view_info (GncTreeViewAccount *view,
AccountViewInfo *avi) AccountViewInfo *avi)
{ {
GncTreeViewAccountPrivate *priv; g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(view));
g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(account_view));
g_return_if_fail(avi != NULL); g_return_if_fail(avi != NULL);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(account_view); *avi = view->avi;
*avi = priv->avi;
} }
/* /*
@ -1224,21 +1204,18 @@ gnc_tree_view_account_get_view_info (GncTreeViewAccount *account_view,
* match the callers request. * match the callers request.
*/ */
void void
gnc_tree_view_account_set_view_info (GncTreeViewAccount *account_view, gnc_tree_view_account_set_view_info (GncTreeViewAccount *view,
AccountViewInfo *avi) AccountViewInfo *avi)
{ {
GncTreeViewAccountPrivate *priv; ENTER("%p", view);
g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(view));
ENTER("%p", account_view);
g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(account_view));
g_return_if_fail(avi != NULL); g_return_if_fail(avi != NULL);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(account_view); view->avi = *avi;
priv->avi = *avi;
gnc_tree_view_account_set_filter( gnc_tree_view_account_set_filter(
account_view, gnc_tree_view_account_filter_by_view_info, view, gnc_tree_view_account_filter_by_view_info,
&priv->avi, NULL); &view->avi, NULL);
LEAVE(" "); LEAVE(" ");
} }
@ -1250,7 +1227,6 @@ gnc_tree_view_account_filter_helper (GtkTreeModel *model,
{ {
Account *account; Account *account;
GncTreeViewAccount *view = data; GncTreeViewAccount *view = data;
GncTreeViewAccountPrivate *priv;
g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT (model), FALSE); g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT (model), FALSE);
g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (iter != NULL, FALSE);
@ -1258,9 +1234,8 @@ gnc_tree_view_account_filter_helper (GtkTreeModel *model,
account = gnc_tree_model_account_get_account ( account = gnc_tree_model_account_get_account (
GNC_TREE_MODEL_ACCOUNT(model), iter); GNC_TREE_MODEL_ACCOUNT(model), iter);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view); if (view->filter_fn)
if (priv->filter_fn) return view->filter_fn(account, view->filter_data);
return priv->filter_fn(account, priv->filter_data);
else return TRUE; else return TRUE;
} }
@ -1277,21 +1252,18 @@ gnc_tree_view_account_set_filter (GncTreeViewAccount *view,
gpointer data, gpointer data,
GSourceFunc destroy) GSourceFunc destroy)
{ {
GncTreeViewAccountPrivate *priv;
ENTER("view %p, filter func %p, data %p, destroy %p", ENTER("view %p, filter func %p, data %p, destroy %p",
view, func, data, destroy); view, func, data, destroy);
g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(view)); g_return_if_fail(GNC_IS_TREE_VIEW_ACCOUNT(view));
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view); if (view->filter_destroy)
if (priv->filter_destroy)
{ {
priv->filter_destroy(priv->filter_data); view->filter_destroy(view->filter_data);
} }
priv->filter_destroy = destroy; view->filter_destroy = destroy;
priv->filter_data = data; view->filter_data = data;
priv->filter_fn = func; view->filter_fn = func;
gnc_tree_view_account_refilter(view); gnc_tree_view_account_refilter(view);
LEAVE(" "); LEAVE(" ");
@ -1528,7 +1500,7 @@ gnc_tree_view_account_set_selected_account (GncTreeViewAccount *view,
typedef struct typedef struct
{ {
GList* return_list; GList* return_list;
GncTreeViewAccountPrivate* priv; GncTreeViewAccount* view;
} GncTreeViewSelectionInfo; } GncTreeViewSelectionInfo;
/* /*
@ -1556,7 +1528,7 @@ get_selected_accounts_helper (GtkTreeModel *s_model,
account = iter.user_data; account = iter.user_data;
/* Only selected if it passes the filter */ /* Only selected if it passes the filter */
if (gtvsi->priv->filter_fn == NULL || gtvsi->priv->filter_fn(account, gtvsi->priv->filter_data)) if (gtvsi->view->filter_fn == NULL || gtvsi->view->filter_fn(account, gtvsi->view->filter_data))
{ {
gtvsi->return_list = g_list_prepend (gtvsi->return_list, account); gtvsi->return_list = g_list_prepend (gtvsi->return_list, account);
} }
@ -1578,7 +1550,6 @@ gnc_tree_view_account_get_selected_accounts (GncTreeViewAccount *view)
g_return_val_if_fail (GNC_IS_TREE_VIEW_ACCOUNT (view), NULL); g_return_val_if_fail (GNC_IS_TREE_VIEW_ACCOUNT (view), NULL);
info.return_list = NULL; info.return_list = NULL;
info.priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view)); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
gtk_tree_selection_selected_foreach(selection, get_selected_accounts_helper, &info); gtk_tree_selection_selected_foreach(selection, get_selected_accounts_helper, &info);
info.return_list = g_list_reverse (info.return_list); info.return_list = g_list_reverse (info.return_list);
@ -1807,34 +1778,30 @@ gtva_update_column_name (GtkTreeViewColumn *column,
static void static void
gtva_update_column_names (GncTreeView *view) gtva_update_column_names (GncTreeViewAccount *view)
{ {
GncTreeViewAccountPrivate *priv; const gchar *mnemonic = gnc_commodity_get_mnemonic(gnc_default_report_currency());
const gchar *mnemonic;
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view); gtva_update_column_name(view->present_report_column,
mnemonic = gnc_commodity_get_mnemonic(gnc_default_report_currency());
gtva_update_column_name(priv->present_report_column,
/* Translators: %s is a currency mnemonic.*/ /* Translators: %s is a currency mnemonic.*/
_("Present (%s)"), mnemonic); _("Present (%s)"), mnemonic);
gtva_update_column_name(priv->balance_report_column, gtva_update_column_name(view->balance_report_column,
/* Translators: %s is a currency mnemonic.*/ /* Translators: %s is a currency mnemonic.*/
_("Balance (%s)"), mnemonic); _("Balance (%s)"), mnemonic);
gtva_update_column_name(priv->cleared_report_column, gtva_update_column_name(view->cleared_report_column,
/* Translators: %s is a currency mnemonic.*/ /* Translators: %s is a currency mnemonic.*/
_("Cleared (%s)"), mnemonic); _("Cleared (%s)"), mnemonic);
gtva_update_column_name(priv->reconciled_report_column, gtva_update_column_name(view->reconciled_report_column,
/* Translators: %s is a currency mnemonic.*/ /* Translators: %s is a currency mnemonic.*/
_("Reconciled (%s)"), mnemonic); _("Reconciled (%s)"), mnemonic);
gtva_update_column_name(priv->future_min_report_column, gtva_update_column_name(view->future_min_report_column,
/* Translators: %s is a currency mnemonic.*/ /* Translators: %s is a currency mnemonic.*/
_("Future Minimum (%s)"), mnemonic); _("Future Minimum (%s)"), mnemonic);
gtva_update_column_name(priv->total_report_column, gtva_update_column_name(view->total_report_column,
/* Translators: %s is a currency mnemonic.*/ /* Translators: %s is a currency mnemonic.*/
_("Total (%s)"), mnemonic); _("Total (%s)"), mnemonic);
gnc_tree_view_set_show_column_menu(view, FALSE); gnc_tree_view_set_show_column_menu(GNC_TREE_VIEW(view), FALSE);
gnc_tree_view_set_show_column_menu(view, TRUE); gnc_tree_view_set_show_column_menu(GNC_TREE_VIEW(view), TRUE);
} }
@ -2788,36 +2755,28 @@ void
gnc_tree_view_account_set_name_edited(GncTreeViewAccount *view, gnc_tree_view_account_set_name_edited(GncTreeViewAccount *view,
GncTreeViewAccountColumnTextEdited edited_cb) GncTreeViewAccountColumnTextEdited edited_cb)
{ {
GncTreeViewAccountPrivate *priv; gtva_set_column_editor(view, view->name_column, edited_cb);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
gtva_set_column_editor(view, priv->name_column, edited_cb);
} }
void void
gnc_tree_view_account_set_code_edited(GncTreeViewAccount *view, gnc_tree_view_account_set_code_edited(GncTreeViewAccount *view,
GncTreeViewAccountColumnTextEdited edited_cb) GncTreeViewAccountColumnTextEdited edited_cb)
{ {
GncTreeViewAccountPrivate *priv; gtva_set_column_editor(view, view->code_column, edited_cb);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
gtva_set_column_editor(view, priv->code_column, edited_cb);
} }
void void
gnc_tree_view_account_set_description_edited(GncTreeViewAccount *view, gnc_tree_view_account_set_description_edited(GncTreeViewAccount *view,
GncTreeViewAccountColumnTextEdited edited_cb) GncTreeViewAccountColumnTextEdited edited_cb)
{ {
GncTreeViewAccountPrivate *priv; gtva_set_column_editor(view, view->desc_column, edited_cb);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
gtva_set_column_editor(view, priv->desc_column, edited_cb);
} }
void void
gnc_tree_view_account_set_notes_edited(GncTreeViewAccount *view, gnc_tree_view_account_set_notes_edited(GncTreeViewAccount *view,
GncTreeViewAccountColumnTextEdited edited_cb) GncTreeViewAccountColumnTextEdited edited_cb)
{ {
GncTreeViewAccountPrivate *priv; gtva_set_column_editor(view, view->notes_column, edited_cb);
priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
gtva_set_column_editor(view, priv->notes_column, edited_cb);
} }
static static

View File

@ -44,11 +44,8 @@ G_BEGIN_DECLS
/* type macros */ /* type macros */
#define GNC_TYPE_TREE_VIEW_ACCOUNT (gnc_tree_view_account_get_type ()) #define GNC_TYPE_TREE_VIEW_ACCOUNT (gnc_tree_view_account_get_type ())
#define GNC_TREE_VIEW_ACCOUNT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW_ACCOUNT, GncTreeViewAccount)) G_DECLARE_FINAL_TYPE (GncTreeViewAccount, gnc_tree_view_account, GNC, TREE_VIEW_ACCOUNT, GncTreeView)
#define GNC_TREE_VIEW_ACCOUNT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW_ACCOUNT, GncTreeViewAccountClass))
#define GNC_IS_TREE_VIEW_ACCOUNT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW_ACCOUNT))
#define GNC_IS_TREE_VIEW_ACCOUNT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW_ACCOUNT))
#define GNC_TREE_VIEW_ACCOUNT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW_ACCOUNT, GncTreeViewAccountClass))
#define GNC_TREE_VIEW_ACCOUNT_NAME "GncTreeViewAccount" #define GNC_TREE_VIEW_ACCOUNT_NAME "GncTreeViewAccount"
/* typedefs & structures */ /* typedefs & structures */
@ -62,17 +59,6 @@ struct AccountViewInfo_s
}; };
typedef struct
{
GncTreeView gnc_tree_view;
int stamp;
} GncTreeViewAccount;
typedef struct
{
GncTreeViewClass gnc_tree_view;
} GncTreeViewAccountClass;
typedef struct typedef struct
{ {
GtkWidget *dialog; GtkWidget *dialog;

View File

@ -50,20 +50,17 @@ static QofLogModule log_module = GNC_MOD_GUI;
static void gnc_tree_view_commodity_finalize (GObject *object); static void gnc_tree_view_commodity_finalize (GObject *object);
static void gnc_tree_view_commodity_destroy (GtkWidget *widget); static void gnc_tree_view_commodity_destroy (GtkWidget *widget);
typedef struct GncTreeViewCommodityPrivate struct _GncTreeViewCommodity
{ {
gpointer dummy; GncTreeView gnc_tree_view;
} GncTreeViewCommodityPrivate; int stamp;
};
#define GNC_TREE_VIEW_COMMODITY_GET_PRIVATE(o) \
((GncTreeViewCommodityPrivate*)gnc_tree_view_commodity_get_instance_private(GncTreeViewCommodity*)o))
/************************************************************/ /************************************************************/
/* g_object required functions */ /* g_object required functions */
/************************************************************/ /************************************************************/
G_DEFINE_TYPE_WITH_PRIVATE(GncTreeViewCommodity, gnc_tree_view_commodity, GNC_TYPE_TREE_VIEW) G_DEFINE_TYPE(GncTreeViewCommodity, gnc_tree_view_commodity, GNC_TYPE_TREE_VIEW)
static void static void
gnc_tree_view_commodity_class_init (GncTreeViewCommodityClass *klass) gnc_tree_view_commodity_class_init (GncTreeViewCommodityClass *klass)

View File

@ -44,29 +44,7 @@ G_BEGIN_DECLS
/* type macros */ /* type macros */
#define GNC_TYPE_TREE_VIEW_COMMODITY (gnc_tree_view_commodity_get_type ()) #define GNC_TYPE_TREE_VIEW_COMMODITY (gnc_tree_view_commodity_get_type ())
#define GNC_TREE_VIEW_COMMODITY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW_COMMODITY, GncTreeViewCommodity)) G_DECLARE_FINAL_TYPE (GncTreeViewCommodity, gnc_tree_view_commodity, GNC, TREE_VIEW_COMMODITY, GncTreeView)
#define GNC_TREE_VIEW_COMMODITY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW_COMMODITY, GncTreeViewCommodityClass))
#define GNC_IS_TREE_VIEW_COMMODITY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW_COMMODITY))
#define GNC_IS_TREE_VIEW_COMMODITY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW_COMMODITY))
#define GNC_TREE_VIEW_COMMODITY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW_COMMODITY, GncTreeViewCommodityClass))
/* typedefs & structures */
typedef struct
{
GncTreeView gnc_tree_view;
int stamp;
} GncTreeViewCommodity;
typedef struct
{
GncTreeViewClass gnc_tree_view;
} GncTreeViewCommodityClass;
/* Get the GType for an GncTreeViewCommodity object. */
GType gnc_tree_view_commodity_get_type (void);
/** @name Commodity Tree View Constructors /** @name Commodity Tree View Constructors
@{ */ @{ */

View File

@ -56,7 +56,7 @@ static QofLogModule log_module = GNC_MOD_GUI;
/** Declarations *********************************************************/ /** Declarations *********************************************************/
static void gnc_tree_view_owner_finalize (GObject *object); static void gnc_tree_view_owner_finalize (GObject *object);
static void gtvo_update_column_names (GncTreeView *view); static void gtvo_update_column_names (GncTreeViewOwner *view);
static void gtvo_currency_changed_cb (void); static void gtvo_currency_changed_cb (void);
static gboolean gnc_tree_view_owner_filter_helper (GtkTreeModel *model, static gboolean gnc_tree_view_owner_filter_helper (GtkTreeModel *model,
@ -70,8 +70,11 @@ static void gtvo_setup_column_renderer_edited_cb(GncTreeViewOwner *owner_view,
GncTreeViewOwnerColumnTextEdited col_edited_cb); GncTreeViewOwnerColumnTextEdited col_edited_cb);
#endif /* Not Used */ #endif /* Not Used */
typedef struct GncTreeViewOwnerPrivate struct _GncTreeViewOwner
{ {
GncTreeView gnc_tree_view;
int stamp;
OwnerViewInfo ovi; OwnerViewInfo ovi;
gnc_tree_view_owner_filter_func filter_fn; gnc_tree_view_owner_filter_func filter_fn;
@ -82,17 +85,14 @@ typedef struct GncTreeViewOwnerPrivate
GtkTreeViewColumn *id_column; GtkTreeViewColumn *id_column;
GtkTreeViewColumn *balance_report_column; GtkTreeViewColumn *balance_report_column;
GtkTreeViewColumn *notes_column; GtkTreeViewColumn *notes_column;
} GncTreeViewOwnerPrivate; };
#define GNC_TREE_VIEW_OWNER_GET_PRIVATE(o) \
((GncTreeViewOwnerPrivate*)gnc_tree_view_owner_get_instance_private((GncTreeViewOwner*)o))
/************************************************************/ /************************************************************/
/* g_object required functions */ /* g_object required functions */
/************************************************************/ /************************************************************/
G_DEFINE_TYPE_WITH_PRIVATE(GncTreeViewOwner, gnc_tree_view_owner, GNC_TYPE_TREE_VIEW) G_DEFINE_TYPE(GncTreeViewOwner, gnc_tree_view_owner, GNC_TYPE_TREE_VIEW)
static void static void
gnc_tree_view_owner_class_init (GncTreeViewOwnerClass *klass) gnc_tree_view_owner_class_init (GncTreeViewOwnerClass *klass)
@ -123,31 +123,24 @@ gnc_init_owner_view_info(OwnerViewInfo *ovi)
static void static void
gnc_tree_view_owner_init (GncTreeViewOwner *view) gnc_tree_view_owner_init (GncTreeViewOwner *view)
{ {
GncTreeViewOwnerPrivate *priv; gnc_init_owner_view_info(&view->ovi);
priv = GNC_TREE_VIEW_OWNER_GET_PRIVATE(view);
gnc_init_owner_view_info(&priv->ovi);
} }
static void static void
gnc_tree_view_owner_finalize (GObject *object) gnc_tree_view_owner_finalize (GObject *object)
{ {
GncTreeViewOwner *owner_view;
GncTreeViewOwnerPrivate *priv;
ENTER("view %p", object); ENTER("view %p", object);
g_return_if_fail (object != NULL); g_return_if_fail (object != NULL);
g_return_if_fail (GNC_IS_TREE_VIEW_OWNER (object)); g_return_if_fail (GNC_IS_TREE_VIEW_OWNER (object));
owner_view = GNC_TREE_VIEW_OWNER (object); GncTreeViewOwner *view = GNC_TREE_VIEW_OWNER (object);
priv = GNC_TREE_VIEW_OWNER_GET_PRIVATE(owner_view); if (view->filter_destroy)
if (priv->filter_destroy)
{ {
priv->filter_destroy(priv->filter_data); view->filter_destroy(view->filter_data);
priv->filter_destroy = NULL; view->filter_destroy = NULL;
} }
priv->filter_fn = NULL; view->filter_fn = NULL;
G_OBJECT_CLASS (gnc_tree_view_owner_parent_class)->finalize (object); G_OBJECT_CLASS (gnc_tree_view_owner_parent_class)->finalize (object);
LEAVE(" "); LEAVE(" ");
@ -325,11 +318,9 @@ sort_by_balance_value (GtkTreeModel *f_model,
GtkTreeView * GtkTreeView *
gnc_tree_view_owner_new (GncOwnerType owner_type) gnc_tree_view_owner_new (GncOwnerType owner_type)
{ {
GncTreeView *view;
GtkTreeModel *model, *f_model, *s_model; GtkTreeModel *model, *f_model, *s_model;
const gchar *sample_type, *sample_currency; const gchar *sample_type, *sample_currency;
const gchar *owner_name = NULL, * owner_id = NULL; const gchar *owner_name = NULL, * owner_id = NULL;
GncTreeViewOwnerPrivate *priv;
ENTER(" "); ENTER(" ");
@ -359,10 +350,8 @@ gnc_tree_view_owner_new (GncOwnerType owner_type)
break; break;
} }
/* Create our view */ /* Create our view */
view = g_object_new (GNC_TYPE_TREE_VIEW_OWNER, GncTreeViewOwner *view = g_object_new (GNC_TYPE_TREE_VIEW_OWNER,
"name", "gnc-id-owner-tree", NULL); "name", "gnc-id-owner-tree", NULL);
priv = GNC_TREE_VIEW_OWNER_GET_PRIVATE(GNC_TREE_VIEW_OWNER (view));
/* Create/get a pointer to the existing model for this set of books. */ /* Create/get a pointer to the existing model for this set of books. */
model = gnc_tree_model_owner_new (owner_type); model = gnc_tree_model_owner_new (owner_type);
@ -385,90 +374,90 @@ gnc_tree_view_owner_new (GncOwnerType owner_type)
sample_type = gncOwnerTypeToQofIdType (GNC_OWNER_CUSTOMER); sample_type = gncOwnerTypeToQofIdType (GNC_OWNER_CUSTOMER);
sample_currency = gnc_commodity_get_fullname(gnc_default_currency()); sample_currency = gnc_commodity_get_fullname(gnc_default_currency());
priv->name_column view->name_column
= gnc_tree_view_add_text_column(view, owner_name, GNC_OWNER_TREE_NAME_COL, = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), owner_name, GNC_OWNER_TREE_NAME_COL,
NULL, "GnuCash Inc.", NULL, "GnuCash Inc.",
GNC_TREE_MODEL_OWNER_COL_NAME, GNC_TREE_MODEL_OWNER_COL_NAME,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Type"), GNC_OWNER_TREE_TYPE_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Type"), GNC_OWNER_TREE_TYPE_COL,
NULL, sample_type, NULL, sample_type,
GNC_TREE_MODEL_OWNER_COL_TYPE, GNC_TREE_MODEL_OWNER_COL_TYPE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
priv->id_column view->id_column
= gnc_tree_view_add_text_column(view, owner_id, GNC_OWNER_TREE_ID_COL, = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), owner_id, GNC_OWNER_TREE_ID_COL,
NULL, "1-123-1234", NULL, "1-123-1234",
GNC_TREE_MODEL_OWNER_COL_ID, GNC_TREE_MODEL_OWNER_COL_ID,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Currency"), GNC_OWNER_TREE_CURRENCY_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Currency"), GNC_OWNER_TREE_CURRENCY_COL,
NULL, sample_currency, NULL, sample_currency,
GNC_TREE_MODEL_OWNER_COL_CURRENCY, GNC_TREE_MODEL_OWNER_COL_CURRENCY,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Address Name"), GNC_OWNER_TREE_ADDRESS_NAME_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Address Name"), GNC_OWNER_TREE_ADDRESS_NAME_COL,
NULL, "GnuCash Inc.", NULL, "GnuCash Inc.",
GNC_TREE_MODEL_OWNER_COL_ADDRESS_NAME, GNC_TREE_MODEL_OWNER_COL_ADDRESS_NAME,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Address 1"), GNC_OWNER_TREE_ADDRESS_1_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Address 1"), GNC_OWNER_TREE_ADDRESS_1_COL,
NULL, "Free Software Foundation", NULL, "Free Software Foundation",
GNC_TREE_MODEL_OWNER_COL_ADDRESS_1, GNC_TREE_MODEL_OWNER_COL_ADDRESS_1,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Address 2"), GNC_OWNER_TREE_ADDRESS_2_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Address 2"), GNC_OWNER_TREE_ADDRESS_2_COL,
NULL, "51 Franklin Street, Fifth Floor", NULL, "51 Franklin Street, Fifth Floor",
GNC_TREE_MODEL_OWNER_COL_ADDRESS_2, GNC_TREE_MODEL_OWNER_COL_ADDRESS_2,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Address 3"), GNC_OWNER_TREE_ADDRESS_3_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Address 3"), GNC_OWNER_TREE_ADDRESS_3_COL,
NULL, "Boston, MA 02110-1301", NULL, "Boston, MA 02110-1301",
GNC_TREE_MODEL_OWNER_COL_ADDRESS_3, GNC_TREE_MODEL_OWNER_COL_ADDRESS_3,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Address 4"), GNC_OWNER_TREE_ADDRESS_4_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Address 4"), GNC_OWNER_TREE_ADDRESS_4_COL,
NULL, "USA", NULL, "USA",
GNC_TREE_MODEL_OWNER_COL_ADDRESS_4, GNC_TREE_MODEL_OWNER_COL_ADDRESS_4,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Phone"), GNC_OWNER_TREE_PHONE_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Phone"), GNC_OWNER_TREE_PHONE_COL,
NULL, "+1-617-542-5942", NULL, "+1-617-542-5942",
GNC_TREE_MODEL_OWNER_COL_PHONE, GNC_TREE_MODEL_OWNER_COL_PHONE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("Fax"), GNC_OWNER_TREE_FAX_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Fax"), GNC_OWNER_TREE_FAX_COL,
NULL, "+1-617-542-2652", NULL, "+1-617-542-2652",
GNC_TREE_MODEL_OWNER_COL_FAX, GNC_TREE_MODEL_OWNER_COL_FAX,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_text_column(view, _("E-mail"), GNC_OWNER_TREE_EMAIL_COL, gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("E-mail"), GNC_OWNER_TREE_EMAIL_COL,
NULL, "gnu@gnu.org", NULL, "gnu@gnu.org",
GNC_TREE_MODEL_OWNER_COL_EMAIL, GNC_TREE_MODEL_OWNER_COL_EMAIL,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_numeric_column(view, _("Balance"), GNC_OWNER_TREE_BALANCE_COL, gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Balance"), GNC_OWNER_TREE_BALANCE_COL,
SAMPLE_OWNER_VALUE, SAMPLE_OWNER_VALUE,
GNC_TREE_MODEL_OWNER_COL_BALANCE, GNC_TREE_MODEL_OWNER_COL_BALANCE,
GNC_TREE_MODEL_OWNER_COL_COLOR_BALANCE, GNC_TREE_MODEL_OWNER_COL_COLOR_BALANCE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_balance_value); sort_by_balance_value);
priv->balance_report_column view->balance_report_column
= gnc_tree_view_add_numeric_column(view, _("Balance"), GNC_OWNER_TREE_BALANCE_REPORT_COL, = gnc_tree_view_add_numeric_column(GNC_TREE_VIEW(view), _("Balance"), GNC_OWNER_TREE_BALANCE_REPORT_COL,
SAMPLE_OWNER_VALUE, SAMPLE_OWNER_VALUE,
GNC_TREE_MODEL_OWNER_COL_BALANCE_REPORT, GNC_TREE_MODEL_OWNER_COL_BALANCE_REPORT,
GNC_TREE_MODEL_OWNER_COL_COLOR_BALANCE, GNC_TREE_MODEL_OWNER_COL_COLOR_BALANCE,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_balance_value); sort_by_balance_value);
priv->notes_column view->notes_column
= gnc_tree_view_add_text_column(view, _("Notes"), GNC_OWNER_TREE_NOTES_COL, NULL, = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Notes"), GNC_OWNER_TREE_NOTES_COL, NULL,
"Sample owner notes.", "Sample owner notes.",
GNC_TREE_MODEL_OWNER_COL_NOTES, GNC_TREE_MODEL_OWNER_COL_NOTES,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
sort_by_string); sort_by_string);
gnc_tree_view_add_toggle_column (view, _("Active"), gnc_tree_view_add_toggle_column (GNC_TREE_VIEW(view), _("Active"),
C_("Column letter for 'Active'", "A"), C_("Column letter for 'Active'", "A"),
GNC_OWNER_TREE_ACTIVE_COL, GNC_OWNER_TREE_ACTIVE_COL,
GNC_TREE_MODEL_OWNER_COL_ACTIVE, GNC_TREE_MODEL_OWNER_COL_ACTIVE,
@ -480,7 +469,7 @@ gnc_tree_view_owner_new (GncOwnerType owner_type)
gtvo_update_column_names(view); gtvo_update_column_names(view);
/* By default only the first column is visible. */ /* By default only the first column is visible. */
gnc_tree_view_configure_columns(view); gnc_tree_view_configure_columns(GNC_TREE_VIEW(view));
gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (f_model), gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (f_model),
gnc_tree_view_owner_filter_helper, gnc_tree_view_owner_filter_helper,
view, view,
@ -595,7 +584,6 @@ gnc_tree_view_owner_filter_helper (GtkTreeModel *model,
{ {
GncOwner *owner; GncOwner *owner;
GncTreeViewOwner *view = data; GncTreeViewOwner *view = data;
GncTreeViewOwnerPrivate *priv;
g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (model), FALSE); g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (model), FALSE);
g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (iter != NULL, FALSE);
@ -603,9 +591,8 @@ gnc_tree_view_owner_filter_helper (GtkTreeModel *model,
owner = gnc_tree_model_owner_get_owner ( owner = gnc_tree_model_owner_get_owner (
GNC_TREE_MODEL_OWNER(model), iter); GNC_TREE_MODEL_OWNER(model), iter);
priv = GNC_TREE_VIEW_OWNER_GET_PRIVATE(view); if (view->filter_fn)
if (priv->filter_fn) return view->filter_fn(owner, view->filter_data);
return priv->filter_fn(owner, priv->filter_data);
else return TRUE; else return TRUE;
} }
@ -622,21 +609,18 @@ gnc_tree_view_owner_set_filter (GncTreeViewOwner *view,
gpointer data, gpointer data,
GSourceFunc destroy) GSourceFunc destroy)
{ {
GncTreeViewOwnerPrivate *priv;
ENTER("view %p, filter func %p, data %p, destroy %p", ENTER("view %p, filter func %p, data %p, destroy %p",
view, func, data, destroy); view, func, data, destroy);
g_return_if_fail(GNC_IS_TREE_VIEW_OWNER(view)); g_return_if_fail(GNC_IS_TREE_VIEW_OWNER(view));
priv = GNC_TREE_VIEW_OWNER_GET_PRIVATE(view); if (view->filter_destroy)
if (priv->filter_destroy)
{ {
priv->filter_destroy(priv->filter_data); view->filter_destroy(view->filter_data);
} }
priv->filter_destroy = destroy; view->filter_destroy = destroy;
priv->filter_data = data; view->filter_data = data;
priv->filter_fn = func; view->filter_fn = func;
gnc_tree_view_owner_refilter(view); gnc_tree_view_owner_refilter(view);
LEAVE(" "); LEAVE(" ");
@ -848,7 +832,7 @@ gnc_tree_view_owner_set_selected_owner (GncTreeViewOwner *view,
typedef struct typedef struct
{ {
GList* return_list; GList* return_list;
GncTreeViewOwnerPrivate* priv; GncTreeViewOwner* view;
} GncTreeViewSelectionInfo; } GncTreeViewSelectionInfo;
#if 0 /* Not Used */ #if 0 /* Not Used */
@ -877,7 +861,7 @@ get_selected_owners_helper (GtkTreeModel *s_model,
owner = iter.user_data; owner = iter.user_data;
/* Only selected if it passes the filter */ /* Only selected if it passes the filter */
if (gtvsi->priv->filter_fn == NULL || gtvsi->priv->filter_fn(owner, gtvsi->priv->filter_data)) if (gtvsi->view->filter_fn == NULL || gtvsi->view->filter_fn(owner, gtvsi->view->filter_data))
{ {
gtvsi->return_list = g_list_append(gtvsi->return_list, owner); gtvsi->return_list = g_list_append(gtvsi->return_list, owner);
} }
@ -904,19 +888,15 @@ gtvo_update_column_name (GtkTreeViewColumn *column,
static void static void
gtvo_update_column_names (GncTreeView *view) gtvo_update_column_names (GncTreeViewOwner *view)
{ {
GncTreeViewOwnerPrivate *priv; const gchar *mnemonic = gnc_commodity_get_mnemonic(gnc_default_report_currency());
const gchar *mnemonic;
priv = GNC_TREE_VIEW_OWNER_GET_PRIVATE(view); gtvo_update_column_name(view->balance_report_column,
mnemonic = gnc_commodity_get_mnemonic(gnc_default_report_currency());
gtvo_update_column_name(priv->balance_report_column,
/* Translators: %s is a currency mnemonic.*/ /* Translators: %s is a currency mnemonic.*/
_("Balance (%s)"), mnemonic); _("Balance (%s)"), mnemonic);
gnc_tree_view_set_show_column_menu(view, FALSE); gnc_tree_view_set_show_column_menu(GNC_TREE_VIEW(view), FALSE);
gnc_tree_view_set_show_column_menu(view, TRUE); gnc_tree_view_set_show_column_menu(GNC_TREE_VIEW(view), TRUE);
} }

View File

@ -45,11 +45,8 @@ G_BEGIN_DECLS
/* type macros */ /* type macros */
#define GNC_TYPE_TREE_VIEW_OWNER (gnc_tree_view_owner_get_type ()) #define GNC_TYPE_TREE_VIEW_OWNER (gnc_tree_view_owner_get_type ())
#define GNC_TREE_VIEW_OWNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW_OWNER, GncTreeViewOwner)) G_DECLARE_FINAL_TYPE (GncTreeViewOwner, gnc_tree_view_owner, GNC, TREE_VIEW_OWNER, GncTreeView)
#define GNC_TREE_VIEW_OWNER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW_OWNER, GncTreeViewOwnerClass))
#define GNC_IS_TREE_VIEW_OWNER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW_OWNER))
#define GNC_IS_TREE_VIEW_OWNER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW_OWNER))
#define GNC_TREE_VIEW_OWNER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW_OWNER, GncTreeViewOwnerClass))
#define GNC_TREE_VIEW_OWNER_NAME "GncTreeViewOwner" #define GNC_TREE_VIEW_OWNER_NAME "GncTreeViewOwner"
/* typedefs & structures */ /* typedefs & structures */
@ -62,17 +59,6 @@ struct OwnerViewInfo_s
}; };
typedef struct
{
GncTreeView gnc_tree_view;
int stamp;
} GncTreeViewOwner;
typedef struct
{
GncTreeViewClass gnc_tree_view;
} GncTreeViewOwnerClass;
typedef struct typedef struct
{ {
GtkWidget *dialog; GtkWidget *dialog;
@ -127,10 +113,6 @@ void gnc_tree_view_owner_restore(GncTreeViewOwner *view,
GncOwnerType owner_type); GncOwnerType owner_type);
/* Get the GType for an GncTreeViewOwner object. */
GType gnc_tree_view_owner_get_type (void);
/** @name Owner Tree View Constructor /** @name Owner Tree View Constructor
@{ */ @{ */

View File

@ -50,20 +50,18 @@ static QofLogModule log_module = GNC_MOD_GUI;
static void gnc_tree_view_price_finalize (GObject *object); static void gnc_tree_view_price_finalize (GObject *object);
static void gnc_tree_view_price_destroy (GtkWidget *widget); static void gnc_tree_view_price_destroy (GtkWidget *widget);
typedef struct GncTreeViewPricePrivate struct _GncTreeViewPrice
{ {
gpointer dummy; GncTreeView gnc_tree_view;
} GncTreeViewPricePrivate; int stamp;
};
#define GNC_TREE_VIEW_PRICE_GET_PRIVATE(o) \
((GncTreeViewPricePrivate*)gnc_tree_view_price_get_instance_private((GncTreeViewPrice*)o))
/************************************************************/ /************************************************************/
/* g_object required functions */ /* g_object required functions */
/************************************************************/ /************************************************************/
G_DEFINE_TYPE_WITH_PRIVATE(GncTreeViewPrice, gnc_tree_view_price, GNC_TYPE_TREE_VIEW) G_DEFINE_TYPE(GncTreeViewPrice, gnc_tree_view_price, GNC_TYPE_TREE_VIEW)
static void static void
gnc_tree_view_price_class_init (GncTreeViewPriceClass *klass) gnc_tree_view_price_class_init (GncTreeViewPriceClass *klass)

View File

@ -44,29 +44,7 @@ G_BEGIN_DECLS
/* type macros */ /* type macros */
#define GNC_TYPE_TREE_VIEW_PRICE (gnc_tree_view_price_get_type ()) #define GNC_TYPE_TREE_VIEW_PRICE (gnc_tree_view_price_get_type ())
#define GNC_TREE_VIEW_PRICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW_PRICE, GncTreeViewPrice)) G_DECLARE_FINAL_TYPE (GncTreeViewPrice, gnc_tree_view_price, GNC, TREE_VIEW_PRICE, GncTreeView)
#define GNC_TREE_VIEW_PRICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW_PRICE, GncTreeViewPriceClass))
#define GNC_IS_TREE_VIEW_PRICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW_PRICE))
#define GNC_IS_TREE_VIEW_PRICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW_PRICE))
#define GNC_TREE_VIEW_PRICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW_PRICE, GncTreeViewPriceClass))
/* typedefs & structures */
typedef struct
{
GncTreeView gnc_tree_view;
int stamp;
} GncTreeViewPrice;
typedef struct
{
GncTreeViewClass gnc_tree_view;
} GncTreeViewPriceClass;
/* Standard g_object type */
GType gnc_tree_view_price_get_type (void);
/** @name Price Tree View Constructors /** @name Price Tree View Constructors
@{ */ @{ */

View File

@ -50,16 +50,15 @@ static QofLogModule log_module = LOG_MOD;
static void gnc_tree_view_sx_list_dispose(GObject *object); static void gnc_tree_view_sx_list_dispose(GObject *object);
static void gnc_tree_view_sx_list_finalize(GObject *object); static void gnc_tree_view_sx_list_finalize(GObject *object);
typedef struct GncTreeViewSxListPrivate struct _GncTreeViewSxList
{ {
GncTreeView gnc_tree_view;
GtkTreeModel *tree_model; GtkTreeModel *tree_model;
gboolean disposed; gboolean disposed;
} GncTreeViewSxListPrivate; };
#define GNC_TREE_VIEW_SX_LIST_GET_PRIVATE(o) \ G_DEFINE_TYPE(GncTreeViewSxList, gnc_tree_view_sx_list, GNC_TYPE_TREE_VIEW)
((GncTreeViewSxListPrivate*)gnc_tree_view_sx_list_get_instance_private((GncTreeViewSxList*)o))
G_DEFINE_TYPE_WITH_PRIVATE(GncTreeViewSxList, gnc_tree_view_sx_list, GNC_TYPE_TREE_VIEW)
static void static void
gnc_tree_view_sx_list_class_init(GncTreeViewSxListClass *klass) gnc_tree_view_sx_list_class_init(GncTreeViewSxListClass *klass)
@ -83,20 +82,18 @@ static void
gnc_tree_view_sx_list_dispose(GObject *object) gnc_tree_view_sx_list_dispose(GObject *object)
{ {
GncTreeViewSxList *view; GncTreeViewSxList *view;
GncTreeViewSxListPrivate *priv;
gnc_leave_return_if_fail (object != NULL); gnc_leave_return_if_fail (object != NULL);
gnc_leave_return_if_fail (GNC_IS_TREE_VIEW_SX_LIST (object)); gnc_leave_return_if_fail (GNC_IS_TREE_VIEW_SX_LIST (object));
view = GNC_TREE_VIEW_SX_LIST (object); view = GNC_TREE_VIEW_SX_LIST (object);
priv = GNC_TREE_VIEW_SX_LIST_GET_PRIVATE(view);
if (priv->disposed) if (view->disposed)
return; return;
priv->disposed = TRUE; view->disposed = TRUE;
g_object_unref(G_OBJECT(priv->tree_model)); g_object_unref(G_OBJECT(view->tree_model));
priv->tree_model = NULL; view->tree_model = NULL;
G_OBJECT_CLASS (gnc_tree_view_sx_list_parent_class)->dispose (object); G_OBJECT_CLASS (gnc_tree_view_sx_list_parent_class)->dispose (object);
} }
@ -113,46 +110,40 @@ gnc_tree_view_sx_list_finalize(GObject *object)
GtkTreeView* GtkTreeView*
gnc_tree_view_sx_list_new(GncSxInstanceModel *sx_instances) gnc_tree_view_sx_list_new(GncSxInstanceModel *sx_instances)
{ {
GncTreeView *view; GncTreeViewSxList *view = (GncTreeViewSxList*)g_object_new(GNC_TYPE_TREE_VIEW_SX_LIST, NULL);
GtkTreeViewColumn *col;
GncTreeViewSxListPrivate *priv;
view = (GncTreeView*)g_object_new(GNC_TYPE_TREE_VIEW_SX_LIST, NULL);
g_object_set(view, "name", "gnc-id-sx-list-tree", NULL); g_object_set(view, "name", "gnc-id-sx-list-tree", NULL);
priv = GNC_TREE_VIEW_SX_LIST_GET_PRIVATE(view); view->tree_model = GTK_TREE_MODEL(gnc_sx_list_tree_model_adapter_new(sx_instances));
gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL(view->tree_model));
priv->tree_model = GTK_TREE_MODEL(gnc_sx_list_tree_model_adapter_new(sx_instances)); GtkTreeViewColumn *col = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Name"), "name", NULL,
gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL(priv->tree_model));
col = gnc_tree_view_add_text_column(view, _("Name"), "name", NULL,
"Semi-Monthly Paycheck", "Semi-Monthly Paycheck",
SXLTMA_COL_NAME, -1, NULL); SXLTMA_COL_NAME, -1, NULL);
g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
col = gnc_tree_view_add_toggle_column(view, _("Enabled"), col = gnc_tree_view_add_toggle_column(GNC_TREE_VIEW(view), _("Enabled"),
C_("Single-character short column-title form of 'Enabled'", "E"), C_("Single-character short column-title form of 'Enabled'", "E"),
"enabled", SXLTMA_COL_ENABLED, "enabled", SXLTMA_COL_ENABLED,
GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
NULL, NULL); NULL, NULL);
g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
col = gnc_tree_view_add_text_column(view, _("Frequency"), "frequency", NULL, col = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Frequency"), "frequency", NULL,
"Weekly (x3): -------", "Weekly (x3): -------",
SXLTMA_COL_FREQUENCY, -1, NULL); SXLTMA_COL_FREQUENCY, -1, NULL);
g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
col = gnc_tree_view_add_text_column(view, _("Last Occur"), "last-occur", NULL, col = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Last Occur"), "last-occur", NULL,
"2007-01-02", "2007-01-02",
SXLTMA_COL_LAST_OCCUR, -1, NULL); SXLTMA_COL_LAST_OCCUR, -1, NULL);
g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
col = gnc_tree_view_add_text_column(view, _("Next Occur"), "next-occur", NULL, col = gnc_tree_view_add_text_column(GNC_TREE_VIEW(view), _("Next Occur"), "next-occur", NULL,
"2007-01-02", "2007-01-02",
SXLTMA_COL_NEXT_OCCUR, -1, NULL); SXLTMA_COL_NEXT_OCCUR, -1, NULL);
g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
gnc_tree_view_configure_columns(view); gnc_tree_view_configure_columns(GNC_TREE_VIEW(view));
gtk_widget_show(GTK_WIDGET(view)); gtk_widget_show(GTK_WIDGET(view));
return GTK_TREE_VIEW(view); return GTK_TREE_VIEW(view);
@ -162,8 +153,7 @@ SchedXaction*
gnc_tree_view_sx_list_get_sx_from_path(GncTreeViewSxList *view, GtkTreePath *path) gnc_tree_view_sx_list_get_sx_from_path(GncTreeViewSxList *view, GtkTreePath *path)
{ {
GtkTreeIter iter; GtkTreeIter iter;
GncTreeViewSxListPrivate *priv = GNC_TREE_VIEW_SX_LIST_GET_PRIVATE(view); gtk_tree_model_get_iter(GTK_TREE_MODEL(view->tree_model), &iter, path);
gtk_tree_model_get_iter(GTK_TREE_MODEL(priv->tree_model), &iter, path);
return gnc_sx_list_tree_model_adapter_get_sx_instances( return gnc_sx_list_tree_model_adapter_get_sx_instances(
GNC_SX_LIST_TREE_MODEL_ADAPTER(priv->tree_model), &iter)->sx; GNC_SX_LIST_TREE_MODEL_ADAPTER(view->tree_model), &iter)->sx;
} }

View File

@ -38,23 +38,7 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define GNC_TYPE_TREE_VIEW_SX_LIST (gnc_tree_view_sx_list_get_type ()) #define GNC_TYPE_TREE_VIEW_SX_LIST (gnc_tree_view_sx_list_get_type ())
#define GNC_TREE_VIEW_SX_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW_SX_LIST, GncTreeViewSxList)) G_DECLARE_FINAL_TYPE (GncTreeViewSxList, gnc_tree_view_sx_list, GNC, TREE_VIEW_SX_LIST, GncTreeView)
#define GNC_TREE_VIEW_SX_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW_SX_LIST, GncTreeViewSxListClass))
#define GNC_IS_TREE_VIEW_SX_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW_SX_LIST))
#define GNC_IS_TREE_VIEW_SX_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW_SX_LIST))
#define GNC_TREE_VIEW_SX_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW_SX_LIST, GncTreeViewSxListClass))
typedef struct
{
GncTreeView gnc_tree_view;
} GncTreeViewSxList;
typedef struct
{
GncTreeViewClass gnc_tree_view;
} GncTreeViewSxListClass;
GType gnc_tree_view_sx_list_get_type(void);
GtkTreeView* gnc_tree_view_sx_list_new(GncSxInstanceModel *sx_instances); GtkTreeView* gnc_tree_view_sx_list_new(GncSxInstanceModel *sx_instances);

View File

@ -38,28 +38,16 @@ G_BEGIN_DECLS
/* type macros */ /* type macros */
#define GNC_TYPE_TREE_VIEW (gnc_tree_view_get_type ()) #define GNC_TYPE_TREE_VIEW (gnc_tree_view_get_type ())
#define GNC_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_TREE_VIEW, GncTreeView)) G_DECLARE_DERIVABLE_TYPE (GncTreeView, gnc_tree_view, GNC, TREE_VIEW, GtkTreeView)
#define GNC_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_TREE_VIEW, GncTreeViewClass))
#define GNC_IS_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_TREE_VIEW))
#define GNC_IS_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_TREE_VIEW))
#define GNC_TREE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_TREE_VIEW, GncTreeViewClass))
#define GNC_TREE_VIEW_NAME "GncTreeView" #define GNC_TREE_VIEW_NAME "GncTreeView"
/* typedefs & structures */ /* typedefs & structures */
typedef struct struct _GncTreeViewClass
{
GtkTreeView gtk_tree_view;
} GncTreeView;
typedef struct
{ {
GtkTreeViewClass gtk_tree_view; GtkTreeViewClass gtk_tree_view;
} GncTreeViewClass; };
/* Standard g_object type */
GType gnc_tree_view_get_type (void);
/* The columns managed by gnc-tree-view can use the following column /* The columns managed by gnc-tree-view can use the following column
attributes. Set them with: attributes. Set them with: