-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdeprecatedtodolol.txt
209 lines (188 loc) · 8.77 KB
/
deprecatedtodolol.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
stack build --profile -- potato-flow-vty-exe +RTS -xc
stack --work-dir .stack-work-profile --profile exec -- potato-flow-vty-exe +RTS -xc
::TEXT-ICU nonsense::
icu4c is keg-only, which means it was not symlinked into /usr/local,
because macOS provides libicucore.dylib (but nothing else).
If you need to have icu4c first in your PATH run:
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> /Users/user/.bash_profile
echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> /Users/user/.bash_profile
For compilers to find icu4c you may need to set:
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
For pkg-config to find icu4c you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
::LAYER AND SELECTION TYPES::
-manipulator
-CSBoundingBox (always shows)
-get rid of MBox, just inherits CSBoundingBox
-need to figure out inversion issue still though
-does not show for null elements
-specific manipulator (per tool)
-must manage mouse hierarchy or guarantee that manipulators never overlap
-maybe hide manipulators on manipulation? Nah
-it would be nice if click once doesn't actually create the element until
-dragging (as it is now)
-release (creates a box with default size)
-canvas select
IGNORE-if cursor == CSSelect
-OnClick -> cursor = CSSelecting
-supresses manipulators
-how do I do this?
-OnClick/Drag -> select_lBox :: Event t LBox
-OnRelease -> cursor = CSSelect
-if cursor == CSSelect
-OnClick ->
-on element -> begin CSBoundingBox translate
-off element -> begin LBox selection
-OnRelease -> finish LBOx selection -> select_lBox :: Event t LBox
-this design matches illustrator behavior
-broadPhase_cull :: LBox -> [REltId]
-selection manager
-input selection
-new element :: Event t (LayerPos, SEltLabel)
-layer click :: Event t [LayerPos]
-canvas select :: Event t (REltId)
-output
-_selectionManager_selected :: Dynamic t (Bool, [SuperSEltLabel])
-consumed by Manipulators
-consumed by Params
-data/methods
-Data VisState = Visible | Hidden | Lock | Hidden/Lock
-Data VisStateInternal = InheritParent | VisStateInternal VisState
-reverse_layerPos :: REltId -> LayerPos
-status :: LayerPos -> VisState
::UI NOTES::
-vty
DONE/IGNORE-setup reader monad
-off pane click events
-blink timers
-escape key?
DONE-maybe some better way to deal with off pane dragging
DONE-also need to capture release events that happen off pane
-this can happen off screen too, maybe you can capture release events off screen? not sure
-if not, you'll have to check for a new click event and see if there was a prior release event
DONE-i.e. modify pane implementation to ignore drag events that started off pane
DONE-text box that takes return key as confirming a text box and firing off a confirm event, also loses focus?
-pop up panes (e.g. to save to file or whatever)
-needs to take away focus from panes in the background
-we could ad-hoc solves this by having panes always out of focus if the pop up is in focus
-layers
-folders
-click folder selects all contents
-deselect content of folder deselects all parent folders recursively
-hidden/locked/contracted
-need to keep track of which elts/folders are hidden/locked/contract
-need something that updates when layers change
-elt is locked/hidden if it's locked/hidden or any of its parents are locked/hidden
-rename
-multiselect
-highlights in canvas
-drag and drop
-manipulators
DONE-need custom vty image widgets to draw canvas points
-captures mouse down events for dragging per handle
-each handle drag event triggers a modify event
DONE-do I need to focus when dragging handles?
-I think so, so that parents ignore dragging events when dragging handles
-cancel event to cancel drags
-first time modifies need to undo the creation of elt as well so you don't need to undo twice (once for modify and once for new elt)
-make sure layer position of new elt is tracked correctly
-text input box exact overlay
-if we use built in text input, it unfortunately will create a whitebox that covers other stuff...
-maybe you can at least make the box not white D:
-sline multi click when creating new one
-click same spot to finish?
-click drag to move line, what happens if it's an endpoint? corner?
-move cursor, you can move/resize via CBoundingBox even if just one thing is selected
-renderer
DONE-hook up BroadPhase renderer
-ignore hidden
-selecting
-ignore hidden/locked
-click select single
-click drag select many (draw bounding box)
-selected bounding box
-params
::line tool::
-series of points restricted to V/H
::text tool::
-click once and just start typing, return adds a new line
-click and drag to establish an area to type in
-params
-text align
-insert vs overwrite
-need a way to convert overwrite to insert based on text align without adding too many space characters
::free line tool::
-series of points
-params
-line style
::params::
::NEW TODO::
-need to use holdUniqueDyn or something like that now that you have
-sucks that this needs to do all the equality comparisons with unique. Is there a smarter way around this?
-I think either way, the fanning should happen in potato-flow.. and this way it's easy to change implementation
-refactor selecting code
-selecting code still runs after a cancel
-single click -> straight into dragging
-select draws a box
-create a common manipulator include file
-all manipulators take a common input so you should just combine them into a single data struct
-get basic params working
-manipulate many doesn't work well with inverted boxes
-one way to fix this is to force normalize boxes on ManipEnd but I don't like this... what if we want inverted stuff in the future?
-so the "right" way to fix is to store the normalized state at start of bulk manipulate in a dynamic
-click and release makes box with default size (so no 0 size boxes)
-figure out how to choose boundingbox vs specific manipulator when only one elt is selected
-you could do the "v" and "a" tool as in illustrator, probably the way to go
-but what happens when you click and drag with the "a" tool?
-delete button support
-duplicate support plz
-refactor didCaptureInput so it's not done on a per event basis
-consuming keyboard
-click select seems to select bottom most now
-load file D: lots of work to do
-render outside canvas border
-I want it so selected elements get a soft highlight in the background D:
-do a second render of just selected elements
-backgroundFill to render empty stuff
-you can hook this up to the same delta rendering only
-figure out how you want to handle vty attributes
-do render order properly in Canvas
DONE/IGNORE-box handles still showing when they aren't suppose to
-prob will fix itself when you to BBoundingBox
DONE-consider adding hide flag to handles
-very broken after switching to box tool when previous just created object was changed
DONE-boundingbox stuff
-use same code as MBox, but different behavior based on manipulateImmediately
DONE-try this http://nominolo.blogspot.com/2010/04/haskell-tip-redirect-stdout-in-haskell.html to get stdout
DONE-you need to do monolithic layers because processing drag events using widgets individually gets way too expensive5\IGNORE-consider storing visibility/lock states in SEltLabel
IGNORE-consider hiding handle during creation drag
DONE-move multiselect into selection manager
DONE-probably remove cursor and just use tooldyn
DONE-activate manipulator on tool select
DONE-move new elt into manipulator
-align in manipulator/canvas to decide if it's a "very new" elt
DONE-move dynManipulator into selection
DONE-cancel event to cancel manipulator drags
DONE-tool highlighting
DONE-do proper implementation of shift select in selectionmanager
DONE-splitHDrag2 resizing is broken
DONE-move TODO into vty
::FUTURE::
-multiple BoundingBox scaling modes
-add keyboard manipulation to manipulators
-no selection -> pans canvas
::VTY CHANGES::
-MonadNodeId constraint not needed for pane?
-added PostBuild constraint to Layout
-added splitH and splitHDrag
-maybe do splitHDrag0 and splitVDrag0 for versions that allow initial size
-try and combine code, prob not though..
-(note splitHDrag2 is using pane2 right now)
-added pane2, propose to modify pane to use pane2 implementation
MERGED-(tile . fixed) an issue in `drag` where mouse down would trigger on wrong button
- `end && btn == btn' -> Just $ Drag (x,y) (x,y) btn' mods' False`
-added `Drag2` and `drag2` which can track drag start events
-TODO implement splitVDrag with Drag2 as an example
-add default implementations of HasVtyInput, HasFocus and ImageWriter
-add hDuplicateTo for stderr