diff --git a/pd/doc/5.reference/midi-help.pd b/pd/doc/5.reference/midi-help.pd index 58edae6523eeca62c4ff341be257c4c1ac3b276e..437223b7ee118901d95ce9d70e99d0b486b7ea5e 100644 --- a/pd/doc/5.reference/midi-help.pd +++ b/pd/doc/5.reference/midi-help.pd @@ -1,11 +1,9 @@ -#N canvas 430 38 555 619 10; +#N canvas 1 53 555 619 10; #X obj 0 595 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0 14 -228856 -66577 0; #X obj 0 0 cnv 15 552 40 empty \$0-pddp.cnv.header (MIDI) 3 12 0 18 -204280 -1 0; -#X obj 0 288 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 8 12 0 13 --228856 -1 0; -#N canvas 489 291 494 344 META 0; +#N canvas 403 185 494 367 META 0; #X text 12 105 LIBRARY internal; #X text 12 145 WEBSITE http://crca.ucsd.edu/~msp/; #X text 12 65 LICENSE SIBSD; @@ -20,13 +18,8 @@ touchin bendout ctlout midiout noteout pgmout polytouchout touchout ; #X text 12 165 RELEASE_DATE 1997; #X restore 500 597 pd META; -#X obj 0 495 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0 -13 -228856 -1 0; -#X obj 0 538 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12 +#X obj 0 561 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 8 12 0 13 -228856 -1 0; -#X obj 0 566 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 8 12 -0 13 -228856 -1 0; -#X text 98 542 (none); #N canvas 217 519 428 109 Related_objects 0; #X obj 62 43 makenote; #X obj 22 43 poly; @@ -35,66 +28,110 @@ touchin bendout ctlout midiout noteout pgmout polytouchout touchout 14 -204280 -1 0; #X text 8 2 (MIDI) Related Objects; #X restore 102 598 pd Related_objects; -#X obj 79 297 cnv 17 3 130 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856 --162280 0; -#X text 98 296 float; -#X text 98 353 list; -#X text 98 503 float; -#X obj 79 504 cnv 17 3 30 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856 --162280 0; -#X obj 79 440 cnv 17 3 45 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856 --162280 0; -#X text 98 439 float; -#X text 98 383 flush; -#X text 98 413 clear; -#X text 168 383 - output all values one by one \, in the order they -were received \, and clear the collection.; -#X text 168 503 - upon sending the "flush" message to the left inlet -\, [bag] will output each value in the order it was received.; -#X text 168 353 - a (value \, flag) pair is distributed to the two -inlets. Lists with more than two elements will be truncated.; -#X text 168 413 - clear the collection.; -#X text 167 439 - a float to the right inlet sets the "flag": if zero -\, values to the left inlet will not be added to the collection. If -nonzero \, values to the right inlet will be added to the collection. -; -#X text 168 296 - a float to the left inlet will be added to the collection -if the last value the right inlet received was nonzero. If the last -value the right inlet received was zero \, the float sent to the right -inlet will be removed from the collection.; #X text 11 23 MIDI input/output objects; -#X obj 86 86 bendin; -#X obj 86 123 bendout; -#X obj 131 86 ctlin; -#X obj 137 123 ctlout; -#X obj 215 86 notein; -#X obj 233 123 noteout; -#X obj 260 86 pgmin; -#X obj 284 123 pgmout; -#X obj 425 86 touchin; -#X obj 299 86 polytouchin; -#X obj 170 86 midiin; -#X obj 374 86 sysexin; -#X obj 182 123 midiout; -#X obj 329 123 polytouchout; -#X obj 410 123 touchout; -#X text 10 86 MIDI input:; -#X text 10 123 MIDI output:; -#X obj 320 185 pddp/pddplink touchin-help.pd; -#X obj 243 185 touchin; -#X obj 243 210 polytouchin; -#X obj 320 210 pddp/pddplink polytouchin-help.pd; -#X obj 243 235 touchout; -#X obj 320 235 pddp/pddplink touchout-help.pd; -#X obj 243 260 polytouchout; -#X obj 320 260 pddp/pddplink polytouchout-help.pd; -#X obj 80 185 midiin; -#X obj 80 235 sysexin; -#X obj 80 210 midiout; -#X obj 135 185 pddp/pddplink midiin-help.pd; -#X obj 135 235 pddp/pddplink sysexin-help.pd; -#X obj 135 210 pddp/pddplink midiout-help.pd; +#X obj 86 57 bendin; +#X obj 86 343 bendout; +#X obj 86 113 ctlin; +#X obj 86 403 ctlout; +#X obj 85 237 notein; +#X obj 267 343 noteout; +#X obj 266 57 pgmin; +#X obj 267 403 pgmout; +#X obj 267 237 touchin; +#X obj 267 113 polytouchin; +#X obj 85 177 midiin; +#X obj 267 177 sysexin; +#X obj 86 463 midiout; +#X obj 267 463 polytouchout; +#X obj 267 523 touchout; +#X text 10 57 MIDI input:; +#X text 10 319 MIDI output:; +#X obj 345 522 pddp/pddplink touchout-help.pd; +#X obj 146 464 pddp/pddplink midiout-help.pd; #X obj 4 597 pddp/pddplink all_about_help_patches.pd -text Usage Guide ; -#X text 77 151 Right-click the objects above and choose "Help" \, or -follow the links below for help on these objects:; +#X floatatom 86 78 5 0 0 0 - - -, f 5; +#X floatatom 119 78 5 0 0 0 - - -, f 5; +#X floatatom 86 141 5 0 0 0 - - -, f 5; +#X floatatom 126 141 5 0 0 0 - - -, f 5; +#X floatatom 166 141 5 0 0 0 - - -, f 5; +#X obj 346 462 pddp/pddplink polytouchout-help.pd; +#X floatatom 85 200 5 0 0 0 - - -, f 5; +#X floatatom 125 200 5 0 0 0 - - -, f 5; +#X floatatom 85 265 5 0 0 0 - - -, f 5; +#X floatatom 125 265 5 0 0 0 - - -, f 5; +#X floatatom 165 265 5 0 0 0 - - -, f 5; +#X floatatom 266 79 5 0 0 0 - - -, f 5; +#X floatatom 301 79 5 0 0 0 - - -, f 5; +#X floatatom 267 135 5 0 0 0 - - -, f 5; +#X floatatom 307 135 5 0 0 0 - - -, f 5; +#X floatatom 347 135 5 0 0 0 - - -, f 5; +#X floatatom 267 199 5 0 0 0 - - -, f 5; +#X floatatom 307 199 5 0 0 0 - - -, f 5; +#X floatatom 267 259 5 0 0 0 - - -, f 5; +#X floatatom 307 259 5 0 0 0 - - -, f 5; +#X floatatom 86 319 5 0 0 0 - - -, f 5; +#X floatatom 125 319 5 0 0 0 - - -, f 5; +#X floatatom 85 379 5 0 0 0 - - -, f 5; +#X floatatom 124 379 5 0 0 0 - - -, f 5; +#X floatatom 164 379 5 0 0 0 - - -, f 5; +#X floatatom 86 439 5 0 0 0 - - -, f 5; +#X floatatom 125 439 5 0 0 0 - - -, f 5; +#X floatatom 267 319 5 0 0 0 - - -, f 5; +#X floatatom 306 319 5 0 0 0 - - -, f 5; +#X floatatom 346 319 5 0 0 0 - - -, f 5; +#X floatatom 267 379 5 0 0 0 - - -, f 5; +#X floatatom 306 379 5 0 0 0 - - -, f 5; +#X floatatom 267 439 5 0 0 0 - - -, f 5; +#X floatatom 306 439 5 0 0 0 - - -, f 5; +#X floatatom 346 439 5 0 0 0 - - -, f 5; +#X floatatom 267 499 5 0 0 0 - - -, f 5; +#X floatatom 312 499 5 0 0 0 - - -, f 5; +#X obj 131 57 pddp/pddplink bendin-help.pd; +#X obj 129 112 pddp/pddplink ctlin-help.pd; +#X obj 131 177 pddp/pddplink midiin-help.pd; +#X obj 131 237 pddp/pddplink notein-help.pd; +#X obj 346 57 pddp/pddplink pgmin-help.pd; +#X obj 347 113 pddp/pddplink polytouchin-help.pd; +#X obj 347 177 pddp/pddplink sysexin-help.pd; +#X obj 346 237 pddp/pddplink touchin-help.pd; +#X obj 146 343 pddp/pddplink bendout-help.pd; +#X obj 146 403 pddp/pddplink ctlout-help.pd; +#X obj 347 343 pddp/pddplink noteout-help.pd; +#X obj 347 403 pddp/pddplink pgmout-help.pd; +#X connect 6 0 26 0; +#X connect 6 1 27 0; +#X connect 8 0 28 0; +#X connect 8 1 29 0; +#X connect 8 2 30 0; +#X connect 10 0 34 0; +#X connect 10 1 35 0; +#X connect 10 2 36 0; +#X connect 12 0 37 0; +#X connect 12 1 38 0; +#X connect 14 0 44 0; +#X connect 14 1 45 0; +#X connect 15 0 39 0; +#X connect 15 1 40 0; +#X connect 15 2 41 0; +#X connect 16 0 32 0; +#X connect 16 1 33 0; +#X connect 17 0 42 0; +#X connect 17 1 43 0; +#X connect 46 0 7 0; +#X connect 47 0 7 1; +#X connect 48 0 9 0; +#X connect 49 0 9 1; +#X connect 50 0 9 2; +#X connect 51 0 18 0; +#X connect 52 0 18 1; +#X connect 53 0 11 0; +#X connect 54 0 11 1; +#X connect 55 0 11 2; +#X connect 56 0 13 0; +#X connect 57 0 13 1; +#X connect 58 0 19 0; +#X connect 59 0 19 1; +#X connect 60 0 19 2; +#X connect 61 0 20 0; +#X connect 62 0 20 1; diff --git a/pd/doc/5.reference/polytouch-out.pd b/pd/doc/5.reference/polytouchout-help.pd similarity index 100% rename from pd/doc/5.reference/polytouch-out.pd rename to pd/doc/5.reference/polytouchout-help.pd diff --git a/pd/nw/dialog_canvas.html b/pd/nw/dialog_canvas.html index d6d80cad1e6de989c9214adb2eeef304567e8e4b..0fdbf8dc2b536c62507acbfa40fa0f4573efd98a 100644 --- a/pd/nw/dialog_canvas.html +++ b/pd/nw/dialog_canvas.html @@ -13,12 +13,28 @@ <legend data-i18n="canvas.prop.heading.gop"></legend> <table class="pairs"> - <tr class="display_flags prop hidden" data-i18n="[title]canvas.prop.gop_tt"> - <td> - <input type="checkbox" name="gop" value="on"> + <tr class="prop no_scroll hidden" data-i18n="[title]canvas.prop.no_scroll_tt"> + <td colspan="2"> + <label> + <input type="checkbox" name="no_scroll" value="off"> + <span data-i18n="canvas.prop.no_scroll"></span> + </label> </td> - <td> - <span id="gop_label" data-i18n="canvas.prop.gop"></span> + </tr> + <tr class="prop no_menu hidden" data-i18n="[title]canvas.prop.no_menu_tt"> + <td colspan="2"> + <label> + <input type="checkbox" name="no_menu" value="off"> + <span data-i18n="canvas.prop.no_menu"></span> + </label> + </td> + </tr> + <tr class="display_flags prop hidden" data-i18n="[title]canvas.prop.gop_tt"> + <td colspan="2"> + <label> + <input type="checkbox" name="gop" value="on"> + <span data-i18n="canvas.prop.gop"></span> + </label> </td> </tr> <tr class="x_pix prop hidden"> @@ -443,11 +459,6 @@ arrays_select.addEventListener("change", function(evt) { array_choose(evt.target.value); }); -var gop_label = document.getElementById("gop_label"); -gop_label.addEventListener("click", function() { - document.getElementsByName("gop")[0].click(); -}); - var gop_button = document.getElementsByName("gop")[0]; gop_button.addEventListener("click", function(evt) { set_gop(this.checked); @@ -510,8 +521,8 @@ function substitute_space(arg) { } function get_input(name) { - var val = document.getElementsByName(name)[0].value; - return val; + var elem = document.getElementsByName(name)[0]; + return (elem.type === "checkbox") ? elem.checked : elem.value; } // get a value from the garray attr array @@ -540,12 +551,12 @@ function get_array_slot_4(attrs) { function apply() { var gop, hide_name, slot_4; - // If this is a dialog to create a new array, we + // If this is a dialog to create a new array // skip the canvas dialog callback if (!new_array_dialog) { // Note: the "+" casts Boolean to Number - gop = +document.getElementsByName("gop")[0].checked; - hide_name = +document.getElementsByName("hide_name")[0].checked; + gop = +get_input("gop"); + hide_name = +get_input("hide_name"); pdgui.pdsend(pd_object_callback, "donecanvasdialog", +get_input("x_scale"), @@ -558,7 +569,9 @@ function apply() { +get_input("x_pix"), +get_input("y_pix"), +get_input("x_margin"), - +get_input("y_margin") + +get_input("y_margin"), + +get_input("no_scroll"), + +get_input("no_menu") ); } @@ -760,6 +773,11 @@ function populate_form(attr_object) { // X/Y scaling-- garray is always in a gop so not needed document.getElementsByClassName("x_scale")[0] .classList.add("hidden"); + // scrollbars and menu + document.getElementsByClassName("no_scroll")[0] + .classList.add("hidden"); + document.getElementsByClassName("no_menu")[0] + .classList.add("hidden"); } } diff --git a/pd/nw/locales/en/translation.json b/pd/nw/locales/en/translation.json index 62814d604e999a6cd6b29ab3bbeee948bd2d7e42..979a0dad38da431bba2b1dc46cdc6770a717f36b 100644 --- a/pd/nw/locales/en/translation.json +++ b/pd/nw/locales/en/translation.json @@ -306,6 +306,10 @@ "viewbox_offsets": "viewbox offsets", "arrays": "array options" }, + "no_scroll": "hide scrollbars", + "no_scroll_tt": "hide window scrollbars", + "no_menu": "hide menu", + "no_menu_tt": "hide window menu", "gop": "graph on parent", "gop_tt": "show the inner contents of this canvas in a rectangle on the containing canvas", "hide_name": "hide name and arguments", diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js index a7bc28e4e30d674944f07fce20cb99c598ee485e..98036dd73ad802c154ee7c4ac7ca7791728e72bf 100644 --- a/pd/nw/pd_canvas.js +++ b/pd/nw/pd_canvas.js @@ -1033,9 +1033,11 @@ function register_window_id(cid, attr_array) { // For now, there is no way for the cord inspector to be turned on by // default. But if this changes we need to set its menu item checkbox // accordingly here - //set_cord_inspector_checkbox(); + // set_cord_inspector_checkbox(); - // One final kludge-- because window creation is asyncronous, we may + // Set scroll bars + pdgui.canvas_set_scrollbars(cid, !attr_array.hide_scroll); + // One final kludge-- because window creation is asynchronous, we may // have gotten a dirty flag before the window was created. In that case // we check the title_queue to see if our title now contains an asterisk // (which is the visual cue for "dirty") diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index 84ffa4b0b597c78973eb2e3a18e131d0a8bff7e6..f1fcf288257c5205ceac666881976aba49a105c8 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -991,6 +991,17 @@ function gui_canvas_set_cordinspector(cid, state) { patchwin[cid].window.set_cord_inspector_checkbox(state !== 0 ? true : false); } +function canvas_set_scrollbars(cid, scroll) { + patchwin[cid].window.document.body.style. + overflow = scroll ? "visible" : "hidden"; +} + +exports.canvas_set_scrollbars = canvas_set_scrollbars; + +function gui_canvas_set_scrollbars(cid, no_scrollbars) { + canvas_set_scrollbars(cid, no_scrollbars === 0); +} + exports.menu_send = menu_send; function gui_set_toplevel_window_list(dummy, attr_array) { @@ -1198,7 +1209,8 @@ function gui_startup(version, fontname_from_pd, fontweight_from_pd, // } else { // set oldtclversion 0 // } - pdsend("pd init", enquote(pwd), "0", font_fixed_metrics); + pdsend("pd init", enquote(defunkify_windows_path(pwd)), "0", + font_fixed_metrics); // # add the audio and help menus to the Pd window. We delayed this // # so that we'd know the value of "apilist". @@ -1381,7 +1393,7 @@ function create_window(cid, type, width, height, xpos, ypos, attr_array) { } // create a new canvas -function gui_canvas_new(cid, width, height, geometry, zoom, editmode, name, dir, dirty_flag, cargs) { +function gui_canvas_new(cid, width, height, geometry, zoom, editmode, name, dir, dirty_flag, hide_scroll, hide_menu, cargs) { // hack for buggy tcl popups... should go away for node-webkit //reset_ctrl_on_popup_window @@ -1432,7 +1444,8 @@ function gui_canvas_new(cid, width, height, geometry, zoom, editmode, name, dir, dirty: dirty_flag, args: cargs, zoom: zoom, - editmode: editmode + editmode: editmode, + hide_scroll: hide_scroll }); } diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index fb50bb6c253d2585e58295a619cf219b8b14c013..736a9dbd9e460f746515548b285c1fee1ea94dde 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -742,6 +742,18 @@ void canvas_scalar_event(t_canvas *x, t_symbol *s, int argc, t_atom *argv) draw_notify(x, s, argc, argv); } +void canvas_show_scrollbars(t_canvas *x, t_floatarg f) +{ + x->gl_noscroll = (int)f; + gui_vmess("gui_canvas_set_scrollbars", "xi", x, (int)f); +} + +void canvas_show_menu(t_canvas *x, t_floatarg f) +{ +post("setting nomenu to %d", f); + x->gl_nomenu = (int)f; +} + extern void canvas_check_nlet_highlights(t_canvas *x); /*********** dpsaha@vt.edu resize move hooks ****************/ @@ -2579,6 +2591,10 @@ void g_canvas_setup(void) class_addmethod(canvas_class, (t_method)canvas_scalar_event, gensym("scalar_event"), A_GIMME, 0); + class_addmethod(canvas_class, (t_method)canvas_show_scrollbars, + gensym("scroll"), A_FLOAT, 0); + class_addmethod(canvas_class, (t_method)canvas_show_menu, + gensym("menu"), A_FLOAT, 0); /* ---------------------- list handling ------------------------ */ class_addmethod(canvas_class, (t_method)glist_clear, gensym("clear"), diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h index b08ab48fe58a6daec968a57edb494acf0553a154..ccb802a4b0b1448703ab041ccbd647aaa220bf5a 100644 --- a/pd/src/g_canvas.h +++ b/pd/src/g_canvas.h @@ -217,6 +217,8 @@ struct _glist unsigned int gl_private:1; /* private flag used in x_scalar.c */ unsigned int gl_isclone:1; /* exists as part of a clone object */ unsigned int gl_gop_initialized:1; /* used for tagged moving of gop-ed objects to avoid redundant reinit */ + unsigned int gl_noscroll:1; /* don't show window scrollbars */ + unsigned int gl_nomenu:1; /* don't show the window menu */ //global preset array pointer t_preset_hub *gl_phub; //infinite undo goodies (have to stay here rather than the editor to prevent its obliteration when editor is deleted) diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index 6674690471e76b485bf3183acb01b0a696015ee2..abea628172d14a05e7690a1065069106540dd0da 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -2471,7 +2471,7 @@ void canvas_vis(t_canvas *x, t_floatarg f) //fprintf(stderr,"new\n"); canvas_create_editor(x); canvas_args_to_string(argsbuf, x); - gui_vmess("gui_canvas_new", "xiisiissis", + gui_vmess("gui_canvas_new", "xiisiissiiis", x, (int)(x->gl_screenx2 - x->gl_screenx1), (int)(x->gl_screeny2 - x->gl_screeny1), @@ -2481,6 +2481,8 @@ void canvas_vis(t_canvas *x, t_floatarg f) x->gl_name->s_name, canvas_getdir(x)->s_name, x->gl_dirty, + x->gl_noscroll, + x->gl_nomenu, argsbuf); /* It looks like this font size call is no longer needed, @@ -2684,6 +2686,8 @@ void canvas_properties(t_glist *x) gui_s("y_pix"); gui_i((int)x->gl_pixheight); gui_s("x_margin"); gui_i((int)x->gl_xmargin); gui_s("y_margin"); gui_i((int)x->gl_ymargin); + gui_s("no_scroll"); gui_i(x->gl_noscroll); + gui_s("no_menu"); gui_i(x->gl_nomenu); } else { @@ -2705,6 +2709,8 @@ void canvas_properties(t_glist *x) gui_s("y_pix"); gui_i((int)x->gl_pixheight); gui_s("x_margin"); gui_i((int)x->gl_xmargin); gui_s("y_margin"); gui_i((int)x->gl_ymargin); + gui_s("no_scroll"); gui_i(x->gl_noscroll); + gui_s("no_menu"); gui_i(x->gl_nomenu); } //gfxstub_new(&x->gl_pd, x, graphbuf); @@ -2761,6 +2767,10 @@ static void canvas_donecanvasdialog(t_glist *x, xmargin = atom_getfloatarg(9, argc, argv); ymargin = atom_getfloatarg(10, argc, argv); + pd_vmess(&x->gl_pd, gensym("scroll"), "f", + atom_getfloatarg(11, argc, argv)); + x->gl_nomenu = atom_getintarg(12, argc, argv); + /* parent windows are treated differently than applies to individual objects */ if (glist_getcanvas(x) != x && !canvas_isabstraction(x)) diff --git a/pd/src/g_readwrite.c b/pd/src/g_readwrite.c index ca888857e0a204e9d226633a555e206f7fe1187d..56b2e071d4ec497ac099632a07706c74fe5a7b3c 100644 --- a/pd/src/g_readwrite.c +++ b/pd/src/g_readwrite.c @@ -779,6 +779,13 @@ static void canvas_saveto(t_canvas *x, t_binbuf *b) (t_float)x->gl_pixwidth, (t_float)x->gl_pixheight, (t_float)x->gl_isgraph); } + /* save a message if scrollbars are disabled-- otherwise do nothing + for the sake of backwards compatibility. */ + if (x->gl_noscroll) + binbuf_addv(b, "ssi;", gensym("#X"), gensym("scroll"), x->gl_noscroll); + /* same for menu */ + if (x->gl_nomenu) + binbuf_addv(b, "ssi;", gensym("#X"), gensym("menu"), x->gl_nomenu); } /* yuck, wish I didn't have to do this... */