parameter.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __BG_PARAMETER_H_
00023 #define __BG_PARAMETER_H_
00024
00025 #include <libxml/tree.h>
00026 #include <libxml/parser.h>
00027
00028 #include <gavl/gavl.h>
00029
00044
00045
00053 typedef enum
00054 {
00055 BG_PARAMETER_SECTION,
00056 BG_PARAMETER_CHECKBUTTON,
00057 BG_PARAMETER_INT,
00058 BG_PARAMETER_FLOAT,
00059 BG_PARAMETER_SLIDER_INT,
00060 BG_PARAMETER_SLIDER_FLOAT,
00061 BG_PARAMETER_STRING,
00062 BG_PARAMETER_STRING_HIDDEN,
00063 BG_PARAMETER_STRINGLIST,
00064 BG_PARAMETER_COLOR_RGB,
00065 BG_PARAMETER_COLOR_RGBA,
00066 BG_PARAMETER_FONT,
00067 BG_PARAMETER_DEVICE,
00068 BG_PARAMETER_FILE,
00069 BG_PARAMETER_DIRECTORY,
00070 BG_PARAMETER_MULTI_MENU,
00071 BG_PARAMETER_MULTI_LIST,
00072 BG_PARAMETER_MULTI_CHAIN,
00073 BG_PARAMETER_TIME,
00074 BG_PARAMETER_POSITION,
00075 BG_PARAMETER_BUTTON,
00076 } bg_parameter_type_t;
00077
00082 typedef union
00083 {
00084 double val_f;
00085 int val_i;
00086 char * val_str;
00087 float val_color[4];
00088 gavl_time_t val_time;
00089 double val_pos[2];
00090 } bg_parameter_value_t;
00091
00092
00093
00097 #define BG_PARAMETER_SYNC (1<<0) //!< Apply the value whenever the widgets value changes
00098
00102 #define BG_PARAMETER_HIDE_DIALOG (1<<1) //!< Don't make a configuration widget (for objects, which change values themselves)
00103
00107 #define BG_PARAMETER_NO_SORT (1<<2) //!< Don't make a list sortable
00108
00112 #define BG_PARAMETER_PLUGIN (1<<3) //!< Parameter refers to a plugin
00113
00117 #define BG_PARAMETER_OWN_SECTION (1<<4) //!< For parameters of the type BG_PARAMETER_SECTION: Following parameters should be stored in an own section
00118
00123 #define BG_PARAMETER_GLOBAL_PRESET (1<<5) //!< For parameters of the type BG_PARAMETER_SECTION: There should be one preset for all following sections
00124
00125
00126 typedef struct bg_parameter_info_s bg_parameter_info_t;
00127
00134 struct bg_parameter_info_s
00135 {
00136 char * name;
00137 char * long_name;
00138 char * opt;
00139
00140 char * gettext_domain;
00141 char * gettext_directory;
00142
00143 bg_parameter_type_t type;
00144
00145 int flags;
00146
00147 bg_parameter_value_t val_default;
00148 bg_parameter_value_t val_min;
00149 bg_parameter_value_t val_max;
00150
00151
00152
00153 char const * const * multi_names;
00154
00155
00156
00157
00158 char const * const * multi_labels;
00159 char const * const * multi_descriptions;
00160
00161
00162
00163
00164
00165
00166
00167 struct bg_parameter_info_s const * const * multi_parameters;
00168
00169 int num_digits;
00170
00171 char * help_string;
00172
00173 char * preset_path;
00174
00175 char ** multi_names_nc;
00176
00177 char ** multi_labels_nc;
00178
00179 char ** multi_descriptions_nc;
00180
00181 struct bg_parameter_info_s ** multi_parameters_nc;
00182
00183 };
00184
00185
00186
00187
00188
00189
00190
00191
00205 typedef void (*bg_set_parameter_func_t)(void * data, const char * name,
00206 const bg_parameter_value_t * v);
00207
00221 typedef int (*bg_get_parameter_func_t)(void * data, const char * name,
00222 bg_parameter_value_t * v);
00223
00229 void bg_parameter_info_copy(bg_parameter_info_t * dst,
00230 const bg_parameter_info_t * src);
00231
00241 bg_parameter_info_t *
00242 bg_parameter_info_copy_array(const bg_parameter_info_t * src);
00243
00252 void
00253 bg_parameter_info_set_const_ptrs(bg_parameter_info_t * info);
00254
00260 void bg_parameter_info_destroy_array(bg_parameter_info_t * info);
00261
00272 void bg_parameter_value_copy(bg_parameter_value_t * dst,
00273 const bg_parameter_value_t * src,
00274 const bg_parameter_info_t * info);
00275
00282 void bg_parameter_value_free(bg_parameter_value_t * val,
00283 bg_parameter_type_t type);
00284
00285
00293 bg_parameter_info_t *
00294 bg_parameter_info_concat_arrays(bg_parameter_info_t const ** srcs);
00295
00306 int bg_parameter_get_selected(const bg_parameter_info_t * info,
00307 const char * val);
00308
00309
00321 const bg_parameter_info_t *
00322 bg_parameter_find(const bg_parameter_info_t * info,
00323 const char * name);
00324
00325
00336 bg_parameter_info_t * bg_xml_2_parameters(xmlDocPtr xml_doc,
00337 xmlNodePtr xml_parameters);
00338
00348 void
00349 bg_parameters_2_xml(const bg_parameter_info_t * info, xmlNodePtr xml_parameters);
00350
00359 void
00360 bg_parameters_dump(const bg_parameter_info_t * info, const char * filename);
00361
00362
00363 #endif
00364