GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
option-util.h
1 /********************************************************************\
2  * option-util.h -- GNOME<->guile option interface *
3  * Copyright (C) 1998,1999 Linas Vepstas *
4  * Copyright (C) 2000 Dave Peticolas *
5  * *
6  * This program is free software; you can redistribute it and/or *
7  * modify it under the terms of the GNU General Public License as *
8  * published by the Free Software Foundation; either version 2 of *
9  * the License, or (at your option) any later version. *
10  * *
11  * This program is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14  * GNU General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU General Public License*
17  * along with this program; if not, contact: *
18  * *
19  * Free Software Foundation Voice: +1-617-542-5942 *
20  * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
21  * Boston, MA 02110-1301, USA [email protected] *
22 \********************************************************************/
23 
24 #ifndef OPTION_UTIL_H
25 #define OPTION_UTIL_H
26 
27 #include <glib.h>
28 #include <libguile.h>
29 #include "guile-mappings.h"
30 
31 #include "gnc-commodity.h"
32 #include "qof.h"
33 
34 typedef struct gnc_option GNCOption;
36 /* typedef struct gnc_option_db GNCOptionDB is in qof-book.h */
37 
38 typedef int GNCOptionDBHandle;
39 
40 typedef SCM (*GNCOptionGetUIValue) (GNCOption *option);
41 typedef void (*GNCOptionSetUIValue) (GNCOption *option,
42  gboolean use_default);
43 typedef void (*GNCOptionSetSelectable) (GNCOption *option,
44  gboolean selectable);
45 typedef void (*GNCOptionChangeCallback) (gpointer user_data);
46 
47 /***** Prototypes ********************************************************/
48 
49 void gnc_option_set_changed (GNCOption *option, gboolean changed);
50 
54 gpointer gnc_option_get_widget (GNCOption *option);
55 
59 void gnc_option_set_widget (GNCOption *option, gpointer widget);
60 
61 SCM gnc_option_get_ui_value(GNCOption *option);
62 void gnc_option_set_ui_value(GNCOption *option, gboolean use_default);
63 void gnc_option_set_selectable (GNCOption *option, gboolean selectable);
64 
65 GNCOptionDB * gnc_option_db_new(SCM guile_options);
66 void gnc_option_db_destroy(GNCOptionDB *odb);
67 
68 /* Create an option DB for a particular type, and save/load from a kvp.
69  * This assumes the gnc:*kvp-option-path* location for the options
70  * in the kvp.
71  */
72 GNCOptionDB * gnc_option_db_new_for_type(QofIdType id_type);
73 void gnc_option_db_load_from_kvp(GNCOptionDB* odb, KvpFrame *slots);
74 void gnc_option_db_save_to_kvp(GNCOptionDB* odb, KvpFrame *slots, gboolean clear_kvp);
75 
76 void gnc_register_kvp_option_generator(QofIdType id_type, SCM generator);
77 SCM gnc_make_kvp_options(QofIdType id_type);
78 
79 void gnc_option_db_set_ui_callbacks (GNCOptionDB *odb,
80  GNCOptionGetUIValue get_ui_value,
81  GNCOptionSetUIValue set_ui_value,
82  GNCOptionSetSelectable set_selectable);
83 
84 SCM gnc_option_db_register_change_callback(GNCOptionDB *odb,
85  GNCOptionChangeCallback callback,
86  gpointer data,
87  const char *section,
88  const char *name);
89 
90 void gnc_option_db_unregister_change_callback_id(GNCOptionDB *odb,
91  SCM callback_id);
92 
93 char * gnc_option_section(GNCOption *option);
94 char * gnc_option_name(GNCOption *option);
95 char * gnc_option_type(GNCOption *option);
96 char * gnc_option_sort_tag(GNCOption *option);
97 char * gnc_option_documentation(GNCOption *option);
98 SCM gnc_option_getter(GNCOption *option);
99 SCM gnc_option_setter(GNCOption *option);
100 SCM gnc_option_default_getter(GNCOption *option);
101 SCM gnc_option_value_validator(GNCOption *option);
102 SCM gnc_option_widget_changed_proc_getter(GNCOption *option);
103 SCM gnc_option_get_option_data(GNCOption *option);
104 
105 int gnc_option_num_permissible_values(GNCOption *option);
106 int gnc_option_permissible_value_index(GNCOption *option, SCM value);
107 SCM gnc_option_permissible_value(GNCOption *option, int index);
108 char * gnc_option_permissible_value_name(GNCOption *option, int index);
109 char * gnc_option_permissible_value_description(GNCOption *option, int index);
110 
111 gboolean gnc_option_show_time(GNCOption *option);
112 
113 gboolean gnc_option_multiple_selection(GNCOption *option);
114 GList * gnc_option_get_account_type_list(GNCOption *option);
115 
116 gboolean gnc_option_get_range_info(GNCOption *option,
117  double *lower_bound,
118  double *upper_bound,
119  int *num_decimals,
120  double *step_size);
121 
122 gdouble gnc_option_color_range(GNCOption *option);
123 gdouble gnc_option_use_alpha(GNCOption *option);
124 guint32 gnc_option_get_color_argb(GNCOption *option);
125 gboolean gnc_option_get_color_info(GNCOption *option,
126  gboolean use_default,
127  gdouble *red,
128  gdouble *green,
129  gdouble *blue,
130  gdouble *alpha);
131 
132 void gnc_option_call_option_widget_changed_proc (GNCOption *option);
133 
134 void gnc_option_set_default(GNCOption *option);
135 
136 guint gnc_option_db_num_sections(GNCOptionDB *odb);
137 
138 const char * gnc_option_section_name(GNCOptionSection *section);
139 guint gnc_option_section_num_options(GNCOptionSection *section);
140 
141 GNCOptionSection * gnc_option_db_get_section(GNCOptionDB *odb, gint i);
142 
143 GNCOption * gnc_get_option_section_option(GNCOptionSection *section, int i);
144 
145 GNCOption * gnc_option_db_get_option_by_name(GNCOptionDB *odb,
146  const char *section_name,
147  const char *name);
148 
149 GNCOption * gnc_option_db_get_option_by_SCM(GNCOptionDB *odb,
150  SCM guile_option);
151 
152 gboolean gnc_option_db_dirty(GNCOptionDB *odb);
153 void gnc_option_db_clean(GNCOptionDB *odb);
154 
155 gboolean gnc_option_db_get_changed(GNCOptionDB *odb);
156 void gnc_option_db_commit(GNCOptionDB *odb);
157 
158 char * gnc_option_db_get_default_section(GNCOptionDB *odb);
159 
160 SCM gnc_option_db_lookup_option(GNCOptionDB *odb,
161  const char *section,
162  const char *name,
163  SCM default_value);
164 
165 gboolean gnc_option_db_lookup_boolean_option(GNCOptionDB *odb,
166  const char *section,
167  const char *name,
168  gboolean default_value);
169 
170 char * gnc_option_db_lookup_string_option(GNCOptionDB *odb,
171  const char *section,
172  const char *name,
173  const char *default_value);
174 
175 char * gnc_option_db_lookup_font_option(GNCOptionDB *odb,
176  const char *section,
177  const char *name,
178  const char *default_value);
179 
180 char * gnc_option_db_lookup_multichoice_option(GNCOptionDB *odb,
181  const char *section,
182  const char *name,
183  const char *default_value);
184 
185 time64 gnc_option_db_lookup_date_option(GNCOptionDB *odb,
186  const char *section,
187  const char *name,
188  gboolean *is_relative,
189  Timespec *set_ab_value,
190  char **set_rel_value,
191  Timespec *default_value);
192 
193 gdouble gnc_option_db_lookup_number_option(GNCOptionDB *odb,
194  const char *section,
195  const char *name,
196  gdouble default_value);
197 
198 gboolean gnc_option_db_lookup_color_option(GNCOptionDB *odb,
199  const char *section,
200  const char *name,
201  gdouble *red,
202  gdouble *green,
203  gdouble *blue,
204  gdouble *alpha);
205 
206 guint32 gnc_option_db_lookup_color_option_argb(GNCOptionDB *odb,
207  const char *section,
208  const char *name,
209  guint32 default_value);
210 
211 GSList * gnc_option_db_lookup_list_option(GNCOptionDB *odb,
212  const char *section,
213  const char *name,
214  GSList *default_value);
215 
216 void gnc_free_list_option_value(GSList *list);
217 
219 gnc_option_db_lookup_currency_option(GNCOptionDB *odb,
220  const char *section,
221  const char *name,
222  gnc_commodity *default_value);
223 
224 void gnc_option_db_set_option_default(GNCOptionDB *odb,
225  const char *section,
226  const char *name);
227 
228 gboolean gnc_option_db_set_option(GNCOptionDB *odb,
229  const char *section,
230  const char *name,
231  SCM value);
232 
233 gboolean gnc_option_db_set_number_option(GNCOptionDB *odb,
234  const char *section,
235  const char *name,
236  gdouble value);
237 
238 gboolean gnc_option_db_set_boolean_option(GNCOptionDB *odb,
239  const char *section,
240  const char *name,
241  gboolean value);
242 
243 gboolean gnc_option_db_set_string_option(GNCOptionDB *odb,
244  const char *section,
245  const char *name,
246  const char *value);
247 
248 char * gnc_option_date_option_get_subtype(GNCOption *option);
249 
250 char * gnc_date_option_value_get_type (SCM option_value);
251 Timespec gnc_date_option_value_get_absolute (SCM option_value);
252 SCM gnc_date_option_value_get_relative (SCM option_value);
253 
254 void gnc_option_db_set_option_selectable_by_name(SCM guile_options,
255  const char *section,
256  const char *name,
257  gboolean selectable);
258 
259 gboolean gnc_dateformat_option_value_parse(SCM value, QofDateFormat *format,
260  GNCDateMonthFormat *months,
261  gboolean *years, char **custom);
262 SCM gnc_dateformat_option_set_value(QofDateFormat format, GNCDateMonthFormat months,
263  gboolean years, const char *custom);
264 
265 
266 void gnc_option_db_register_option(GNCOptionDBHandle handle,
267  SCM guile_option);
268 
269 /* private */
270 void gncp_option_invoke_callback(GNCOptionChangeCallback callback,
271  gpointer data);
272 
273 /* Reset all the widgets in one section to their default values */
274 void gnc_option_db_section_reset_widgets (GNCOptionSection *section);
275 
276 /* Reset all the widgets to their default values */
277 void gnc_option_db_reset_widgets (GNCOptionDB *odb);
278 
279 #endif /* OPTION_UTIL_H */
Use a 64-bit unsigned int timespec.
Definition: gnc-date.h:299
const gchar * QofIdType
Definition: qofid.h:85
GNCDateMonthFormat
Definition: gnc-date.h:150
struct KvpFrameImpl KvpFrame
Definition: kvp_frame.h:76
gint64 time64
Definition: gnc-date.h:83
QofDateFormat
Definition: gnc-date.h:121
Commodity handling public routines.