GnuCash  4.10-100-g8b5b6256d+
gnc-ui-util.h
Go to the documentation of this file.
1 /********************************************************************\
2  * gnc-ui-util.h -- utility functions for the GnuCash UI *
3  * Copyright (C) 2000 Dave Peticolas <dave@krondo.com> *
4  * *
5  * This program is free software; you can redistribute it and/or *
6  * modify it under the terms of the GNU General Public License as *
7  * published by the Free Software Foundation; either version 2 of *
8  * the License, or (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License*
16  * along with this program; if not, contact: *
17  * *
18  * Free Software Foundation Voice: +1-617-542-5942 *
19  * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
20  * Boston, MA 02110-1301, USA gnu@gnu.org *
21 \********************************************************************/
22 
32 #ifndef GNC_UI_UTIL_H
33 #define GNC_UI_UTIL_H
34 
35 #include <glib.h>
36 #include <locale.h>
37 
38 #include "Account.h"
39 #include "gncOwner.h"
40 #include "qof.h"
41 
42 
43 typedef QofSession * (*QofSessionCB) (void);
44 
45 
46 gchar *gnc_normalize_account_separator (const gchar* separator);
47 gboolean gnc_reverse_balance(const Account *account);
48 
49 /* Backward compatibility *******************************************
50  * Return book's UNREVERSED_BUDGET feature check. */
51 gboolean gnc_using_unreversed_budgets (QofBook* book);
52 
53 /* Backward compatibility *******************************************
54  * Compare book's UNREVERSED_BUDGET with unreverse_check. If they
55  * match, return account reversal according to global pref. If they
56  * don't match, return FALSE. */
57 gboolean gnc_reverse_budget_balance (const Account *account, gboolean unreversed);
58 
59 /* Backward compatibility *******************************************
60  * Return that book's support opening balance accounts by equity type slot */
61 void gnc_set_use_equity_type_opening_balance_account (QofBook* book);
62 gboolean gnc_using_equity_type_opening_balance_account (QofBook* book);
63 
64 /* Default directory sections ***************************************/
65 #define GNC_PREFS_GROUP_OPEN_SAVE "dialogs.open-save"
66 #define GNC_PREFS_GROUP_EXPORT "dialogs.export-accounts"
67 #define GNC_PREFS_GROUP_REPORT "dialogs.report"
68 #define GNC_PREF_AUTO_DECIMAL_POINT "auto-decimal-point"
69 #define GNC_PREF_AUTO_DECIMAL_PLACES "auto-decimal-places"
70 
71 /* Default directories **********************************************/
72 
73 gchar *gnc_get_default_directory (const gchar *section);
74 void gnc_set_default_directory (const gchar *section,
75  const gchar *directory);
76 
77 /* Engine enhancements & i18n ***************************************/
78 QofBook * gnc_get_current_book (void);
79 
80 /* If there is no current session, there is no book and we must be dealing
81  * with a new book. When gnucash is started with --nofile, there is
82  * initially no session (and no book), but by the time we check, one
83  * could have been created (for example, if an empty account tree tab is
84  * opened, a session is created which creates a new, but empty, book).
85  * A session is created and a book is loaded from a backend when gnucash is
86  * started with a file, but selecting 'new file' keeps a session open. So we
87  * need to check as well for a book with no accounts (root with no children). */
88 gboolean gnc_is_new_book (void);
89 
90 void gnc_set_current_book_tax_name_type (gboolean name_changed,
91  const gchar *tax_name,
92  gboolean type_changed,
93  const gchar *tax_type);
94 const gchar * gnc_get_current_book_tax_name (void);
95 const gchar * gnc_get_current_book_tax_type (void);
99 void gnc_book_option_num_field_source_change_cb (gboolean num_action);
100 
104 void gnc_book_option_book_currency_selected_cb (gboolean use_book_currency);
105 
108 gboolean gnc_book_use_book_currency (QofBook *book);
109 
114 const gchar * gnc_book_get_book_currency_name (QofBook *book);
115 
120 gnc_commodity * gnc_book_get_book_currency (QofBook *book);
121 
126 const gchar * gnc_book_get_default_gains_policy (QofBook *book);
127 
133 
134 Account * gnc_get_current_root_account (void);
135 gnc_commodity_table * gnc_get_current_commodities (void);
136 
144 gchar *gnc_get_account_name_for_register(const Account *account);
145 
157 Account *gnc_account_lookup_for_register(const Account *base_account, const
158  gchar *name);
159 
169  gboolean show_leaf_accounts);
170 
171 /*
172  * This is a wrapper routine around an xaccGetBalanceInCurrency
173  * function that handles additional needs of the gui.
174  *
175  * @param fn The underlying function in Account.c to call to retrieve
176  * a specific balance from the account.
177  * @param account The account to retrieve data about.
178  * @param recurse Include all sub-accounts of this account.
179  * @param negative An indication of whether or not the returned value
180  * is negative. This can be used by the caller to
181  * easily decode whether or not to color the output.
182  * @param commodity The commodity in which the account balance should
183  * be returned. If NULL, the value will be returned in
184  * the commodity of the account. This is normally used
185  * to specify a currency, which forces the conversion
186  * of things like stock account values from share
187  * values to an amount the requested currency.
188  */
189 char *gnc_ui_account_get_tax_info_string (const Account *account);
190 
191 char *gnc_ui_account_get_tax_info_sub_acct_string (const Account *account);
192 
193 const char * gnc_get_reconcile_str (char reconciled_flag);
194 const char * gnc_get_reconcile_valid_flags (void);
195 const char * gnc_get_reconcile_flag_order (void);
196 
197 #define WLINK 'w'
198 #define FLINK 'f'
199 
204 const char *gnc_get_doclink_valid_flags (void);
205 
210 const char *gnc_get_doclink_flag_order (void);
211 
218 const char *gnc_get_doclink_str (char link_flag);
219 
220 typedef enum
221 {
222  EQUITY_OPENING_BALANCE,
223  EQUITY_RETAINED_EARNINGS,
224  NUM_EQUITY_TYPES
225 } GNCEquityType;
226 
227 Account * gnc_find_or_create_equity_account (Account *root,
228  GNCEquityType equity_type,
229  gnc_commodity *currency);
230 gboolean gnc_account_create_opening_balance (Account *account,
231  gnc_numeric balance,
232  time64 date,
233  QofBook *book);
234 
235 /* Locale functions *************************************************/
236 
237 
241 gnc_commodity * gnc_locale_default_currency_nodefault (void);
242 
247 gnc_commodity * gnc_locale_default_currency (void);
248 
249 
256 gnc_commodity * gnc_default_currency (void);
257 
281 gnc_commodity * gnc_account_or_default_currency(const Account* account, gboolean * currency_from_account_found);
282 
289 gnc_commodity * gnc_default_report_currency (void);
290 
291 /* Amount printing and parsing **************************************/
292 
293 
294 typedef struct _GNCPrintAmountInfo
295 {
296  const gnc_commodity *commodity; /* may be NULL */
297 
298  guint8 max_decimal_places;
299  guint8 min_decimal_places;
300 
301  unsigned int use_separators : 1; /* Print thousands separators */
302  unsigned int use_symbol : 1; /* Print currency symbol */
303  unsigned int use_locale : 1; /* Use locale for some positioning */
304  unsigned int monetary : 1; /* Is a monetary quantity */
305  unsigned int force_fit : 1; /* Don't print more than max_dp places */
306  unsigned int round : 1; /* Round at max_dp instead of truncating */
308 
309 
310 GNCPrintAmountInfo gnc_default_print_info (gboolean use_symbol);
311 
312 GNCPrintAmountInfo gnc_commodity_print_info (const gnc_commodity *commodity,
313  gboolean use_symbol);
314 
315 GNCPrintAmountInfo gnc_account_print_info (const Account *account,
316  gboolean use_symbol);
317 
318 GNCPrintAmountInfo gnc_split_amount_print_info (Split *split,
319  gboolean use_symbol);
320 
321 GNCPrintAmountInfo gnc_price_print_info (const gnc_commodity *curr,
322  gboolean use_symbol);
323 
324 GNCPrintAmountInfo gnc_share_print_info_places (int decplaces);
325 GNCPrintAmountInfo gnc_default_share_print_info (void);
326 GNCPrintAmountInfo gnc_default_price_print_info (const gnc_commodity *curr);
327 
328 GNCPrintAmountInfo gnc_integral_print_info (void);
329 
330 /* WARNING: Garbage in, garbage out. You must check the validity of
331  the supplied gnc_numeric. If it's invalid, the returned string
332  could point to ANYTHING. */
333 /*
334  * The xaccPrintAmount() and xaccSPrintAmount() routines provide
335  * i18n'ed convenience routines for printing gnc_numerics.
336  * amounts. Both routines take a gnc_numeric argument and
337  * a printing information object.
338  *
339  * The xaccPrintAmount() routine returns a pointer to a statically
340  * allocated buffer, and is therefore not thread-safe.
341  *
342  * The xaccSPrintAmount() routine accepts a pointer to the buffer to be
343  * printed to. It returns the length of the printed string.
344  */
350 const char * xaccPrintAmount (gnc_numeric val, GNCPrintAmountInfo info);
357 int xaccSPrintAmount (char *buf, gnc_numeric val, GNCPrintAmountInfo info);
358 
359 const gchar *printable_value(gdouble val, gint denom);
360 gchar *number_to_words(gdouble val, gint64 denom);
361 gchar *numeric_to_words(gnc_numeric val);
362 
374 gboolean xaccParseAmount (const char * in_str, gboolean monetary,
375  gnc_numeric *result, char **endstr);
376 
386 gboolean
387 xaccParseAmountPosSign (const char * in_str, gboolean monetary, gnc_numeric *result,
388  char **endstr, gboolean skip);
389 
398 gboolean
399 xaccParseAmountExtended (const char * in_str, gboolean monetary,
400  gunichar negative_sign, gunichar decimal_point,
401  gunichar group_separator, const char *ignore_list,
402  gnc_numeric *result, char **endstr);
403 
412 const char *
414 
423 gchar *
424 gnc_wrap_text_with_bidi_ltr_isolate (const char *text);
425 
426 /* Initialization ***************************************************/
427 
428 void gnc_ui_util_init (void);
429 
430 /* Remove callback preferences **************************************/
431 
432 void gnc_ui_util_remove_registered_prefs (void);
433 
441 gchar * gnc_filter_text_for_control_chars (const gchar *incoming_text);
442 
453 void gnc_filter_text_set_cursor_position (const gchar *incoming_text,
454  const gchar *symbol,
455  gint *cursor_position);
456 
467 gchar * gnc_filter_text_for_currency_symbol (const gchar *incoming_text,
468  const gchar *symbol);
469 
480 gchar * gnc_filter_text_for_currency_commodity (const gnc_commodity *comm,
481  const gchar *incoming_text,
482  const gchar **symbol);
483 
484 #endif
485 
gchar * gnc_filter_text_for_currency_commodity(const gnc_commodity *comm, const gchar *incoming_text, const gchar **symbol)
Returns the incoming text removed of currency symbol.
Definition: gnc-ui-util.c:2707
gboolean xaccParseAmount(const char *in_str, gboolean monetary, gnc_numeric *result, char **endstr)
Parses in_str to obtain a numeric result.
Definition: gnc-ui-util.c:2154
gnc_commodity * gnc_locale_default_currency_nodefault(void)
Returns the default currency of the current locale, or NULL if no sensible currency could be identifi...
Definition: gnc-ui-util.c:1136
Business Interface: Object OWNERs.
const char * gnc_print_amount_with_bidi_ltr_isolate(gnc_numeric val, GNCPrintAmountInfo info)
Make a string representation of a gnc_numeric.
Definition: gnc-ui-util.c:1872
gboolean gnc_book_use_book_currency(QofBook *book)
Returns TRUE if both book-currency and default gain/loss policy KVPs exist and are valid and trading ...
Definition: gnc-ui-util.c:446
const char * xaccPrintAmount(gnc_numeric val, GNCPrintAmountInfo info)
Make a string representation of a gnc_numeric.
Definition: gnc-ui-util.c:1859
void gnc_book_option_num_field_source_change_cb(gboolean num_action)
Calls gnc_book_option_num_field_source_change to initiate registered callbacks when num_field_source ...
gboolean xaccParseAmountPosSign(const char *in_str, gboolean monetary, gnc_numeric *result, char **endstr, gboolean skip)
Parses in_str to a gnc_numeric, with a flag to indicate whether the locale&#39;s positive sign (or in abs...
Definition: gnc-ui-util.c:2161
gnc_commodity * gnc_default_report_currency(void)
Return the default currency for use in reports, as set by the user.
Definition: gnc-ui-util.c:1230
gnc_commodity * gnc_default_currency(void)
Return the default currency set by the user.
Definition: gnc-ui-util.c:1197
gchar * gnc_get_account_name_for_register(const Account *account)
Get either the full name of the account or the simple name, depending on the configuration parameter ...
Definition: gnc-ui-util.c:581
Account handling public routines.
const char * gnc_get_doclink_flag_order(void)
Get a string containing document link flag order.
Definition: gnc-ui-util.c:940
const gchar * gnc_book_get_book_currency_name(QofBook *book)
Returns pointer to Book Currency name for book or NULL; determines that both book-currency and defaul...
Definition: gnc-ui-util.c:481
gboolean xaccParseAmountExtended(const char *in_str, gboolean monetary, gunichar negative_sign, gunichar decimal_point, gunichar group_separator, const char *ignore_list, gnc_numeric *result, char **endstr)
Converts a string to a gnc_numeric.
Definition: gnc-ui-util.c:2200
const gchar * gnc_book_get_default_gains_policy(QofBook *book)
Returns pointer to default gain/loss policy for book or NULL; determines that both book-currency and ...
Definition: gnc-ui-util.c:514
void gnc_book_option_book_currency_selected_cb(gboolean use_book_currency)
Calls gnc_book_option_book_currency_selected to initiate registered callbacks when currency accountin...
void gnc_filter_text_set_cursor_position(const gchar *incoming_text, const gchar *symbol, gint *cursor_position)
Updates cursor_position after removal of currency symbols.
Definition: gnc-ui-util.c:2651
gnc_commodity * gnc_book_get_book_currency(QofBook *book)
Returns pointer to Book Currency for book or NULL; determines that both book-currency and default gai...
Definition: gnc-ui-util.c:496
gchar * gnc_filter_text_for_currency_symbol(const gchar *incoming_text, const gchar *symbol)
Returns the incoming text removed of a currency symbol.
Definition: gnc-ui-util.c:2683
int xaccSPrintAmount(char *buf, gnc_numeric val, GNCPrintAmountInfo info)
Make a string representation of a gnc_numeric.
Definition: gnc-ui-util.c:1728
gchar * gnc_get_account_name_for_split_register(const Account *account, gboolean show_leaf_accounts)
Get either the full name of the account or the simple name, depending on the show_leaf_accounts.
Definition: gnc-ui-util.c:572
Account * gnc_book_get_default_gain_loss_acct(QofBook *book)
Returns pointer to default gain/loss account for book or NULL; determines that both book-currency and...
Definition: gnc-ui-util.c:530
gnc_commodity * gnc_account_or_default_currency(const Account *account, gboolean *currency_from_account_found)
Returns a gnc_commodity that is a currency, suitable for being a Transaction&#39;s currency.
Definition: gnc-ui-util.c:1202
gchar * gnc_wrap_text_with_bidi_ltr_isolate(const char *text)
This function helps with GTK&#39;s use of &#39;Unicode Bidirectional Text Algorithm&#39;.
gchar * gnc_filter_text_for_control_chars(const gchar *incoming_text)
Returns the incoming text removed of control characters.
Definition: gnc-ui-util.c:2596
const char * gnc_get_doclink_str(char link_flag)
Get a string representing the document link type.
Definition: gnc-ui-util.c:916
gint64 time64
Many systems, including Microsoft Windows and BSD-derived Unixes like Darwin, are retaining the int-3...
Definition: gnc-date.h:93
const char * gnc_get_doclink_valid_flags(void)
Get a string containing documentation link valid flags.
Definition: gnc-ui-util.c:933
Account * gnc_account_lookup_for_register(const Account *base_account, const gchar *name)
Retrieve the account matching the given name starting from the descendants of base_account.
gnc_commodity * gnc_locale_default_currency(void)
Returns the default currency of the current locale.
Definition: gnc-ui-util.c:1151