/** * gnc-account-sel.h -- combobox style account selection widget. * * Note that this widget will track changes in the account tree, and update * itself accordingly. If an account with the same name exists in the * freshly-retrieved account list, the widget will re-select that account. * * Copyright (C) 2002 Joshua Sled * Copyright (c) 2006 David Hampton * All rights reserved. **/ /* GnuCash is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * Gnucash is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact: * * Free Software Foundation Voice: +1-617-542-5942 * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 * Boston, MA 02110-1301, USA gnu@gnu.org */ #ifndef GNC_ACCOUNT_SEL_H #define GNC_ACCOUNT_SEL_H #include "Account.h" #define GNC_TYPE_ACCOUNT_SEL (gnc_account_sel_get_type()) #define GNC_ACCOUNT_SEL(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_ACCOUNT_SEL, GNCAccountSel) #define GNC_ACCOUNT_SEL_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, GNC_TYPE_ACCOUNT_SEL, GNCAccountSelClass) #define GNC_IS_ACCOUNT_SEL(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_ACCOUNT_SEL) typedef struct { GtkBox hbox; gboolean initDone; gboolean isModal; GtkListStore *store; GtkComboBox *combo; GList *acctTypeFilters; GList *acctCommodityFilters; gint eventHandlerId; /* The state of this pointer also serves as a flag about what state * the widget is in WRT the new-account-button ability. */ GtkWidget *newAccountButton; gint currentSelection; #if 0 /* completion not implemented. */ GCompletion *completion; #endif /* 0 - completion not implemented */ } GNCAccountSel; typedef struct { GtkBoxClass parent_class; /* Signals for notification/filtering of changes */ void (*account_sel_changed) (GNCAccountSel *gas); } GNCAccountSelClass; GType gnc_account_sel_get_type (void); GtkWidget* gnc_account_sel_new (void); /** * Sets the GAS to the given account. If the account doesn't exist in the * list, then it doesn't change the state of the GAS. If the account is * NULL, then the first list selection is made if set_default_acct is TRUE. **/ void gnc_account_sel_set_account (GNCAccountSel *gas, Account *acct, gboolean set_default_acct); /** * Returns the currently-selected Account. If, for some reason the selection * is in a bad state, NULL will be returned. **/ Account* gnc_account_sel_get_account (GNCAccountSel *gas); /** * The GNCAccountSel can be setup to filter the accounts displayed. * @param typeFilters A GList of GNCAccountType identifiers which are allowed. * @param commodityFilters A GList of gnc_commodity types which are allowed. * The list is copied, of course. **/ void gnc_account_sel_set_acct_filters (GNCAccountSel *gas, GList *typeFilters, GList *commodityFilters); /** * Conditional inclusion of a new-account button to the right of the * combobox. * @param state TRUE if the new-account button is desired, FALSE otherwise. **/ void gnc_account_sel_set_new_account_ability (GNCAccountSel *gas, gboolean state); /** * Conditional call of the new-account window in modal mode. * @param state TRUE if the new-account window should be modal, FALSE otherwise. **/ void gnc_account_sel_set_new_account_modal (GNCAccountSel *gas, gboolean state); gint gnc_account_sel_get_num_account (GNCAccountSel *gas); void gnc_account_sel_purge_account (GNCAccountSel *gas, Account *acc, gboolean recursive); void gnc_account_sel_set_hexpand (GNCAccountSel *gas, gboolean expand); #endif /* GNC_ACCOUNT_SEL_H */