GnuCash 2.4.99
option-util.h
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 */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines