source: xtideuniversalbios/trunk/Assembly_Library/Inc/Menu.inc @ 54

Last change on this file since 54 was 54, checked in by aitotat, 13 years ago

Changes to Assembly Library:
Drive selection moved to own dialog from File Dialog.
File Dialog now displays loading text for better usability in slow systems.
Moved some functions from Memory.asm to new Registers.asm.

File size: 4.1 KB
Line 
1; File name     :   Menu.inc
2; Project name  :   Assembly Library
3; Created date  :   13.7.2010
4; Last update   :   23.10.2010
5; Author        :   Tomi Tilli
6; Description   :   Defines for Menu library.
7%ifndef MENU_INC
8%define MENU_INC
9
10;--------------------------------------------------------------------
11; Menu Library users need to use this macro since it will provide
12; compatibility with future library versions.
13;
14; CALL_MENU_LIBRARY
15;   Parameters:
16;       %1:         Function to call (functionName from MENU_LIB)
17;       BP:         Menu handle
18;       Registers:  Depends on function to call
19;   Returns:
20;       Depends on function to call
21;   Corrupts registers:
22;       AX (unless used as a return register), DI
23;--------------------------------------------------------------------
24%macro CALL_MENU_LIBRARY 1
25    %ifidn %1, Close
26        call    MenuInit_CloseMenuWindow
27
28    %elifidn %1, SetUserDataFromDSSI
29        call    MenuInit_SetUserDataFromDSSI
30
31    %elifidn %1, GetUserDataToDSSI
32        call    MenuInit_GetUserDataToDSSI
33
34    %elifidn %1, SetTitleHeightFromAL
35        call    MenuInit_SetTitleHeightFromAL
36
37    %elifidn %1, GetHighlightedItemToAX
38        call    MenuInit_GetHighlightedItemToAX
39
40    %elifidn %1, SetTotalItemsFromAX
41        call    MenuInit_SetTotalItemsFromAX
42
43    %elifidn %1, SetInformationHeightFromAL
44        call    MenuInit_SetInformationHeightFromAL
45
46    %elifidn %1, SetTimeoutValueFromAX
47        call    MenuTime_SetSelectionTimeoutValueFromAX
48
49    %else
50        mov     di, MENU_LIB.%1
51        call    Menu_FunctionFromDI
52    %endif
53%endmacro
54
55; Menu library functions
56struc MENU_LIB
57    .DisplayWithHandlerInBXandUserDataInDXAX    resb    2
58    .Close:
59    .RefreshWindow                              resb    2
60
61    .SetUserDataFromDSSI:
62    .GetUserDataToDSSI:
63
64    .SetTitleHeightFromAL:
65    .ClearTitleArea                             resb    2
66    .RefreshTitle                               resb    2
67
68    .GetHighlightedItemToAX:
69    .HighlightItemFromAX                        resb    2
70    .SetTotalItemsFromAX:
71    .RefreshItemFromAX                          resb    2
72
73    .SetInformationHeightFromAL:
74    .ClearInformationArea                       resb    2
75    .RefreshInformation                         resb    2
76
77    .RestartTimeout                             resb    2
78    .SetTimeoutValueFromAX:
79
80%ifdef INCLUDE_MENU_DIALOGS
81    .StartProgressTaskWithIoInDSSIandParamInDXAX    resb    2
82    .SetProgressValueFromAX                         resb    2
83
84    .DisplayMessageWithInputInDSSI                  resb    2
85    .GetSelectionToAXwithInputInDSSI                resb    2
86    .GetWordWithIoInDSSI                            resb    2
87    .GetStringWithIoInDSSI                          resb    2
88    .GetFileNameWithIoInDSSI                        resb    2
89    .GetDriveWithIoInDSSI                           resb    2
90%endif
91endstruc
92
93
94; Menu initialization parameters
95struc MENUINIT
96    .wTimeoutTicks                  resb    2   ; Selection timeout in system timer ticks
97    .wItems                         resb    2   ; Number of items in menu
98    .wHighlightedItem               resb    2   ; Index for highlighted item
99
100    .wTitleAndInfoLines:
101    .bTitleLines                    resb    1   ; Number of title lines
102    .bInfoLines                     resb    1   ; Number of information lines
103
104    .wWidthAndHeight:
105    .bWidth                         resb    1   ; Menu width in characters
106    .bHeight                        resb    1   ; Menu height in characters
107endstruc
108
109
110; All menu parameters
111struc MENU
112    .menuInit                       resb    MENUINIT_size   ; Must be first
113    .fnEventHandler                 resb    2   ; Offset to Menu event handler
114    .dwUserData                     resb    4   ; User specified data
115
116    .bFlags                         resb    1   ; Menu flags
117                                    resb    1
118    .wTimeoutCounter                resb    2
119    .wFirstVisibleItem              resb    2   ; Index for first visible item on the menu
120endstruc
121
122; Flags for MENU.wFlags
123FLG_MENU_EXIT                       EQU     (1<<0)  ; Close and exit menu
124FLG_MENU_NOHIGHLIGHT                EQU     (1<<1)  ; Never highlight items
125FLG_MENU_USER_HANDLES_SCROLLING     EQU     (1<<2)
126
127
128MENU_VERTICAL_BORDER_LINES          EQU     5   ; Title top and bottom + Info top and bottom + bottom shadow
129MENU_HORIZONTAL_BORDER_LINES        EQU     3   ; Left + Right borders + Right shadow
130MENU_TEXT_ROW_OFFSET                EQU     1
131MENU_TEXT_COLUMN_OFFSET             EQU     2
132
133SCROLL_TRACK_CHARACTER              EQU     BLOCK_EVEN_BACKGROUND_AND_FOREGROUND
134SCROLL_THUMB_CHARACTER              EQU     BLOCK_FULL_FOREGROUND
135
136NO_ITEM_SELECTED                    EQU     -1
137NO_ITEM_HIGHLIGHTED                 EQU     -1
138NO_TIMEOUT_USED                     EQU     0
139
140
141; Keyboard keys (scan codes) used by menu library
142MENU_KEY_ENTER      EQU     1Ch
143MENU_KEY_ESC        EQU     01h
144MENU_KEY_UP         EQU     48h
145MENU_KEY_DOWN       EQU     50h
146MENU_KEY_PGUP       EQU     49h
147MENU_KEY_PGDN       EQU     51h
148MENU_KEY_HOME       EQU     47h
149MENU_KEY_END        EQU     4Fh
150
151
152%endif ; MENU_INC
Note: See TracBrowser for help on using the repository browser.