diff --git a/pd/nw/todo.txt b/pd/nw/todo.txt index c53597694b5c046833ffb611c39368ad4569b89f..ace3b1b8d6b32eacd05382579b05ae69d64947a8 100644 --- a/pd/nw/todo.txt +++ b/pd/nw/todo.txt @@ -18,130 +18,130 @@ Node-webkit stuff: 4) (probably) present working directory 5) command line argv -Everything else: -* packaging as app, setting correct appname, etc -* get -unique to work (relied on tcl [send] command) -* check if patch windows with screenposition (0,0) get stuck underneath Ubuntu/OSX menu. If so, - Node-webkit has a "screen" interface to retrieve the "workable" area of the screen -* choosing the same directory multiple times (see dialog API page) -* figure out why there is a "pd_opendir" global var -* pass k12 mode arg -* implement recent files (using Pd's prefs loading mechanism instead of reimplementing gui prefs) -* implement verifyquit -* save and saveas dialogs aren't defaulting to the present working directory -* create a loop (maybe every second) to check bbox of patchsvg, and set the height/width to that - bbox for the svg. That should trigger the correct scrollbar behavior. -* change canvas string to a single int (and investigate any side-effects) -* destroy (or, more likely, hide) selection rectangle when not needed -* change gui_text_select to gui_gobj_select -* make it possible to have the inner cells of hradio change color with the selection, as the border currently does. Tk just uses the non-hierarchical tags and appends the word "BASE". (Maybe use an inner <g> to do this.) -* make mycnv use its own selection logic -* abstract away appendChild -* font-size should be set as css property for a class of text, rather than per each gobj in svg -* remove the "fudge_factor" kludge in g_rtext.c, and handle fonts in a sane manner. In doing so - we must decide whether or not we want to be able to fetch the bounding box of objects from - within a Pd patch. (Currently [canvasinfo] and [objectinfo] are the only objects that can - do this, though there might also be) -* replace things like gui_select_color with css -* find a better approach to escaping characters for the gui than escape_double_quotes kludge (and handle any other problematic chars) -* look into using <def> and <use> for scalars. -* use Atom's selectors for standard OSX behavior (cut, paste, about, etc.) -* in draw_vis, make circle and ellipse radii attr floats instead of ints -* should stroke-dasharray values be floats? -* once garrays are drawn inside a <g> we won't have to individually erase each child of a scalar -* clean up svg_sendupdate -- put a single gui_vmess at the end -* svg_sendupdate -- make sure there aren't arbitrary %d's that should actually be %g's -* svg_sendupdate -- need a gui interface for stuff like stroke-dasharray (and garrays) -* ibid., for path data, points -* make pdgui function names more consistent -* in draw_vis, move tags to front of function call so they don't have to be an ugly array -* in draw_vis, remove all the coords logic and let svg_togui do that work. In svg_new, - leverage the "d", "points", etc. methods to do the same. -* remove the draw_vis warning/code about needing 2 points to draw -* might want to clean up dead windows inside patchwin object (on close) -* make gui_menu_close filename less hacky (currently includes patch args in the middle) -* figure out why -nrt flag causes Pd to bail on the GUI (it wasn't doing this - on the amd_64 virtual Jessie machine) -* make dialogs with [yes/no] instead of [cancel/ok] -* make a gui_mess interface for the edge cases that don't require args (similar to sys_gui) -* make sure we're breaking down the socket properly from the GUI side on quit -* nwworkingdir isn't working with the saveas dialog in pdcanvas.html -* nwworkingdir only works on the second file open -* implement the stuff at the end of saveas_callback (recentfiles et al); -* make an "export" menu command for max patch saving. That way we can accept a single extension - for saving (.pd), and the native save dialog will warn us on potential file overwrites (even when - the user neglects to type an extension). -* draw graph inside gobj group -* merge gui_text_select and gui_text_deselect -* in function gui_cord_inspector_update, use parameter "moved" to flash text -* cord_inspector_flash doesn't seem to be deterministic-- if you move among several cords very fast - it will try to flash a non-existent svg item. (Probably want to either make a permanent item in - the pdcanvas.html for it, or hard-code a separate div.) -* for data structures, change "" to 'none' -* fix "Reselect" <ctrl-Enter> Keybinding. It doesn't work atm because nw.js - cannot bind to Enter. -* looks like nwworkingdir isn't working for open/save dialogs atm -* keyup doesn't register autokeypresses, but keyname and key do -* text_set doesn't work when a numbox is first created (but works otherwise) -* clean up nw_create_window (doesn't need so many parameters) -* make a nice window API in C. Window "foo-bar" type maps to "foo-bar.html" -* implement the crappy iemgui color dialog presets -* find a simple translation API -* use underscores for iemgui dialog element names -* revisit the x_thick logic in g_slider.c. It thickens the indicator when it's - in the middle of the slider, but it's pretty obscure in the current impl. -* for as many items as possible, hide them instead of removing from DOM (stuff - like xlets, etc.) -* fix iemgui_font so it doesn't use tcl list syntax -* change all the gui color char[MAXPDSTRING] junk to simple int, and do the conversion to - hex html string in the gui -* implement iemgui labels and its ascetic font chooser -* think about scaling the svg instead of the page, and making the selection - rectangle a div above that -* change 'visible-width' to 'cnv-width' -* in pdproperties.html, use an object to store all the prop/value pairs that - got sent. That way we don't have to use all those awful tricks to - conditionally fill the slots -* fix font shits (can't use 'hanging' base-line dominant because it doesn't - scale correctly) -* iemgui font configuration -- de-tcl-ize the {fontface fontsize} tcl list, - then make it work -* do msg box click animation in css -* tgl 'X' doesn't show up -* gui_graph_fill_border: use css class selectors instead of configuration -* standardize javascript function names -* in gui_plot_vis, we have to check for gobj existence. For some reason, at - very fast drawing rates we end up with two svg elements if we don't check - for this. Not sure why -* add garray_update for changing the path coords without having to recreate - the entire scalar edifice -* add "p" type to gui_vmess for pointers -* when duplicating a large number of iemguis, the label or border will eventually try to append to null. - It looks like it's receiving the correct gui calls from Pd, in the correct order. But for some reason the - calls from Pd are getting split in the middle of a string. Not sure why, probably something to do - with the hacky parser I wrote to split on newlines. Anyway, when we can just split on semis this problem - should hopefully go away. Make sure to test for it once that happens. - - Some gui_posts that show the problem-- the string is split between lines 2 and 3: +Everything else: (A [*] means we've fixed it) +[ ] packaging as app, setting correct appname, etc +[ ] get -unique to work (relied on tcl [send] command) +[ ] check if patch windows with screenposition (0,0) get stuck underneath Ubuntu/OSX menu. If so, +[ ] Node-webkit has a "screen" interface to retrieve the "workable" area of the screen +[*] choosing the same directory multiple times doesn't work (see dialog API page) +[ ] "Save As" on an overwrite doesn't seem to clear the dirty flag +[ ] figure out why there is a "pd_opendir" global var +[ ] pass k12 mode arg +[ ] implement recent files (using Pd's prefs loading mechanism instead of reimplementing gui prefs) +[ ] implement verifyquit +[ ] save and saveas dialogs aren't defaulting to the present working directory +[ ] implement automatic scrollbars and svg canvas resizing +[ ] add 'x' type to gui_vmess for saving canvas names, etc., as hex values +[x] destroy (or, more likely, hide) selection rectangle when not needed +[ ] change gui_text_select to gui_gobj_select +[ ] make it possible to have the inner cells of hradio change color with the selection, + as the border currently does. Tk just uses the non-hierarchical tags and appends the word + "BASE". (Maybe use an inner <g> to do this.) +[x] make mycnv use its own selection logic +[ ] abstract away appendChild +[ ] font-size should be set as css property for a class of text, rather than per each gobj in svg +[ ] remove the "fudge_factor" kludge in g_rtext.c, and handle fonts in a sane manner. In doing so + we must decide whether or not we want to be able to fetch the bounding box of objects from + within a Pd patch. (Currently [canvasinfo] and [objectinfo] are the only objects that can + do this, though there might also be) +[x] replace things like gui_select_color with css +[ ] find a better approach to escaping characters for the gui than escape_double_quotes kludge + (and handle any other problematic chars) +[ ] look into using <def> and <use> for scalars. +[ ] in draw_vis, make circle and ellipse radii attr floats instead of ints +[ ] should stroke-dasharray values be floats? +[ ] once garrays are drawn inside a <g> we won't have to individually erase each child of a scalar +[ ] clean up svg_sendupdate -- put a single gui_vmess at the end +[ ] svg_sendupdate -- make sure there aren't arbitrary %d's that should actually be %g's +[ ] svg_sendupdate -- need a gui interface for stuff like stroke-dasharray (and garrays) +[ ] ibid., for path data, points +[ ] make pdgui function names more consistent +[ ] in draw_vis, move tags to front of function call so they don't have to be in an array +[ ] in draw_vis, remove all the coords logic and let svg_togui do that work. In svg_new, + leverage the "d", "points", etc. methods to do the same. +[ ] remove the draw_vis warning/code about needing 2 points to draw +[ ] need to clean up dead windows inside patchwin object (on close) +[ ] make gui_menu_close filename less hacky (currently includes patch args in the middle) +[ ] figure out why -nrt flag causes Pd to bail on the GUI (it wasn't doing this + on the amd_64 virtual Jessie machine, nor on my 32-bit machine). +[ ] make dialogs with [yes/no] instead of [cancel/ok] +[ ] make a gui_mess interface for the edge cases that don't require args (similar to sys_gui) +[ ] make sure we're breaking down the socket properly from the GUI side on quit +[ ] looks like nwworkingdir isn't working for open/save dialogs atm +[ ] nwworkingdir only works on the second file open +[ ] implement the stuff at the end of saveas_callback (recentfiles et al) +[ ] make an "export" menu command for max patch saving. That way we can accept a single extension + for saving (.pd), and the native save dialog will warn us on potential file overwrites (even when + the user neglects to type an extension). +[ ] draw graph inside gobj group +[ ] merge gui_text_select and gui_text_deselect +[ ] in function gui_cord_inspector_update, use parameter "moved" to flash text +[ ] cord_inspector_flash doesn't seem to be deterministic-- if you move among several cords very fast + it will try to flash a non-existent svg item. (Probably want to either make a permanent item in + the pdcanvas.html for it, or hard-code a separate div.) +[ ] for data structure demos, change "" to 'none' +[ ] fix "Reselect" <ctrl-Enter> Keybinding. It doesn't work atm because nw.js + cannot bind to Enter. +[ ] keyup doesn't register autokeypresses, but keyname and key do +[ ] text_set doesn't work when a numbox is first created (but works otherwise) +[ ] clean up nw_create_window (doesn't need so many parameters) +[x] make a nice window API in C. Window "foo-bar" type maps to "foo-bar.html" +[ ] implement the crappy iemgui color dialog presets +[x] find a simple translation API +[ ] use underscores for iemgui dialog element names +[ ] revisit the x_thick logic in g_slider.c. It thickens the indicator when it's + in the middle of the slider, but it's pretty obscure in the current impl. +[ ] for as many items as possible, hide them instead of removing from DOM +[ ] fix iemgui_font so it doesn't use tcl list syntax +[ ] change all the gui color char[MAXPDSTRING] junk to simple int, and do the conversion to + hex html string in the gui +[ ] implement iemgui labels and its ascetic font chooser +[ ] think about scaling the svg instead of the page, and making the selection + rectangle a div above that +[ ] change 'visible-width' to 'cnv-width' +[ ] in dialog_iemgui.html, use an object to store all the prop/value pairs that + got sent. That way we don't have to use all those awful tricks to + conditionally fill the slots +[ ] look into the font metrics, see if we can use floating point fonts to simplify things +[ ] iemgui font configuration -- de-tcl-ize the {fontface fontsize} tcl list, + then make it work +[x] do msg box click animation in css +[x] tgl 'X' doesn't show up +[ ] gui_graph_fill_border: use css class selectors instead of configuration +[ ] standardize javascript function names +[x] in gui_plot_vis, we have to check for gobj existence. For some reason, at + very fast drawing rates we end up with two svg elements if we don't check + for this. This would be simplified if gop stuff was just children of parent <group> +[x] add garray_update for changing the path coords without having to recreate + the entire scalar edifice +[x] when duplicating a large number of iemguis, the label or border will eventually try to append + to null. It looks like it's receiving the correct gui calls from Pd, in the correct order. + But for some reason the calls from Pd are getting split in the middle of a string. + Not sure why, probably something to do with the hacky parser I wrote to split on newlines. + Anyway, when we can just split on semis this problem should hopefully go away. Make sure to + test for it once that happens. + Some gui_posts that show the problem-- the string is split between lines 2 and 3: nextCmd is gui_create_toggle ".x98be5e8","x99c0740","#000000",1,0,181,67,192,78,181,78,192,67,179,65; nextCmd is gui_iemgui_label_new ".x98be5e 8","x99c0740",17,7,"#000000","","{{DejaVu Sans Mono} -10 normal}"; nextCmd is gui_canvas_drawio ".x98be5e8","x99c0740",".x98be5e8.t99c0de0o0",179,79,186,80,179,65,"o",0,0,1; the tag for this XLET is .x98be5e8.t99c0de0o0 -remove gui_text_select_color (css takes care of this) -add a canvas message to set a transform on the patchsvg. Good for: - * obscure display needs (zooming past the browser limits) - * rotating for a display - * transforming or scaling all scalars on a patch at once -change 'array_element_fill' to 'element_fill', array_outline to 'array_element_outline' -either nw_create_window should take fewer parameters or it should take an + Note: this was a simple problem of partial msgs not being prepended to the next buffer. + +[ ] remove gui_text_select_color (css takes care of this) +[ ] add a canvas message to set a transform on the patchsvg. Good for: + * obscure display needs (zooming past the browser limits) + * rotating for a display + * transforming or scaling all scalars on a patch at once + However: This will require more math on the mousemotion. So this should probably wait until + moving a lot of the editing code out of C and into the GUI +[ ] change 'array_element_fill' to 'element_fill', array_outline to 'array_element_outline' +[ ] either nw_create_window should take fewer parameters or it should take an object with name: value pairs -getting the sense that glist_isselected should _always_ have +[ ] getting the sense that glist_isselected should _always_ have glist_getcanvas(x) as its first parameter -get rid of the old tcl specific sys_get_audio_apis +[x] get rid of the old tcl specific sys_get_audio_apis Crashers -------- - -copy/paste from menu gives ECONN