GnuCash 2.4.99
Data Structures | Files | Defines | Typedefs | Enumerations | Functions
Budgets

Data Structures

struct  GncPluginPageBudget
struct  GncPluginPageBudgetClass

Files

file  gnc-budget.h
 

GnuCash Budgets.


file  gnc-plugin-page-budget.h
file  gnc-tree-model-budget.h
 

provides some utilities for working with the list of budgets in a book.


Defines

#define GNC_TYPE_BUDGET   (gnc_budget_get_type ())
#define GNC_BUDGET(o)   (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_BUDGET, GncBudget))
#define GNC_BUDGET_CLASS(k)   (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_BUDGET, GncBudgetClass))
#define GNC_IS_BUDGET(o)   (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_BUDGET))
#define GNC_IS_BUDGET_CLASS(k)   (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_BUDGET))
#define GNC_BUDGET_GET_CLASS(o)   (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_BUDGET, GncBudgetClass))
#define GNC_BUDGET_MAX_NUM_PERIODS_DIGITS   3
#define gnc_budget_return_guid(X)   (X ? *(qof_entity_get_guid(QOF_INSTANCE(X))) : *(guid_null()))
#define gnc_budget_lookup_direct(g, b)   gnc_budget_lookup(&(g),(b))
#define GNC_TYPE_PLUGIN_PAGE_BUDGET   (gnc_plugin_page_budget_get_type ())
#define GNC_PLUGIN_PAGE_BUDGET(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_PLUGIN_PAGE_BUDGET, GncPluginPageBudget))
#define GNC_PLUGIN_PAGE_BUDGET_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_PLUGIN_PAGE_BUDGET, GncPluginPageBudgetClass))
#define GNC_IS_PLUGIN_PAGE_BUDGET(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_PLUGIN_PAGE_BUDGET))
#define GNC_IS_PLUGIN_PAGE_BUDGET_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_PLUGIN_PAGE_BUDGET))
#define GNC_PLUGIN_PAGE_BUDGET_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_PLUGIN_PAGE_BUDGET, GncPluginPageBudgetClass))
#define GNC_PLUGIN_PAGE_BUDGET_NAME   "GncPluginPageBudget"

Typedefs

typedef struct budget_s GncBudget
typedef struct _GncBudgetClass GncBudgetClass

Enumerations

enum  { BUDGET_GUID_COLUMN, BUDGET_NAME_COLUMN, BUDGET_DESCRIPTION_COLUMN, BUDGET_LIST_NUM_COLS }

Functions

GType gnc_budget_get_type (void)
gboolean gnc_budget_register (void)
GncBudgetgnc_budget_new (QofBook *book)
void gnc_budget_destroy (GncBudget *budget)
void gnc_budget_begin_edit (GncBudget *bgt)
void gnc_budget_commit_edit (GncBudget *bgt)
GncBudgetgnc_budget_clone (const GncBudget *budget)
const GncGUIDgnc_budget_get_guid (const GncBudget *budget)
void gnc_budget_set_name (GncBudget *budget, const gchar *name)
const gchar * gnc_budget_get_name (const GncBudget *budget)
void gnc_budget_set_description (GncBudget *budget, const gchar *description)
const gchar * gnc_budget_get_description (const GncBudget *budget)
void gnc_budget_set_num_periods (GncBudget *budget, guint num_periods)
guint gnc_budget_get_num_periods (const GncBudget *budget)
void gnc_budget_set_recurrence (GncBudget *budget, const Recurrence *r)
const Recurrencegnc_budget_get_recurrence (const GncBudget *budget)
Timespec gnc_budget_get_period_start_date (const GncBudget *budget, guint period_num)
Timespec gnc_budget_get_period_end_date (const GncBudget *budget, guint period_num)
void gnc_budget_set_account_period_value (GncBudget *budget, const Account *account, guint period_num, gnc_numeric val)
void gnc_budget_unset_account_period_value (GncBudget *budget, const Account *account, guint period_num)
gboolean gnc_budget_is_account_period_value_set (const GncBudget *budget, const Account *account, guint period_num)
gnc_numeric gnc_budget_get_account_period_value (const GncBudget *budget, const Account *account, guint period_num)
gnc_numeric gnc_budget_get_account_period_actual_value (const GncBudget *budget, Account *account, guint period_num)
GncBudgetgnc_budget_get_default (QofBook *book)
GncBudgetgnc_budget_lookup (const GncGUID *guid, const QofBook *book)
GType gnc_plugin_page_budget_get_type (void)
GncPluginPagegnc_plugin_page_budget_new (GncBudget *budget)
void gnc_budget_gui_delete_budget (GncBudget *budget)
GtkTreeModel * gnc_tree_model_budget_new (QofBook *book)
void gnc_tree_view_budget_set_model (GtkTreeView *tv, GtkTreeModel *tm)
GncBudgetgnc_tree_model_budget_get_budget (GtkTreeModel *tm, GtkTreeIter *iter)
gboolean gnc_tree_model_budget_get_iter_for_budget (GtkTreeModel *tm, GtkTreeIter *iter, GncBudget *bgt)

Typedef Documentation

typedef struct budget_s GncBudget

The budget data.

Definition at line 70 of file gnc-budget.h.


Enumeration Type Documentation

anonymous enum
Todo:
This file is poorly named, since it covers both model and view.

Definition at line 38 of file gnc-tree-model-budget.h.

{
    BUDGET_GUID_COLUMN,
    BUDGET_NAME_COLUMN,
    BUDGET_DESCRIPTION_COLUMN,
    BUDGET_LIST_NUM_COLS
};

Function Documentation

GncBudget* gnc_budget_clone ( const GncBudget budget)

Clones a budget creating a copy

Definition at line 335 of file gnc-budget.c.

{
    GncBudget* new_b;
    Account* root;
    CloneBudgetData_t clone_data;

    g_return_val_if_fail(old_b != NULL, NULL);

    ENTER(" ");

    new_b = gnc_budget_new(qof_instance_get_book(old_b));
    gnc_budget_begin_edit(new_b);
    gnc_budget_set_name(new_b, gnc_budget_get_name(old_b));
    gnc_budget_set_description(new_b, gnc_budget_get_description(old_b));
    gnc_budget_set_recurrence(new_b, gnc_budget_get_recurrence(old_b));
    gnc_budget_set_num_periods(new_b, gnc_budget_get_num_periods(old_b));

    root = gnc_book_get_root_account(qof_instance_get_book(old_b));
    clone_data.old_b = old_b;
    clone_data.new_b = new_b;
    clone_data.num_periods = gnc_budget_get_num_periods(new_b);
    gnc_account_foreach_descendant(root, clone_budget_values_cb, &clone_data);

    gnc_budget_commit_edit(new_b);

    LEAVE(" ");

    return new_b;
}
void gnc_budget_destroy ( GncBudget budget)

Deletes the given budget object.

Definition at line 301 of file gnc-budget.c.

{
    g_return_if_fail(GNC_IS_BUDGET(budget));
    gnc_budget_begin_edit(budget);
    qof_instance_set_dirty(&budget->inst);
    qof_instance_set_destroying(budget, TRUE);
    gnc_budget_commit_edit(budget);
}
Timespec gnc_budget_get_period_end_date ( const GncBudget budget,
guint  period_num 
)

Get the ending date of the Budget period

Definition at line 580 of file gnc-budget.c.

{
    Timespec ts;
    timespecFromTime_t(
        &ts,  recurrenceGetPeriodTime(&GET_PRIVATE(budget)->recurrence, period_num, TRUE));
    return ts;
}
Timespec gnc_budget_get_period_start_date ( const GncBudget budget,
guint  period_num 
)

Get the starting date of the Budget period

Definition at line 571 of file gnc-budget.c.

{
    Timespec ts;
    timespecFromTime_t(
        &ts,  recurrenceGetPeriodTime(&GET_PRIVATE(budget)->recurrence, period_num, FALSE));
    return ts;
}
GncBudget* gnc_budget_new ( QofBook book)

Creates and initializes a Budget.

Definition at line 284 of file gnc-budget.c.

{
    GncBudget* budget;

    g_return_val_if_fail(book, NULL);

    ENTER(" ");
    budget = g_object_new(GNC_TYPE_BUDGET, NULL);
    qof_instance_init_data (&budget->inst, GNC_ID_BUDGET, book);

    qof_event_gen( &budget->inst, QOF_EVENT_CREATE , NULL);

    LEAVE(" ");
    return budget;
}
void gnc_budget_set_description ( GncBudget budget,
const gchar *  description 
)

Set/Get the description of the Budget

Definition at line 391 of file gnc-budget.c.

{
    BudgetPrivate* priv;

    g_return_if_fail(GNC_IS_BUDGET(budget));
    g_return_if_fail(description);

    priv = GET_PRIVATE(budget);
    if ( description == priv->description ) return;
    gnc_budget_begin_edit(budget);
    CACHE_REPLACE(priv->description, description);
    qof_instance_set_dirty(&budget->inst);
    gnc_budget_commit_edit(budget);

    qof_event_gen( &budget->inst, QOF_EVENT_MODIFY, NULL);
}
void gnc_budget_set_name ( GncBudget budget,
const gchar *  name 
)

Set/Get the name of the Budget

Definition at line 366 of file gnc-budget.c.

{
    BudgetPrivate* priv;

    g_return_if_fail(GNC_IS_BUDGET(budget) && name);

    priv = GET_PRIVATE(budget);
    if ( name == priv->name ) return;

    gnc_budget_begin_edit(budget);
    CACHE_REPLACE(priv->name, name);
    qof_instance_set_dirty(&budget->inst);
    gnc_budget_commit_edit(budget);

    qof_event_gen( &budget->inst, QOF_EVENT_MODIFY, NULL);
}
void gnc_budget_set_num_periods ( GncBudget budget,
guint  num_periods 
)

Set/Get the number of periods in the Budget

Definition at line 447 of file gnc-budget.c.

{
    BudgetPrivate* priv;

    g_return_if_fail(GNC_IS_BUDGET(budget));

    priv = GET_PRIVATE(budget);
    if ( priv->num_periods == num_periods ) return;

    gnc_budget_begin_edit(budget);
    priv->num_periods = num_periods;
    qof_instance_set_dirty(&budget->inst);
    gnc_budget_commit_edit(budget);

    qof_event_gen( &budget->inst, QOF_EVENT_MODIFY, NULL);
}
GncPluginPage* gnc_plugin_page_budget_new ( GncBudget budget)

Create a new "budget" plugin page.

Returns:
The newly created plugin page.

Definition at line 248 of file gnc-plugin-page-budget.c.

{
    GncPluginPageBudget *plugin_page;
    GncPluginPageBudgetPrivate *priv;
    gchar* label;
    const GList *item;

    g_return_val_if_fail(GNC_IS_BUDGET(budget), NULL);
    ENTER(" ");

    /* Is there an existing page? */
    item = gnc_gobject_tracking_get_list(GNC_PLUGIN_PAGE_BUDGET_NAME);
    for ( ; item; item = g_list_next(item))
    {
        plugin_page = (GncPluginPageBudget *)item->data;
        priv = GNC_PLUGIN_PAGE_BUDGET_GET_PRIVATE(plugin_page);
        if (priv->budget == budget)
        {
            LEAVE("existing budget page %p", plugin_page);
            return GNC_PLUGIN_PAGE(plugin_page);
        }
    }

    plugin_page = g_object_new(GNC_TYPE_PLUGIN_PAGE_BUDGET, NULL);

    priv = GNC_PLUGIN_PAGE_BUDGET_GET_PRIVATE(plugin_page);
    priv->budget = budget;
    priv->delete_budget = FALSE;
    label = g_strdup_printf("%s: %s", _("Budget"), gnc_budget_get_name(budget));
    g_object_set(G_OBJECT(plugin_page), "page-name", label, NULL);
    g_free(label);
    priv->key = *gnc_budget_get_guid(budget);
    LEAVE("new budget page %p", plugin_page);
    return GNC_PLUGIN_PAGE(plugin_page);
}
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines