LiVES  3.0.2
rfx-builder.h
Go to the documentation of this file.
1 // rfx-builder.h
2 // LiVES
3 // (c) G. Finch 2004 - 2019 <salsaman+lives@gmail.com>
4 // released under the GNU GPL 3 or later
5 // see file ../COPYING or www.gnu.org for licensing details
6 
7 #ifndef HAS_LIVES_RFX_BUILDER_H
8 #define HAS_LIVES_RFX_BUILDER_H
9 
10 #define RFX_BUILDER "build-lives-rfx-plugin"
11 
13 #define RFX_VERSION "1.8"
14 
16 #define RFX_BUILDER_MULTI "build-lives-rfx-plugin-multi"
17 
19 #define RFXBUILDER_SCRIPT_SUFFIX "script"
20 
22 #define MAXFLOATLEN 11
23 
25 #define MAXINTLEN strlen(lives_strdup_printf("%d", LIVES_MAXINT))
26 
27 // advanced menu entries
28 void on_new_rfx_activate(LiVESMenuItem *, livespointer status);
29 void on_edit_rfx_activate(LiVESMenuItem *, livespointer status);
30 void on_copy_rfx_activate(LiVESMenuItem *, livespointer);
31 void on_rename_rfx_activate(LiVESMenuItem *, livespointer);
32 void on_delete_rfx_activate(LiVESMenuItem *, livespointer status);
33 void on_rebuild_rfx_activate(LiVESMenuItem *, livespointer);
34 void on_promote_rfx_activate(LiVESMenuItem *, livespointer);
35 void on_import_rfx_activate(LiVESMenuItem *, livespointer status);
36 void on_export_rfx_activate(LiVESMenuItem *, livespointer status);
37 
38 // the builder window
39 
41 #define RFXBUILD_MAX_REQ 128
42 
44 #define RFXBUILD_MAX_PARAMS 32
45 
47 #define RFXBUILD_MAX_PARAMW_HINTS 512
48 
51 #define RFXBUILD_MAX_TROWS 512
52 
53 
54 #define PREF_RFXDIALOG_W ((int)(720.*widget_opts.scale))
55 #define PREF_RFXDIALOG_H ((int)(650.*widget_opts.scale))
56 
57 #define WINH_SAFETY
58 
60 #define RFXBUILD_MAX_DP 16
61 typedef struct {
62  int when;
63  char *code;
65 
66 typedef enum {
73 
74 typedef enum {
80 
81 typedef enum {
88 
89 typedef enum {
94 
95 typedef struct {
97 
98  LiVESWidget *dialog;
99  LiVESWidget *name_entry;
100  LiVESWidget *spinbutton_version;
101  LiVESWidget *author_entry;
102  LiVESWidget *url_entry;
103  LiVESWidget *menu_text_entry;
104  LiVESWidget *action_desc_hbox;
105  LiVESWidget *action_desc_entry;
106  LiVESWidget *action_desc_hsep;
107  LiVESWidget *spinbutton_min_frames;
111  LiVESWidget *type_tool_radiobutton;
113  LiVESWidget *langc_combo;
114  LiVESWidget *table;
115  LiVESWidget *requirements_button;
116  LiVESWidget *properties_button;
117  LiVESWidget *params_button;
118  LiVESWidget *param_window_button;
119  LiVESWidget *pre_button;
120  LiVESWidget *loop_button;
121  LiVESWidget *post_button;
122  LiVESWidget *trigger_button;
123  LiVESWidget *prop_slow;
124  LiVESWidget *prop_batchg;
125  LiVESWidget *hbox_batchg;
126  LiVESWidget *min_frames_label;
127 
129 
131 
133 
134  LiVESWidget *entry[RFXBUILD_MAX_TROWS];
135  LiVESWidget *entry2[RFXBUILD_MAX_TROWS];
136  LiVESWidget *entry3[RFXBUILD_MAX_TROWS];
137  LiVESWidget *param_dialog;
138  LiVESWidget *param_name_entry;
139  LiVESWidget *param_label_entry;
140  LiVESWidget *param_type_combo;
141  LiVESWidget *param_dp_label;
142  LiVESWidget *param_def_label;
143  LiVESWidget *param_min_label;
144  LiVESWidget *param_max_label;
145  LiVESWidget *param_step_label;
146  LiVESWidget *param_wrap_hbox;
148  LiVESWidget *param_strlist_hbox;
149  LiVESWidget *param_def_combo;
150  LiVESWidget *paramw_rest_entry;
151  LiVESWidget *paramw_kw_combo;
152  LiVESWidget *paramw_sp_combo;
153  LiVESWidget *paramw_spsub_combo;
154  LiVESWidget *paramw_rest_label;
155  LiVESWidget *hbox_bg;
156  LiVESWidget *param_strdef_button;
157  LiVESWidget *param_strdef_hbox;
158  LiVESWidget *trigger_when_entry;
159  LiVESWidget *spinbutton_param_dp;
161  LiVESWidget *spinbutton_param_def;
162  LiVESWidget *spinbutton_param_min;
163  LiVESWidget *spinbutton_param_max;
164  LiVESWidget *spinbutton_param_step;
165  LiVESWidget *code_textview;
166  LiVESWidget *new_entry_button;
167  LiVESWidget *edit_entry_button;
168  LiVESWidget *remove_entry_button;
169  LiVESWidget *move_up_button;
170  LiVESWidget *move_down_button;
171 
172  uint32_t props;
173 
174  char *pre_code;
175  char *loop_code;
176  char *post_code;
177 
179 
180  char *reqs[RFXBUILD_MAX_REQ];
181  int num_reqs;
183 
188 
189  char *paramw_hints[RFXBUILD_MAX_PARAMS];
192 
197 
199 
200  char *field_delim;
201 
203 
206 
207  char *script_name;
208  char *oname;
209 
214 
215  char *rfx_version;
218 
219 // builder window widgets/callbacks
220 rfx_build_window_t *make_rfx_build_window(const char *in_script_name, lives_rfx_status_t in_status);
221 void on_rfxbuilder_ok(LiVESButton *, livespointer);
222 void on_rfxbuilder_cancel(LiVESButton *, livespointer);
224 void on_list_table_clicked(LiVESButton *, livespointer rfxbuilder);
225 void on_requirements_ok(LiVESButton *, livespointer rfxbuilder);
226 void on_requirements_cancel(LiVESButton *, livespointer);
227 void on_properties_clicked(LiVESButton *, livespointer rfxbuilder);
228 void on_properties_ok(LiVESButton *, livespointer rfxbuilder);
229 void on_params_ok(LiVESButton *, livespointer rfxbuilder);
230 void on_params_cancel(LiVESButton *, livespointer);
231 void on_param_window_ok(LiVESButton *, livespointer rfxbuilder);
232 void on_param_window_cancel(LiVESButton *, livespointer);
233 void on_code_clicked(LiVESButton *, livespointer rfxbuilder);
234 void on_code_ok(LiVESButton *, livespointer rfxbuilder);
235 void on_code_cancel(LiVESButton *, livespointer);
236 void on_triggers_ok(LiVESButton *, livespointer rfxbuilder);
237 void on_triggers_cancel(LiVESButton *, livespointer);
238 
240 
241 LiVESWidget *make_param_dialog(int pnum, rfx_build_window_t *rfxbuilder);
242 LiVESWidget *make_param_window_dialog(int hnum, rfx_build_window_t *rfxbuilder);
243 LiVESWidget *make_trigger_dialog(int tnum, rfx_build_window_t *rfxbuilder);
244 
245 void on_table_add_row(LiVESButton *, livespointer rfxbuilder);
246 void on_table_edit_row(LiVESButton *, livespointer rfxbuilder);
247 void on_table_swap_row(LiVESButton *, livespointer rfxbuilder);
248 void on_table_delete_row(LiVESButton *, livespointer rfxbuilder);
249 
250 void param_set_from_dialog(lives_param_t *copy_param, rfx_build_window_t *rfxbuilder);
251 
252 void after_param_dp_changed(LiVESSpinButton *, livespointer rfxbuilder);
253 void after_param_min_changed(LiVESSpinButton *, livespointer rfxbuilder);
254 void after_param_max_changed(LiVESSpinButton *, livespointer rfxbuilder);
255 void after_param_def_changed(LiVESSpinButton *, livespointer rfxbuilder);
256 void after_rfxbuilder_type_toggled(LiVESToggleButton *, livespointer rfxbuilder);
257 void on_param_type_changed(LiVESCombo *, livespointer rfxbuilder);
258 void on_paramw_kw_changed(LiVESCombo *, livespointer rfxbuilder);
259 void on_paramw_sp_changed(LiVESCombo *, livespointer rfxbuilder);
260 void on_paramw_spsub_changed(LiVESCombo *, livespointer rfxbuilder);
261 void populate_script_combo(LiVESCombo *script_combo, lives_rfx_status_t status);
262 void on_script_status_changed(LiVESCombo *status_combo, livespointer script_combo);
263 
264 // fileselectors
265 void on_export_rfx_ok(LiVESButton *, char *script_name);
266 void on_import_rfx_ok(LiVESButton *, livespointer status);
267 
269 void add_rfx_effects(void);
270 
271 // utility functions
272 char *prompt_for_script_name(const char *sname, lives_rfx_status_t status);
273 boolean check_builder_programs(void);
274 LiVESList *get_script_list(short status);
275 
277 boolean perform_param_checks(rfx_build_window_t *, int index, int rows);
278 
279 // read/write script files
281 boolean script_to_rfxbuilder(rfx_build_window_t *, const char *script_file);
282 
283 LiVESList *get_script_section(const char *section, const char *script_file, boolean strip);
284 
285 #endif // HAS_LIVES_RFX_BUILDER_H
LiVESList * get_script_section(const char *section, const char *script_file, boolean strip)
Definition: rfx-builder.c:3575
lives_rfx_build_type_t
Definition: rfx-builder.h:66
void on_table_swap_row(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:1589
boolean perform_rfxbuilder_checks(rfx_build_window_t *)
Definition: rfx-builder.c:2867
lives_rfx_table_type_t table_type
Definition: rfx-builder.h:128
#define RFXBUILD_MAX_TROWS
Definition: rfx-builder.h:51
void populate_script_combo(LiVESCombo *script_combo, lives_rfx_status_t status)
Definition: rfx-builder.c:4141
void on_rename_rfx_activate(LiVESMenuItem *, livespointer)
Definition: rfx-builder.c:67
void on_edit_rfx_activate(LiVESMenuItem *, livespointer status)
Definition: rfx-builder.c:29
LiVESWidget * author_entry
Definition: rfx-builder.h:101
LiVESList * get_script_list(short status)
Definition: rfx-builder.c:4176
void after_param_def_changed(LiVESSpinButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:2251
void on_params_cancel(LiVESButton *, livespointer)
Definition: rfx-builder.c:756
LiVESWidget * action_desc_hsep
Definition: rfx-builder.h:106
void on_code_cancel(LiVESButton *, livespointer)
char * prompt_for_script_name(const char *sname, lives_rfx_status_t status)
Definition: rfx-builder.c:3927
void on_params_ok(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:721
LiVESWidget * param_strlist_hbox
Definition: rfx-builder.h:148
LiVESWidget * spinbutton_param_def
Definition: rfx-builder.h:161
LiVESWidget * spinbutton_param_step
Definition: rfx-builder.h:164
LiVESWidget * pre_button
Definition: rfx-builder.h:119
Definition: rfx-builder.h:77
Definition: rfx-builder.h:71
Definition: rfx-builder.h:69
#define RFXBUILD_MAX_PARAMS
maximum parameters
Definition: rfx-builder.h:44
LiVESWidget * param_wrap_hbox
Definition: rfx-builder.h:146
Definition: rfx-builder.h:68
int when
Definition: rfx-builder.h:62
void on_rfxbuilder_ok(LiVESButton *, livespointer)
Definition: rfx-builder.c:2803
void on_properties_clicked(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:937
LiVESWidget * new_entry_button
Definition: rfx-builder.h:166
void on_import_rfx_ok(LiVESButton *, livespointer status)
void on_param_type_changed(LiVESCombo *, livespointer rfxbuilder)
Definition: rfx-builder.c:2280
void on_paramw_spsub_changed(LiVESCombo *, livespointer rfxbuilder)
Definition: rfx-builder.c:2584
LiVESWidget * paramw_spsub_combo
Definition: rfx-builder.h:153
LiVESWidget * make_param_dialog(int pnum, rfx_build_window_t *rfxbuilder)
Definition: rfx-builder.c:1861
void on_export_rfx_activate(LiVESMenuItem *, livespointer status)
Definition: rfx-builder.c:3821
LiVESWidget * param_def_label
Definition: rfx-builder.h:142
LiVESWidget * type_tool_radiobutton
Definition: rfx-builder.h:111
void on_code_ok(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:801
boolean perform_param_checks(rfx_build_window_t *, int index, int rows)
Definition: rfx-builder.c:2924
void add_rfx_effects(void)
add dynamic menu entries
Definition: rfx-builder.c:4195
#define RFXBUILD_MAX_REQ
maximum requirements
Definition: rfx-builder.h:41
lives_param_t * params
store our parameters
Definition: rfx-builder.h:184
Definition: rfx-builder.h:67
void on_table_delete_row(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:1636
ulong def_spin_f
Definition: rfx-builder.h:212
void on_table_edit_row(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:1474
void param_set_from_dialog(lives_param_t *copy_param, rfx_build_window_t *rfxbuilder)
Definition: rfx-builder.c:1401
lives_param_t * copy_params
store our parameters while editing
Definition: rfx-builder.h:185
int num_params
upper limit is RFXBUILD_MAX_PARAMS-1
Definition: rfx-builder.h:186
void after_rfxbuilder_type_toggled(LiVESToggleButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:429
lives_rfx_code_type_t
Definition: rfx-builder.h:81
LiVESWidget * spinbutton_param_min
Definition: rfx-builder.h:162
LiVESWidget * trigger_button
Definition: rfx-builder.h:122
char * loop_code
Definition: rfx-builder.h:175
int onum_reqs
Definition: rfx-builder.h:182
LiVESWidget * code_textview
Definition: rfx-builder.h:165
LiVESWidget * url_entry
Definition: rfx-builder.h:102
rfx_trigger_t * copy_triggers
store triggers while editing
Definition: rfx-builder.h:194
boolean has_init_trigger
Definition: rfx-builder.h:198
Definition: rfx-builder.h:85
LiVESWidget * spinbutton_param_max
Definition: rfx-builder.h:163
Definition: rfx-builder.h:76
void on_code_clicked(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:2677
void on_rfxbuilder_cancel(LiVESButton *, livespointer)
Definition: rfx-builder.c:2814
LiVESWidget * menu_text_entry
Definition: rfx-builder.h:103
boolean rfxbuilder_to_script(rfx_build_window_t *)
Definition: rfx-builder.c:2942
LiVESWidget * requirements_button
Definition: rfx-builder.h:115
LiVESWidget * dialog
Definition: rfx-builder.h:98
int edit_param
Definition: rfx-builder.h:178
uint32_t props
Definition: rfx-builder.h:172
Definition: rfx-builder.h:61
LiVESWidget * param_def_combo
Definition: rfx-builder.h:149
ulong step_spin_f
Definition: rfx-builder.h:213
LiVESWidget * param_dp_label
Definition: rfx-builder.h:141
LiVESWidget * spinbutton_min_frames
Definition: rfx-builder.h:107
LiVESWidget * hbox_batchg
Definition: rfx-builder.h:125
LiVESWidget * paramw_sp_combo
Definition: rfx-builder.h:152
Definition: rfx-builder.h:78
LiVESWidget * param_wrap_checkbutton
Definition: rfx-builder.h:147
boolean check_builder_programs(void)
Definition: rfx-builder.c:3670
LiVESWidget * param_min_label
Definition: rfx-builder.h:143
LiVESWidget * type_utility_radiobutton
Definition: rfx-builder.h:112
char * oname
Definition: rfx-builder.h:208
boolean script_to_rfxbuilder(rfx_build_window_t *, const char *script_file)
Definition: rfx-builder.c:3270
LiVESWidget * table
Definition: rfx-builder.h:114
LiVESWidget * make_trigger_dialog(int tnum, rfx_build_window_t *rfxbuilder)
Definition: rfx-builder.c:2598
char * post_code
Definition: rfx-builder.h:176
lives_rfx_status_t
Definition: plugins.h:446
LiVESWidget * type_effect0_radiobutton
Definition: rfx-builder.h:110
int onum_triggers
Definition: rfx-builder.h:196
LiVESWidget * type_effect2_radiobutton
Definition: rfx-builder.h:109
void on_param_window_ok(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:777
LiVESWidget * param_type_combo
Definition: rfx-builder.h:140
LiVESWidget * edit_entry_button
Definition: rfx-builder.h:167
lives_rfx_builder_mode_t mode
Definition: rfx-builder.h:202
LiVESWidget * action_desc_entry
Definition: rfx-builder.h:105
Definition: rfx-builder.h:83
LiVESWidget * type_effect1_radiobutton
Definition: rfx-builder.h:108
void on_list_table_clicked(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:471
void on_export_rfx_ok(LiVESButton *, char *script_name)
void on_copy_rfx_activate(LiVESMenuItem *, livespointer)
Definition: rfx-builder.c:53
lives_rfx_table_type_t
Definition: rfx-builder.h:74
LiVESWidget * make_param_window_dialog(int hnum, rfx_build_window_t *rfxbuilder)
Definition: rfx-builder.c:2421
LiVESWidget * paramw_rest_entry
Definition: rfx-builder.h:150
LiVESWidget * langc_combo
Definition: rfx-builder.h:113
ulong max_spin_f
Definition: rfx-builder.h:211
Definition: plugins.h:383
int num_paramw_hints
upper limit is RFXBUILD_MAX_PARAMW_HINTS-1
Definition: rfx-builder.h:190
LiVESWidget * param_step_label
Definition: rfx-builder.h:145
void after_param_dp_changed(LiVESSpinButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:2104
int num_reqs
Definition: rfx-builder.h:181
void rfxbuilder_destroy(rfx_build_window_t *)
Definition: rfx-builder.c:2822
void on_paramw_sp_changed(LiVESCombo *, livespointer rfxbuilder)
Definition: rfx-builder.c:2560
Definition: rfx-builder.h:75
Definition: rfx-builder.h:91
void on_paramw_kw_changed(LiVESCombo *, livespointer rfxbuilder)
Definition: rfx-builder.c:2541
void on_properties_ok(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:701
int table_rows
Definition: rfx-builder.h:130
int table_swap_row2
Definition: rfx-builder.h:205
#define ulong
Definition: main.h:137
void on_rebuild_rfx_activate(LiVESMenuItem *, livespointer)
Definition: rfx-builder.c:3634
lives_rfx_builder_mode_t
Definition: rfx-builder.h:89
char * script_name
Definition: rfx-builder.h:207
LiVESWidget * post_button
Definition: rfx-builder.h:121
Definition: rfx-builder.h:86
LiVESWidget * param_dialog
Definition: rfx-builder.h:137
lives_rfx_build_type_t type
Definition: rfx-builder.h:96
LiVESWidget * paramw_kw_combo
Definition: rfx-builder.h:151
LiVESWidget * param_max_label
Definition: rfx-builder.h:144
char * rfx_version
Definition: rfx-builder.h:215
Definition: rfx-builder.h:70
LiVESWidget * trigger_when_entry
Definition: rfx-builder.h:158
Definition: rfx-builder.h:90
LiVESWidget * param_label_entry
Definition: rfx-builder.h:139
LiVESWidget * spinbutton_param_dp
Definition: rfx-builder.h:159
LiVESWidget * spinbutton_param_group
Definition: rfx-builder.h:160
Definition: rfx-builder.h:92
void after_param_min_changed(LiVESSpinButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:2152
LiVESWidget * properties_button
Definition: rfx-builder.h:116
void on_requirements_ok(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:679
void on_table_add_row(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:1046
void on_triggers_cancel(LiVESButton *, livespointer)
Definition: rfx-builder.c:890
void on_delete_rfx_activate(LiVESMenuItem *, livespointer status)
Definition: rfx-builder.c:3699
rfx_trigger_t * triggers
Definition: rfx-builder.h:193
void after_param_max_changed(LiVESSpinButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:2202
ulong min_spin_f
Definition: rfx-builder.h:210
LiVESWidget * min_frames_label
Definition: rfx-builder.h:126
char * field_delim
Definition: rfx-builder.h:200
LiVESWidget * prop_slow
Definition: rfx-builder.h:123
void on_new_rfx_activate(LiVESMenuItem *, livespointer status)
Definition: rfx-builder.c:20
char * code
Definition: rfx-builder.h:63
LiVESWidget * action_desc_hbox
Definition: rfx-builder.h:104
LiVESWidget * param_strdef_button
Definition: rfx-builder.h:156
LiVESWidget * param_window_button
Definition: rfx-builder.h:118
LiVESWidget * remove_entry_button
Definition: rfx-builder.h:168
int num_triggers
upper limit is RFXBUILD_MAX_PARAMS, 0 == init
Definition: rfx-builder.h:195
LiVESWidget * name_entry
Definition: rfx-builder.h:99
lives_rfx_code_type_t codetype
Definition: rfx-builder.h:132
LiVESWidget * prop_batchg
Definition: rfx-builder.h:124
Definition: rfx-builder.h:84
void on_triggers_ok(LiVESButton *, livespointer rfxbuilder)
Definition: rfx-builder.c:867
LiVESWidget * paramw_rest_label
Definition: rfx-builder.h:154
char * pre_code
Definition: rfx-builder.h:174
LiVESWidget * spinbutton_version
Definition: rfx-builder.h:100
LiVESWidget * hbox_bg
Definition: rfx-builder.h:155
void on_param_window_cancel(LiVESButton *, livespointer)
Definition: rfx-builder.c:793
int onum_params
Definition: rfx-builder.h:187
LiVESWidget * move_down_button
Definition: rfx-builder.h:170
LiVESWidget * loop_button
Definition: rfx-builder.h:120
void on_promote_rfx_activate(LiVESMenuItem *, livespointer)
Definition: rfx-builder.c:3755
LiVESWidget * params_button
Definition: rfx-builder.h:117
rfx_build_window_t * make_rfx_build_window(const char *in_script_name, lives_rfx_status_t in_status)
Definition: rfx-builder.c:76
void on_import_rfx_activate(LiVESMenuItem *, livespointer status)
Definition: rfx-builder.c:3853
int onum_paramw_hints
Definition: rfx-builder.h:191
void on_requirements_cancel(LiVESButton *, livespointer)
Definition: rfx-builder.c:693
Definition: rfx-builder.h:95
LiVESWidget * move_up_button
Definition: rfx-builder.h:169
void on_script_status_changed(LiVESCombo *status_combo, livespointer script_combo)
Definition: rfx-builder.c:4155
LiVESWidget * param_name_entry
Definition: rfx-builder.h:138
Definition: rfx-builder.h:82
int plugin_version
Definition: rfx-builder.h:216
LiVESWidget * param_strdef_hbox
Definition: rfx-builder.h:157
int table_swap_row1
Definition: rfx-builder.h:204