gboolean gncOwnerGetOwnerFromLot (GNCLot *lot, GncOwner *owner) { GncGUID *guid = NULL; QofBook *book; GncOwnerType type = GNC_OWNER_NONE; if (!lot || !owner) return FALSE; book = gnc_lot_get_book (lot); qof_instance_get (QOF_INSTANCE (lot), "owner-type", &type, "owner-guid", &guid, NULL); switch (type) { case GNC_OWNER_CUSTOMER: gncOwnerInitCustomer (owner, gncCustomerLookup (book, guid)); break; case GNC_OWNER_VENDOR: gncOwnerInitVendor (owner, gncVendorLookup (book, guid)); break; case GNC_OWNER_EMPLOYEE: gncOwnerInitEmployee (owner, gncEmployeeLookup (book, guid)); break; case GNC_OWNER_JOB: gncOwnerInitJob (owner, gncJobLookup (book, guid)); break; default: return FALSE; } return (owner->owner.undefined != NULL); }
GList* gnc_sx_get_sxes_referencing_account(QofBook *book, Account *acct) { GList *rtn = NULL; const GncGUID *acct_guid = qof_entity_get_guid(QOF_INSTANCE(acct)); GList *sx_list; SchedXactions *sxactions = gnc_book_get_schedxactions(book); g_return_val_if_fail( sxactions != NULL, rtn); for (sx_list = sxactions->sx_list; sx_list != NULL; sx_list = sx_list->next) { SchedXaction *sx = (SchedXaction*)sx_list->data; GList *splits = xaccSchedXactionGetSplits(sx); for (; splits != NULL; splits = splits->next) { Split *s = (Split*)splits->data; GncGUID *guid = NULL; qof_instance_get (QOF_INSTANCE (s), "sx-account", &guid, NULL); if (guid_equal(acct_guid, guid)) { rtn = g_list_append(rtn, sx); } } } return rtn; }
gint qof_book_get_num_days_autoreadonly (const QofBook *book) { g_assert(book); double tmp; qof_instance_get (QOF_INSTANCE (book), "autoreadonly-days", &tmp, NULL); return (gint) tmp; }
/** Returns pointer to default gain/loss policy for book, if one exists in the * KVP, or NULL; does not validate contents nor determine if there is a valid * book-currency, both of which are required, for the 'book-currency' * currency accounting method to apply. Use instead * 'gnc_book_get_default_gains_policy' which does these validations. */ const gchar * qof_book_get_default_gains_policy (QofBook *book) { const gchar *opt = NULL; qof_instance_get (QOF_INSTANCE (book), "default-gains-policy", &opt, NULL); return opt; }
/** Returns pointer to book-currency name for book, if one exists in the * KVP, or NULL; does not validate contents nor determine if there is a valid * default gain/loss policy, both of which are required, for the * 'book-currency' currency accounting method to apply. Use instead * 'gnc_book_get_book_currency_name' which does these validations. */ const gchar * qof_book_get_book_currency_name (QofBook *book) { const gchar *opt = NULL; qof_instance_get (QOF_INSTANCE (book), "book-currency", &opt, NULL); return opt; }
/** Returns pointer to default gain/loss account GUID for book, if one exists in * the KVP, or NULL; does not validate contents nor determine if there is a * valid book-currency, both of which are required, for the 'book-currency' * currency accounting method to apply. Use instead * 'gnc_book_get_default_gain_loss_acct' which does these validations. */ const GncGUID * qof_book_get_default_gain_loss_acct_guid (QofBook *book) { GncGUID *guid = NULL; qof_instance_get (QOF_INSTANCE (book), "default-gain-loss-account-guid", &guid, NULL); return guid; }
/* Determine whether this book uses trading accounts */ gboolean qof_book_use_trading_accounts (const QofBook *book) { const char *opt = NULL; qof_instance_get (QOF_INSTANCE (book), "trading-accts", &opt, NULL); if (opt && opt[0] == 't' && opt[1] == 0) return TRUE; return FALSE; }
/* Returns TRUE if this book uses split action field as the 'Num' field, FALSE * if it uses transaction number field */ gboolean qof_book_use_split_action_for_num_field (const QofBook *book) { const char *opt = NULL; qof_instance_get (QOF_INSTANCE (book), "split-action-num-field", &opt, NULL); if (opt && opt[0] == 't' && opt[1] == 0) return TRUE; return FALSE; }
const char * gnc_tree_util_split_reg_template_get_fcred_entry (Split *split) { gchar *formula = NULL; g_return_val_if_fail (split != NULL, NULL); qof_instance_get (QOF_INSTANCE (split), "sx-credit-formula", &formula, NULL); return formula; }
static GDate * get_fy_end(void) { QofBook *book; KvpFrame *book_frame; GDate *date = NULL; book = gnc_get_current_book(); qof_instance_get (QOF_INSTANCE (book), "fy-end", &date, NULL); return date; }
static void gnc_payment_dialog_owner_changed (PaymentWindow *pw) { Account *last_acct = NULL; GncGUID *guid = NULL; GncOwner *owner = &pw->owner; /* If the owner changed, the initial invoice is no longer valid */ pw->invoice = NULL; /* Now handle the account tree */ qof_instance_get (qofOwnerGetOwner (owner), "payment-last-account", &guid, NULL); /* refresh the post and acc available accounts, but cleanup first */ if (pw->acct_types) { g_list_free(pw->acct_types); pw->acct_types = NULL; } if (pw->acct_commodities) { g_list_free(pw->acct_commodities); pw->acct_commodities = NULL; } pw->acct_types = gncOwnerGetAccountTypesList(owner); if (gncOwnerIsValid(owner)) pw->acct_commodities = gncOwnerGetCommoditiesList (owner); pw->post_acct = gnc_account_select_combo_fill (pw->post_combo, pw->book, pw->acct_types, pw->acct_commodities); /* Update list of documents and pre-payments */ gnc_payment_window_fill_docs_list (pw); if (guid) { last_acct = xaccAccountLookup(guid, pw->book); } /* Set the last-used transfer account, but only if we didn't * create this dialog from a pre-existing transaction. */ if (last_acct && !gnc_payment_dialog_has_pre_existing_txn(pw)) { gnc_tree_view_account_set_selected_account(GNC_TREE_VIEW_ACCOUNT(pw->acct_tree), last_acct); } }
/* Return the string entry for transfer column when template */ const char * gnc_tree_util_split_reg_template_get_transfer_entry (Split *split) { static char *name = NULL; Account *account; GncGUID *guid = NULL; /* Callers either g_strdup the return or use it as a temp for comparison, so we keep our static ref and free it on every call. */ g_free (name); if (!split) return NULL; qof_instance_get (QOF_INSTANCE (split), "sx-account", &guid, NULL); account = xaccAccountLookup (guid, gnc_get_current_book ()); name = account ? gnc_get_account_name_for_register (account) : NULL; return name; }
/** Create the preferences dialog. This function first reads the * dialog-preferences.glade file to obtain the content and then * the dialog is created with a set of common preferences. It then * runs the list of add-ins, calling a helper function to add each full/partial * page to this dialog, Finally it builds the "interesting widgets" * table that is used for connecting the widgets up to callback functions. * * @internal * * @return A pointer to the newly created dialog. */ static GtkWidget * gnc_preferences_dialog_create(void) { GtkBuilder *builder; GtkWidget *dialog, *notebook, *label, *image; GtkWidget *box, *date, *period, *currency; GHashTable *prefs_table; GDate* gdate = NULL; gchar buf[128]; GtkListStore *store; GtkTreePath *path; GtkTreeIter iter; gnc_commodity *locale_currency; const gchar *currency_name; QofBook *book; KvpFrame *book_frame; gint64 month, day; GDate fy_end; gboolean date_is_valid = FALSE; ENTER(""); DEBUG("Opening dialog-preferences.glade:"); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "auto_decimal_places_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "autosave_interval_minutes_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "save_on_close_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "date_backmonth_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "max_transactions_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "key_length_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "new_search_limit_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "retain_days_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "tab_width_adj"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "date_formats"); gnc_builder_add_from_file (builder, "dialog-preferences.glade", "GnuCash Preferences"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "GnuCash Preferences")); #ifndef REGISTER2_ENABLED /* Hide preferences that are related to register2 */ box = GTK_WIDGET (gtk_builder_get_object (builder, "label14")); gtk_widget_hide (box); box = GTK_WIDGET (gtk_builder_get_object (builder, "pref/general.register/key-length")); gtk_widget_hide (box); box = GTK_WIDGET (gtk_builder_get_object (builder, "pref/general.register/show-extra-dates")); gtk_widget_hide (box); box = GTK_WIDGET (gtk_builder_get_object (builder, "pref/general.register/show-calendar-buttons")); gtk_widget_hide (box); box = GTK_WIDGET (gtk_builder_get_object (builder, "pref/general.register/selection-to-blank-on-expand")); gtk_widget_hide (box); box = GTK_WIDGET (gtk_builder_get_object (builder, "pref/general.register/show-extra-dates-on-selection")); gtk_widget_hide (box); #endif label = GTK_WIDGET(gtk_builder_get_object (builder, "sample_account")); g_object_set_data(G_OBJECT(dialog), "sample_account", label); image = GTK_WIDGET(gtk_builder_get_object (builder, "separator_error")); g_object_set_data(G_OBJECT(dialog), "separator_error", image); DEBUG("autoconnect"); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, dialog); DEBUG("done"); notebook = GTK_WIDGET(gtk_builder_get_object (builder, "notebook1")); prefs_table = g_hash_table_new(g_str_hash, g_str_equal); g_object_set_data(G_OBJECT(dialog), NOTEBOOK, notebook); g_object_set_data_full(G_OBJECT(dialog), PREFS_WIDGET_HASH, prefs_table, (GDestroyNotify)g_hash_table_destroy); book = gnc_get_current_book(); g_date_clear (&fy_end, 1); qof_instance_get (QOF_INSTANCE (book), "fy-end", &fy_end, NULL); box = GTK_WIDGET(gtk_builder_get_object (builder, "pref/" GNC_PREFS_GROUP_ACCT_SUMMARY "/" GNC_PREF_START_PERIOD)); period = gnc_period_select_new(TRUE); gtk_widget_show (period); gtk_box_pack_start (GTK_BOX (box), period, TRUE, TRUE, 0); if (date_is_valid) gnc_period_select_set_fy_end(GNC_PERIOD_SELECT (period), &fy_end); box = GTK_WIDGET(gtk_builder_get_object (builder, "pref/" GNC_PREFS_GROUP_ACCT_SUMMARY "/" GNC_PREF_END_PERIOD)); period = gnc_period_select_new(FALSE); gtk_widget_show (period); gtk_box_pack_start (GTK_BOX (box), period, TRUE, TRUE, 0); if (date_is_valid) gnc_period_select_set_fy_end(GNC_PERIOD_SELECT (period), &fy_end); box = GTK_WIDGET(gtk_builder_get_object (builder, "pref/" GNC_PREFS_GROUP_ACCT_SUMMARY "/" GNC_PREF_START_DATE)); date = gnc_date_edit_new(gnc_time (NULL), FALSE, FALSE); gtk_widget_show (date); gtk_box_pack_start (GTK_BOX (box), date, TRUE, TRUE, 0); box = GTK_WIDGET(gtk_builder_get_object (builder, "pref/" GNC_PREFS_GROUP_ACCT_SUMMARY "/" GNC_PREF_END_DATE)); date = gnc_date_edit_new(gnc_time (NULL), FALSE, FALSE); gtk_widget_show (date); gtk_box_pack_start (GTK_BOX (box), date, TRUE, TRUE, 0); box = GTK_WIDGET(gtk_builder_get_object (builder, "pref/" GNC_PREFS_GROUP_GENERAL "/" GNC_PREF_CURRENCY_OTHER)); currency = gnc_currency_edit_new(); gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(currency), gnc_default_currency()); gtk_widget_show (currency); gtk_box_pack_start(GTK_BOX (box), currency, TRUE, TRUE, 0); box = GTK_WIDGET(gtk_builder_get_object (builder, "pref/" GNC_PREFS_GROUP_GENERAL_REPORT "/" GNC_PREF_CURRENCY_OTHER)); currency = gnc_currency_edit_new(); gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(currency), gnc_default_currency()); gtk_widget_show (currency); gtk_box_pack_start(GTK_BOX (box), currency, TRUE, TRUE, 0); /* Add to the list of interesting widgets */ gnc_prefs_build_widget_table(builder, dialog); g_slist_foreach(add_ins, gnc_preferences_build_page, dialog); /* Sort tabs alphabetically */ gnc_prefs_sort_pages(GTK_NOTEBOOK(notebook)); gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), 0); DEBUG("We have the following interesting widgets:"); g_hash_table_foreach(prefs_table, (GHFunc)gnc_prefs_connect_one, dialog); DEBUG("Done with interesting widgets."); /* Other stuff */ gdate = g_date_new_dmy(31, G_DATE_JULY, 2013); g_date_strftime(buf, sizeof(buf), "%x", gdate); store = GTK_LIST_STORE(gtk_builder_get_object (builder, "date_formats")); path = gtk_tree_path_new_from_indices (QOF_DATE_FORMAT_LOCALE, -1); if (gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path)) gtk_list_store_set (store, &iter, 1, buf, -1); g_date_free(gdate); locale_currency = gnc_locale_default_currency (); currency_name = gnc_commodity_get_printname(locale_currency); label = GTK_WIDGET(gtk_builder_get_object (builder, "locale_currency")); gtk_label_set_label(GTK_LABEL(label), currency_name); label = GTK_WIDGET(gtk_builder_get_object (builder, "locale_currency2")); gtk_label_set_label(GTK_LABEL(label), currency_name); g_object_unref(G_OBJECT(builder)); LEAVE("dialog %p", dialog); return dialog; }