This file is for random notes and specific coding tasks that need to be done
to meet various goals. This includes Roadmap items as well as fixing bugs.
List bug tracker number if any.

When an item is satisfied, put it in the DONE section at bottom of file.
Those are purged with each release.



--------------bugs: things that do not work like they are already allegedly designed to---------------------


------------ serious bugs to fix right now: 

laxkit/examples/laxhello.cc: messagebar, resize window, dragging around smears. Also can't double buffer

filedialog: something wrong with bookmarks.. pressed add, and they all went away

switch to net imposition, net render lines too big

asymmetric cuts are not right for front sheets on spread generation (done), also on sig editor

back to not maximizing properly on default ubuntu

debug registration, cut marks, trim marks
  custom papergroup, add registration/bars/, can't move it
  DONE can't add cut marks to signatures

object indicator:
  click on object, does not update selection

booklet, use paper group tool, default paper group no longer displays

------------ other bugs:

shearing or scaling produces null axes occasionally when crossing over opposite edge, borking the display
  --> seems to be only when needing to draw images on close to parallel axes, doesn't seem do it with paths

bug: page progress popup is wrong place, and mouse maps at wrong scale ONLY OCCASIONALLY, hard to reproduce

sometimes crash at insert page before (?? can't duplicate)

text window controls have difficulties
  doesn't handle tabs
  (see PlainTextWindow below for feature plans instead of bugs)

saving window positions doesn't take into account window decorations, makes pos slide downward each time
  _NET_FRAME_EXTENTS? _KDE_NET_WM_FRAME_STRUT? how to get before mapping a window?

evince on ubuntu 14.04, pdf export won't load, says Syntax Error... Dictionary key must be a name object

scribus plugin: if directory of executable script is not writable, it fails! 
 -> should find one that is writable
scribus plugin needs a proper dealing with temporary files 

configure should check for libreadline-dev? apparently not pkg-config ready <- half fix of listing in package requirements
  needs to use the new extra_cppflags thing

memory hole in reimpose .. reimposed 5 page booklet 
memory hole when graphical shell activated 
memory hole do laidout -n letter, split a window, then quit. undeleted Objects remain!
memory hole delauneyinterface
memory hole helpwindow -> probably something to do with ShortcutWindow and ShortcutTreeSelector not refcounting as expected
DONE memory hole paper interface, activate tool, lay down one paper, quit, 3 objects remain
DONE memory hole cairo backend (can't duplicate) 

object reordering (with home/end) produces outline of unrelated objects on top 

don't allow reparent to a child!! or reparent as appropriate 

need to implement ObjectInterface/GroupInterface::DrawData()

cloning, change original, not triggering bbox update in clone

ubuntu maximize window failing (but not on today's debian unstable gnome), resize seems to work now
gnome "application" does one per window, not one per app. this is not a bad thing imnsho, but should be easy to conform to desktop application spec properly
icon needs to be bigger.. is fuzzy on ubuntu alt-tab
DONE App/window icon in window manager not showing.. 

select none, select doc, viewport jumps around... it should stay the same area
switch to None document, and units change to unreasonable

"edit imposition", then escape.. removes window, but not the frame!

DONE??? need to implement scale pages to new imposition when reimposing (enable in doc settings dialog)

splitwindow SplitWindow:
create new pane should dup old pane.. currently divide viewport, removes document focus
viewwindow, change to spreadview, change back to view.. Horizontal ruler origin is REALLY off 
splitwindow cursors existing in subwindows 
create new window, defaults to no doc. should select doc of last pane 
headwindow swapping is now REALLY messed up
pane swapping/dropto on maximized, swapping in general...

svg out, EquivalentObject doesn't play nice with defs.. only accessed once.. how to upkeep clones in this case?
	-> when equiv objects are composed of groups, what happens?  
svg coord numpoints==0???? numpoints doesn't really serve any purpose other than debugging, but....  
svg to coord incomplete: arcs needs testing
memory hole in svg in? test svg import, svg path import must be done

sigimp fail for multiple stacks with no folds!!

lineinput not propagating escapable

clones of images scale not like images

object tool shift-control for rotate does not allow positioning on drag bars

'g' for color sample changes cursor to cancel now, and changes on border cross!!!

possible modifier-pairing error with multiple mice...

object deleting funky, import svg images, select one, hit delete, doesn't delete!!
place 3 images, object select, must press delete twice...!?!?!?!

should not be able to group select an object and another object nested within

file previewer not updating preview when using arrow keys

shrink image lets you go immeasurably small

fold indicator foldprogress just at crossover points incorrectly indicating affected folds

make sure all imposition types are available in interpreter

resource impositions not showing description when selected

GradientInterface problem rendering radial when two circles separated by large distance

WATCH OUT for when preview file is OLDER than original file!!

stackframe seems to be ignoring window borders on layout


----------------0.097 ROADMAP ITEMS: features and enhancements------------------------
DONE website: combine faq and help?

update fileformat.txt
check laidout.1 when time to release
update docs to have new release number
update translation base files
update screenshots, sync with features
update links page
update dtpcompare.html
comment out cairo_debug_reset_static_data before release, since it usually means crash, interferes with pipeout
test:
  ./laidout ../examples/test-all-objects.laidout
  each export filter (via command line in new script in examples.. ignoring problems in eps)
  each window type: about palette view spread command text
    help: window pane does funky stuff
  test in different window managers
  make some test scripts for command line testing
DONE update help page
DONE put rss/g+ links on all menu pages.. 

fontdialog:
  select font inappropriately repositions view

from big import:
  load in seems to wholly load images, instead of only grabbing info
  need some kind of "loading" indication when loading in large images
  need image path mass reassign
  spread editor:
    select all for current marker type
	arrange in rows at current scale not scaling and placing correctly
	crash during thumbnail generation if you delete pages while there are still some to render
	auto-arrange not consistent.. doesn't really respect the screen aspect 
  should be able to save from any place
  delete discontinous range of pages doesn't delete all sometimes
  undo extremely necessary
  thumbs refreshing a lot unnecessarily
  DONE recently-used.xbel showing multiple: <bookmark:group>Laidout</bookmark:group>
  DONE no recent in open!!
  DONE? crash on rearrange sometimes: page range getting out of sync
  DONE should not register autosaves as recent
  selecting ranges
  you can't control unclick selected directories
  for images, need edit image feature, with watch for changes, or "reload image"
  image dialog, select new image, hangs on imlib complain about null image
  export to range has bad initial upper value

from recent import:
  save as should have sample file names: from directory name with ".laidout", incremented from any *.laidout
  export directory should default to last loaded file
  large images all being loaded in, need way to ask about creating proxy images. only img info is supposed to be read in until img data is actually needed
  need better ui for selecting templates
  load in autosave should ask if you want to save as the original
  spread editor needs edge dragging

node editor NodeInterface nodes:
  undo redo
  grouping framed objects have complications
  check for double linking
  center on selected doesn't actually
  bug: sometimes crash when tabbing across property values
  idea seen in anim nodes: collapsing math shows expression as label
  should probably bring forward any selected
  control drag on slot to reconnect all connections
  find:
    by label(done), name, or type
    search node or property name, or data contents
	regex
	stack of last searches
	search in child groups
	find all
  gegl nodes:
    need needtoupdate caching.. gegl with big images takes a long time
    scale-size has runaway render for undefined rect
    make sure deleting/rearranging nodes correctly removes gegl connections
    inkscape filter read in, set up as gegl nodes internally
	make sure input/outputs can translate from other data types
	need protection against unknown gegl ops, like when "gpl" is toggled
    some process actions bog everything down like overlay a crop with a non-cropped input.. need a check for unbounded nodes before process
	some nodes define a particular extent, like gradients. preview should detect
	do something decent with property types: GeglCurve GeglPath. ignore these for now: GeglAudioFragment GeglBuffer GdkPixbuf GeglNode
	DONE preview area should be adjustible for sample area, instead of always default 100x100
	DONE babl format is passed in gegl as an otherwise undefined gpointer, need to have special check for this
	DONE save gegl graph to xml
	DONE enums
	DONE menu with categories, not just the name. gegl ops have name, title, description, categories, license, even source!!
	DONE load in graph xml
    DONE process on a crop after change a value crash? need to trace
	DONE make process optional
  svg/inkscape specific filter interface, io passthrough
    svg color properties are strings, but there should be button for color select
    need full "length" readin, not just floats, ie "100%", "15in"
	feTurbulence->baseFrequency is TWO numbers, not one, need data[] support
    handle child groups
	handle chaining full filter group nodes
	Embossed Leather fails
    Plastify has an orphan feFlood node
	nodes with children, loading in puts the child properties at the end
	DONE loading: don't have input and output nodes!!
  for memory saving, need to determine what is a "final" node, since intermediate nodes can free data, or pass it on
  node browser
	tooltips for operation, not just properties
    in menu, so many nodes, need way to classify favorites, maybe custom arrangements of menu
      progressive search
  need a way to collect custom property types, so they can be added to custom nodes
  for connecting, drop onto a property at all should link, not just on slot
  for preview resizer, shouldn't have it when preview is too tiny, since then usually you want to move the node, not resize
  save needs to remember file name per loader, plus default file
  no overlap needs to stack siblings as nicely as possible
  image object creation node, tie node output to a custom LaxImage importer (the proof of concept node for 0.097)
  load something already loaded makes dups of everything.. need to check for name collision!!
  load/save custom properties needs to preserve name, label, tooltip, types, custom info
  groups
    allow editable labels for input props
	add dummy prop on in/out to hot link data (only from within group)
    linked vs appended node groups, to allow mass changing of particular effects
	  GroupRef : NodeGroup, with some sort of relay to actual group internals
    node libraries: nodes as resources
    DONE duplicate nodes (still need to imp group dup)
    DONE need visual indication that something is a group
  auto shift on connection
  auto connect when dragging nodes.. needs parsing of compatible properties
  view area things:
    node magnifier for easier browsing when otherwise zoomed way out
    toggle show only selected nodes?
    DONE jump to link under mouse: shift click over slot, or shift click over bare bez
  exec paths
	events for ui tool construction?
	exec tick speed control for debugging
    DONE update to use IsExecIn/Out
	DONE thread forking for branching nodes?
	DONE if branching
  make sure entire nodes don't go totally offscreen
  scriptify node graph
  nodes to script and script to nodes
  deferred update when massive operations, maybe highlight nodes in yellow?
  color code pipes by value type, color: yellow, number: gray, vector: purple
  need better styling.. too much is hardcoded. problems later with high dpi screens
  finish implementing no cycle check: on load in could be a crash magnet currently if constructed with loops
  file properties need browser button
  object filters:
    a filter to respond to a global frame value, thus have minimal animation control
  list nodes
    set range [start,end] = value
	subset [start, end], neg nums for from end
	element [index]
	create list  [type, number]
	foreach thread processor

  DONE if you right click on a node not in selection, make that the selection instead
  DONE cut links
  DONE nodes need preview images as necessary: need to preview non-sinks
  DONE view mode: all collapsed,  all collapsed except preview,  expanded no preview,  expanded with preview
  DONE need a little triple bar triangle in lower right corner to resize preview size. change preview size on all selected
  DONE loading should check automatically for different files if load fails
  DONE rename nodes
  DONE need search
  DONE numbers need slide change: specify add or zoom stepping
  DONE node resize needs mouseover for edges
  DONE select all/deselect with 'a'
  DONE save, load nodes dialogs
  DONE newly added should be selected
  DONE hover tips for props on collapsed nodes
  DONE clear up IsInput()/IsOutput()
  DONE dedicated random node: seed, is_int, min,max

  examine imgflo for compatibility
    imgflo lets you compile and load new operations on the fly
  css named filter: brightness(1) contrast(67%) saturate(250%) grayscale(0%) invert(0%) hue-rotate(330deg) sepia(40%) blur(0px)
    see https://www.w3.org/TR/filter-effects-1/#grayscaleEquivalent for svg filter equivalents
  gmic nodes
  graphicsmagick nodes
  antiprism nodes
  examine blender for compatibility -> animation node addon seems fuller for general data processing
  examine godot for compatibility -> does full scripting execution
  examine Natron for compatibility
  examine pure data for compatibility
  praxis-live?
  proprietary import like substance or houdini?
  any crossover with mypaint brushes or krita???

  viewer node, resizable
  image from file node
  curve node
  simplex noise node
  pipe splitter node
  frames
    frames need to be moveable
	unframe
    label font size should be adjustable
	changeable color
    drag out a rectangle
	  if any nodes in rect, bind them and shrinkwrap frame 
	  if no nodes in rect, just use dragged area for bounds
	drag and drop nodes to insert into frame
	shift-drag to remove from frame?
    have visible/togglable comment
  expression node:
    any number of inputs
	any number of outputs
	inputs map to names according to property label
	expression must result in a hash, which must map to defined output properties
	scriptify nodes
	nodify script
	use PlainText objects
	edit text externally or in different text editor frame
  string ops:
    DONE concat s1, s2
	printf
	substr [index..index]
  more math:
    interpolate with easing
	select from panel:
	  ---two-arg---
	  +    -    *    /     %     ^
	  <    >    !=   == 
	  min  max  avg
	  and  or   xor  not   <<    >>

	  ---one arg---
	  abs  neg  sqrt sgn
	  sin  cos  tan  asin  acos  atan
	  sinh cosh tanh asinh acosh atanh
  DONE math operate on numbers, vectors as appropriate
  DONE math 1 arg: norm, norm squared, etc
  DONE vector node:
    DONE 2,3,4 dimension vectors
    DONE separate xyz
	DONE combine xyz
	DONE math: perpendicular, parallel, etc

resource manager needs to store unknown objects as Attribute trees, so they can still be preserved
  for future processing. for instance, be able to recover from when a plugin is missing

need to implement DRAW_Hires for all interfaces that default to preview renders. needed for proper image out
  includes at least image(done), path, engraver

text on path textonpath: TextOnPath
  envelope:
    vertical position bad
	horizontal spacing a bit wonky
  select font, key up/down scrolls uncomfortably SOMETIMES!!
  svg out bad
  need kern control
  doesn't handle transforms with nested objects properly
  dragging size handle with shift|control does not scale properly

  bug: drag the baseline handle off to the sides, makes huge bad jumps in value
  bug: draggin the offest handle sometimes jumps to really bad
  handle to remove from current path, and possibly attach it to some other path
  glyph positioning is wrong
  position glyphs based on middle of glyph, not start of glyph
  convert to path: not respecting transform, putting upside down(done)
  kern handles
  test exporters: svg scribus pdf

  DONE not remapping envelope on load in
  DONE during path edit shouldn't show the other controls like font scale
  DONE need to center balance on path
  DONE click off, creates new one, click back to old, has wrong path

  ----0.098:
  mouse click to position caret
  need to do proper coordinate finding for mouseposition when paste into a nested group
  copy
  offset from stroke or from path
  click for new, then save, saves a blank one! probably issue in captioninterface also
    need to only add to the document only after there is non-null text, like add_on_change flag
  bbox should be better.. currently is a wide approximation
  option to auto expand line
  stretch envelope
  rotation handle
  drag out line to define chain connection
  multiline?

  DONE paste
  DONE font size handles
  DONE need drag handles to change position on page when path is internal
  DONE if textonpath is child, not moving with parent
  DONE if textonpath has non-I m, edit path displays wrong
  DONE need cursor
  DONE bbox is drastically wrong
  DONE baseline handles
  DONE offset handles
  DONE envelope
  DONE deleting selected points when >=2 selected results in crash

text (see also src/text/text.txt):
  need options per font on export to: convert to path, subset, embed
  need standard way to have default font, apart from defaultlaxfont, as well as default color/other visual attributes
  global font list, finish implementing uniquinizing font names, need final step of some kind of file name diff
  freetype/fribidi/harfbuzz all over everything?
  interface base for utf8 based editing.. share this with window edits somehow
  maybe fonts should point to their creators to make duplication more reliable if there are more than just default fontmanager
  need support for font substitution
  harfbuzz support
  math mode
  track bookmarks
  inline graphics
  css import/export
  tabs on arbitrary paths 

engraving tool: Engraving  engraver
  bug: trace object opacity is not working
  bug: object rotate works fine. but then enter and leave engraver tool. Now object rotate is messed up
  bug: 'z' zaps mesh, but does not change cache border or point mapping
  cairo render NEEDS VAST IMPROVEMENT.. the clunky xlib approximation was fast, but not transferrable to cairo
  bug: change type not tracing

  DONE bug: make a LineEdit overlay for number input, then Next bdown is ignored!! l, m, or right all ignored: viewportwindow line 947
  DONE bug: several update triggers failing --> due to recent switch to cached image
  DONE bug: show_points broken
  DONE bug: add group, messes up the with: and not shared lines
  DONE bug: Remane a resource, not updating name in resource list

  multiobject:
    object lines in group list needs eye per object, affect actual object visibility
	need to enforce resource unique names
    need ability to store overall styles of a patch, not just each individually
	on resource menus, should check mark if current matches a resource??

  orient:
    should adjust all linked
    with test-engrave-trace2.laidout, do the quick adjust, does not preserve width the first time, using old value of thickness?
    option to remember old values while adjusting position, rotation, spacing
     -> when manual tweaking of spacing, need to produce value reference so that future line orienting preserves line thicknesses

  tracing:
    seems to be grabbing spurious tracing values outside of the tracing object, and at borders of trace object
    tracing object, lines abort just inside the image, maybe should just go one off the edge?
	trace object needs flip, at least h and v, not really needing the whole affine thing
    need option to export trace object in same position as the traced lines, so it can be further processed elsewhere
    custom sample of channels
    sharp edge detection in tracing
	snapshot should be for all in selection
	shift-drag (or drag anything not covered by trace object) should drag ANY of the meshes in selection, not just current
	when multi objects, the traceobject is interweaved, based on draw order, only under current object, should be under all?
	make gradient interface work in trace mode
    DONE trace object transparency slider should actually slide transparency

  freehand/path:
    freehand not being interpreted correctly: non-equal smooth is adding erroneous extra mesh column
    drawing custom freehand (with width) lines within the mesh area

  mesh path:
    'a' not selecting all in line

  curvemap needs predefined ramp profiles, remember last, load/save (per context?)
    -> options to insert various predefined patterns
	need magnify do dads for easy expanding of countour without having to place each and every node

  direction:
    need accuracy modifiers for dragging controls around
	only when at endpoints, lineprofile not producing smooth results at random spots inside
    should be able to adjust number of sample points to match up well enough for points in lineprofile 
    random end point sliders should inc or dec according to which side mouse clicked down on compared to absolute end point
    spiral spacing computation bad when spokes are nearer radial
    save the opensimplex line displacement from line/point randomness, to be used to also adjust a spacing map to preserve value when viewed at a distance
	be able to trigger a reline on load in
	be able to set a 3-d parameter for noise? useful for animated noise
	option for "adjust for spacing", making weight reflect the spacing, either for constant width or trace
    line profiles: (done) linear, circular, radial, spiral?
	be able to edit and create new profiles
	grow
	spiral arm count makes poor resolution
    line generation: 
      grow: implement custom line merge and break to preserve spacing across mesh contraction
      grow: edge abutment when generating
      sample point generation should be based on lines per mesh square, not total mesh field
      finish implementing spacing section -> spacing map

  add special group: half offset, perpendicular
  need stroke+fill options?
  need convert to path object ability
  current blockout is not very precise, needs approximation between existing point samples
  fully implement resolution adjustments for auto lines -> needs resolution tool
  single group (not group list) view is too old, doesn't do link circle, and can only select from current object groups.. remove it entirely?
  export doesn't work for: nothing for scribus, eps, ps
  edit brush ramp as symmetric ramp 
  resolution tool: click to add between points within brush, control to destroy points in brush
  need merge group

  screen view, need option for Fast|Accurate
  no writability check on exportsnapshot
  allow temp override of linked to adjust only current?
  establish path needs better smoothness assignments
  keys being caught in patch, not in child path
  test: bez cache needs updating when points are moved around
  test: dash cache needs updating when points are moved OR thickness changed
  always brings current object to front (normal refresh in place, and then interface draw on top).. should be very optional, as it blocks out white overlays
  don't warp, move points, then warp, almost always has bad points: PatchData::getPointReverse() is too inaccurate
  undo/redo
  finish implement making the circle lines be closed circles
  need some kind of smooth out: smooth out width, and smooth out path
  hover over mode icons should show text of what you are hovering over (verbose mode?).. hard to remember, annoying to look at status bar otherwise
  should be able to draw a line and have that be a baseline for dash division
  option: either drop out of bounds points, or zap mesh to point bounds
  numsliders should have click on arrows for single increase, and a dismiss x for input box
  should probably abstract control panel creation so we don't have to hardcode everything all the time
  sampling could be more sophisticated, currently just grabs pixels, could downsample the image based on current spacing
  Danger! coons patch produces discontinuous contours within multiblock meshes!! who knew!?
  perhaps allow path objects to be adjusted with engrave tool for custom outlier lines not part of mesh?
  must implement mode based shortcuts in Laxkit. currently all mesh shortcuts are active
  stippling/decal mode, each sample is either a point, or map on an arbitary object, or sampled object?
    per stipple, adjust rotation, scale, color, morph

PathInterface: pathinterface
  bug: seems to be possible to move nodes out of order, only occassionally
  bug: shift click down then up on a point selects then deselects.. control can toggle
  bug: problems for non-bez-controlled corners at endpoint. Also variable offset causes weird connections
  bug: applyoffset, the bez part at joins is messed up when no offset, suspect problem in FlatpointToCoordinate, mismatch with bez join next to sample points
  bug: delete last weight node, width is wrong

  DONE bug: now node scan and display works, but drag doesn't!!
  DONE toggle send color to fill/stroke should update the color box
  DONE debug remove points affect on weight nodes
  DONE bug: add point before beginning not spacing weight nodes properly
  DONE deleting points totally screws placement of weight nodes
    DONE if at endpoint, need to delete any out of bounds, but also insert a new one right at the tip
  DONE bug: drag point, press i or I while dragging, moves all points or crashes
  DONE bug: select all in subpath (shift A) does not appear to select from proper subpath all the time
  DONE bug: menuoption start new subpath does not start one!
  DONE implement dump_out_atts
  DONE bug: when path is a child, width nodes are not drawn correctly
  DONE bug: line cache on a square produces inf. lines off when final+initial coincide 
  DONE select nodes with rectangle broken? <- no, just drawing really thin, misplaced LineWidthScreen

  --0.098:
  bug: make new line with freehand tool, cannot move weight nodes in a rational way
  bug: should not create new control points by pressing cntl, unless there is movement
  need to show hints for when new points will be placed
  dup path object links the path style, but save and load, it is not linked... need to sort out line/fill style inheritance/linking
  needs input boxes for width nodes
  compound paths, change width only changes one. no way to affect all
  need a way to work on multiple weight nodes:
    shift all
	width multiply all
	set width
  need input boxes for weight node info
  zero tips not working on mesh edit? with import test-engrave.laidout
  debug cache sample point distribution, the interpolator is really bad as is
  powerstroke export requires apply offset.. else weight nodes are all messed up
  clarify export for weighted paths, use outlinecache and areacache as needed, check all filetypes exporters: svg pdf scribus image/ps/eps
  finish implementing joins. need to clarify weight behavior at corner joins
  weight computation is currently done based on even t spacing, but probably should be mapped based on distance
  interfs.cc: weights not being shown unless '_'
  be able to pull points back along path near endpoints

  debug extrapolate
  implement open at any point to possibly break into separate subpaths
  need numerical entry for all weight node characteristics
  need to protect against reentrants at corner joins.. makes holes unless nonzero rule, and sometimes sticks out the other side
  sliding around the nodes is really annoying.. should do according to proximity to center line
  inkscape has multiple interpolators, we should too!
  actions to implement:
    need arbitrary cut
    need command to apply offset
    need path combine (combine path stacks of multiple PathsData)
    need break apart (make new PathsData from each in paths stack)
    need special break apart to make new PathsData, but preserve totally enclosed paths as intential holes
    need mechanism to be able to add custom path actions to context menu 
  implement work on multiple path objects at once
  ApplyTransform() and MatchTransform() should adjust scaling of width nodes?
  custom caps.. define cap to a horizontal line, take endpoints and endpoint tangents, return the cap warped to fit the tangents
  custom dashes, with custom start/end dash caps
  need some kind of extrema fill in for angled paths, so it matches sweep of whole segment, not just endpoint sweep lines
  should have shortcut to offset ALL weight nodes, or angle ALL nodes
  how to deal with bbox when using wacky weights?? -> use bbox of outlinecache (or centercache), non-weighted (optional): use flat bbox + linewidth
  need something like path->PointInfo(t, &pp, &vprev_ret, &vnext_ret).. done is GetWeight(t, &width, &offset, &angle)
  maybe should revisit PathOperator stuff, such as for spiro paths
  need way to turn off selectability of path points (thus leaving only width nodes selectable)
  per vertex join type?
  linestyles are always output independently, can't currently cascade with current code
  if background is green or red, hard to see the direction indicator
  line join round should add extra point for really wide angles to make them more circular 

  copy and paste
  maybe dotted connection if only both end points selected, click connection to close?
  maybe control when on vertex will create whichever handle does not exist, control nearest drag point determines which is created
  not show every single handle. only ones associated with active vertices, show unactive vertices with small circles
  align nodes -> create temp set of data to pass to AlignInterface?
  transform handles for nodes, including flip
  subdivide, repeat key press restores old segment, then adds 1 more point to num of points from last press
  toggle between add points / select points?
    if add points, show dotted line to indicate a new segment incoming
  finish new path/pathoperator/pathsubinterface/pathinterface structure 
  have a widthtype == hairline? use width==0 as no stroke

layers palette Layers
  key controls for navigation within menu:
    space/enter toggle open and closed submenu
  edit colors not highlighting every other
  move
  rename in place
  implement buttons
  locked
  visible
  selectable

  should have document list at top, showing current doc

file filters: filefilters:
  out textaspaths:
    pdf     CaptionData  TextAsPath
    scribus CaptionData  TextAsPath
    svg     DONE-CaptionData  TextAsPath
  ---0.098:
  open with... on export
  remember full export settings
  need createImportConfig/createExportConfig to make ImportConfig/DocumentExportConfig objects from parameters for all filters....
  need equirectangular out 
  selecting out should auto select tofile | tofiles, depending on how many spreads selected for out
  export ranges should accept "1-4, 6, 20-25" and "5-1", or by name "iii - iv"
  perhaps switch export/import objects to new cascading Style as base..  
  standardize basic load such that non-laidout files create new document of proper size then import
  When there are errors or warnings in exporting, should be able to have the error log such that
    you can just jump to the offending bit easily. This would also be used for preflight verifiers,
    and maybe also mass edit things, like edit all images..
    - have ViewWindow::JumpToObject(&place, objectid);
  DONE for export, need way to have easy crop, especially from command line 
  DONE remember last export type
  DONE when saving, name shouldn't be red if ok to save
importdialog ImportDialog import dialog:
  should show filename as red if don't know how to import
  import option to preserve broken links
  importing should not spawn new windows
  importing should sort out duplicate names
  would be nice to show preview of what is to be imported
image
  export format should be an enum. need to extract possible save formats from Laxkit
  option for setting background color, at least white|transparent
  for gs, make sure temp file is removed, should probably locate in user space maybe? or make sure perms set reasonably
  DONE should really make this graphicsmagick or cairo based, not gs+pdf based
  DONE should color background per paper if !transparent
laidout export:
  need a Laidout out! for partial exports, or conversions between nets/papergroup lines/etc
  implement crop
  save option to force path data into svg d style instead of default laidout style
  save option to not output line caches
laidout import:
  pops up spurious windows
  maybe option to create new layers, or insert to existing layers?
  option to insert new pages, or merge onto existing pages

  need to center within new margin area, as compared to previous margin area
  partial import of page ranges
  import of resources
  import of master pages
  import of limbos
  DONE inserts unneccesary layers
  DONE (can't duplicate?) does not appear to scale correctly, does odd scaling 
pdf PDF:
  text out very broken.. imageout via gs complains about malformed pdf on fonts
  fonts are not doubled up, each text object is exporting its own
  export lines has outlines in evince?
  export complex engraving is really, really slow. probably all the string reallocation?
  pdf optimize jpg dump, compress image data
  still true? pdf export if a path has null linestyle/fillstyle it buffers until next path drawn
     instead of drawing with some default style
  pdf out needs clone deref.. needs clone deref still?
  graphicsmagick for import? subimage and subrange of image_info passed to ReadImage
  page labels?
  implement crop
Scribus scribus:
  export paths fails on compound paths. scribus has dichotomy Polyline|Polygon
  make sure it works for 1.5.2
  font size confusion
  caption export centering
  check for updates in file format for 1.5
  import/export color meshes, for recent versions of Scribus
  import/export linear and radial gradients
  scribus in/out: font sizes, stroke widths
  import should try to apply the Scribus layout correctly, at least for 2 page spreads
  import should do something meaningful with original Scribus page bleed values
  scribus export should show actual version export
  scribus import: need to read page sizes from actual page attributes, as it may well be different than in document attributes
    -> this necessitates revamp of singles to use more than one paper type
  implement crop
  DONE caption -> path, then out, all paths are normal EXCEPT text paths, which are upside down
  DONE paths outputting upside down
svg: SVG
  on out, need option to have 90/inch or the new 96/inch
  testsvg-disappearing.svg.. many objects disappear after read in at different zoom levels. wtaf??
  text in fail
  in for powerstroke
    on read in width nodes are zeroed, does not correspond to actual width of line
    some other dup nodes causing bad stroke approximation in some of the stuff that magically disappears
    can't get at the weight nodes after import 
    after in: nodes right on each other produce bad vectors
    after in, does weird things with width node -> child objects not display correctly 
  in hangs.. should NOT default to powerstroke.. the cache for complex stuff REALLY bogs down, creating NaN draws
  need to parse units
  in needs to account for viewBox
  in needs to parse "use" elements and other "#" refs
  in/out for meshes
  radial: transparent inner circle, patch edges
  out: text linespacing.. unclear how Msize/linespacing maps to svg options
  DONE bug: only sometimes, exports at skew angle
  DONE need in for style on paths
plan:
  need an In()
  implement paper rotation for out
ppt:
  implement crop
  implement paper rotation
ps:
  implement paper rotation
  for plain postscript, there's bitmask, but no transparency. maybe optionally do simulation with dithered bitmask..
    a lot of work for a deprecated format, but could have other uses, like for PDF/X-1a
  paths not filling correctly
  engraver no out, equiv object problem?
  implement crop
  DONE test ps out image patch does correct vert flippedness
  DONE image out seems to have stopped working?? <-because it depended on images being LaxImlibImage
  DONE must make sure it doesn't depend on Imlib
eps:
  implement crop
  export seems to be rather broken
  command line export file name defaults to "output#.eps"
  implement paper rotation
xtg from quark?
idml from indesign?
 

----------------0.098 ROADMAP ITEMS: features and enhancements------------------------
website: explain a bit more how to install dev versions, and place side by side with "stable"
website: need to redo screenshots section for mobile friendliness
update fileformat.txt
check laidout.1 when time to release
update docs to have new release number
update translation base files
update screenshots, sync with features
update links page
update help page
update dtpcompare.html
test:
  each window type: about palette view spread command text
    help: window pane does funky stuff
  test in different window managers
  each export filter (via command line in new script in examples.. ignoring problems in eps)
  make some test scripts for command line testing


mousemove decorations shouldn't change when an interface absorbs one

color strips for full transparent should show checkers in all strips, not just the alpha strip

MenuInfo AddItem functions are really terrible overload nightmare, need something simpler like, with no menu combined:
  AddItem      (const char *name, int id = 0, int info = 0, int where = -1);
  AddIconItem  (const char *name, LaxImage *icon, int id = 0, int info = 0, int where = -1);
  AddToggleItem(const char *name, LaxImage *icon, int id, int info, int state, int where = -1);

plugins:
  figure out proper de-loading.. have to restart?
  check for already loaded

captioninterface CaptionInterface captiondata CaptionData
  bug: bitstream vera sans, "Text" convert to path puts e correct, but screen render puts it out too far. huh??
  implement proper pdf export
  color fonts: consider native otf:
    Mozilla and Adobe’s svg table, microsoft's colr/cpal, Google’s PNG images (CBDT/CBLC tables), Apple’s PNG images (SBIX table)
	freetype dev branch maybe supports colr/cpal and google's way?
  implement the different layout modes: rtl ttb
  debug for rtl and vertical as returned by hb, or set explicitly with direction
  right to left (figure out how to do with harfbuzz)
  need to do proper coordinate finding for mouseposition when paste into a nested group
  text to path:
    option to do all one path,
	or separate objects per character (or glyph), but clones of a resourced group of glyphs
  need handy option to mirror, instead of escaping to object tool
  need handling when opening a file and the font is not found!!!!!!!  options for substitution
  opentype variations
  select, copy
  for overstretched alignment, bounding box not updating correctly
  should adapt from multiline edit, since it already has cut/paste, selections, and is mostly debugged??
  control-u hack for poweruser unicode character insertion
  use selected text as sample when popping up font dialog
  lorem ipsum
  markov ipsum

export/print dialog
  make print button experimental only?
  vital to debug send to printer
  export should have a preview of what is actually going out, flip through spreads
  in papergroups with multiple papers and double sided impositions, need to ensure front and back are output properly for printer 

clean up filefilter.h definition to allow explicit declaration of ObjectFilter in DrawableObject

fontdialog: FontDialog
  need a way to remember layered fonts, to easily activate and deactivate
    read from standard fonts places, like .config/laidout/(version)/fonts
  favorites: tag and column
  user tags, not just fontmatrix tags, option to update fontmatrix?
  should be able to access list of font favorites, and a user's preferred organization of fonts..
  need to implement load specific file for a font

  makeinwindow SOMETIMES not working, select one, puts on bottom line
  font->SetFromFile() should do more fontconfig checking to grab propper file+family+style+size
  FindFont() is faulty, as it only lookes up family/style.. should search by the unique file name
  sometimes family+style is not unique, but has different languages.. should detect this
    use postscriptname: "DroidSansHebrew-Bold" -->  "Droid Sans Hebrew"/"Bold"

  bookman font style names getting chopped off: due to name collision and using psname as reported by fontconfig
    this is unreliable! need to have proper unique font naming 
  sample block should be multiline
  need support for svg fonts.. useful for pure svg fonts, and opentype svg, see cairo user fonts
  pgup and down doesn't select a reasonable one
  fontconfig directory config options
  should REALLY have a LayerFont head containing the whole list, not a stand alone list which causes too many problems
  figure out why some color fonts are not scanned by fontconfig
  needs line spacing slider
  option to search by spacing, ie monospace, see fontconfig: FC_PROPORTIONAL, FC_DUAL, FC_MONO, FC_CHARCELL
  vague search via fontconfig matching, to find a match for something like a "sans"

  font preview column in list, custom sample
  language coverage search
  select default language/script
  select opentype features
  optional common font finishers? like centering, underline, color, highlight, fg/bg, etc

  DONE sample block should not strictly adhere to fontsize, as it can get very big (or too small)
  DONE you can still scroll off when few visible items.. grrr!!
  DONE should really get around to implementing scrollers
  DONE fontmatrix import? fontmatrix uses a sqlite database.. should be straighforward to scan it

ImagePatch:
  use float or double for color sample
  abstract to be a filter, with optional stand alone object

Perspective perspective:
  optimize the image mapping

Clean up mesh/patch controls: Mesh PatchInterface 
  perspective arrangement: approximate transform controls through perspective grid
  maybe should not be able to escape off path tool when editing as path
  reverse lookup is not very precise: need to warp back and forth ONLY when necessary, as when
    switching to different, non-point-distort mode

  edit multi objects in mesh tool.. should be able to move around many nodes?
  coons are not really smooth at internal edges? try with engraver, makes corners with current inner interpolation
  tracing infrastructure should be part of base mesh class.. would make easy for color mesh to use
  when on edge, it highlights, but if you are outside of mesh, it will switch to other object
  smooth edit mode should be default. It's not working when more than one square
  smooth edit fails along edges
  rotate/scale single control point should move attached controls in smooth mode
  add new patches should smoothify joins when in smooth edit

  just as moving edges, should be able to move any vert column or horizontal row of points
  selected nodes should probably be colored, just gray disappears, hard to work with
  maybe have status message say how many points are selected
  nudge mode with shift?
  rect select nodes
  for cache preview, only update affected patches.. difficult to compute when overlaps
  changing recurse and rendermode in patch controls doesn't change that setting in the instance that does random rendering!!
  implement more right button config options to make the settings more discoverable
  circle warp needs a proper circle/ellipse interface
  make base path dump_out as Path, not PathsData? make it easier to read file removing the unnecessary??

Remove obsolete HelpWindow code?

newdoc:
  when change number of named paper, make it "custom"
  open on image should create a new singles with default paper and image centered

save as should change save/import/export/current directory to that directory
  -> need to test current behavior

finish phasing out MenuSelector

TreeSelector:
  click open jumping current to 0
  with text colors, mouse over highlight is off (can't dup?!?)
  not showing alternate gray/white bgs (can't dup?!?)
  option to use markup for labels
  tree display flat option
  makeinwindow() doesn't account for columns
  DONE add scroller

Units:
  need something like Convert(value, units_from, units_to, &error, overrides), where overrides is 
    something like: list of [units_id, newscaling], like for temp redefining "Em" or "px"

collect for out: define directory to pull all files and external resources in, including the .laidout file

General design usability
to be a decent editing platform, Laidout needs:
  undo/redo
  master pages with auto page number is important.. for image based page numbers, dynamic objects important!!
  would be convenient to send to gimp for editing, update later live
  when delete/add pages, need option to reposition to same orientation in margin area
  snapping rotate, maybe drag handle with control?
  drag constraints more accessible in only y or x direction
  more specific control over transform.. numerical specification
  per object visibility
  per object opacity
  better key input edits
  guides
  clipping
  text
  Grouping:
    select only within group zone
	easy selection of proper group zone
	remove 'i' from common shortcuts for all tools to let it be used for ObjectIndicator
    DONE ungroup doesn't check if FieldPlace indices change, making ungroup and group unreliable

polish:
  page navigator should allow type in shortcuts like "end" 

GroupInterface groupinterface ObjectInterface objectinterface:
  default hide draggable flip, but have as right click option
  viewport should fully utilize Selection::CurrentObject(), keep curobj in sync
  double click on group should change selection area to group contents?
    need to clarify how grouping operates. Perhaps implement sets at same time
    clearCurobj() with skim to group for group->double click?
  implement move to "Some other page..." when 'm' in groupinterface
  things to allow editing of wrap, inset, clip paths, and chains
  maybe show flip and 90 deg rotate handles only when mouse outside the selection area?
  control-move flip line to snap to horizontal, vertical, 45 deg, or common gravity points 

ObjectIndicator objectindicator:
  need ability to click on object to select that object. Rename only when already selected
  allow drag reparenting
    hover over parents to pop list of alternate children to reparent to
  show (root) at bottom of stack

voronoi Voronoi delauney Delauney:
  is double rendering when object is selected
  importing raw points or data without matrix should map so that it all appears on screen
  intersect with page bounds? or other custom boundary? default bounding box + padding?
  implement show_points
  implement as extension for delauney/voronoi interface
  right click
    start new object
	toggle delauney lines
	toggle voronoi lines
	toggle points
  auto fill with randomized colors
  merge different voronoi objects
  sample point color from background?
  less than three points doesn't remap rationally, need to update extra lines to something proper

FileDialog filedialog:
  focus should start on file line
  ^l should shift focus to file line
  when something is not openable or saveable, buttons should be greyed out
  should probably have a scroll bar
  implement icon list selector
  implement option for (or just show) directories first
  Resizing zaps view to top, should preserve 1st in window
  need laidout only bookmarks file
  edits color style: bg alternating isn't highlighting
  tooltip to show full path of bookmarks
  need drag and drop bookmarking
  when you change directories, it should indicate if it corresponds to a bookmark

  DONE need add and remove bookmarks
  DONE sort by details 
  DONE sort by size should sort by actual size, must interpret "5 gb" vs "3242 b"
  DONE columns need to autosize

when resizing viewportwindow and a temp_input window active, make sure it stays on screen?

autosave
  start fresh doc, autosaves which may be saving into confusing location. maybe save in config dir?
  autorecover.. -> when an autosave is newer than the file we are opening
  option to choose how many to save near original file, and how to remove old
	[ ] Backup on save to: __%f~__   ___%f#~___ <-- use '#' to signal increment save
			%f=filename, %b=basename (without extension), %e=extension, # for numbered autosave
	[ ] Autosave.
	  Time between autosaves:___5_minute__  ...ms millisecond s sec seconds second m minute min hr hour h
	  Naming for autosaves: __%f-autosave#____
      Number of different autosaves: ___1___

need option for always write relative links.. now defaults to absolute

file button expansion:
   Collect...          <- gather all refd files into one place. ask to specifically not collect per file
   ----
   Commit (git)        <- ensure file is git tracked.. add if necssary before commit
   					      double check that other files refd by this one are tracked in same repo as well?
                          maintain list of what to collect, what to ignore when committing?
   Commit settings...  <- choose or set up repository, how to handle passwords?? libgit?
   Revert...           <- show log, select old 

open from template:
  get template list:
    scan all template dirs: ~/.config/laidout/version/templates, or SHAREDIR/templates
    name -- file path -- basic info about file 

really thin objects should still be selectable, need to add a slight grab area outside bounding box
should be able to click within selection box to move all and not click right down on one of them

need to implement image cache clearing on low memory, to substitute for cairo not doing it like imlib did

minimum dp size is not small enough

unparent from a group should remove the group if nothing left? probably not, leave that for ungroup

anInterface::PreRefresh(), for instance to get engraver trace object to render below all selected objects

need to clarify what happens when you open and close documents. open already open pops new window, not sure if it should
  also record ownership of limbos, open and close docs always leaves limbos behind

color slider popup:
  have a "Done"/"Dismiss" button
  be able to choose which color sets are visible
  make color slider box be able to be a pane
  would be nice to enter number values in any color format
  need palette selection tab
  click without dragging select color
  click and drag shifts, but DOES not set value under mouse
  out click on hex edit is picking color
  optionally show clickable numbers
  clicking anywher in the new/old should swap
  show numbers to click on: 255, 65535, float
  toggle sets of sliders: rgb, cmyk, alpha, cielab, hsl
  DONE should pop near the mouse 

Gradient:
  resize inner circle, make small past a threshhold makes circle go away
  extending past bounds
  double click to call up color selector

Palettes:
  load palette should have a preview: file dialog preview function
  allow editing palette strips, import those to gradient tools
  custom palettes
  if height < 2*textheight, then hide name info
  wheel between loaded palettes?
  have a none color
  right click for:
    load palette
	select palette
	save palette
	dup palette
	New from a generator (like rainbow)
Soup up the color box so one can recall previous colors, and/or integration with palette window
    -->delay until proper color implementation in place
gradient resources
  owner: file/user global/system global
  name
  tags
  color strip: stops
    position
    color

Colors:
  DONE need to update ColorSliders to use dp gradients
  color picker that previews text?
  convert to using Color objects instead of all ScreenColor:
	gradient
	color patch gradient
	image patch
	caption
	linestyle
	fillstyle
	path
    DONE images (doesn't use color per se)

in general for windows, need better styling.. too much is hardcoded. problems later with high dpi screens
  for instance revamp interfaces' concept of single pixel lines

make drag and drop selections work

need more mechanism so that popup dialogs stay on top of window they are "children" of

need a global Laidout method of making unique ids
 -> update in Engraver tool, and object indicator overlay

image graphics filters:
  node editor
  graphicsmagick
  gmic
plugin for easy antiprism import for net creation

for purely command line execution, should be able to make a binary totally not X dependent.

Import image list: default previews 

externally saved pages, for long documents
  save "page" files? reference from Document?
  and/or save "object" files, with layers in the file, have special DrawableObject flag to save its contents externally

conformal mapping option instead of mesh? see http://benpaulthurstonblog.blogspot.com/2015/12/parameterized-quadratic-conformal.html

ellipseinterface:
  crash on lbdown: dp is null???

command prompt window: command line
  option to record/save/load whole session of prompt window
  up/down should traverse history
  control-up/down, break out so you can go anywhere

load document, should load images on display only(done), or create previews in background..

guides:
  snap guides to objects
  snap objects edges to various things

align tool: aligninterface AlignInterface
  needs polishing, the lines and indicators get a bit lost
  context menu seems to be the group interface menu
  need way to specify center of rotation per object
  need to make discoverable, not just as key shortcuts
    -> make as standalone tools, now that viewport stores selection?
  endpoints should be oriented triangle, not circles which make it look like path nodes
  explode in normal align
  should be able to scale and rotate a non-line path when not in path mode
  need manual mode.. drag grid marks to position manually... have that option available on others, auto transform to auto
  gap looks ugly.. have indicator highlight path itself, drag that around
  would be VERY handy to be able to recall previous arrangements, so you can partially redo 
  final layout options: unoverlap -> possibly snap to path, then spread out on path to not overlap
  extra custom finishing per object?
  reorder on layouts? -> how to handle reorder in gap and unoverlap?
    trace out order path... show with numbers
  drag out path, order of intersection is new object order?
  maybe grid drag control to reorder
  snapping to 0/50/100
  number box while dragging, goes away after a second, or click on it to edit
    if inc/dec arrows, have it inc or dec the decimal place cursor is on
  default presets: inkscape crossover

Spread Editor:
  need to make pagelocation ref count pages, or (need to anyway) check all known views for errant page refs after delete pages
  would be nice if apply and reset should be grayed as relevant
  adjust page preview resolution
  after an insert, have temp wheelable number indicator, update on screen?
  need to be able to move empty spreads
  need to remove hidden pages from pagemarker 
  debug select spreads with rectangle -> need real box intersect? do we?
  modify page range gui, click on a page label, where ever it might be... select pages in spread editor
  debug spread limbo threads and page groups
    implement render
	debug drag and drop
  create new document from spread view?
  hide should collapse into a single thing so you can arrange more simply, instead of still having to sift through many

need infrastructure to propagate and save tool settings 
Tools should remember their settings
	remember tool settings: double click on tool icon? right click...
	remember tool settings

    figure out which settings need to be remembered, and install as resource.. what happens when diff
     windows are using diff tools? which settings are remembered? have tool styles that are saved, as
     well as the running tool use settings 

paperinterface:
  interface for custom paper size
  implement paper favorites:
    be able to nest favorites, item->favorite = "submenu/23", item2->favorite="2", final element is number?
  laidoutrc needs list of custom paper sizes
  papergroup tool needs custom paper input
  debug papergroup tool in spread editor
  paperinterface: in spread editor (done), and able to print it out, don't forget to remove DBG for release!
  options to show order of papers, print all of one size paper first? auto sort order by size? auto wrap image?
  Load, save, add, delete paper groups
  papersizes are not translated. Should they be??  
  papergroups:
    work out scheme for resource ownership: they can be owned by:
      1.DONE  Document: if no project, save with document by default
      2.DONE  Project:  save in project file
      3.or Global resource: save in ~/.laidout/version/papergroups
          class FileRef 
        papergroup->owner=Document, Project, or FileRef
  paperinterface:
     no doc, define papergroup, convert papergroup to singles pages?
     orient viewport to paper
     snap other papers to various boxes
     double click to edit paper details
     in spread editor (done), and be able to print it out
     more versatile size control per paper
     edit window? should be edit on screen....
        Name:  default single letter
        Paper: Letter, 8.5/11, landscape
        Box: Media [v]   Box: Clip [v]
                            [ ] None
           0 0 8.5 11       X: 0   Y: 0
                          W: 8.5 H: 11
        [delete paper type][new paper type]

should take precautions so that dialogs do not get buried, would need to respond to circulate events

in laxkit, key and mouse state should already be filtered to only contain laxkit modifiers,
reserve names for CommandMask (macs), and a few other custom masks for other weird keyboards

mass image edit, need to remap dirs for old files!!

bleeding mechanism should be functional

option to use different go/don't go colors

animated beacons for anchor points to make them visible

curves:
  curvemap needs predefined ramp profiles, remember last, load/save
  curvemap needs brush ramp mode to show symmetric graph
  clip wrap render to graph rect
  brush ramp edit mode: incompatible with wrap? or just have editor move points symmetrically?

lineedit:
  seems to be an occasional redo bug, reinserting in wrong position
  password
  date
  time
  DONE dir

Convert impose-only to be based on feeding it an ExportConfig

clarify how locks, visible, selectable works. base in Laxkit?

object select, 'a' toggle select or not, select all in current selection area (ie page or layer base)

'm' should be able to move whole groups, means must be in object tool?

For objects that appear very small, the drag handles should not be operable.. shift only
For objects that are really skinny, it is not practical to have the handles be a percentage of the skinny
  part.. should have minimum drag areas?  

for blend modes, maybe place name conversion in Displayer, in case there are a ton of custom blend modes??

nup:
  flowed
  unclump
  unoverlap -> define strategy, either shift H, Vert, along v, or shift on axes between objects
  object reorder
  scale panel should allow mpx and control zoom around point

overlays should get first pick of input, BUT if another has a button lock, it shouldn't mouse move update

need a way to tell rect interface to enter move mode with lbdown, as when initialize a child interface

standardize new Impositions: convert to new ResourceManager system. each has:
   interface OR window editor
   class type
   default resources
  possible to define other editors for any imposition type
  
make "make uninstall" work, and remove coop from installed position 

select region by intersect, not by corner inclusion...

When importing from an image list file, should be able to say if and when to auto-make previews
    new option in file, should be easy

mystery data enhancement: import as placeholder objects: if convertible to laidout elements, do not actually
                expose them as such. Keep source in external location, current laidout only rearranges.
                  ---> this is same as import as image, but using laidout objects to render them with, not bitmap images
                  ---> this is useful to have a standard object indicator built from laidout objects, but
                         do not let them be editable

resources: 
  should have a way to narrow down what resources are saved when you save a single document.. right now, if you
    have multiple docs open, the resources are mixed
  really should have option to separate or merge resources when multiple documents open, rather than always merge?

how best to integrate Styles, Attributes, and Values??? style types:
 Laidout
 Project
 Document
 Page
 Group
  draw objects: Image, ImagePatch, Paths, Path, LinearGradient, RadialGradient, PatchGradient
 PaperGroup
 PaperType
 Imposition: Singles, DSS, Booklet, Signature, Net:Box, Dod, etc...
 ImageImportFilter
 ImportFilter:svg,ppt,sla,ps,eps,odraw
 ExportFilter
-->Styles are Values that can be cascaded from other Styles
   Values cannot be cascaded
-->C++ classes represent data that can be accessed and modified through:
     onscreen
	 file saved to disk
	 interpreter
   would be advantageous to write a single object def, and output options and documention to
   each of the 3 targets

when closing a document window, decide whether this removes access to it, or just the view to it

from laxkit: clear up focus handling which currently REALLY SUCKS especially when dialogs are up
    focus off a dialog, then refocus, must manually set control focus. should store which subwindow
     gets the focus when autofocused.

pointin should check to visual boundary, not bounding box (? maybe just optionally)

customizable object child relationships to parent, rather than simple transform
  incorporate gss!!
  DONE scale x
  scale y
  scale free
  stretch, proxy displays ok, but after install stretch doesn't work
  shear *** seems to be off from point, need shear protection, produces null axes sometimes
  DONE scale
  DONE rotate
  DONE scale+rotate
  DONE move

  add page target anchor
  add parent target anchor
  add object anchor
  margin area not working
  implement rules list click remove
  implement click rule, update display, watch for offset
  anchor names should not have quotes in them, because disk i/o is easier and I'm lazy
  problems when anchors are on a page that is not at origin?
  check for only align objects that are on pages
  margin area anchors not staying when margins change
  transform relative to alignment point of parent (50,50) for center, for instance
  code
  edge magnet
  when trying to move an anchor when you still need to select invariants, flash the invariants
  need edge indicators for more convenient snapping


calculator/scripting
  security restrictions?
  showing defined functions should show the code
  set dump_out_atts should do full atts if any subattribute has full atts, else output "set": "{1,2,3}"
  dump_out_atts should output raw toStr things.. Strings currently return "str" which is output "\"str\""
  debug for
  debug generic with operators, doesn't seem to be working
  debug operator definitions
  debug using and import... maybe remove using, use import Math.* instead
  debug number deref: var a={1,2}.. out of bounds not returning cannot deref.. returning "Ok"
  var a if a already exists should fail
  error reporting up function calls doesn't say pos/line for each expression
  overloading does not handle parameter mapping per overloaded, it is scanning only the first, and using that
  print string plus any non string should stringify the thing and append to string
  curline not getting incremented properly when there is skipping or looping going on
  implement a PaperSizes object that recognizes all the names, or maybe a set somewhere with all names?
  Math.oeuaeou does not produce an error
  allow if statements on single line without curly braces
  inputting lines when open {"( maybe prompt "... " to wait for closure?
  how best to allow created object defs to be referenced as parameter, variable, or set types, it is a mess right now
  destructors
  show overloaded entries


gshell:
	needs massive testing
	type "tool." (for instance), you can highlight choice with mouse, but does not insert into edit, only inserts when nothing had been typed
    *** not getting options for all tool and object!!
    searching seems to be messed up, improper matches when mid stream
	mid stream search is messing up match names
    completion should be worked into the edit.. "object.|" then tab is replacing all text with field name
    when in function, search among parameter names also
    need to search for context names before searching for calculator names
    search within area, not total tree
    text delete to nothing should only show the top areas in search results
    thoroughly test object access
    object.translate((1,0)) -> MapParameters should map the flatvector to p, not to x
    shift up/down for showing completion
    reposition cursor to error
    for parameters, facility for special edit dodads

custom tools:
  scripted
  normal tools, but jump to special settings for those tools..

implement marks
  bleed marks
  color bars from a palette
  spread info: spread type, current date and time, creator, spread number/total number of spreads

turning off overlays should revert icon to current tool

maybe flag whether to export limbo with spreads?

action/shortcut selector overlay

templates Templates:
  save as default, or just save as.
  partial templates, fill in non defined, like use booklet but manually define paper size

ImageImport dialog: (actually, needs a total redesign) import images importimage
  should have preview for alignment options.. grab destination page to show preview
  auto bookmarks, one for examples, or save as template
  Choose/Review tabbed window
  horizontal stack frame between choose/review and preview window
  fancier path selector
  for preview field, show green or something and change tooltip if preview will get generated
  click on file to preview file, preview to preview preview
  generate image previews progress box...
  autogenerate should do special check for ~/.thumbnails to conform to freedesktop spec size and type...
  importimages-> eps --> they are fit into boxes!! they should maybe be inserted into a stream..

dynamic objects (generated images, dynamic images, rendered images)
    eps objects to pdf: export as image, plant in PDF as image
    group objects with laidout elements, updateable with script
    image objects using ImageImportFilters
    perhaps add TEX_BIN, LATEX_BIN, and text editor to quickly add stuff like that!!
    external commands:
      website to recommend learn more
      needs what type of file
      needs how many files
      needs what other info
In image properties dialog, have the popup list of potential previews
    preview style needs debugging and testing so as not to fry the freedesktop ones
if you change an eps to a non eps with the insert file, it still thinks it is an eps..
 image objects should auto change between the available image formats:
  bitmap--eps--embedded svg--dynamic
  Dynamic Content:
    displayed as images, or displayed as group of laidout objects
    possibly multiple images or objects in linked list:
      one source creates multipage ps, for instance, each page gets its own object
    controller source object:
      generator command + context
   examples:
    ps/tex/pdf/etc to eps files, import the eps files
    broken down equirect panorama to net
Image import chain:
  1. eps|EPS: Laidout builtin
  2. svg|SVG: inkscape command line export
  3. other external renderer: asymptote, structure synth, sunflow, pov-ray, lilypond, latex, graphviz, gnuplot
  3. * images: graphicsmagick
  4. jpg, png, gif, tiff: Imlib2

move Value and FieldPlace to laxkit? ValueHash would be very useful to ease configs

merge set and ValueHash?

Masking
    pathinterface conversion must be done
    true object tree with all lax data objects subclassed to hold children, and reference parent

debug multi head? seems to crash when showing with projectors plugged in
	screen info should return x,y,w,h, with flag saying it is part of a whole.
	if only one screen, then x,y is 0

pagerangeinterface:
  drag off screen should toggle off
  need overlay close box?
  edit base in place
  should remember old label format strings, to easily select back to them

for range on import/export, should have a range parser that accepts unconnected ranges, ie "2,4, 5-10"

shortcut dialog:
  general window arrangement is really bad
  area heads need to have human titles, _("Image Tool") instead of "ImageInterface"
  mode for shortcut check not quite working, such as ' ' with button to duplicate
  need hierarchy overlap features... it is easy to get lost in different zones
  panning f'd up, close but incorrect bounds checking when drag
  needs to make in window for cursor moving
  numberpadmask?
  char names for wacky xf86 codes.. accept 0x*
  mode based shortcuts have no display capability
  implement search
  need ability to add multiple keys for same action
  svg keyboard out

have option to specify language from command line

reimpose option: center images, but not rescale?

improve split window
  control wheel to expand bevel
  load/save split bevel settings
  debug mouse cursor change when over gap
  simplify pane customization, docking

signature editor  Signature editor Signature Editor signaturei
  should be able to drag and drop stacks
  making new paper size should try to find matching paper name for a given size
  fold replay should start showing FRONT page of stack, not back. THIS IS A BUG
    if start from whichever, should show inverse of folds to normal as necessary
  scale pages preview needs to use margin area, not page area
  needs indicator of number of groups, show 3/10 for current sheet in little box above stack, allow numerical input

  show margin, trim, binding when not totally folded
  for large page counts, need number entry in stacks
  would be nice to indicate when there is a centerfold of any signature
  mixing different page sizes mixes up the PageLayout at boundaries. alignment should be either always centered, or custom
  after you add stack, the added one should be selected
  must implement dragging around instance blocks...
  helper controls to adjust inset to match up final size for sigs of different size
  indicators for different signature instances when viewing page spreads
  need to be able to designate particular sheets with properties (like color),
    as current insert mechanism assumes folds happen before insert
  tab to cycle through handles for numerical input
  mouse over and drag show numbers on canvas
  export pdf or lo doc template
  implement work and turn, work and tumble interface
  should probably be some kind of tooltip to say shift for fold under.
  binding edge must be same orientation for all stacks and inserts
  need a paper size editor stand alone window, entering numbers should convert name to custom
  paper select should give hints as to whether paper size can hold actual final size
  detect non staplable binding edge, show red rather than green
  test impose-only for all imposition types
  be able to specify single sided.. allows bound accordian foldings?
  implement creep

  DONE stacks should display below squared bounding box of pages? currently rotate canvas, the text is messed up 
  		-> have text rotate with it, more clearly shows where "bottom" is

Make extension to be able to use Inkscape live path effects (lpe)!! The run on svg snippets, so should be somewhat
  straightforward to call externally.. BUT have optional tool overlay. Figure out how to reverse implement to also
  run within Inkscape.

printer mark rendering default to a single color? editing of net outline allowed, but
then changes not stored

probably should decide how to handle making windows based on interfaces.. it is a more productive route than window dominant

pagemarkerinterface:
  option to lock label size to real space? make export contact sheets a little prettier in some cases

page thumbnail should be rational, ie image should be whole page, not just contents+transform,
	 and thumb transform makes image dims to page coords

in number edit boxes, wheel should allow changing numbers, change on digit mouse is over?
  is it better to wheel at curpos?? probably.. select that digit, must track after changes!!!

global resources:
  current frame/time
  current language, for conditional text

global Laidout settings:
  color theme
  icons
  tooltips
  per tool default settings
  thin line width (default 1 pixel, but this is bad for high dpi screens)

external tools:
  figure out a way to standardize verifying that tool exists and is executable
  to image renderers
  to object renderers
  Image editor (gimp, krita)
  plain text editor (gvim, console vim, command, etc)
  associate (object type) <-> (external editor)

> laidout blah.laidout...     <-- if starting like this, if blah.laidout does not exist, then abort
> laidout 1.laidout 2.laidout <-- if starting like this, if either exist, then start up, but have 
                                    warning message that one document failed to load?
	-> could have a consumable message interface? show a message until the box is clicked on, then it removes itself?

textobjects,limbos,papergroups should maybe be able to be stored per document, not just file, project, or temp
either that, or do away with whole project/document difference, and use only 
projects with their own directory, and projects without their own directory
Selected region out to image(s), regions optionally remembered
    rectangle or path?

import/export styledefs should use the extendsdef mechanism!!!

views with multiple spreads

messages to the status line should have priorities? so once mouse over messages are cleared, it would revert
  back to a lower priority message

perhaps split radial and linear gradients to different tools? makes more sense

WhateverImposition, to only have limbos, but extra handling for exporting
all at once imposition... this would allow mapping of scribus layout without fuss. that
  could be a special case of n-up, where you specify n to be infinity, with m number of
  columns, not necessarily aligned, as scribus does.


importimages: remember last settings

Master Pages master pages / template pages:
  have objects be tagged with ref object, so you can create a page with a master page
    that has a "text frame" for instance, but different children per page
  need option to import master pages

some kind of grease pencil?

Saving: multiple documents open, save only the headwindows that refer only to that doc,
OR save no window configs (saved with project), OR save custom configs

need conversions: gradient->color patch
                  image -> imagepatch <- do with image filters rather than specific object type
                  imagepatch -> image
                  colorpatch -> image?
				  engraver -> path
				  path -> engraver
				  text -> path
Convert:
  bool reversible;
  char *from;
  char *to;
  int support; //like how reliable it is to convert, warnings for what is lost
  CanConvert(object, from, to, warnings_ret);
  newobject = Convert(object, to);

file format prettification  --file-format
  dump should differentiate between DrawableObject and pure resource objects... right now, all lumped together
  adapt the scribus xml/att convertor to parse the output of laidout --file-format
  into something meaningful...
  #-------blah--------  <- mark a new section
    thing      #thing's docs
      subthing #subthing's docs
    #docs for following atts indented same as previous atts
    next_att #(one or more) next_att docs

export with limbo, and no doc or papergroup, means use bounding box for limbo?

measure tool.. configure measurements to be:
 displayer units
 object units
 units mapped to either type of units, so can use light years for units that are actually inch physical paper units
have arrows, and write on screen what the size is...

preflighting:
  check for empty groups
  check for broken images
  check for transparency
  check for bad fonts/missing chars
  compatibility should be determined by file type managers, not individual objects
    return if object is currently compatible with some standard, 
    like "PS LL3", "EPS 3.0", "SVG 1.2", "PDF 1.3", "PDF 1.4" "HTML/CSS2"
    1==yes, straight out
    2==yes, but needs rasterizing
    this would simplify preflight checking

maybe expand the page label system to have some kind of to-do markup.. this could be combined with preflight verifiers
  or other search activities as work-in-progress annotations

cloning: convert to master: make a clone be the original.. 
  means swapping the actual master with the clone
  ..if an object is cloned, maybe just have them all be clones, and original becomes a remote "data block"
      to be dumped to file in a defs section? if all refs gone but one, then it takes place of clone?

for clones, it would be easier to have a "defs" group or something, so deleting the original of a ref will
  not cause problems. When deleting objects, must then take care to update parent, so it is immediately known
  if an object is without a home.

tiling cloner: clone tiler  CloneInterface
  new tiling should update viewport color per basecells
  should not assume preview has I transform
  memory hole back, third time!!!
  radial needs wind scale input

  need more distinction between what is a base object, and grabbing a copy of existing object.. too easy to confuse the two!
  copies should be selectable, at least so you can adjust the colors: gave current_base, current_copy
  should have z order controls for base cell stuff
  clipping options when source images overlap in final layout
    maybe be able to modify base cell outline, use that as clip? autocorrect for overlapping?  
  snap sources to fit/fill in base cell areas
  implement proper shear/aspect protection for:
    allow shear of p1, p2
    allow non-locked aspect of p1,p2,pm,pg,pmm,pmg,pgg,cm,cmm
  highlighting in selection box should draw name next to the thing on hover
  making new id names needs to make unique
  1m and mg do not seem to work: need a final transform to apply, NOT repeatX/YDir().. those shift without rotate
  bug: not showing orientation arrows correctly when outline cuts through middle of bounding box
  really need undo
  save color hints of base cells with Tiling object
  change color of boundary, and outline preview
  select objects, wrap base cell around it
  implement circular interface 
  need rudimentary editor
  need flag for ok for cell to shear, ok for cell to scale x/y independently, and have it apply as it should afterwards
  config:
    default line/fill render style (if any)
	boundary outline style
	base cell outline styles
  should have a render preview to show actual grid coverage
  need finishing tool
  design interface for clone on path
  Hisrchhorn Medallion
  truchet tiling
  penrose/heesch/net clone interface
    penrose p1: pentagons, pentagrams, rhombus, sliced pentagram
    penrose p2: kite and dart
    penrose p3: 2 rhombs
  need progressive search when mouse over box
  autocreate seamless tile image
  autofit source objects/images to the pattern to minimize gaps
  map to inkscape tiling clone on export?

Imposition use cases:
  for sig editor, need paper partitioner, then stack sections
  for same document, have stack of impostions, each with its own page set? would make docs with body pages and
    cover easier, without having to implement full "project"
  booklet contains two threads, read one way, flip book over, read the other way
    remember custom views, to swap rotated display, for instance
  booklet but each paper is trimmed differently, like for tabs
  moebius
  need cutting marks for posterizing for lining up different sheets
  impose only needs access to papergroups
  maybe any spread setup temporarily to another imposition on export?

Net imposition
  create from papergroup: one papergroup used as page spreads, another used as actual paper group?
  net extra scaling non-functional
  NetImposition needs import/export net,
  export svg
  convert to/from laidout elements
  interactive unwrapper and build net interface figure out bleeding and connectivity infrastructure
  figure out more efficient clipping of Imlib images
  finish implementing double sided nets
  saving when net is internal is not proper.. does not distinguish between diff. nets and whole
  import/export cff2?
  export vrml? pdf 1.6?  
  save different setups: papertile AND net layout
  load save nets from: 1.net files or 2.OFF files(done) 


hedron window:
  send imp
  receive imp
  remember net and paper placement
  sometimes paper disappears
  tutorial
  auto generate equirectangular -> flat
  reverse project net onto an equirect for export
  highlight paper when dragging will move it
  need to draw other nets in outline (at least) in paper view
  need to preview sides on hedron
  memory hole in polyptych
  file open, preview hedra
  file open, preview equirects
  need to implement more options for polyhedron connections, to allow mobius strips...

  DONE proper units for papers

implement undo.. ideally use same code for both undo and recordable/assignable actions
  object interface
    need to account for:
	  dragging m changes
	  key flip, or non-dragging changes
	  object deletion
  image
  gradients
  paths
  meshes
    color
	image
  engraver
  inside curve editors
  paper interface
  spread editor
  reimpose
  unwrapper
  metadata stuff
  cloner
  during scripting?!
  saveable?

PlainTextWindow plaintextwindow PlainText plain text window:
  need showing line numbers
  clicking around doesn't properly update caret drawing
  need control zoom to change font size
  some day should have syntax highlighting in Laxkit::MultiLineEdit
  indent/unindent selected lines
  toggle expandtab
  plain text edit window specify interpreter to process the text with
  option to show line numbers
  indent/unindent
  move selected lines up/down
  regex searching
  DONE need control-'.' or something to jump to last mod point

pixels units should be set as per document dpi

perhaps laidout configure should call laxkit configure if it thinks laxkit is not configured yet

CharacterInterface characterinterface
  should show unicode number/glyph name if available
  implement recent
  implement suggestions
  alternate glyphs

Spread editor: SpreadEditor spread editor spreadeditor
  should have border drag to move, not middle drag

need python implementation of Attribute and class structure in/out to help file importers in other python based environments


===================Anything below here probably needs discussion before implementing================
---------------------------------- other enhancements ----------------------------------
how to keep track of class hierarchy? impositions are now listed by resource instance, what is
  best way of keeping track of base imposition classes? this is needed for file format description output

for translations, there is a difference between locale translations and language translations!
  not sure if it is worth paying attention to... need to investigate if locale as it affects keyboard input
  is separate from what locale we read in translations from. If it is distinguishable, that is fabulous, in that
  we can maintain the current locale key input, but change the language translation at will...

investigate pdfcreator as method to reduce file size

repeater tool on path: could be adapted to help animation tweening

DumpImages within Arrangements, which are sort of a template of rect regions (2-d guides)
    would also implement the dump into Limbo
	dump into any string of objects, this is really the same thing as laying out a stream, maybe merge this?

when importing, have MysteryData, which has special attributes "@file-pos" which says
 where in the original file the attribute starts:
 MysteryData
   transform/bounds
   title (shown in screen)
   description
   file format the data is from
   attribute style listing of the object? or straight from file
 in: convert file to attributes, or provide method to tailor to an output format (eps, pdf objs, raster image),
         and provide a preview image or object to stand in for the file..


limbo transform should be obeyed. It can be moved, scaled, etc,
page layers should be simplified, each layer behaves according to its transform, and more controls inserted to handle layer maneuvering

impositions:
 Name                  Abbr.       Folds     Leaves    Pages
 Folio                  fo, f        1         2         4
 Quarto                 4to          2         4         8
 Sexto, Sixmo           6to, 6mo     3         6        12
 Octavo                 8vo          3         8        16
 Duodecimo, Twelvemo    12mo         4        12        24
 Sextodecimo, Sixteenmo 16mo         4        16        32

configurable command buttons to automate certain things with minimal window clutter....

dump OUT an image list? Scribus has "review images" feature.. can jump to location, edit print/view, etc

directory reorganization?
 windows/ <-- purely ui elements
 core/ <-- implies isolating core functions


a "Place" tool like indesign?? preview images and place by dragging out one by one, as well
 as optionally into Arrangements

food for thought:
  haskell envelope function:  http://projects.haskell.org/diagrams/doc/manual.html



======================================DONE=================================================
When releasing new version, combine these with ROADMAP items for release notes.
These can then be purged after each release...
===========================================================================================


DONE space to duplicate not working (on images)
DONE thumbnail images not showing in the spread editor view
DONE won't let me open for new preview image in imageinfo dialog, click ok, window comes back up
DONE inkscape bug!! zoom out, NextSpread/PreviousSpread icons stroke on side disappears, somehow handle related, adding more handles fixes
DONE wrong git rep on website 
DONE option to change default exported file name
DONE make saveas file edit color code right: red for can't save, yellow for overwrite
DONE tooltips and event timers seem to be frelled
DONE for objectindicator, more than one input window allowed.. should block, and turn off when mouse out click
DONE crash on ungroup
DONE update touch_recent for Laidout files in the newer xbel type 
DONE shell broken sometimes.. bad font??  
DONE Singles not loading what was saved
DONE paper spread view, shadow is offset wrong 
DONE bg for spread flipper not the same as the other buttons after popping up spread editor.. wtf???  
DONE button or key down doesn't cancel tooltip once it is up 
DONE (apparently) Printing only goes to letter, even though page size says go full page, in image(done), pdf(done) and ps(done) out!!! *(#@*&#*(&*&$(
DONE print command to printer is not respecting the paper size
DONE (but still must imp cache clearing on low memory) cairo doesn't cache images like Imlib does,
	    so every image is totally loaded on file open. bad, bad, bad!!!
DONE moving several limbo objects back to page does NOT actually move them all onto the page!! grrr!
  move them on then off -> fail, move off then on -> fail.. problem with group bounding??
  --> changing one context messed up the other contexts, each context in selection must be updated on move
DONE be able to change units preference via a window control rather than just editing laidoutrc by hand
DONE objectinterface/groupinterface deleteobject goes out of sync when telling viewport to delete: oi.cc:830
       -> loop over selected fails when object order changes.. need to update contexts of other objs in contexts
DONE group/ungroup needs to update viewport selection to current selection object
DONE group/ungroup calling TreeObjectReorder, and clearing any selection, needs to stay selected after
DONE ungroup is not applying transform appropriately
DONE grouping frelled.. can group, but cannot seem to select existing groups to ungroup 
DONE group/ungroup broken
DONE objects disappear on group <- due to SOMEDATA_LOCK_CONTENTS blocking it out.. it shouldn't though 
DONE importing images should default the image id to a variant of the file name 
DONE cloning, jump to object in offscreen page, switches pages, but bounding box wrong place
DONE clone a child.. NOT PUTTING CORRECTLY!!!! totally wrong matrix, dropping into wrong context
DONE clone via space bar not moving object after space.. moves bounding box, but actual objects stays put
DONE reparent not installing correct transform
DONE jump to parent seems to be broken and causes crashes
DONE (? can't duplicate) object layer positioning for Home and End keys projecting out in wrong way 
DONE (? can't duplicate) hang after reparent object 
DONE (can't duplicate) test-tiled-mark.laidout: delete the bars, add bars back then try to export, program stops (not a segfault)!!!! headwindow gets decremented somehow 
DONE cut marks are too thick.. cairo problem??  grey bars export to pdf ok, but don't display correctly, outline is too thick 
DONE recent files do not appear to be most recent file opened
DONE memory hole: add gray bars and quit. 85 objects remain!?!
DONE gray bars does not have accurate bounding box initially
DONE add gray bars, displays wrong width, but save and load, width is proper. wtf?
DONE papergroup objects are drawing beneath the white of the pages
DONE bug: add gray marks, then '.' for next object, endless loop!
DONE bug: add gray bars, move to a page, ^g crashes!
DONE paper display shows shadow in wrong direction 
DONE (can't duplicate anymore) file open, click around recent, etc, crashes!!
DONE filedialog: lost ability to define new bookmarks.. bad!!
DONE filedialog: control click no longer toggles
DONE should have a "touch" startup, to run laidout with a new named file, like you might do with "vim something_new.txt"
		-->already there! -n 'saveas file.laidout, landscape, ...'
DONE transfer group behavior to GroupData. would greatly simplify some things 
DONE ungroup should have ungrouped objects selected after ungrouping 
DONE need infrastructure to propagate and save tool settings (..now needs implementing per tool)
DONE add menu items to rulercornermenu for reseting view orientation <-- use lower light corner menu under scrollers instead 
DONE CharacterInterface: outclick needs to destroy without sending
DONE when you try to open anything in ~/.laidout/*/templates, then it should open as a template 
DONE everything loads as a template now???!!?!??!!  
DONE SimpleColorAttribute() should allow css3 stuff, like rgb(50%, 25%, .5), and hsl(), where h->[0..360)
DONE should be able to handle any css color attribute, whether "#fff' "#ffffff"(done) or rgb(...)(done), hsl(...)(done), hsla()(done)
DONE SimpleColorAttribute() should have double rgbaf available
DONE SimpleColorAttribute() should return an end_ptr 
DONE caption data up, objectindicator up, the OI not scanning mouse position correctly 
DONE file button:
   DONE Save
   DONE Save As...
   DONE Save a copy...
   DONE Save a copy incremented
   DONE Save as template... <- need to enter template name and file?
   DONE Save as default template
   ---
   DONE New...
   DONE Open...
   --- 
   DONE Backup settings...  
DONE autosave
  DONE need a gui
  DONE every X minutes
DONE voronoi Voronoi delauney Delauney:
  DONE Equivalent object to PathsData, or GroupData with delauney, voronoi, points, numbers
  DONE implement data tree insertion
  DONE implement proper file name for import/export 
DONE tooltips:
  DONE mouse over to get rid of one tooltip, remain in window, it just pops up again shortly after. need check against last tooltip to prevent
  DONE change desktop, tooltip remains
DONE ObjectIndicator: render text with white halo
DONE GroupInterface: Not catching mode==1 correctly.. can't zoom with just space anymore
DONE need to spiffify tabframe.. it is hideous
DONE need better render for tab frame headers
DONE add blank image, change description, do not change filename, makes width/height zap back to 0...  
DONE should probably flock in UpdatePreference(), even though it's just reading, another thread may mess with it 
DONE implement LineStyle::dump_out_atts
DONE implement FillStyle::dump_out_atts
DONE FillStyle: implement i/o of all the available blend modes
DONE some side handles on object tool scanning as different handles
DONE clone tiler:
  DONE needs a tiling description dump_out
  DONE big memory hole, maybe only after render?
  DONE debug recursive, need controls to say how much to recurse
  DONE dragging source image should optionally autoselect the base cell nearest mouse
  DONE? render is slightly offset from base cells occasionally (??? can't dup)
  DONE control box should either shrink oversized text or put bigger box
  DONE need to be able to individual base objects
  DONE transform the base cell complex should transform base objects along with it
  DONE click on base cell, update viewport color box
  DONE should have some indication which base cells source objects belong to, maybe outline with color?
  DONE base cells click needs to check for in bounds of grey clones
  DONE must be able to explicity say which control layer to act on: boundary, base cells, source objects, in case of bad overlap
  DONE need to be able to use full object handles when moving source objects... the size handles are disabled
  DONE line thickness of default render is way too thick, should be a small proportion of bounding box
  DONE bug: can't scale base objects
  DONE bug: spiral and rotation tilings not working again 
  DONE? debug groupify
  DONE memory hole back <- this time in RectInterface!!
  DONE need better context for non identity page transform for EditThis
  DONE make groupify default
  DONE on export the base tile line width is wrong, since inkscape doesn't handle screen width (now default to .01 of user unit)
  DONE need to be able to remember tiling for future editing
  DONE need to be able to delete base objects all at once
  DONE should use preview->basecells, rather than generate fresh with Render, so if user edits base cells it behaves as expected
  DONE hovering outside select box should not highlight a tiling
DONE color sliders input hex, it's flipping r and b 
DONE Lightness slider appears black to white, but the middle is full color, needs segmented render like hue
DONE click enter area of color pickers, does not install color!!!!  
DONE rectinterface with extra m not propagating transform correctly: move(done) rotate handles
DONE rectinterface should reset down point on control press
DONE captioninterface
  DONE update svg and scribus exporters to using linespacing and glyphs
  DONE? cant duplicate anymore bug: convert to path with viewport->ChangeObject(), puts obj way off, doesn't show path decs, other weird
  DONE Paste not triggering recache
  DONE fonts need to dump in(via fontmanager->dump_in_font) and out(done) by themselves
  DONE need to implement dump_out_atts
  DONE memory hole after convert to path
  DONE FindPos needs to account for glyph/cluster coverage
  DONE (seems to be gone with switch to harfbuzz) change centering not smooth, text placement hops, font to bitmap render size snafus?
  DONE key move for caret not working for ffi
  DONE deleting leaving excess glyphs???
  DONE needs line spacing slider
  DONE baseline justify
    DONE needs hint to preserve baseline align when changing font size or line spacing
DONE page range tool in spread view not showing text
DONE bug: select path tool. one point. escape. delete. boom!
DONE saved file, not showing up in recent 
DONE remove imlib dependency from ImagePatch
DONE (not sure why, switched to use explicit gradients) ColorSliders not really showing black unless you set from hex, but solid black is still sending properly
DONE file live search selects wrong one.. using absolute index instead of file 
DONE filedialog click on directory icon, crash!
DONE bug: press 4, wtf?? should zoom to current object
DONE Can't actually select Recent
DONE Can't import images to limbo
DONE searchable menus
DONE switch to GPL v3? would broaden gegl usage, some of which requires gpl3

