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