29 #include "gnc-component-manager.h" 37 #define ENTRYLEDGER_CLASS "entry-ledger-class" 41 gnc_entry_ledger_get_entries (GncEntryLedger *ledger)
51 gnc_entry_ledger_refresh_internal (GncEntryLedger *ledger, GList *entries)
53 if (!ledger || ledger->loading)
57 if (!ledger->full_refresh)
59 gnc_entry_ledger_load_xfer_cells (ledger);
64 if ((ledger->type == GNCENTRY_ORDER_VIEWER ||
65 ledger->type == GNCENTRY_INVOICE_VIEWER ||
66 ledger->type == GNCENTRY_BILL_VIEWER ||
67 ledger->type == GNCENTRY_EXPVOUCHER_VIEWER) && !entries)
70 ledger->loading = TRUE;
72 ledger->loading = FALSE;
76 gnc_entry_ledger_pref_changed (gpointer prefs, gchar *pref, gpointer user_data)
78 GncEntryLedger *ledger = user_data;
80 g_return_if_fail (ledger && pref);
82 if (g_str_has_suffix (pref, GNC_PREF_ACCOUNT_SEPARATOR))
84 gnc_entry_ledger_display_refresh (ledger);
88 g_warning (
"gnc_entry_ledger_pref_changed: Unknown preference %s", pref);
93 gnc_entry_ledger_set_watches (GncEntryLedger *ledger, GList *entries)
98 gnc_gui_component_clear_watches (ledger->component_id);
100 switch (ledger->type)
102 case GNCENTRY_ORDER_ENTRY:
103 case GNCENTRY_ORDER_VIEWER:
104 type = GNC_ORDER_MODULE_NAME;
107 case GNCENTRY_INVOICE_ENTRY:
108 case GNCENTRY_CUST_CREDIT_NOTE_ENTRY:
110 gnc_gui_component_watch_entity (ledger->component_id,
112 (gncInvoiceGetOwner (ledger->invoice)),
114 case GNCENTRY_INVOICE_VIEWER:
115 case GNCENTRY_CUST_CREDIT_NOTE_VIEWER:
116 case GNCENTRY_BILL_ENTRY:
117 case GNCENTRY_BILL_VIEWER:
118 case GNCENTRY_EXPVOUCHER_ENTRY:
119 case GNCENTRY_EXPVOUCHER_VIEWER:
120 case GNCENTRY_VEND_CREDIT_NOTE_ENTRY:
121 case GNCENTRY_VEND_CREDIT_NOTE_VIEWER:
122 case GNCENTRY_EMPL_CREDIT_NOTE_ENTRY:
123 case GNCENTRY_EMPL_CREDIT_NOTE_VIEWER:
124 type = GNC_INVOICE_MODULE_NAME;
128 g_warning (
"Invalid ledger type");
132 gnc_gui_component_watch_entity_type (ledger->component_id,
134 QOF_EVENT_MODIFY | QOF_EVENT_DESTROY);
137 gnc_gui_component_watch_entity_type (ledger->component_id,
139 QOF_EVENT_MODIFY | QOF_EVENT_DESTROY
140 | GNC_EVENT_ITEM_CHANGED);
143 gnc_gui_component_watch_entity_type (ledger->component_id,
144 GNC_TAXTABLE_MODULE_NAME,
145 QOF_EVENT_MODIFY | QOF_EVENT_DESTROY);
148 if (ledger->type == GNCENTRY_EXPVOUCHER_ENTRY)
154 gnc_gui_component_watch_entity (ledger->component_id,
159 for (node = entries; node; node = node->next)
161 GncEntry *entry = node->data;
162 gnc_gui_component_watch_entity (ledger->component_id,
163 gncEntryGetGUID (entry),
169 refresh_handler (GHashTable *changes, gpointer user_data)
171 GncEntryLedger *ledger = user_data;
173 gnc_entry_ledger_display_refresh (ledger);
177 gnc_entry_ledger_display_init (GncEntryLedger *ledger)
181 ledger->full_refresh = TRUE;
182 ledger->component_id = gnc_register_gui_component (ENTRYLEDGER_CLASS,
186 gnc_entry_ledger_pref_changed, ledger);
188 gnc_entry_ledger_display_refresh (ledger);
192 gnc_entry_ledger_display_fini (GncEntryLedger *ledger)
196 gnc_unregister_gui_component (ledger->component_id);
198 gnc_entry_ledger_pref_changed, ledger);
202 gnc_entry_ledger_display_refresh (GncEntryLedger *ledger)
206 if (!ledger || ledger->loading)
return;
208 entries = gnc_entry_ledger_get_entries (ledger);
210 gnc_entry_ledger_set_watches (ledger, entries);
212 gnc_entry_ledger_refresh_internal (ledger, entries);
const GncGUID * gncOwnerGetGUID(const GncOwner *owner)
Get the GncGUID of the immediate owner.
gulong gnc_prefs_register_cb(const char *group, const gchar *pref_name, gpointer func, gpointer user_data)
Register a callback that gets triggered when the given preference changes.
utility functions for the GnuCash UI
const gchar * QofIdType
QofIdType declaration.
Additional event handling code.
Generic api to store and retrieve preferences.
const GncOwner * gncOwnerGetEndOwner(const GncOwner *owner)
Get the "parent" Owner or GncGUID thereof.
GList * qof_query_run(QofQuery *query)
Perform the query, return the results.
void gnc_entry_ledger_load(GncEntryLedger *ledger, GList *entry_list)
Copy GncEntry information from the list to the rows of the Ledger.
Business Entry Interface.
GncEmployee * gncOwnerGetEmployee(const GncOwner *owner)
If the given owner is of type GNC_OWNER_EMPLOYEE, returns the pointer to the employee object...
#define gncEmployeeGetGUID(E)
deprecated routines
void gnc_prefs_remove_cb_by_func(const gchar *group, const gchar *pref_name, gpointer func, gpointer user_data)
Remove a function that was registered for a callback when the given preference changed.