00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef __GNOME_RES_H__
00027 #define __GNOME_RES_H__
00028
00029 #include <gtk/gtk.h>
00030 #include <libgnome/libgnome.h>
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036
00037
00038
00039 typedef enum {
00040 GNOME_RES_FIRST,
00041 GNOME_RES_BOOL,
00042 GNOME_RES_STRING,
00043 GNOME_RES_INT,
00044 GNOME_RES_FLOAT,
00045 GNOME_RES_FLOAT_W_UNIT,
00046 GNOME_RES_FLOAT_VEC3,
00047 GNOME_RES_FLOAT_VEC4,
00048 GNOME_RES_IGNORE_INFO,
00049 GNOME_RES_SEPARATOR,
00050 GNOME_RES_LAST
00051 } GnomeResType;
00052
00053
00054
00055
00056 typedef enum {
00057 GNOME_RES_EDIT_NO,
00058 GNOME_RES_EDIT_ENTRY,
00059 GNOME_RES_EDIT_OPTIONS,
00060 GNOME_RES_EDIT_VALSLIDER,
00061
00062
00063 GNOME_RES_EDIT_COLORSEL,
00064 GNOME_RES_EDIT_FONTSEL
00065 } GnomeResEditType;
00066
00067
00068
00069
00070 typedef enum {
00071 GNOME_RES_LEVEL_AUTO,
00072 GNOME_RES_LEVEL_ASKFOR,
00073 GNOME_RES_LEVEL_ASKFOR_DEPEND,
00074 GNOME_RES_LEVEL_IGNORE,
00075 GNOME_RES_LEVEL_INFOTEXT
00076 } GnomeResLevel;
00077
00078
00079
00080
00081 typedef struct {
00082 GnomeResType type;
00083 GnomeResEditType edit_type;
00084 const gchar *path;
00085 const gchar *name;
00086 const gchar *vdefault;
00087 void *var;
00088 gchar **options;
00089 const gchar *option_text_format;
00090 float *option_data;
00091 const gchar *group;
00092 const gchar *comment;
00093 GnomeResLevel level;
00094 gint (*depend_func)();
00095 void (*changed_callback)(gpointer);
00096 gpointer moreinfo;
00097 GtkWidget *entry;
00098 gchar *tmp;
00099 } GnomeResEntryInfoType;
00100
00101
00102
00103
00104 #define GNOME_RES_ENTRY(type, edit_type, path, name, vdefault, var, options, option_text_format, option_data, group, comment, level, depend_func, changed_callback, moreinfo) \
00105 { type, edit_type, path, name, vdefault, var, options, option_text_format, option_data, group, comment, level, depend_func, changed_callback, moreinfo, NULL, NULL }
00106
00107 #define GNOME_RES_ENTRY_NAME(type, edit_type, path, name, vdefault, var, options, group, comment, level, depend_func, moreinfo) \
00108 GNOME_RES_ENTRY(type, edit_type, path, name, vdefault, var, options, NULL, NULL, group, comment, level, depend_func, NULL, moreinfo )
00109
00110 #define GNOME_RES_ENTRY_FLOAT(path, name, vdefault, var, group, comment, changed_callback) \
00111 GNOME_RES_ENTRY(GNOME_RES_FLOAT, GNOME_RES_EDIT_ENTRY, path, name, vdefault, var, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, changed_callback, NULL)
00112
00113 #define GNOME_RES_ENTRY_FLOAT_VEC3(path, name, vdefault, var, group, comment, changed_callback) \
00114 GNOME_RES_ENTRY(GNOME_RES_FLOAT_VEC3, GNOME_RES_EDIT_ENTRY, path, name, vdefault, var, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, changed_callback, NULL)
00115
00116 #define GNOME_RES_ENTRY_FLOAT_VEC4(path, name, vdefault, var, group, comment, changed_callback) \
00117 GNOME_RES_ENTRY(GNOME_RES_FLOAT_VEC4, GNOME_RES_EDIT_ENTRY, path, name, vdefault, var, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, changed_callback, NULL)
00118
00119 #define GNOME_RES_ENTRY_FLOATSLIDER(path, name, vdefault, var, options, group, comment, changed_callback) \
00120 GNOME_RES_ENTRY(GNOME_RES_FLOAT, GNOME_RES_EDIT_VALSLIDER, path, name, vdefault, var, options, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, changed_callback, NULL)
00121
00122 #define GNOME_RES_ENTRY_COLORSEL(path, name, vdefault, var, group, comment, changed_callback) \
00123 GNOME_RES_ENTRY(GNOME_RES_FLOAT_VEC4, GNOME_RES_EDIT_COLORSEL, path, name, vdefault, var, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, changed_callback, NULL)
00124
00125 #define GNOME_RES_ENTRY_FONTSEL(path, name, vdefault, var, group, comment, changed_callback) \
00126 GNOME_RES_ENTRY(GNOME_RES_STRING, GNOME_RES_EDIT_FONTSEL, path, name, vdefault, var, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, changed_callback, NULL)
00127
00128 #define GNOME_RES_ENTRY_OPTION(type, path, vdefault, var, options, group, comment) \
00129 GNOME_RES_ENTRY(type, GNOME_RES_EDIT_OPTIONS, path, NULL, vdefault, var, options, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, NULL, NULL )
00130
00131 #define GNOME_RES_ENTRY_MARK(type) \
00132 GNOME_RES_ENTRY(type, GNOME_RES_EDIT_NO, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, GNOME_RES_LEVEL_IGNORE, NULL, NULL, NULL )
00133
00134 #define GNOME_RES_ENTRY_MARK_NAME(type,pathname) \
00135 GNOME_RES_ENTRY(type, GNOME_RES_EDIT_NO, pathname, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, GNOME_RES_LEVEL_IGNORE, NULL, NULL, NULL )
00136
00137 #define GNOME_RES_ENTRY_FIRST \
00138 GNOME_RES_ENTRY_MARK (GNOME_RES_FIRST)
00139
00140 #define GNOME_RES_ENTRY_FIRST_NAME(pathname) \
00141 GNOME_RES_ENTRY_MARK_NAME (GNOME_RES_FIRST, pathname)
00142
00143 #define GNOME_RES_ENTRY_LAST \
00144 GNOME_RES_ENTRY_MARK (GNOME_RES_LAST)
00145
00146 #define GNOME_RES_ENTRY_PATH(type, path, vdefault, var, options, group, comment, level, depend_func) \
00147 GNOME_RES_ENTRY_NAME( type, GNOME_RES_EDIT_ENTRY, path, NULL, vdefault, var, options, group, comment, level, depend_func, NULL )
00148
00149 #define GNOME_RES_ENTRY_PATH_OPTION(type, path, vdefault, var, options, group, comment, level, depend_func) \
00150 GNOME_RES_ENTRY_NAME( type, GNOME_RES_EDIT_OPTIONS, path, NULL, vdefault, var, options, group, comment, level, depend_func, NULL )
00151
00152 #define GNOME_RES_ENTRY_INFOTEXT(group, comment) \
00153 GNOME_RES_ENTRY_NAME( GNOME_RES_IGNORE_INFO, GNOME_RES_EDIT_NO, NULL, NULL, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_INFOTEXT, NULL, NULL )
00154
00155 #define GNOME_RES_ENTRY_SEPARATOR(group, comment) \
00156 GNOME_RES_ENTRY_NAME( GNOME_RES_SEPARATOR, GNOME_RES_EDIT_NO, NULL, NULL, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL, NULL )
00157
00158 #define GNOME_RES_ENTRY_INFOTEXT_DEPEND(group, comment, depend_func) \
00159 GNOME_RES_ENTRY_NAME( GNOME_RES_IGNORE_INFO, GNOME_RES_EDIT_NO, NULL, NULL, NULL, NULL, NULL, group, comment, GNOME_RES_LEVEL_INFOTEXT, depend_func, NULL )
00160
00161 #define GNOME_RES_ENTRY_AUTO_PATH(type, path, vdefault, var, group, comment) \
00162 GNOME_RES_ENTRY_PATH(type, path, vdefault, var, NULL, group, comment, GNOME_RES_LEVEL_AUTO, NULL )
00163
00164 #define GNOME_RES_ENTRY_AUTO_PATH_UNIT(type, path, vdefault, var, option_unit, group, comment) \
00165 GNOME_RES_ENTRY_PATH(type, path, vdefault, var, option_unit, group, comment, GNOME_RES_LEVEL_AUTO, NULL )
00166
00167 #define GNOME_RES_ENTRY_AUTO_PATH_OPTION(type, path, vdefault, var, options, group, comment) \
00168 GNOME_RES_ENTRY_PATH_OPTION(type, path, vdefault, var, options, group, comment, GNOME_RES_LEVEL_AUTO, NULL )
00169
00170 #define GNOME_RES_ENTRY_AUTO_PATH_OPTION_FMT(type, path, vdefault, var, options, option_text_format, option_data, group, comment) \
00171 GNOME_RES_ENTRY( type, GNOME_RES_EDIT_OPTIONS, path, NULL, vdefault, var, options, option_text_format, option_data, group, comment, GNOME_RES_LEVEL_AUTO, NULL, NULL, NULL )
00172
00173 #define GNOME_RES_ENTRY_ASK_PATH(type, path, vdefault, var, group, comment) \
00174 GNOME_RES_ENTRY_PATH(type, path, vdefault, var, NULL, group, comment, GNOME_RES_LEVEL_ASKFOR, NULL )
00175
00176 #define GNOME_RES_ENTRY_ASK_PATH_UNIT(type, path, vdefault, var, option_unit, group, comment) \
00177 GNOME_RES_ENTRY_PATH(type, path, vdefault, var, option_unit, group, comment, GNOME_RES_LEVEL_ASKFOR, NULL )
00178
00179 #define GNOME_RES_ENTRY_ASK_PATH_OPTION(type, path, vdefault, var, options, group, comment) \
00180 GNOME_RES_ENTRY_PATH_OPTION(type, path, vdefault, var, options, group, comment, GNOME_RES_LEVEL_ASKFOR, NULL )
00181
00182 #define GNOME_RES_ENTRY_ASK_PATH_OPTION_FMT(type, path, vdefault, var, options, option_text_format, option_data, group, comment) \
00183 GNOME_RES_ENTRY( type, GNOME_RES_EDIT_OPTIONS, path, NULL, vdefault, var, options, option_text_format, option_data, group, comment, GNOME_RES_LEVEL_ASKFOR, NULL, NULL, NULL )
00184
00185 #define GNOME_RES_ENTRY_ASK_PATH_DEPEND(type, path, vdefault, var, group, comment, depend_func) \
00186 GNOME_RES_ENTRY_PATH(type, path, vdefault, var, NULL, group, comment, GNOME_RES_LEVEL_ASKFOR_DEPEND, depend_func )
00187
00188 #define GNOME_RES_ENTRY_ASK_PATH_DEPEND_UNIT(type, path, vdefault, var, option_unit, group, comment, depend_func) \
00189 GNOME_RES_ENTRY_PATH(type, path, vdefault, var, option_unit, group, comment, GNOME_RES_LEVEL_ASKFOR_DEPEND, depend_func )
00190
00191 #define GNOME_RES_ENTRY_ASK_PATH_OPTION_DEPEND(type, path, vdefault, var, options, group, comment, depend_func) \
00192 GNOME_RES_ENTRY(type, GNOME_RES_EDIT_OPTIONS, path, NULL, vdefault, var, options, NULL, NULL, group, comment, GNOME_RES_LEVEL_ASKFOR_DEPEND, depend_func, NULL, NULL )
00193
00194 #define GNOME_RES_ENTRY_ASK_PATH_OPTION_FMT_DEPEND(type, path, vdefault, var, options, option_text_format, option_data, group, comment, depend_func) \
00195 GNOME_RES_ENTRY( type, GNOME_RES_EDIT_OPTIONS, path, NULL, vdefault, var, options, option_text_format, option_data, group, comment, GNOME_RES_LEVEL_ASKFOR_DEPEND, depend_func, NULL, NULL )
00196
00197
00198
00199
00200
00201
00202 typedef struct {
00203 GnomeResEntryInfoType *res_def;
00204 gchar *pref_ok_message;
00205 gchar *pref_apply_message;
00206 GtkWidget *dialog;
00207 int destroy_on_close;
00208 int running;
00209 void (*pref_apply_callback)(gpointer);
00210 gpointer pref_apply_callback_data;
00211 } GnomeResPreferences;
00212
00213 GnomeResPreferences *gnome_res_preferences_new (GnomeResEntryInfoType *res_def);
00214 void gnome_res_set_ok_message (GnomeResPreferences *gnome_res_pref, const gchar *ok_msg);
00215 void gnome_res_set_apply_message (GnomeResPreferences *gnome_res_pref, const gchar *apply_msg);
00216 void gnome_res_set_apply_callback (GnomeResPreferences *self, void (*cb)(gpointer), gpointer data);
00217 void gnome_res_run_change_user_config(GnomeResPreferences *gnome_res_pref, const gchar *dialog_title);
00218 void gnome_res_set_destroy_on_close (GnomeResPreferences *self, int flg);
00219 void gnome_res_destroy (GnomeResPreferences *gnome_res_pref);
00220
00221 void gnome_res_read_user_config (GnomeResPreferences *gnome_res_pref);
00222 void gnome_res_write_user_config (GnomeResPreferences *gnome_res_pref);
00223
00224
00225
00226
00227
00228 typedef enum {
00229 GNOME_RES_DRUID_RUNNING,
00230 GNOME_RES_DRUID_FINISH,
00231 GNOME_RES_DRUID_CANCEL,
00232 } GnomeResDruidFinishType;
00233
00234 typedef struct {
00235 GnomeResPreferences *res_pref;
00236
00237 GtkWidget *window;
00238 GtkWidget *druid;
00239 GtkWidget *startpage, *page, *finishpage;
00240 GnomeResEntryInfoType *res_current;
00241
00242 GdkPixbuf *logo, *watermark;
00243 gchar *title, *welcome, *intro_text, *finish, *final_text;
00244
00245 gint pageindex, pagescreated;
00246 GnomeResDruidFinishType finishmode;
00247 } GnomeResNewUserDruid;
00248
00249 GnomeResNewUserDruid *gnome_res_new_user_druid_new (GnomeResEntryInfoType *res_def, const gchar *title);
00250 GnomeResNewUserDruid *gnome_res_new_user_druid_new_with_vals (GnomeResEntryInfoType *res_def,
00251 const gchar *title,
00252 GdkPixbuf *logo,
00253 GdkPixbuf *watermark,
00254 const gchar *welcome,
00255 const gchar *intro_text,
00256 const gchar *finish,
00257 const gchar *final_text
00258 );
00259 GnomeResDruidFinishType gnome_res_new_user_druid_run_druids (GnomeResNewUserDruid *self);
00260 void gnome_res_new_user_druid_destroy (GnomeResNewUserDruid *self);
00261
00262 #ifdef __cplusplus
00263 }
00264 #endif
00265
00266
00267 #endif