summaryrefslogtreecommitdiff
path: root/progress.txt
blob: e487fdd00b1a9c314f85eaa98d0c3bea1fd9910c (plain)
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


Approximate Progress List (Incomplete)




Overall estimate: ???%




Polished:

FLTK
FLTK.Devices
FLTK.Devices.Surfaces.Copy
FLTK.Devices.Surfaces.Image
FLTK.Devices.Surfaces.Paged
FLTK.Devices.Surfaces.Paged.Printers
FLTK.Dialogs
FLTK.Event
FLTK.Images
FLTK.Images.Bitmaps
FLTK.Images.Bitmaps.XBM
FLTK.Images.RGB
FLTK.Images.RGB.BMP
FLTK.Images.RGB.JPEG
FLTK.Images.RGB.PNG
FLTK.Images.RGB.PNM
FLTK.Images.Shared
FLTK.Menu_Items
FLTK.Screen
FLTK.Static
FLTK.Text_Buffers
FLTK.Tooltips
FLTK.Widgets
FLTK.Widgets.Boxes
FLTK.Widgets.Buttons
FLTK.Widgets.Buttons.Enter
FLTK.Widgets.Buttons.Light
FLTK.Widgets.Buttons.Light.Check
FLTK.Widgets.Buttons.Light.Radio
FLTK.Widgets.Buttons.Light.Round
FLTK.Widgets.Buttons.Light.Round.Radio
FLTK.Widgets.Buttons.Radio
FLTK.Widgets.Buttons.Repeat
FLTK.Widgets.Buttons.Toggle
FLTK.Widgets.Charts
FLTK.Widgets.Clocks
FLTK.Widgets.Clocks.Updated
FLTK.Widgets.Clocks.Updated.Round
FLTK.Widgets.Groups
FLTK.Widgets.Groups.Color_Choosers
FLTK.Widgets.Groups.Input_Choices
FLTK.Widgets.Groups.Packed
FLTK.Widgets.Groups.Scrolls
FLTK.Widgets.Groups.Spinners
FLTK.Widgets.Groups.Tabbed
FLTK.Widgets.Groups.Text_Displays
FLTK.Widgets.Groups.Text_Displays.Text_Editors
FLTK.Widgets.Groups.Tiled
FLTK.Widgets.Groups.Windows
FLTK.Widgets.Groups.Windows.Double
FLTK.Widgets.Groups.Windows.Single
FLTK.Widgets.Groups.Windows.Single.Menu
FLTK.Widgets.Groups.Wizards
FLTK.Widgets.Inputs
FLTK.Widgets.Inputs.File
FLTK.Widgets.Inputs.Float
FLTK.Widgets.Inputs.Integer
FLTK.Widgets.Inputs.Multiline
FLTK.Widgets.Inputs.Outputs
FLTK.Widgets.Inputs.Outputs.Multiline
FLTK.Widgets.Inputs.Secret
FLTK.Widgets.Menus
FLTK.Widgets.Menus.Menu_Bars
FLTK.Widgets.Menus.Menu_Buttons
FLTK.Widgets.Progress_Bars
FLTK.Widgets.Valuators
FLTK.Widgets.Valuators.Adjusters
FLTK.Widgets.Valuators.Counters
FLTK.Widgets.Valuators.Counters.Simple
FLTK.Widgets.Valuators.Dials
FLTK.Widgets.Valuators.Dials.Fill
FLTK.Widgets.Valuators.Dials.Line
FLTK.Widgets.Valuators.Rollers
FLTK.Widgets.Valuators.Sliders
FLTK.Widgets.Valuators.Sliders.Fill
FLTK.Widgets.Valuators.Sliders.Hor_Fill
FLTK.Widgets.Valuators.Sliders.Hor_Nice
FLTK.Widgets.Valuators.Sliders.Horizontal
FLTK.Widgets.Valuators.Sliders.Nice
FLTK.Widgets.Valuators.Sliders.Scrollbars
FLTK.Widgets.Valuators.Sliders.Value
FLTK.Widgets.Valuators.Sliders.Value.Horizontal
FLTK.Widgets.Valuators.Value_Inputs
FLTK.Widgets.Valuators.Value_Outputs




Done:




Partially Done:

FLTK.Devices.Graphics (incomplete API, otherwise polished)
FLTK.Devices.Surfaces (incomplete API, otherwise polished)
FLTK.Environment (incomplete API, otherwise polished)




To-Do:

FL_Pixmap
FL_GIF_Image
FL_XPM_Image
FL_Tiled_Image
FL_Browser
FL_Check_Browser
FL_File_Browser
FL_Hold_Browser
FL_Multi_Browser
FL_Select_Browser
FL_Help_View
FL_Table
FL_Table_Row
FL_Tree
FL_Label
FL_Postscript_File_Device
FL_Postscript_Printer
FL_Overlay_Window
FL_GL_Window
FL_Glut_Window
FL_Cairo_Window
Fl_Display_Device
Fl_File_Chooser


(all these have to be done to put something in the polished category)

- mark all methods as inline
- make sure all C++ reinterpret_cast for methods is to the Fl object, not the My object, because inheriting
- check FLTK library internals to see which char* return values need dealloc
- qualify all C++ virtual method calls with the class name to prevent dynamic dispatch on C++ side
- provide documentation for how C++ methods map to Ada functions and procedures


(delay this until figure out an easier way to expose protected methods)

- make all protected methods available




Bugs to fix:

Fl_Group ABI_VERSION checks
Fl_Help_View ABI_VERSION checks
Fl_Tooltip ABI_VERSION checks
Fl_Text_Editor tab_nav ABI_VERSION checks
Fl_Wizard draw() method private/protected
GNAT bug with type_invariant combined with derived type and a begin section in a package, eg dialogs.adb




Never:

Fl_FormsBitmap
Fl_FormsPixmap
Fl_FormsText
Fl_Free
Fl_Sys_Menu_Bar
Fl_Positioner
Fl_Timer
Fl_System_Printer
Fl_GDI_Graphics_Driver
Fl_Postscript_Graphics_Driver
Fl_Quartz_Graphics_Driver
Fl_Xlib_Graphics_Driver
Fl_Plugin
Fl_Plugin_Manager
Fl_Device_Plugin




A note on callbacks and overriding:

As part of its normal operation, FLTK calls a Widget's Draw and Handle methods from its
main loop to deal with draw and input events. Since it's another part of the program
that is invoking them, even if it's a part the programmer has no direct control over,
this binding is set up so that if you override Draw or Handle, the behaviour will change.

On the other hand, something like the Push method in tabbed groups is usually invoked
from within that same tabbed group widget's Handle method. Therefore, keeping consistency
with Ada semantics, overriding the Push method will NOT change the behaviour of the
corresponding Handle method. You must also override Handle.