From 487f9bad4572a8a5ef36d35d7d09b8ee3c5dabfa Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jon.w.wilkes@gmail.com> Date: Sat, 14 Jan 2017 21:14:58 -0500 Subject: [PATCH] add skeleton for sending path/startup libs to the preferences dialog --- pd/nw/dialog_prefs.html | 10 ++++++++++ pd/nw/pdgui.js | 12 ++++++++++++ pd/src/s_path.c | 40 +++++++++++++++++++++++++++++++--------- 3 files changed, 53 insertions(+), 9 deletions(-) diff --git a/pd/nw/dialog_prefs.html b/pd/nw/dialog_prefs.html index f7cf05698..d1a669ceb 100644 --- a/pd/nw/dialog_prefs.html +++ b/pd/nw/dialog_prefs.html @@ -702,6 +702,14 @@ function gui_prefs_callback(name) { } } +function path_prefs_callback(use_stdpath, verbose, path_array) { + pdgui.post("path callback: " + path_array.join("\n")); +} + +function lib_prefs_callback(defeat_rt, flag_string, lib_array) { + pdgui.post("lib callback: " + lib_array.join("\n")); +} + // This gets called from the nw_create_window function in index.html // It provides us with our window id from the C side. Once we have it // we can create the menu and register event callbacks @@ -720,6 +728,8 @@ function register_window_id(gfxstub, attr_arrays) { pdgui.pdsend("pd audio-properties"); // request audio pref attrs pdgui.pdsend("pd midi-properties"); // request midi pref attrs pdgui.pdsend("pd gui-properties"); // request saved gui properties + pdgui.pdsend("pd start-path-dialog"); // request default system paths + pdgui.pdsend("pd start-startup-dialog"); // request default loaded libs document.getElementsByClassName("container")[0].style.setProperty("display", "inline"); } diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index 6792b491f..dfc010884 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -4480,6 +4480,18 @@ function gui_gui_properties(dummy, name) { } } +function gui_path_properties(dummy, use_stdpath, verbose, path_array) { + if (dialogwin["prefs"] !== null) { + dialogwin["prefs"].window.path_prefs_callback(use_stdpath, verbose, path_array); + } +} + +function gui_lib_properties(dummy, defeat_rt, flag_string, lib_array) { + if (dialogwin["prefs"] !== null) { + dialogwin["prefs"].window.lib_prefs_callback(defeat_rt, flag_string, lib_array); + } +} + // Let's try a closure for gui skins var skin = exports.skin = (function () { var dir = "css/"; diff --git a/pd/src/s_path.c b/pd/src/s_path.c index 04ec7aa8c..83bab45a2 100644 --- a/pd/src/s_path.c +++ b/pd/src/s_path.c @@ -772,11 +772,22 @@ void glob_start_path_dialog(t_pd *dummy) int i; t_namelist *nl; - sys_gui("global pd_path; set pd_path {}\n"); + //sys_gui("global pd_path; set pd_path {}\n"); + gui_start_vmess("gui_path_properties", "xii", + dummy, + sys_usestdpath, + sys_verbose + ); + gui_start_array(); for (nl = sys_searchpath, i = 0; nl; nl = nl->nl_next, i++) - sys_vgui("lappend pd_path {%s}\n", nl->nl_string); - sprintf(buf, "pdtk_path_dialog %%s %d %d\n", sys_usestdpath, sys_verbose); - gfxstub_new(&glob_pdobject, (void *)glob_start_path_dialog, buf); + { + //sys_vgui("lappend pd_path {%s}\n", nl->nl_string); + gui_s(nl->nl_string); + } + gui_end_array(); + gui_end_vmess(); + //sprintf(buf, "pdtk_path_dialog %%s %d %d\n", sys_usestdpath, sys_verbose); + //gfxstub_new(&glob_pdobject, (void *)glob_start_path_dialog, buf); } /* new values from dialog window */ @@ -802,12 +813,23 @@ void glob_start_startup_dialog(t_pd *dummy) int i; t_namelist *nl; - sys_gui("global pd_startup; set pd_startup {}\n"); + //sys_gui("global pd_startup; set pd_startup {}\n"); + gui_start_vmess("gui_lib_properties", "xis", + dummy, + sys_defeatrt, + sys_flags->s_name + ); + gui_start_array(); for (nl = sys_externlist, i = 0; nl; nl = nl->nl_next, i++) - sys_vgui("lappend pd_startup {%s}\n", nl->nl_string); - sprintf(buf, "pdtk_startup_dialog %%s %d \"%s\"\n", sys_defeatrt, - sys_flags->s_name); - gfxstub_new(&glob_pdobject, (void *)glob_start_startup_dialog, buf); + { + //sys_vgui("lappend pd_startup {%s}\n", nl->nl_string); + gui_s(nl->nl_string); + } + gui_end_array(); + gui_end_vmess(); + //sprintf(buf, "pdtk_startup_dialog %%s %d \"%s\"\n", sys_defeatrt, + // sys_flags->s_name); + //gfxstub_new(&glob_pdobject, (void *)glob_start_startup_dialog, buf); } /* new values from dialog window */ -- GitLab