|
GnuCash 2.4.99
|
00001 /********************************************************************\ 00002 * option-util.h -- GNOME<->guile option interface * 00003 * Copyright (C) 1998,1999 Linas Vepstas * 00004 * Copyright (C) 2000 Dave Peticolas * 00005 * * 00006 * This program is free software; you can redistribute it and/or * 00007 * modify it under the terms of the GNU General Public License as * 00008 * published by the Free Software Foundation; either version 2 of * 00009 * the License, or (at your option) any later version. * 00010 * * 00011 * This program is distributed in the hope that it will be useful, * 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00014 * GNU General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU General Public License* 00017 * along with this program; if not, contact: * 00018 * * 00019 * Free Software Foundation Voice: +1-617-542-5942 * 00020 * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 * 00021 * Boston, MA 02110-1301, USA gnu@gnu.org * 00022 \********************************************************************/ 00023 00024 #ifndef OPTION_UTIL_H 00025 #define OPTION_UTIL_H 00026 00027 #include <glib.h> 00028 #include <libguile.h> 00029 #include "guile-mappings.h" 00030 00031 #include "gnc-commodity.h" 00032 #include "qof.h" 00033 #include "GNCId.h" 00034 00035 typedef struct gnc_option GNCOption; 00036 typedef struct gnc_option_section GNCOptionSection; 00037 typedef struct gnc_option_db GNCOptionDB; 00038 00039 typedef int GNCOptionDBHandle; 00040 00041 typedef SCM (*GNCOptionGetUIValue) (GNCOption *option); 00042 typedef void (*GNCOptionSetUIValue) (GNCOption *option, 00043 gboolean use_default); 00044 typedef void (*GNCOptionSetSelectable) (GNCOption *option, 00045 gboolean selectable); 00046 typedef void (*GNCOptionChangeCallback) (gpointer user_data); 00047 00048 /***** Prototypes ********************************************************/ 00049 00050 void gnc_option_set_changed (GNCOption *option, gboolean changed); 00051 00055 gpointer gnc_option_get_widget (GNCOption *option); 00056 00060 void gnc_option_set_widget (GNCOption *option, gpointer widget); 00061 00062 SCM gnc_option_get_ui_value(GNCOption *option); 00063 void gnc_option_set_ui_value(GNCOption *option, gboolean use_default); 00064 void gnc_option_set_selectable (GNCOption *option, gboolean selectable); 00065 00066 GNCOptionDB * gnc_option_db_new(SCM guile_options); 00067 void gnc_option_db_destroy(GNCOptionDB *odb); 00068 00069 /* Create an option DB for a particular type, and save/load from a kvp. 00070 * This assumes the gnc:*kvp-option-path* location for the options 00071 * in the kvp. 00072 */ 00073 GNCOptionDB * gnc_option_db_new_for_type(QofIdType id_type); 00074 void gnc_option_db_load_from_kvp(GNCOptionDB* odb, kvp_frame *slots); 00075 00076 void gnc_register_kvp_option_generator(QofIdType id_type, SCM generator); 00077 SCM gnc_make_kvp_options(QofIdType id_type); 00078 00079 void gnc_option_db_set_ui_callbacks (GNCOptionDB *odb, 00080 GNCOptionGetUIValue get_ui_value, 00081 GNCOptionSetUIValue set_ui_value, 00082 GNCOptionSetSelectable set_selectable); 00083 00084 SCM gnc_option_db_register_change_callback(GNCOptionDB *odb, 00085 GNCOptionChangeCallback callback, 00086 gpointer data, 00087 const char *section, 00088 const char *name); 00089 00090 void gnc_option_db_unregister_change_callback_id(GNCOptionDB *odb, 00091 SCM callback_id); 00092 00093 char * gnc_option_section(GNCOption *option); 00094 char * gnc_option_name(GNCOption *option); 00095 char * gnc_option_type(GNCOption *option); 00096 char * gnc_option_sort_tag(GNCOption *option); 00097 char * gnc_option_documentation(GNCOption *option); 00098 SCM gnc_option_getter(GNCOption *option); 00099 SCM gnc_option_setter(GNCOption *option); 00100 SCM gnc_option_default_getter(GNCOption *option); 00101 SCM gnc_option_value_validator(GNCOption *option); 00102 SCM gnc_option_widget_changed_proc_getter(GNCOption *option); 00103 SCM gnc_option_get_option_data(GNCOption *option); 00104 00105 int gnc_option_num_permissible_values(GNCOption *option); 00106 int gnc_option_permissible_value_index(GNCOption *option, SCM value); 00107 SCM gnc_option_permissible_value(GNCOption *option, int index); 00108 char * gnc_option_permissible_value_name(GNCOption *option, int index); 00109 char * gnc_option_permissible_value_description(GNCOption *option, int index); 00110 00111 gboolean gnc_option_show_time(GNCOption *option); 00112 00113 gboolean gnc_option_multiple_selection(GNCOption *option); 00114 GList * gnc_option_get_account_type_list(GNCOption *option); 00115 00116 gboolean gnc_option_get_range_info(GNCOption *option, 00117 double *lower_bound, 00118 double *upper_bound, 00119 int *num_decimals, 00120 double *step_size); 00121 00122 gdouble gnc_option_color_range(GNCOption *option); 00123 gdouble gnc_option_use_alpha(GNCOption *option); 00124 guint32 gnc_option_get_color_argb(GNCOption *option); 00125 gboolean gnc_option_get_color_info(GNCOption *option, 00126 gboolean use_default, 00127 gdouble *red, 00128 gdouble *green, 00129 gdouble *blue, 00130 gdouble *alpha); 00131 00132 void gnc_option_call_option_widget_changed_proc (GNCOption *option); 00133 00134 void gnc_option_set_default(GNCOption *option); 00135 00136 guint gnc_option_db_num_sections(GNCOptionDB *odb); 00137 00138 const char * gnc_option_section_name(GNCOptionSection *section); 00139 guint gnc_option_section_num_options(GNCOptionSection *section); 00140 00141 GNCOptionSection * gnc_option_db_get_section(GNCOptionDB *odb, gint i); 00142 00143 GNCOption * gnc_get_option_section_option(GNCOptionSection *section, int i); 00144 00145 GNCOption * gnc_option_db_get_option_by_name(GNCOptionDB *odb, 00146 const char *section_name, 00147 const char *name); 00148 00149 GNCOption * gnc_option_db_get_option_by_SCM(GNCOptionDB *odb, 00150 SCM guile_option); 00151 00152 gboolean gnc_option_db_dirty(GNCOptionDB *odb); 00153 void gnc_option_db_clean(GNCOptionDB *odb); 00154 00155 gboolean gnc_option_db_get_changed(GNCOptionDB *odb); 00156 void gnc_option_db_commit(GNCOptionDB *odb); 00157 00158 char * gnc_option_db_get_default_section(GNCOptionDB *odb); 00159 00160 SCM gnc_option_db_lookup_option(GNCOptionDB *odb, 00161 const char *section, 00162 const char *name, 00163 SCM default_value); 00164 00165 gboolean gnc_option_db_lookup_boolean_option(GNCOptionDB *odb, 00166 const char *section, 00167 const char *name, 00168 gboolean default_value); 00169 00170 char * gnc_option_db_lookup_string_option(GNCOptionDB *odb, 00171 const char *section, 00172 const char *name, 00173 const char *default_value); 00174 00175 char * gnc_option_db_lookup_font_option(GNCOptionDB *odb, 00176 const char *section, 00177 const char *name, 00178 const char *default_value); 00179 00180 char * gnc_option_db_lookup_multichoice_option(GNCOptionDB *odb, 00181 const char *section, 00182 const char *name, 00183 const char *default_value); 00184 00185 time_t gnc_option_db_lookup_date_option(GNCOptionDB *odb, 00186 const char *section, 00187 const char *name, 00188 gboolean *is_relative, 00189 Timespec *set_ab_value, 00190 char **set_rel_value, 00191 Timespec *default_value); 00192 00193 gdouble gnc_option_db_lookup_number_option(GNCOptionDB *odb, 00194 const char *section, 00195 const char *name, 00196 gdouble default_value); 00197 00198 gboolean gnc_option_db_lookup_color_option(GNCOptionDB *odb, 00199 const char *section, 00200 const char *name, 00201 gdouble *red, 00202 gdouble *green, 00203 gdouble *blue, 00204 gdouble *alpha); 00205 00206 guint32 gnc_option_db_lookup_color_option_argb(GNCOptionDB *odb, 00207 const char *section, 00208 const char *name, 00209 guint32 default_value); 00210 00211 GSList * gnc_option_db_lookup_list_option(GNCOptionDB *odb, 00212 const char *section, 00213 const char *name, 00214 GSList *default_value); 00215 00216 void gnc_free_list_option_value(GSList *list); 00217 00218 gnc_commodity * 00219 gnc_option_db_lookup_currency_option(GNCOptionDB *odb, 00220 const char *section, 00221 const char *name, 00222 gnc_commodity *default_value); 00223 00224 void gnc_option_db_set_option_default(GNCOptionDB *odb, 00225 const char *section, 00226 const char *name); 00227 00228 gboolean gnc_option_db_set_option(GNCOptionDB *odb, 00229 const char *section, 00230 const char *name, 00231 SCM value); 00232 00233 gboolean gnc_option_db_set_number_option(GNCOptionDB *odb, 00234 const char *section, 00235 const char *name, 00236 gdouble value); 00237 00238 gboolean gnc_option_db_set_boolean_option(GNCOptionDB *odb, 00239 const char *section, 00240 const char *name, 00241 gboolean value); 00242 00243 gboolean gnc_option_db_set_string_option(GNCOptionDB *odb, 00244 const char *section, 00245 const char *name, 00246 const char *value); 00247 00248 char * gnc_option_date_option_get_subtype(GNCOption *option); 00249 00250 char * gnc_date_option_value_get_type (SCM option_value); 00251 Timespec gnc_date_option_value_get_absolute (SCM option_value); 00252 SCM gnc_date_option_value_get_relative (SCM option_value); 00253 00254 void gnc_option_db_set_option_selectable_by_name(SCM guile_options, 00255 const char *section, 00256 const char *name, 00257 gboolean selectable); 00258 00259 gboolean gnc_dateformat_option_value_parse(SCM value, QofDateFormat *format, 00260 GNCDateMonthFormat *months, 00261 gboolean *years, char **custom); 00262 SCM gnc_dateformat_option_set_value(QofDateFormat format, GNCDateMonthFormat months, 00263 gboolean years, const char *custom); 00264 00265 00266 void gnc_option_db_register_option(GNCOptionDBHandle handle, 00267 SCM guile_option); 00268 00269 /* private */ 00270 void gncp_option_invoke_callback(GNCOptionChangeCallback callback, 00271 gpointer data); 00272 00273 /* Reset all the widgets in one section to their default values */ 00274 void gnc_option_db_section_reset_widgets (GNCOptionSection *section); 00275 00276 /* Reset all the widgets to their default values */ 00277 void gnc_option_db_reset_widgets (GNCOptionDB *odb); 00278 00279 #endif /* OPTION_UTIL_H */
1.7.4