Mercurial > projects > mde
comparison codeDoc/ideas.txt @ 159:b06b04c75e86
Finished last commit, rearranged code for the WidgetManager class.
There is now a GUI options section.
Created a third WidgetManager class called WidgetLoader to handle file loading/saving.
Moved most of the code in WMScreen's draw/clickEvent/motionEvent functions to WidgetManager.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Thu, 21 May 2009 20:55:10 +0200 |
parents | e785e98d3b78 |
children | 55667d048c31 |
comparison
equal
deleted
inserted
replaced
158:f132e599043f | 159:b06b04c75e86 |
---|---|
11 -> Widgets: | 11 -> Widgets: |
12 -> scripted widgets | 12 -> scripted widgets |
13 -> decent rendering/theme system | 13 -> decent rendering/theme system |
14 -> events: | 14 -> events: |
15 -> Click events: widgets only receive clickEvent for left-button press, other button events handled alternatively from WidgetManager? | 15 -> Click events: widgets only receive clickEvent for left-button press, other button events handled alternatively from WidgetManager? |
16 -> Click callbacks: replace with "drag callback" notifying widget of release position (and widget)? | 16 -> Click/drag handling: |
17 -> possibly better for drag-and drop support | 17 -> on click: |
18 -> clicked widget recieves depress event | |
19 -> create drag monitor, which records parent and optionally runs parent method on move (which can find the widget/drop-zone underneath) | |
20 -> on release: | |
21 -> method from either dragged or drop-zone widget called with reference to the other: | |
22 -> perhaps function in dragged widget called, which is passed reference of widget underneath, and can call getDropZoneAncestor on this | |
23 -> drag/drop-like possibilities: | |
24 -> magnifier which is dragged from icon, creates a magnified window, and disappears on release | |
25 -> colour-picker which is dragged from a widget and dropped to choose the colour under it | |
18 -> Keyboard widget focus/selection: | 26 -> Keyboard widget focus/selection: |
19 -> a widget is highlighted | 27 -> a widget is highlighted |
20 -> pressing an arrow key replaces widget with widget.nextInDirection (widget, direction) | 28 -> pressing an arrow key replaces widget with widget.nextInDirection (widget, direction) |
21 -> on non-parents, nextInDirection returns parent.nextInDirection (this, direction) | 29 -> on non-parents, nextInDirection returns parent.nextInDirection (this, direction) |
22 -> on parent widgets, if widget is a child and not right against relevent edge, | 30 -> on parent widgets, if widget is a child and not right against relevent edge, |
64 -> Need to check type of content for specific services | 72 -> Need to check type of content for specific services |
65 +1> List for each type of content: | 73 +1> List for each type of content: |
66 +> can use a static list widget for each type | 74 +> can use a static list widget for each type |
67 -> clipboard is type specific; need to decide when to convert, etc. | 75 -> clipboard is type specific; need to decide when to convert, etc. |
68 +> enables better copying; e.g. from double 3.5e9 to int 4×10⁹ | 76 +> enables better copying; e.g. from double 3.5e9 to int 4×10⁹ |
77 > Context menus: | |
78 > Context menu serves (editable?) content most directly under mouse cursor | |
79 > plus content higher up widget tree? | |
69 > Non-static content manager | 80 > Non-static content manager |
70 > Separate managers for options, GUI symbols, data fields, passwords(?) | 81 > Separate managers for options, GUI symbols, data fields, passwords(?) |
71 > Optional saving/loading | 82 > Optional saving/loading |
72 > Possibly different translation sources | 83 > Possibly different translation sources |
73 > manager can take an optional Translator interface/super class, using it to translate strings if provided | 84 > manager can take an optional Translator interface/super class, using it to translate strings if provided |
80 > takes advantage of fact that actual elts don't change | 91 > takes advantage of fact that actual elts don't change |
81 > rebuild list | 92 > rebuild list |
82 -> more work, recreating sub-widgets | 93 -> more work, recreating sub-widgets |
83 > dynamic lists (add/remove elts) | 94 > dynamic lists (add/remove elts) |
84 > have to rebuild lists | 95 > have to rebuild lists |
96 > Widget content? | |
85 | 97 |
86 Extend content with a validator function/delegate, specific to each class, which takes the new value and returns it or a corrected version of it. Not so good to do it generally from Content, since setting a new value via usual method will re-trigger validator and callbacks (e.g. bad validator could cause infinite loop). | 98 Extend content with a validator function/delegate, specific to each class, which takes the new value and returns it or a corrected version of it. Not so good to do it generally from Content, since setting a new value via usual method will re-trigger validator and callbacks (e.g. bad validator could cause infinite loop). |
99 | |
100 | |
101 | |
102 From paper: | |
103 Text styles: | |
104 > use a few styles | |
105 > number and purpose of each hard-coded? | |
106 > titlebar, label, button, field, etc. | |
107 > renderer or something maps a font (font file, size, style) to each style | |
108 | |
109 GUI editor: | |
110 > Widgets are wrapped with/replaced by drag & drop widgets: | |
111 > widgets can be dragged to another drop-zone widget | |
112 > widgets can be dragged to a bin or scrap area | |
113 > new widgets can be dragged from templates | |
114 > widgets can be copied by holding Ctrl | |
115 > widgets displaced by another are moved to the scrap area | |
116 > side bar/editor controls: | |
117 > tree showing current widget structure | |
118 > widgets can be moved (by dragging), restructured, etc. from here the same as from the WYSISYG view | |
119 > new widget panel | |
120 > for creating new single widgets | |
121 > for creating new mini-trees from templates | |
122 > scrap panel | |
123 > widgets can be dragged here from WYSIWYG or tree views | |
124 > widgets can even be edited here | |
125 > widgets remaining on program/editor exit are lost? | |
126 > properties panel | |
127 > for setting widget options (initialisation data) | |
128 > profile selection (section of config file to save to) | |
129 > for easy access to editor (power GUI dev mode) | |
130 > include a theme selection box on the GUI | |
131 > include a button to turn the editor on/off |