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