13 static int old_rte_keys_virtual = 0;
15 static LiVESWidget **key_checks;
16 static LiVESWidget **key_grabs;
17 static LiVESWidget **mode_radios;
18 static LiVESWidget **combos;
19 static LiVESWidget **combo_entries;
20 static LiVESWidget *dummy_radio;
21 static LiVESWidget **nlabels;
22 static LiVESWidget **type_labels;
23 static LiVESWidget **param_buttons;
24 static LiVESWidget **conx_buttons;
25 static LiVESWidget **clear_buttons;
26 static LiVESWidget **info_buttons;
27 static LiVESWidget *clear_all_button;
28 static LiVESWidget *save_keymap_button;
29 static LiVESWidget *load_keymap_button;
31 static LiVESWidget *datacon_dialog = NULL;
35 static ulong *mode_ra_fns;
37 static int keyw = -1, modew = -1;
39 static LiVESList *hash_list = NULL;
40 static LiVESList *name_list = NULL;
41 static LiVESList *extended_name_list = NULL;
43 static boolean ca_canc;
45 static char *empty_string =
"";
49 static void set_param_and_con_buttons(
int key,
int mode);
50 static void check_clear_all_button(
void);
52 static boolean rte_window_is_hidden =
TRUE;
56 return rte_window_is_hidden;
70 for (j = modes - 1; j >= 0; j--) {
83 for (j = modes - 1; j >= 0; j--) {
85 set_param_and_con_buttons(i, j);
88 check_clear_all_button();
101 LIVES_POINTER_TO_INT(lives_widget_object_get_data(LIVES_WIDGET_OBJECT(key_checks[i]),
110 int idx = key * modes + mode;
140 if (user_data)
if (!
do_warning_dialog(
_(
"\n\nUnbind all effects from all keys/modes.\n\nAre you sure ?\n\n"))) {
151 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(key_checks[i]),
"active", LIVES_INT_TO_POINTER(
FALSE));
153 for (j = modes - 1; j >= 0; j--) {
168 static boolean save_keymap2_file(
char *kfname) {
177 char *hashname, *tmp;
187 if (
THREADVAR(write_failed) == kfd + 1)
break;
188 for (j = 0; j < modes; j++) {
191 if (
THREADVAR(write_failed) == kfd + 1)
break;
207 if (
THREADVAR(write_failed) == kfd + 1) {
212 }
while (retval == LIVES_RESPONSE_RETRY);
214 if (retval == LIVES_RESPONSE_CANCEL)
return FALSE;
219 static boolean save_keymap3_file(
char *kfname) {
229 int count = 0, totcons, nconns;
253 if (
THREADVAR(write_failed))
goto write_failed1;
261 if (
THREADVAR(write_failed))
goto write_failed1;
264 if (
THREADVAR(write_failed))
goto write_failed1;
273 nchans = cconx->nchans;
275 if (
THREADVAR(write_failed))
goto write_failed1;
277 for (i = 0; i < nchans; i++) {
279 if (
THREADVAR(write_failed))
goto write_failed1;
281 nconns = cconx->nconns[i];
283 if (
THREADVAR(write_failed))
goto write_failed1;
287 while (j < totcons) {
289 if (
THREADVAR(write_failed))
goto write_failed1;
292 if (
THREADVAR(write_failed))
goto write_failed1;
303 if (
THREADVAR(write_failed))
goto write_failed1;
313 if (
THREADVAR(write_failed))
goto write_failed1;
329 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
337 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
340 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
350 nparams = pconx->nparams;
352 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
354 for (i = 0; i < nparams; i++) {
356 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
358 nconns = pconx->nconns[i];
360 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
364 while (j < totcons) {
366 if (
THREADVAR(write_failed))
goto write_failed1;
369 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
380 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
383 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
393 if (
THREADVAR(write_failed) == kfd + 1)
goto write_failed1;
399 if (
THREADVAR(write_failed) == kfd + 1) {
404 }
while (retval == LIVES_RESPONSE_RETRY);
406 if (retval == LIVES_RESPONSE_CANCEL)
return FALSE;
411 static boolean on_save_keymap_clicked(LiVESButton *button, livespointer user_data) {
420 LiVESResponseType retval = LIVES_RESPONSE_NONE;
423 if (!
do_warning_dialog(
_(
"\n\nClick 'OK' to save this keymap as your default\n\n"))) {
428 d_print(
_(
"Saving keymap to %s\n"), keymap_file2);
430 d_print(
_(
"\nUpdating keymap file %s..."), keymap_file2);
434 if (!save_keymap2_file(keymap_file2)) {
436 retval = LIVES_RESPONSE_CANCEL;
441 if (!save_keymap3_file(keymap_file3)) {
443 retval = LIVES_RESPONSE_CANCEL;
480 retval = LIVES_RESPONSE_NONE;
497 for (i = 0; i < numfx; i++) {
507 }
while (retval == LIVES_RESPONSE_RETRY);
509 if (retval == LIVES_RESPONSE_CANCEL) {
517 retval = LIVES_RESPONSE_NONE;
531 for (i = 0; i < numfx; i++) {
542 }
while (retval == LIVES_RESPONSE_RETRY);
544 if (retval == LIVES_RESPONSE_CANCEL) {
580 if (bytes == (ssize_t)msglen && !
lives_strncmp((
char *)buf, msg, msglen)) {
589 if (bytes < (ssize_t)msglen) {
599 }
while (retval == LIVES_RESPONSE_RETRY);
611 if (retval == LIVES_RESPONSE_CANCEL)
return;
619 if (bytes == (ssize_t)msglen && !strncmp((
char *)buf, msg, msglen)) {
628 if (bytes < (ssize_t)msglen) {
637 }
while (retval == LIVES_RESPONSE_RETRY);
644 static void check_clear_all_button(
void) {
647 boolean hasone =
FALSE;
650 for (j = modes - 1; j >= 0; j--) {
659 static boolean read_perkey_defaults(
int kfd,
int key,
int mode,
int version) {
664 if (nparams > 65536) {
665 lives_printerr(
"Too many params, file is probably broken.\n");
680 static boolean load_datacons(
const char *fname, uint8_t **badkeymap) {
681 weed_plant_t **ochans, **ichans, **iparams;
683 weed_plant_t *filter;
690 boolean is_valid, is_valid2;
699 int version, nchans, nparams, nconns, ncconx, npconx;
701 int nichans, nochans, niparams, noparams,
error;
703 int okey, omode, ocnum, opnum, ikey, imode, icnum, ipnum, autoscale;
707 register int i, j, k, count;
728 for (count = 0; count < ncconx; count++) {
767 if (omode < 0 || omode >= maxmodes) is_valid =
FALSE;
771 for (i = 0; i < omode; i++) omode -= badkeymap[okey][omode];
774 if (omode < 0 || omode >= maxmodes) is_valid =
FALSE;
778 if (fidx == -1) is_valid =
FALSE;
782 if (strcmp(hashname, hashname2)) is_valid =
FALSE;
786 if (!strcmp(hashname, hashname2)) is_valid =
TRUE;
800 for (i = 0; i < nchans; i++) {
801 is_valid2 = is_valid;
811 nochans = weed_leaf_num_elements(filter, WEED_LEAF_OUT_CHANNEL_TEMPLATES);
812 if (ocnum >= nochans) is_valid2 =
FALSE;
814 ochans = weed_get_plantptr_array(filter, WEED_LEAF_OUT_CHANNEL_TEMPLATES, &
error);
825 for (j = 0; j < nconns; j++) {
860 if (imode < 0 || (ikey >= 0 && imode >= maxmodes)) is_valid2 =
FALSE;
864 for (k = 0; k < imode; k++) imode -= badkeymap[ikey][imode];
867 if (imode < 0 || (ikey >= 0 && imode >= maxmodes)) is_valid2 =
FALSE;
871 if (fidx == -1) is_valid2 =
FALSE;
875 if (strcmp(hashname, hashname2)) is_valid2 =
FALSE;
879 if (!strcmp(hashname, hashname2)) is_valid2 =
TRUE;
895 nichans = weed_leaf_num_elements(filter, WEED_LEAF_IN_CHANNEL_TEMPLATES);
896 if (icnum >= nichans) is_valid2 =
FALSE;
898 ichans = weed_get_plantptr_array(filter, WEED_LEAF_IN_CHANNEL_TEMPLATES, &
error);
922 for (count = 0; count < npconx; count++) {
961 if (omode < 0 || omode >= maxmodes) is_valid =
FALSE;
965 for (i = 0; i < omode; i++) omode -= badkeymap[okey][omode];
968 if (omode < 0 || omode >= maxmodes) is_valid =
FALSE;
972 if (fidx == -1) is_valid =
FALSE;
976 if (strcmp(hashname, hashname2)) is_valid =
FALSE;
980 if (!strcmp(hashname, hashname2)) is_valid =
TRUE;
994 for (i = 0; i < nparams; i++) {
995 is_valid2 = is_valid;
1005 noparams = weed_leaf_num_elements(filter, WEED_LEAF_OUT_PARAMETER_TEMPLATES);
1006 if (opnum >= noparams) is_valid2 =
FALSE;
1014 for (j = 0; j < nconns; j++) {
1049 if (imode < 0 || (ikey >= 0 && imode >= maxmodes)) is_valid2 =
FALSE;
1051 if (is_valid2 && ikey >= 0) {
1053 for (k = 0; k < imode; k++) imode -= badkeymap[ikey][imode];
1056 if (imode < 0 || (ikey >= 0 && imode >= maxmodes)) is_valid2 =
FALSE;
1058 if (is_valid2 && ikey >= 0) {
1060 if (fidx == -1) is_valid2 =
FALSE;
1064 if (strcmp(hashname, hashname2)) is_valid2 =
FALSE;
1068 if (!strcmp(hashname, hashname2)) is_valid2 =
TRUE;
1085 niparams = weed_leaf_num_elements(filter, WEED_LEAF_IN_PARAMETER_TEMPLATES);
1086 if (ipnum >= niparams) is_valid2 =
FALSE;
1089 iparams = weed_get_plantptr_array(filter, WEED_LEAF_IN_PARAMETER_TEMPLATES, &
error);
1115 }
while (retval == LIVES_RESPONSE_RETRY);
1117 if (retval == LIVES_RESPONSE_CANCEL) {
1126 static void set_param_and_con_buttons(
int key,
int mode) {
1130 int idx = key * modes + mode;
1155 LiVESList *list = NULL, *new_list = NULL;
1162 char *whole = lives_strdup(
""), *whole2;
1163 char *hashname, *hashname_new = NULL;
1172 int *def_modes = NULL;
1173 uint8_t **badkeymap = NULL;
1175 boolean notfound =
FALSE;
1176 boolean has_error =
FALSE;
1177 boolean eof =
FALSE;
1190 if (lives_file_test(keymap_file2, LIVES_FILE_TEST_EXISTS)) {
1193 keymap_file = keymap_file2;
1198 d_print(
_(
"Loading default keymap from %s..."), keymap_file);
1200 if (!lives_file_test(keymap_file, LIVES_FILE_TEST_EXISTS)) {
1201 d_print(
_(
"file not found, skipping.\n"));
1213 if (!(kfile = fopen(keymap_file,
"r"))) {
1219 msg =
lives_strdup_printf(
_(
"\n\nUnable to read from keymap file\n%s\nError code %d\n"), keymap_file, errno);
1223 if (retval == LIVES_RESPONSE_CANCEL) {
1229 }
while (retval == LIVES_RESPONSE_RETRY);
1249 if (!keymap_file2) {
1251 while (fgets(buff, 65536, kfile)) {
1253 line = (lives_strstrip(buff));
1255 whole2 = lives_strconcat(whole, line, NULL);
1258 if (linelen < (
size_t)65535) {
1259 list = lives_list_append(list, lives_strdup(whole));
1261 whole = lives_strdup(
"");
1268 if (!strcmp((
char *)lives_list_nth_data(list, 0),
"LiVES keymap file version 2") ||
1269 !strcmp((
char *)lives_list_nth_data(list, 0),
"LiVES keymap file version 1")) update = 1;
1271 if (!strcmp((
char *)lives_list_nth_data(list, 0),
"LiVES keymap file version 3")) update = 2;
1287 for (i = 1; (!keymap_file2 && i < lives_list_length(list)) || (keymap_file2 && !eof); i++) {
1290 if (!keymap_file2) {
1293 line = (
char *)lives_list_nth_data(list, i);
1296 d_print(
_(
"Invalid line %d in %s\n"), i, keymap_file2 ? keymap_file2 : keymap_file);
1300 array = lives_strsplit(line,
"|", -1);
1302 if (!strcmp(array[0],
"defaults")) {
1303 lives_strfreev(array);
1304 array = lives_strsplit(line,
"|", 2);
1307 lives_strfreev(array);
1311 if (!strcmp(array[0],
"sizes")) {
1312 lives_strfreev(array);
1313 array = lives_strsplit(line,
"|", 2);
1316 lives_strfreev(array);
1320 key = atoi(array[0]);
1322 hashname = lives_strdup(array[1]);
1323 lives_strfreev(array);
1328 new_list = lives_list_append(new_list, hashname_new);
1358 g_print(
"keyl %d wanted %d got %ld\n", i, hlen, bytes);
1366 array = lives_strsplit(hashname,
"|", -1);
1368 hashname = lives_strdup(array[0]);
1369 lives_strfreev(array);
1380 if (!read_perkey_defaults(kfd, -1, -1,
version))
break;
1385 def_modes[key - 1]++;
1387 if (strncmp(hashname,
"Weed", 4) ||
lives_strlen(hashname) < 5) {
1393 badkeymap[key - 1][def_modes[key - 1]]++;
1396 if (!read_perkey_defaults(kfd, -1, -1,
version))
break;
1398 def_modes[key - 1]--;
1403 whashname = hashname + 4;
1414 badkeymap[key - 1][def_modes[key - 1]]++;
1417 if (!read_perkey_defaults(kfd, -1, -1,
version))
break;
1419 def_modes[key - 1]--;
1427 (
_(
"This version of LiVES cannot mix generators/non-generators on the same key (%d) !\n"), key)));
1430 badkeymap[key - 1][def_modes[key - 1]]++;
1433 if (!read_perkey_defaults(kfd, -1, -1,
version))
break;
1435 def_modes[key - 1]--;
1444 if (!read_perkey_defaults(kfd, -1, -1,
version))
break;
1446 def_modes[key - 1]--;
1450 int idx = (key - 1) * modes + mode;
1457 hashname = (
char *)lives_list_nth_data(hash_list, fx_idx);
1458 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(combos[idx]),
"hashname", hashname);
1459 }
else lives_widget_object_set_data(LIVES_WIDGET_OBJECT(combos[idx]),
"hashname", empty_string);
1462 set_param_and_con_buttons(key - 1, mode);
1467 if (!read_perkey_defaults(kfd, key - 1, def_modes[key - 1],
version))
break;
1471 if (!keymap_file2) {
1476 on_save_keymap_clicked(NULL, NULL);
1483 on_save_keymap_clicked(NULL, NULL);
1489 if (lives_file_test(keymap_file3, LIVES_FILE_TEST_EXISTS)) {
1490 d_print(
_(
"Loading data connection map from %s..."), keymap_file3);
1492 if (load_datacons(keymap_file3, badkeymap))
d_print_done();
1496 check_clear_all_button();
1521 weed_plant_t *filter;
1523 LiVESWidget *dialog;
1528 LiVESWidget *textview;
1529 LiVESWidget *scrolledwindow;
1530 LiVESWidget *ok_button;
1532 char *filter_name, *filter_author, *filter_copyright;
1533 char *filter_extra_authors = NULL;
1534 char *filter_description;
1535 char *url, *license, *type;
1536 char *plugin_name, *plname, *package_name;
1539 boolean has_desc =
FALSE;
1540 boolean has_url =
FALSE;
1541 boolean has_license =
FALSE;
1542 boolean has_copyright =
FALSE;
1547 int key_mode = LIVES_POINTER_TO_INT(user_data);
1549 int key = (int)(key_mode / modes);
1550 int mode = key_mode - key * modes;
1561 filter_name = weed_get_string_value(filter, WEED_LEAF_NAME, &weed_error);
1563 filter_author = weed_get_string_value(filter,
WEED_LEAF_AUTHOR, &weed_error);
1564 if (weed_plant_has_leaf(filter, WEED_LEAF_EXTRA_AUTHORS)) filter_extra_authors = weed_get_string_value(filter,
1565 WEED_LEAF_EXTRA_AUTHORS, &weed_error);
1566 if (weed_plant_has_leaf(filter, WEED_LEAF_COPYRIGHT)) {
1567 filter_copyright = weed_get_string_value(filter, WEED_LEAF_COPYRIGHT, &weed_error);
1568 has_copyright =
TRUE;
1570 if (weed_plant_has_leaf(filter, WEED_LEAF_DESCRIPTION)) {
1571 filter_description = weed_get_string_value(filter, WEED_LEAF_DESCRIPTION, &weed_error);
1574 if (weed_plant_has_leaf(filter, WEED_LEAF_URL)) {
1575 url = weed_get_string_value(filter, WEED_LEAF_URL, &weed_error);
1579 if (weed_plant_has_leaf(filter, WEED_LEAF_LICENSE)) {
1580 license = weed_get_string_value(filter, WEED_LEAF_LICENSE, &weed_error);
1584 filter_version = weed_get_int_value(filter, WEED_LEAF_VERSION, &weed_error);
1618 if (filter_extra_authors) {
1663 if (has_copyright) {
1685 if (has_desc)
lives_free(filter_description);
1688 if (has_copyright)
lives_free(filter_copyright);
1700 int idx = LIVES_POINTER_TO_INT(user_data);
1702 int key = (int)(idx / modes);
1703 int mode = idx - key * modes;
1731 idx = key * modes + i;
1735 char *hashname = (
char *)lives_list_nth_data(hash_list, fx_idx);
1736 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(combos[idx]),
"hashname", hashname);
1737 }
else lives_widget_object_set_data(LIVES_WIDGET_OBJECT(combos[idx]),
"hashname", empty_string);
1740 set_param_and_con_buttons(key, i);
1747 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(combos[idx]),
"hashname", empty_string);
1750 set_param_and_con_buttons(key, i);
1763 static void on_datacon_clicked(LiVESButton * button, livespointer user_data) {
1764 int idx = LIVES_POINTER_TO_INT(user_data);
1766 int key = (int)(idx / modes);
1767 int mode = idx - key * modes;
1777 weed_plant_t *gui, *tgui;
1778 for (
int i = 0; i < nparams; i++) {
1781 weed_leaf_copy(tgui, WEED_LEAF_CHOICES, gui, WEED_LEAF_CHOICES);
1787 static void on_params_clicked(LiVESButton * button, livespointer user_data) {
1788 int idx = LIVES_POINTER_TO_INT(user_data);
1790 int key = (int)(idx / modes);
1791 int mode = idx - key * modes;
1856 rte_window_is_hidden =
TRUE;
1883 static boolean on_rtew_ok_clicked(LiVESButton * button, livespointer user_data) {
1892 "generators and non-generators on the same key.\n\n"));
1914 LiVESTreeIter iter1;
1915 LiVESTreeModel *model;
1920 char *hashname2 = (
char *)lives_widget_object_get_data(LIVES_WIDGET_OBJECT(combo),
"hashname");
1922 int key_mode = LIVES_POINTER_TO_INT(user_data);
1924 int key = (int)(key_mode / modes);
1925 int mode = key_mode - key * modes;
1941 if (!strcmp(hashname1, hashname2)) {
1947 for (i = mode - 1; i >= 0; i--) {
1952 if (i == 0) mode = 0;
1977 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(combo),
"hashname", hashname1);
1980 set_param_and_con_buttons(key, mode);
1982 check_clear_all_button();
1993 static LiVESTreeStore *tstore = NULL;
1995 static LiVESTreeModel *rte_window_fx_model(
void) {
1996 weed_plant_t *pinfo;
1997 LiVESTreeIter iter1, iter2, iter3;
1999 LiVESList *list = extended_name_list;
2000 LiVESList *pname_list = name_list;
2001 LiVESList *phash_list = hash_list;
2005 char *pkg = NULL, *pkgstring, *fxname, *typestr;
2009 if (tstore)
return (LiVESTreeModel *)tstore;
2024 pname_list = pname_list->next;
2025 phash_list = phash_list->next;
2029 fxname = lives_strdup((
const char *)pname_list->data);
2035 pinfo = weed_get_plantptr_value(filter, WEED_LEAF_PLUGIN_INFO, NULL);
2036 if (weed_plant_has_leaf(pinfo, WEED_LEAF_PACKAGE_NAME))
2037 pkgstring = weed_get_string_value(pinfo, WEED_LEAF_PACKAGE_NAME, NULL);
2038 else pkgstring = NULL;
2063 HASH_COLUMN, lives_list_nth_data(hash_list, fx_idx), -1);
2071 HASH_COLUMN, lives_list_nth_data(hash_list, fx_idx), -1);
2078 pname_list = pname_list->next;
2079 phash_list = phash_list->next;
2084 return (LiVESTreeModel *)tstore;
2094 LiVESWidget *vbox, *vbox2;
2097 LiVESWidget *ok_button;
2098 LiVESWidget *top_vbox;
2099 LiVESWidget *hbuttonbox;
2101 LiVESWidget *scrolledwindow;
2103 LiVESSList *mode_group = NULL;
2104 LiVESSList *grab_group = NULL;
2106 LiVESAccelGroup *rtew_accel_group;
2108 LiVESTreeModel *model;
2110 char *tmp, *tmp2, *labelt;
2136 goto rte_window_ready;
2179 model = rte_window_fx_model();
2189 (LiVESAttachOptions)(LIVES_EXPAND | LIVES_FILL),
2190 (LiVESAttachOptions)(LIVES_EXPAND | LIVES_FILL), 0, 0);
2197 labelt = (
_(
"minus"));
break;
2199 labelt = (
_(
"equals"));
break;
2201 labelt = lives_strdup(
"????");
2222 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(key_checks[i]),
"active",
2225 ch_fns[i] = lives_signal_connect_after(LIVES_GUI_OBJECT(key_checks[i]), LIVES_WIDGET_TOGGLED_SIGNAL,
2232 (tmp2 = (
_(
"Grab keyboard for this effect key"))));
2237 gr_fns[i] = lives_signal_connect_after(LIVES_GUI_OBJECT(key_grabs[i]), LIVES_WIDGET_TOGGLED_SIGNAL,
2242 for (j = 0; j < modes; j++) {
2243 idx = i * modes + j;
2246 (LiVESAttachOptions)(LIVES_EXPAND | LIVES_FILL),
2247 (LiVESAttachOptions)(LIVES_EXPAND | LIVES_FILL), 0, 0);
2258 mode_ra_fns[idx] = lives_signal_connect_after(LIVES_GUI_OBJECT(mode_radios[idx]), LIVES_WIDGET_TOGGLED_SIGNAL,
2299 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(combo),
"hashname", empty_string);
2314 lives_signal_sync_connect(LIVES_GUI_OBJECT(combo), LIVES_WIDGET_CHANGED_SIGNAL,
2317 lives_signal_sync_connect(LIVES_GUI_OBJECT(info_buttons[idx]), LIVES_WIDGET_CLICKED_SIGNAL,
2320 lives_signal_sync_connect(LIVES_GUI_OBJECT(clear_buttons[idx]), LIVES_WIDGET_CLICKED_SIGNAL,
2323 lives_signal_sync_connect(LIVES_GUI_OBJECT(param_buttons[idx]), LIVES_WIDGET_CLICKED_SIGNAL,
2324 LIVES_GUI_CALLBACK(on_params_clicked), LIVES_INT_TO_POINTER(idx));
2326 lives_signal_sync_connect(LIVES_GUI_OBJECT(conx_buttons[idx]), LIVES_WIDGET_CLICKED_SIGNAL,
2327 LIVES_GUI_CALLBACK(on_datacon_clicked), LIVES_INT_TO_POINTER(idx));
2334 set_param_and_con_buttons(i, j);
2354 LIVES_RESPONSE_RESET);
2359 LIVES_RESPONSE_ACCEPT);
2364 LIVES_RESPONSE_BROWSE);
2391 LIVES_KEY_Escape, (LiVESXModifierType)0, (LiVESAccelFlags)0);
2394 LIVES_GUI_CALLBACK(on_rtew_ok_clicked), NULL);
2396 lives_signal_sync_connect(LIVES_GUI_OBJECT(ok_button), LIVES_WIDGET_CLICKED_SIGNAL,
2397 LIVES_GUI_CALLBACK(on_rtew_ok_clicked), NULL);
2400 LIVES_GUI_CALLBACK(on_save_keymap_clicked), NULL);
2404 LIVES_INT_TO_POINTER(1));
2408 LIVES_INT_TO_POINTER(1));
2413 rte_window_is_hidden =
FALSE;
2468 lives_widget_object_set_data(LIVES_WIDGET_OBJECT(key_checks[key]),
"active", LIVES_INT_TO_POINTER(on));
2514 int idx = LIVES_POINTER_TO_INT(user_data);
2534 LiVESWidget *textwidget = (LiVESWidget *)lives_widget_object_get_data(LIVES_WIDGET_OBJECT(
mainw->
textwidget_focus),
2548 weed_plant_t *ptmpl, *filter;
2555 LiVESWidget *textwidget = (LiVESWidget *)lives_widget_object_get_data(LIVES_WIDGET_OBJECT(
mainw->
textwidget_focus),
2577 if (weed_leaf_seed_type(ptmpl, WEED_LEAF_DEFAULT) == WEED_SEED_DOUBLE)
2600 weed_plant_t **ptmpls, **inp, **xinp;
2601 weed_plant_t **ctmpls;
2603 weed_plant_t *filter, *inst;
2605 LiVESList *child_list;
2607 LiVESWidget *pbox, *cancelbutton;
2609 boolean is_generic_defs =
FALSE;
2610 boolean add_pcons =
FALSE;
2614 int poffset = 0, ninpar, x;
2620 if (cancelbutton) is_generic_defs =
TRUE;
2622 inst = (weed_plant_t *)rfx->
source;
2627 if (is_generic_defs) {
2629 ptmpls = weed_get_plantptr_array(filter, WEED_LEAF_IN_PARAMETER_TEMPLATES, NULL);
2645 if (ninpar == 0) xinp = NULL;
2647 xinp = (weed_plant_t **)
lives_malloc((ninpar + 1) *
sizeof(weed_plant_t *));
2649 for (i = poffset; i < poffset + ninpar; i++) xinp[x++] = inp[i];
2665 inst = (weed_plant_t *)rfx->
source;
2678 if (is_generic_defs) {
2681 if (weed_plant_has_leaf(filter, WEED_LEAF_OUT_CHANNEL_TEMPLATES)) {
2682 ctmpls = weed_get_plantptr_array(filter, WEED_LEAF_OUT_CHANNEL_TEMPLATES, NULL);
2683 nchans = weed_leaf_num_elements(filter, WEED_LEAF_OUT_CHANNEL_TEMPLATES);
2684 for (i = 0; i < nchans; i++) {
2695 if (!LIVES_IS_WIDGET(
fx_dialog[1]->dialog))
return;
2702 for (i = 0; i < lives_list_length(child_list); i++) {
2703 LiVESWidget *widget = (LiVESWidget *)lives_list_nth_data(child_list, i);
2708 if (child_list) lives_list_free(child_list);