/[james]/archive/wimplibs/Menu/6
ViewVC logotype

Contents of /archive/wimplibs/Menu/6

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (show annotations) (download)
Thu Sep 25 18:54:17 2003 UTC (20 years, 7 months ago) by james
File size: 4249 byte(s)
Initial import.

1 REM > JLibraries:Menu.6
2 REM © James Bursa, 1997, 1998
3
4 REM JB 17 Nov 1997 created
5 REM JB 06 Dec 1997 updates to Mess.2
6 REM JB 09 Oct 1998 altered PROCMenu_PopUp to use window handle not name
7
8
9 DEF PROCMenu_AttachSub(Menu$, Item$, Subm$)
10 LOCAL Menu%
11 Menu% = FNObject_Hand(2, Menu$, 0)
12 Menu%!(28 + FNObject_Hand(3, Item$, Menu%) * 24 + 4) = FNObject_Hand(2, Subm$, 0)
13 ENDPROC
14
15 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
16
17 DEF FNMenu_CountItems(Menu$)
18 LOCAL Size%, Menu%
19 Size% = 28
20 Menu% = FNObject_Hand(2, Menu$, 0)
21 IF (Menu%!Size%) AND (1 << 7) THEN =1
22 REPEAT
23 Size% += 24
24 UNTIL (Menu%!Size%) AND (1 << 7)
25 =((Size% - 28) / 24) + 1
26
27 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
28
29 DEF PROCMenu_IconBar(Menu$)
30 LOCAL YPos%, Item%, Loop%, Menu%
31
32 Menu% = FNObject_Hand(2, Menu$, 0)
33 SYS"Wimp_GetPointerInfo",, B% + 400
34
35 Item% = FNMenu_CountItems(Menu$)
36 YPos% = Item% * 44
37 FOR Loop% = 1 TO Item%
38 IF Menu%!(4 + 24 * Loop%) AND 1<<1 THEN YPos% += 24
39 NEXT
40
41 SYS"Wimp_CreateMenu",, Menu%, B%!400 - (Menu%!16 / 2), YPos% + 96
42 Menu_Current% = Menu%
43 Menu_Current$ = Menu$
44 ENDPROC
45
46 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
47
48 DEF PROCMenu_Show(Menu$, XPos%, YPos%)
49 LOCAL Menu%
50 Menu% = FNObject_Hand(2, Menu$, 0)
51 SYS"Wimp_CreateMenu",, Menu%, XPos%, YPos%
52 Menu_Current% = Menu%
53 Menu_Current$ = Menu$
54 ENDPROC
55
56 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
57
58 DEF PROCMenu_Adjust(Menu$)
59 LOCAL Adju%, Menu%
60
61 Menu% = FNObject_Hand(2, Menu$, 0)
62 SYS"Wimp_GetPointerInfo",, B% + 400
63 Adju% = (B%!408 AND 1) OR Menu_Open%
64 IF Adju% = 0 THEN ENDPROC
65
66 SYS"Wimp_CreateMenu",, Menu%
67 Menu_Open% = FALSE
68
69 ENDPROC
70
71 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
72
73 DEF PROCMenu_Window(Wind$)
74 LOCAL Buff%, BuffB%, XPos%, YPos%, Wind%
75
76 Wind% = FNObject_Hand(0, Wind$, 0)
77
78 SYS"Wimp_GetPointerInfo",, B% + 400
79 XPos% = B%!400
80 YPos% = B%!404
81
82 B%!400 = Wind%
83 SYS"Wimp_GetWindowState",, B% + 400
84 XPos% = XPos% + (B%!404 - B%!412) / 2
85 YPos% = YPos% - (B%!408 - B%!416) / 2
86
87 SYS"Wimp_CreateMenu",, Wind%, XPos%, YPos%
88
89 ENDPROC
90
91 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
92
93 DEF PROCMenu_Make(Menu$, Name$)
94 LOCAL Itms%, Temp%, Menu%, Item%, Subn%, Item$, Subm$, P%, Flag%
95
96 Itms% = 1
97 Temp% = INSTR(Menu$, ",")
98 WHILE Temp% <> 0
99 Itms% += 1
100 Temp% = INSTR(Menu$, ",", Temp% + 1)
101 ENDWHILE
102
103 DIM Menu% 28 + 24 * Itms%
104 P% = Menu%
105 Temp% = FNMess_Adr(Name$ + "_Titl", File_Menu%)
106 [OPT 2
107 EQUD Temp%
108 EQUD -1
109 EQUD LEN($Temp%)
110 EQUD &00070207
111 EQUD 100
112 EQUD 44
113 EQUD 0
114 ]
115
116 FOR Item% = 1 TO Itms%
117
118 Item$ = LEFT$(Menu$, INSTR(Menu$, ",") - 1)
119 Flag% = 0
120 Subn% = -1
121 IF LEFT$(Item$, 1) = "€" THEN Item$ = MID$(Item$, 2): Flag% += (1<<0)
122 IF LEFT$(Item$, 1) = "-" THEN Item$ = MID$(Item$, 2): Flag% += (1<<1)
123 IF LEFT$(Item$, 1) = "@" THEN Item$ = MID$(Item$, 2): Flag% += (1<<2)
124 IF LEFT$(Item$, 1) = "+" THEN Item$ = MID$(Item$, 2): Flag% += (1<<3)
125 IF Item% = Itms% THEN Flag% += (1<<7)
126 IF Item% = 1 THEN Flag% += (1<<8)
127 IF LEFT$(Item$, 1) = ">" THEN
128 Item$ = MID$(Item$, 2)
129 Subm$ = LEFT$(Item$, INSTR(Item$, "<") - 1)
130 Item$ = MID$(Item$, LENSubm$ + 2)
131 CASE LEFT$(Subm$, 1) OF
132 WHEN "W"
133 Subn% = FNObject_Hand(0, MID$(Subm$, 2), 0)
134 WHEN "I"
135 Subn% = 1
136 OTHERWISE
137 PROCMenu_Make(FNMess_Lookup(Subm$, File_Menu%), Subm$)
138 Subn% = FNObject_Hand(2, Subm$, 0)
139 ENDCASE
140 ENDIF
141 Temp% = FNMess_Adr(Name$ + "_" + Item$, File_Menu%)
142 [OPT 2
143 EQUD Flag%
144 EQUD Subn%
145 EQUD &07000111
146 EQUD Temp%
147 EQUD -1
148 EQUD LEN($Temp%)
149 ]
150 IF NOT Menu_Fast% THEN PROCObject_Add(3, Item% - 1, Menu%, Item$)
151 Menu$ = MID$(Menu$, INSTR(Menu$, ",") + 1)
152 NEXT
153
154 SYS"WimpExt_MenuWidth",, Menu%
155 IF Menu%!16 < 112 THEN Menu%!16 = 112
156 PROCObject_Add(2, Menu%, 0, Name$)
157 ENDPROC
158
159 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
160
161 DEF PROCMenu_PopUp(Menu$)
162 LOCAL XPos%, YPos%
163
164 B%!400 = W%
165 SYS"Wimp_GetWindowState",, B% + 400
166 XPos% = B%!404 - B%!420
167 YPos% = B%!416 - B%!424
168
169 B%!400 = W%
170 B%!404 = I%
171 SYS"Wimp_GetIconState",, B% + 400
172 XPos% += B%!416
173 YPos% += B%!420
174
175 PROCMenu_Show(Menu$, XPos%, YPos%)
176
177 ENDPROC

  ViewVC Help
Powered by ViewVC 1.1.26