Started by madram, 09:48, 02 July 16
0 Members and 1 Guest are viewing this topic.
Quote from: madram on 12:18, 03 July 16Actually, for code and testing purpose, I would recommend to plug mock routines, allowing automatized unit tests.
Quote from: arnoldemu on 12:45, 03 July 16For handling UI we can have:- callback functions- messages
Quote from: arnoldemu on 12:45, 03 July 16wxwidgets have containers (row, column, grid).The gui can resize *automatically* and it handles any size fonts. I think this should be considered for this gui.[...]please don't use pixel positions
Quote from: arnoldemu on 12:45, 03 July 16So consider a tool that can make the gui.
All the following parameters allow to define separators.Names are formed from the type of 4 cells surrounding the separator, in this order: up-left, up-right, down-left, down-right. The type can be : * o (outside table) * h (header cell) * c (normal cell) * _ (when no separation between up/down or down/left)E.g. hh__ is a vertical separator between 2 header cells. c_c_ is an horizontal separator between 2 normal cells.By default, header and normal cells aren't descriminated. I.e., if you only define cc__, c_c_ and the likes, the separators between headers would be the same.All these parameters takes a widget as value. If this is NoneWidget, the cells are concatenated.The separators are localised in figure 1 below.* oooh (a) Default=oohh* oohh (=) Default=oocc* oocc Default=NoneWidget* ooho (b) Default=oohh* oh__ (U) Default=oc__* oc__ Default=NoneWidget* ohhc (c) Default=occc* occc Default=NoneWidget* h_c_ (~) Default=c_c_* h_cc (d) Default=c_cc* hoco (e) Default=coco* hc__ (V) Default=cc__* cc__ (|) Default=Nonewidget* c_cc Default=c_c_* c_c_ (-) Default=NoneWidget* coco (h) Default=NoneWidget* ohoo (i) Default=ocoo* ocoo Default=NoneWidget* h_oo (_) Default=c_oo* hcoo (j) Default=ccoo* c_oo (.) Default=NoneWidget* ccoo (k) Default=c_oo* cooo (l) Default=c_oo a====================b U header1 Ua=============c~~~~~~~~~d~~~~~~~~~~eU header3 V | |f=============g---------+----------hU header4 V | |f=============g---------+----------hU header5 V | |i_____________j.........k..........l Figure 1. Separators labels.
set_keymap----------Enrich/override current keymap.in: hl= map table.out: N/Areset_keymap------------Remove last added keymap.in: N/Aout: N/Aget_event---------Query event.in: N/Aout: Carry if event occured. Then, A= event ID C= event parameter. NC otherwise.
draw_sprite-----------In: hl = sprite address bc = size to draw (in grid-unit) nb: size might be greater than actual sprite's size (auto-repetition) or less (croping).
fill----Fill a window from current cursor positionIn: bc = size of window to fill (in grid-unit) a = paperscroll_upscroll_downscroll_leftscroll_right------------Scroll window from current cursor postion, by 'a' grid-units.In: bc = size of window to scroll (in grid-unit) a = scroll amplitude (in grid-unit)
set_cursorget_offset (needed for sub-windows with different DisplayManager)write_charwrite_textdraw_spritefillscroll_upscroll_downscroll_leftscroll_right
Quote from: Trebmint on 20:29, 05 July 16Can I ask what this is for? Dont we have Symbos and FutureOs doing this already
Quote from: CloudStrife on 20:39, 05 July 16SymbOS and FutureOS are... OS !I think madram want to do something doing only UI and not in a WIMP paradigm...
Quote from: madram on 13:06, 06 July 16What I called sprite is an arbritrary bitmap to fill a round number of cells. No move planned.
Quote from: TotO on 15:20, 06 July 16More like a tile/pattern so?
Quote from: madram on 09:48, 02 July 16I've taken a look at Symbios's way to define GUI, but I haven't found the way to bind user inputs with specific actions (i.e. the 'controller' part of MVC).
Quote from: madram on 13:06, 06 July 16No code needed to encode UI logic (except some thin wrappers to query/update the model).
* access (2 words): addresses of getter and setter routines.
* on_enter (1 word)* on_exit (1 word)* on_enter_row (1 word) ; for TableWidget* on_enter_col (1 word) ; for TableWidget...Each of these options must be followed by the address of the perticular routine to call.
; In:; HL= external parameter (0 if not set); C= emmitor widget ID; In for setter, out for getter: ; A or DE (depending on widget type): value
; UI Definition, vertical list of 3 numeric fields ---------------------mainUI WORD VerticalStack WORD numField1 WORD numField2 WORD numField3 WORD endOfStacknumField1 WORD CustomizeWidget, myNumeric BYTE setExtParam:WORD data1 BYTE endOfParamnumField2 WORD CustomizeWidget, myNumeric BYTE setExtParam:WORD data2 BYTE endOfParamnumField3 WORD CustomizeWidget, myNumeric BYTE setExtParam:WORD data3 BYTE endOfParammyNumeric; Warning: extParam must be set to use this Widget WORD NumericWidget BYTE minRange, 1 BYTE maxRange, 9 BYTE access: WORD genericGetter, genericSetter BYTE keyMap: WORD numericKeyMap BYTE endOfParameternumericKeyMap BYTE keyPlus: WORD genericInc BYTE keyMinus: WORD genericDec BYTE endOfKeyMap ; Routine for model view updategenericGetter ld a,(hl):RETgenericSetter ld (hl),a:RETgenericInc inc (hl):SCF:RET ; carry to trigger refreshgenericDec dec (hl):SCF:RET data1 BYTE 1data2 BYTE 1data3 BYTE 1
Quote from: madram on 17:52, 19 August 16@BSC: no news since your PM the 31st of July. Should I Worry?
Page created in 0.123 seconds with 27 queries.