annotate codeDoc/ideas.txt @ 151:e785e98d3b78

Updated for compatibility with tango 0.99.8.
author Diggory Hardy <diggory.hardy@gmail.com>
date Sat, 04 Apr 2009 17:32:18 +0200
parents 1125ba603af6
children b06b04c75e86
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
85
56c0ddd90193 Intermediate commit (not stable). Changes to init system.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 43
diff changeset
1 Copyright © 2007-2008 Diggory Hardy
56c0ddd90193 Intermediate commit (not stable). Changes to init system.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 43
diff changeset
2 License: GNU General Public License version 2 or later (see COPYING)
56c0ddd90193 Intermediate commit (not stable). Changes to init system.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 43
diff changeset
3
56c0ddd90193 Intermediate commit (not stable). Changes to init system.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 43
diff changeset
4
43
1530d9c04d4d Column/row resizing implemented for GridLayoutWidget (finally)!
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
5 Make a special "trace" logger which keeps the last 20, say, trace messages and only output them when asked to do so, which might happen when an exception is caught. It might output them via the normal mechanisms, but only when asked (and not all messages may be in the correct order: trace messages might be logged later than they were added to the list).
1530d9c04d4d Column/row resizing implemented for GridLayoutWidget (finally)!
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
6
115
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
7 Use debug scope(failure) to output log messages in many places.
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
8
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
9
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
10 GUI:
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
11 -> Widgets:
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
12 -> scripted widgets
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
13 -> decent rendering/theme system
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
14 -> events:
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
15 -> Click events: widgets only receive clickEvent for left-button press, other button events handled alternatively from WidgetManager?
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
16 -> Click callbacks: replace with "drag callback" notifying widget of release position (and widget)?
1b1e2297e2fc Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 85
diff changeset
17 -> possibly better for drag-and drop support
120
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
18 -> Keyboard widget focus/selection:
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
19 -> a widget is highlighted
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
20 -> pressing an arrow key replaces widget with widget.nextInDirection (widget, direction)
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
21 -> on non-parents, nextInDirection returns parent.nextInDirection (this, direction)
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
22 -> on parent widgets, if widget is a child and not right against relevent edge,
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
23 then tries to return next descendant in direction (only non-parent widgets are returned)
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
24 else does same as non-parent widgets
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
25 -> some widgets may popup a menu when activated
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
26 -> caveats:
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
27 -> all widgets need a highlighted state to show focus
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
28 -> may require moving through a lot of widgets
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
29 -> with complicated substructures, may not be very intuitive
46c63cb1c74f Ideas for keyboard selection of widgets.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 115
diff changeset
30 -> limit to popup menus?
149
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
31 -> these keyboard events only passed if activated by code outside the WidgetManager and no text input callback is active
151
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
32 > Drawing windows/popups (to draw a back):
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
33 -> Use the same renderer & manager:
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
34 -> Make all widgets draw a back?
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
35 -> bad for transparancy and performance
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
36 -> Force first widget to draw a back
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
37 -> extra parameter to pass in special cases
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
38 > Use a sub-renderer
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
39 -> extra parameter to pass
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
40 -> or some kind of lookup by mgr
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
41 +> enables nice transparancy
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
42 +> Use a sub-manager
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
43 +> holds a sub-renderer or something
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
44 +> enables nice transparancy
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
45 ?> integrates with popup support? will this work?
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
46 > each floating/popup widget has its own renderer (last two above)
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
47 +> combined rendering (to texture?) of each "layer" to enable nice transparancy
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
48 > lower performance?
e785e98d3b78 Updated for compatibility with tango 0.99.8.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 149
diff changeset
49
123
d3b2cefd46c9 minSizeChange() allows run-time changes to widgets' minimal size (except for shrinking in a GridLayoutWidget).
Diggory Hardy <diggory.hardy@gmail.com>
parents: 120
diff changeset
50
d3b2cefd46c9 minSizeChange() allows run-time changes to widgets' minimal size (except for shrinking in a GridLayoutWidget).
Diggory Hardy <diggory.hardy@gmail.com>
parents: 120
diff changeset
51 Content:
d3b2cefd46c9 minSizeChange() allows run-time changes to widgets' minimal size (except for shrinking in a GridLayoutWidget).
Diggory Hardy <diggory.hardy@gmail.com>
parents: 120
diff changeset
52 -> Per-content undo support?
149
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
53 > Services:
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
54 > All content:
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
55 +> Clipboard
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
56 > Some content:
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
57 +> Spellchecking
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
58 +> Calculator
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
59 -2> Fixed list of services working on IContent/Content:
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
60 > Clipboard - can't store Content (callbacks)
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
61 -> needs to check content type
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
62 > unless stored as char[] which all content can take
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
63 -> extra conversions (minor)
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
64 -> Need to check type of content for specific services
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
65 +1> List for each type of content:
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
66 +> can use a static list widget for each type
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
67 -> clipboard is type specific; need to decide when to convert, etc.
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
68 +> enables better copying; e.g. from double 3.5e9 to int 4×10⁹
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
69 > Non-static content manager
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
70 > Separate managers for options, GUI symbols, data fields, passwords(?)
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
71 > Optional saving/loading
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
72 > Possibly different translation sources
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
73 > manager can take an optional Translator interface/super class, using it to translate strings if provided
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
74 > Lists
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
75 > filtering uses
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
76 > filter context menu services to those relevant
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
77 > user-filters on, e.g., options
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
78 > filtering implementations (list widget)
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
79 > keep all sub-widgets, but hide some cells
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
80 > takes advantage of fact that actual elts don't change
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
81 > rebuild list
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
82 -> more work, recreating sub-widgets
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
83 > dynamic lists (add/remove elts)
1125ba603af6 Some ideas for content service menus.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 137
diff changeset
84 > have to rebuild lists
137
9f035cd139c6 BIG commit. Major change: old Options class is gone, all content values are loaded and saved automatically. All options updated to reflect this, some changed.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 123
diff changeset
85
9f035cd139c6 BIG commit. Major change: old Options class is gone, all content values are loaded and saved automatically. All options updated to reflect this, some changed.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 123
diff changeset
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).