Add gnc_tree_model_account_types_set_mask and bind mask to the filter

model instead using it as data of the filter function, because those can
only be set once per filter.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@14895 57a11ea4-9604-0410-9ed3-97b8803252fd
zzzoldfeatures/remove-group2
Andreas Köhler 20 years ago
parent e15f0d6a7b
commit e18efa1191

@ -35,6 +35,8 @@
static QofLogModule log_module = GNC_MOD_GUI;
static GtkTreeModel *account_types_tree_model = NULL;
#define TYPE_MASK "type-mask"
/* Functions for the type system */
static void
gnc_tree_model_account_types_class_init (GncTreeModelAccountTypesClass *klass);
@ -153,13 +155,15 @@ gnc_tree_model_account_types_master(void)
static gboolean
gnc_tree_model_account_types_is_valid (GtkTreeModel *model,
gnc_tree_model_account_types_is_valid (GtkTreeModel *model,
GtkTreeIter *iter, gpointer data)
{
GNCAccountType type;
guint32 valid_types = GPOINTER_TO_UINT (data);
GObject *f_model = G_OBJECT (data);
guint32 valid_types = GPOINTER_TO_UINT (g_object_get_data (
f_model, TYPE_MASK));
gtk_tree_model_get (model, iter,
gtk_tree_model_get (model, iter,
GNC_TREE_MODEL_ACCOUNT_TYPES_COL_TYPE, &type, -1);
return (valid_types & (1 << type)) ? TRUE : FALSE;
}
@ -176,15 +180,26 @@ gnc_tree_model_account_types_filter_using_mask (guint32 types)
{
GtkTreeModel *f_model;
f_model = gtk_tree_model_filter_new(gnc_tree_model_account_types_master(),
f_model = gtk_tree_model_filter_new (gnc_tree_model_account_types_master (),
NULL);
g_object_set_data (G_OBJECT (f_model), TYPE_MASK, GUINT_TO_POINTER (types));
gtk_tree_model_filter_set_visible_func (
GTK_TREE_MODEL_FILTER (f_model), gnc_tree_model_account_types_is_valid,
GUINT_TO_POINTER (types), NULL);
f_model, NULL);
return f_model;
}
void
gnc_tree_model_account_types_set_mask (GtkTreeModel *f_model,
guint32 types)
{
g_return_if_fail (f_model);
g_object_set_data (G_OBJECT (f_model), TYPE_MASK, GUINT_TO_POINTER (types));
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (f_model));
}
guint32
gnc_tree_model_account_types_get_selected (GncTreeModelAccountTypes * model)
{

@ -113,6 +113,10 @@ GtkTreeModel * gnc_tree_model_account_types_valid (void);
Caller is responsible for ref/unref. */
GtkTreeModel * gnc_tree_model_account_types_filter_using_mask (guint32 types);
/* Update the set of the visibible account types in 'model' to 'types'. */
void gnc_tree_model_account_types_set_mask (GtkTreeModel *f_model,
guint32 types);
/* Return the bitmask of the account type enums reflecting the state
of the tree selection. If your view allows the selection of
multiple account types, use must use this function to get the

Loading…
Cancel
Save