LiVES  1.6.4-svn
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
rfx-builder.h
Go to the documentation of this file.
1 // rfx-builder.h
2 // LiVES
3 // (c) G. Finch 2004 - 2009 <salsaman@xs4all.nl,salsaman@gmail.com>
4 // released under the GNU GPL 3 or later
5 // see file ../COPYING or www.gnu.org for licensing details
6 
7 #define RFX_BUILDER "build-lives-rfx-plugin"
8 
10 #define RFX_VERSION "1.7"
11 
13 #define RFX_BUILDER_MULTI "build-lives-rfx-plugin-multi"
14 
16 #define RFXBUILDER_SCRIPT_SUFFIX "script"
17 
19 #define MAXFLOATLEN 11
20 
22 #define MAXINTLEN strlen(g_strdup_printf("%d",G_MAXINT))
23 
24 // advanced menu entries
25 void on_new_rfx_activate (GtkMenuItem *, gpointer status);
26 void on_edit_rfx_activate (GtkMenuItem *, gpointer status);
27 void on_copy_rfx_activate (GtkMenuItem *, gpointer);
28 void on_rename_rfx_activate (GtkMenuItem *, gpointer);
29 void on_delete_rfx_activate (GtkMenuItem *, gpointer status);
30 void on_rebuild_rfx_activate (GtkMenuItem *, gpointer);
31 void on_promote_rfx_activate (GtkMenuItem *, gpointer);
32 void on_import_rfx_activate (GtkMenuItem *, gpointer status);
33 void on_export_rfx_activate (GtkMenuItem *, gpointer status);
34 
35 // the builder window
36 
38 #define RFXBUILD_MAX_REQ 128
39 
41 #define RFXBUILD_MAX_PARAMS 32
42 
44 #define RFXBUILD_MAX_PARAMW_HINTS 512
45 
48 #define RFXBUILD_MAX_TROWS 512
49 
50 
51 #define PREF_RFXDIALOG_W 800
52 #define PREF_RFXDIALOG_H 650
53 
54 
56 #define RFXBUILD_MAX_DP 16
57 typedef struct {
58  gint when;
59  gchar *code;
61 
62 
63 
64 typedef enum {
71 
72 
73 typedef enum {
79 
80 
81 typedef enum {
88 
89 
90 typedef enum {
95 
96 
97 
98 typedef struct {
100 
101  GtkWidget *dialog;
102  GtkWidget *name_entry;
103  GtkWidget *spinbutton_version;
104  GtkWidget *author_entry;
105  GtkWidget *url_entry;
106  GtkWidget *menu_text_entry;
107  GtkWidget *action_desc_label;
108  GtkWidget *action_desc_entry;
109  GtkWidget *action_desc_hsep;
116  GtkWidget *langc_combo;
117  GtkWidget *table;
119  GtkWidget *properties_button;
120  GtkWidget *params_button;
122  GtkWidget *pre_button;
123  GtkWidget *loop_button;
124  GtkWidget *post_button;
125  GtkWidget *trigger_button;
126  GtkWidget *prop_slow;
127  GtkWidget *prop_batchg;
128  GtkWidget *hbox_batchg;
129  GtkWidget *min_frames_label;
130 
132 
135 
137 
138  GtkWidget *entry[RFXBUILD_MAX_TROWS];
139  GtkWidget *entry2[RFXBUILD_MAX_TROWS];
140  GtkWidget *entry3[RFXBUILD_MAX_TROWS];
141  GtkWidget *param_dialog;
142  GtkWidget *param_name_entry;
143  GtkWidget *param_label_entry;
144  GtkWidget *param_type_combo;
145  GtkWidget *param_dp_label;
146  GtkWidget *param_def_label;
147  GtkWidget *param_min_label;
148  GtkWidget *param_max_label;
149  GtkWidget *param_step_label;
150  GtkWidget *param_wrap_label;
153  GtkWidget *param_strlist_hbox;
154  GtkWidget *param_def_combo;
155  GtkWidget *paramw_rest_entry;
156  GtkWidget *paramw_kw_combo;
157  GtkWidget *paramw_sp_combo;
158  GtkWidget *paramw_spsub_combo;
159  GtkWidget *paramw_rest_label;
160  GtkWidget *bg_label;
162  GtkWidget *trigger_when_entry;
169  GtkWidget *code_textview;
170  GtkWidget *move_up_button;
171  GtkWidget *move_down_button;
172 
173  guint32 props;
174 
175  gchar *pre_code;
176  gchar *loop_code;
177  gchar *post_code;
178 
180 
181  gchar *reqs[RFXBUILD_MAX_REQ];
182  gint num_reqs;
183  gint onum_reqs;
184 
187  gint num_params;
189 
190  gchar *paramw_hints[RFXBUILD_MAX_PARAMS];
193 
198 
200 
201  gchar *field_delim;
202 
204 
207 
208  gchar *script_name;
209  gchar *oname;
210 
211  gulong min_spin_f;
212  gulong max_spin_f;
213  gulong def_spin_f;
214  gulong step_spin_f;
215 
216  gchar *rfx_version;
218 
220 
221 // builder window widgets/callbacks
222 rfx_build_window_t *make_rfx_build_window (const gchar *in_script_name, lives_rfx_status_t in_status);
223 void on_rfxbuilder_ok (GtkButton *, gpointer);
224 void on_rfxbuilder_cancel (GtkButton *, gpointer);
226 void on_list_table_clicked (GtkButton *, gpointer rfxbuilder);
227 void on_requirements_ok (GtkButton *, gpointer rfxbuilder);
228 void on_requirements_cancel (GtkButton *, gpointer);
229 void on_properties_clicked (GtkButton *, gpointer rfxbuilder);
230 void on_properties_ok (GtkButton *, gpointer rfxbuilder);
231 void on_properties_cancel (GtkButton *, gpointer);
232 void on_params_ok (GtkButton *, gpointer rfxbuilder);
233 void on_params_cancel (GtkButton *, gpointer);
234 void on_param_window_ok (GtkButton *, gpointer rfxbuilder);
235 void on_param_window_cancel (GtkButton *, gpointer);
236 void on_code_clicked (GtkButton *, gpointer rfxbuilder);
237 void on_code_ok (GtkButton *, gpointer rfxbuilder);
238 void on_code_cancel (GtkButton *, gpointer);
239 void on_triggers_ok (GtkButton *, gpointer rfxbuilder);
240 void on_triggers_cancel (GtkButton *, gpointer);
241 
242 
243 
244 
245 GtkWidget * make_param_dialog (gint pnum, rfx_build_window_t *rfxbuilder);
246 GtkWidget * make_param_window_dialog (gint hnum, rfx_build_window_t *rfxbuilder);
247 GtkWidget * make_trigger_dialog (gint tnum, rfx_build_window_t *rfxbuilder);
248 
249 void on_table_add_row (GtkButton *, gpointer rfxbuilder);
250 void on_table_edit_row (GtkButton *, gpointer rfxbuilder);
251 void on_table_swap_row (GtkButton *, gpointer rfxbuilder);
252 void on_table_delete_row (GtkButton *, gpointer rfxbuilder);
253 
254 void param_set_from_dialog (lives_param_t *copy_param, rfx_build_window_t *rfxbuilder);
255 
256 void after_param_dp_changed (GtkSpinButton *, gpointer rfxbuilder);
257 void after_param_min_changed (GtkSpinButton *, gpointer rfxbuilder);
258 void after_param_max_changed (GtkSpinButton *, gpointer rfxbuilder);
259 void after_param_def_changed (GtkSpinButton *, gpointer rfxbuilder);
260 void after_rfxbuilder_type_toggled (GtkToggleButton *, gpointer rfxbuilder);
261 void on_param_type_changed (GtkComboBox *, gpointer rfxbuilder);
262 void on_paramw_kw_changed (GtkComboBox *, gpointer rfxbuilder);
263 void on_paramw_sp_changed (GtkComboBox *, gpointer rfxbuilder);
264 void on_paramw_spsub_changed (GtkComboBox *, gpointer rfxbuilder);
265 void on_script_status_changed (GtkComboBox *, gpointer combo);
266 
267 // fileselectors
268 void on_export_rfx_ok (GtkButton *, gchar *script_name);
269 void on_import_rfx_ok (GtkButton *, gpointer status);
270 
272 void add_rfx_effects(void);
273 
274 // utility functions
275 gchar *prompt_for_script_name (const gchar *sname, lives_rfx_status_t status);
276 gboolean check_builder_programs (void);
277 GList *get_script_list (gshort status);
278 
280 gboolean perform_param_checks (rfx_build_window_t *, gint index, gint rows);
281 
282 
283 // read/write script files
285 gboolean script_to_rfxbuilder (rfx_build_window_t *, const gchar *script_file);
286 
287 GList *get_script_section (const gchar *section, const gchar *script_file, gboolean strip);
288