1 |
REM > JLibraries:Wimp.6 |
2 |
REM © James Bursa, 1997 |
3 |
|
4 |
REM JB 17 Nov 1997 created |
5 |
REM JB 27 Nov 1997 PROCWimp_StartDrag now supports text/sprite icons |
6 |
REM JB 28 Nov 1997 removed PROCWimp_ReadMessages |
7 |
REM JB 06 Dec 1997 works with Mess.2 |
8 |
REM JB 13 Dec 1997 PROCWimp_LoadFile: OS_File 17 -> OS_File 23 |
9 |
REM JB 27 Dec 1997 fixed 'Unknown territory number' bug |
10 |
|
11 |
|
12 |
DEF PROCWimp_Init |
13 |
LOCAL Size%, Numb%, PFlg% |
14 |
|
15 |
DIM B% 511 |
16 |
|
17 |
SYS"Wimp_Initialise", 310, &4B534154, Task_Name$, 0 TO , Task_Hand% |
18 |
SYS"WimpExt_Initialise", 16, Task_Hand%, %11100011000 |
19 |
PROCHeap_Init(50) |
20 |
|
21 |
SYS"OS_ReadVarVal", Task_Name$ + "$Dir", B%, 512 TO ,, Size% |
22 |
B%?Size% = 13 |
23 |
Task_Path$ = $B% + "." |
24 |
Task_Res1$ = Task_Path$ + "Resources." |
25 |
|
26 |
SYS"XOS_ReadVarVal", Task_Name$ + "$Language",, -1 TO ,, Size% |
27 |
IF Size% = 0 THEN |
28 |
SYS"Territory_Number" TO Numb% |
29 |
SYS"XTerritory_NumberToName", Numb%, B%, 512 TO ;PFlg% |
30 |
IF (PFlg% AND 1) THEN |
31 |
Task_Res2$ = Task_Res1$ + "UK." |
32 |
ELSE |
33 |
Task_Res2$ = Task_Res1$ + FNWimp_GetString(B%) + "." |
34 |
ENDIF |
35 |
ELSE |
36 |
SYS"OS_ReadVarVal", Task_Name$ + "$Language", B%, 512 TO ,, Size% |
37 |
B%?Size% = 13 |
38 |
Task_Res2$ = Task_Res1$ + $B% + "." |
39 |
ENDIF |
40 |
IF NOT FNWimp_FileExists(LEFT$(Task_Res2$)) THEN Task_Res2$ = Task_Res1$ + "UK." |
41 |
|
42 |
Erro_Info% = &F0000 |
43 |
Erro_Warn% = &F0000 + 1 |
44 |
Erro_Ques% = &F0000 + 2 |
45 |
Erro_Memo% = &F0000 + 3 |
46 |
Erro_ERR% = -1 |
47 |
PROCObject_Init |
48 |
File_Mess% = FNMess_Open(Task_Res2$ + "Messages", FALSE) |
49 |
File_Help% = FNMess_Open(Task_Res2$ + "Help" , FALSE) |
50 |
Erro_Erro$ = FNMess_Lookup("Erro_Erro", File_Mess%) |
51 |
Erro_Quit$ = FNMess_Lookup("Erro_Quit", File_Mess%) |
52 |
Erro_Memo$ = FNMess_Lookup("Erro_Memo", File_Mess%) |
53 |
Task_PollMask% = &1831 |
54 |
Task_PollIdle% = 0 |
55 |
Task_LastPoll% = 0 |
56 |
Task_LastTemp% = 0 |
57 |
Task_Quit% = FALSE |
58 |
Task_Slab% = FALSE |
59 |
Menu_Open% = FALSE |
60 |
Menu_Fast% = FALSE |
61 |
ENDPROC |
62 |
|
63 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
64 |
|
65 |
DEF FNWimp_IconBarIcon(Sprt$, SLen%, Text$, TLen%, Side%) |
66 |
LOCAL Vali%, Text%, Hand% |
67 |
|
68 |
DIM Vali% SLen% + 1 |
69 |
DIM Text% TLen% + 1 |
70 |
$Vali% = "S" + Sprt$ |
71 |
$Text% = Text$ |
72 |
|
73 |
B%!400 = Side% |
74 |
B%!404 = -(10 * TLen% - 4) |
75 |
B%!408 = -16 |
76 |
B%!412 = 68 + (10 * TLen% - 4) |
77 |
B%!416 = 80 |
78 |
B%!420 = &1700310B |
79 |
B%!424 = Text% |
80 |
B%!428 = Vali% |
81 |
B%!432 = TLen% |
82 |
SYS"Wimp_CreateIcon",, B% + 400 TO Hand% |
83 |
=Hand% |
84 |
|
85 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
86 |
|
87 |
DEF FNWimp_IconBarSprite(Sprt$, SLen%, Area%, Side%, Size%) |
88 |
LOCAL Sprt%, Hand% |
89 |
|
90 |
DIM Sprt% SLen% |
91 |
$Sprt% = Sprt$ |
92 |
|
93 |
B%!400 = Side% |
94 |
B%!404 = 68 - Size% |
95 |
B%!408 = 68 - Size% |
96 |
B%!412 = 68 + (Size% - 68) |
97 |
B%!416 = 68 + (Size% - 68) |
98 |
B%!420 = &1700311A |
99 |
B%!424 = Sprt% |
100 |
B%!428 = Area% |
101 |
B%!432 = SLen% |
102 |
SYS"Wimp_CreateIcon",, B% + 400 TO Hand% |
103 |
=Hand% |
104 |
|
105 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
106 |
|
107 |
DEF PROCWimp_Poll |
108 |
LOCAL Reas%, Temp%, Call$, Menu$, Time%, More%, Loop%, Key$, Temp$ |
109 |
|
110 |
SYS"WimpExt_PrePoll" |
111 |
IF Task_PollIdle% THEN |
112 |
SYS"OS_ReadMonotonicTime" TO Time% |
113 |
WHILE (Time% - Task_LastPoll%) > 0 |
114 |
Task_LastPoll% += Task_PollIdle% |
115 |
ENDWHILE |
116 |
SYS"Wimp_PollIdle", Task_PollMask%, B%, Task_LastPoll% TO Reas% |
117 |
ELSE |
118 |
SYS"Wimp_Poll", Task_PollMask%, B% TO Reas% |
119 |
ENDIF |
120 |
SYS"WimpExt_Action", Task_Hand%, B%, Reas% TO Reas% |
121 |
SYS"Hourglass_On" |
122 |
|
123 |
@% = "+g10.9" |
124 |
|
125 |
CASE Reas% OF |
126 |
WHEN 0: Call$ = "NullEvent" |
127 |
WHEN 1: Call$ = "Redraw_"+FNObject_Name(0, !B%, 0) |
128 |
WHEN 2: Call$ = "Open_"+FNObject_Name(0, !B%, 0) |
129 |
WHEN 3: Call$ = "Close_"+FNObject_Name(0, !B%, 0) |
130 |
WHEN 4: Call$ = "Leave_"+FNObject_Name(0, !B%, 0) |
131 |
WHEN 5: Call$ = "Enter_"+FNObject_Name(0, !B%, 0) |
132 |
WHEN 6: X% = B%!0: Y% = B%!4: Z% = B%!8: W% = B%!12: I% = B%!16 |
133 |
IF W% = -2 THEN |
134 |
Call$ = "Click_IBar_"+STR$Z% |
135 |
ELSE |
136 |
Call$ = "Click_"+FNObject_Name(0, W%, 0)+"_"+FNObject_Name(1, I%, W%) |
137 |
ENDIF |
138 |
WHEN 7: Call$ = "DragEnd" |
139 |
WHEN 8: W% = B%!0: I% = B%!4: K% = B%!24 |
140 |
Call$ = "Key_"+FNObject_Name(0, W%, 0)+"_"+STR$~K% |
141 |
WHEN 9: Menu% = Menu_Current% |
142 |
Item% = B%!0 |
143 |
Loop% = 4 |
144 |
WHILE B%!Loop% <> -1 |
145 |
Menu% = Menu%!(28 + 24 * Item% + 4) |
146 |
Item% = B%!Loop% |
147 |
Loop% += 4 |
148 |
ENDWHILE |
149 |
Call$ = "Menu_"+FNObject_Name(2, Menu%, 0)+"_"+FNObject_Name(3, Item%, Menu%) |
150 |
WHEN 10: Call$ = "Scroll_"+FNObject_Name(0, !B%, 0) |
151 |
WHEN 11: Call$ = "LoseC_"+FNObject_Name(0, !B%, 0) |
152 |
WHEN 12: Call$ = "GainC_"+FNObject_Name(0, !B%, 0) |
153 |
WHEN 13: Call$ = "PollWord" |
154 |
WHEN 17: Call$ = "MessUser_"+STR$~(B%!16) |
155 |
WHEN 18: Call$ = "MessRec_"+STR$~(B%!16) |
156 |
WHEN 19: Call$ = "MessAck_"+STR$~(B%!16) |
157 |
OTHERWISE: Call$ = "PollReason_"+STR$~Reas% |
158 |
ENDCASE |
159 |
|
160 |
CASE Reas% OF |
161 |
WHEN 1: SYS"Wimp_RedrawWindow",,B% TO More% |
162 |
IF FNWimp_Do(Call$+"_Pre") |
163 |
WHILE More% |
164 |
IF FNWimp_Do(Call$) |
165 |
SYS"Wimp_GetRectangle",,B% TO More% |
166 |
ENDWHILE |
167 |
IF FNWimp_Do(Call$+"_Post") |
168 |
WHEN 2: IF NOT FNWimp_Do(Call$) THEN SYS"WimpExt_OpenLinked",,B% |
169 |
WHEN 3: IF NOT FNWimp_Do(Call$) THEN SYS"WimpExt_CloseLinked",,B% |
170 |
WHEN 6: IF W% <> -2 THEN IF FNWimp_Do("Click_"+FNObject_Name(0, W%, 0)) |
171 |
IF FNWimp_Do(Call$) |
172 |
IF Task_Slab% THEN SYS"WimpExt_SetIcon",,, Slab_Wind%, Slab_Icon%, 0: Task_Slab% = FALSE |
173 |
WHEN 7: IF NOT FNWimp_Do(Call$) THEN SYS"XDragASprite_Stop" |
174 |
WHEN 8: Key$ = FNMess_XLookup(Call$, File_Mess%) |
175 |
IF Key$ = "" THEN |
176 |
IF (FNWimp_Do("Key_"+FNObject_Name(0, W%, 0))=0 AND FNWimp_Do(Call$)=0) THEN SYS"Wimp_ProcessKey",B%!24 |
177 |
ELSE |
178 |
IF Key$ = "+Help" THEN |
179 |
PROCWimp_SupplyHelp |
180 |
ELSE |
181 |
I% = FNObject_Hand(1, Key$, W%) |
182 |
B%!08 = 4 |
183 |
B%!12 = W% |
184 |
B%!16 = I% |
185 |
Task_Slab% = FALSE |
186 |
SYS"Wimp_GetIconState",, B% + 12 |
187 |
REM IF NOT shaded AND NOT deleted |
188 |
IF (B%!36 AND (%11<<22)) = 0 THEN |
189 |
REM IF ESG = 0 |
190 |
IF ((B%!36 AND (%11111<<16)) = 0) THEN |
191 |
REM IF ButtonType = Radio |
192 |
IF (((B%!36 AND (%1111<<12))>>12) = 11) THEN |
193 |
SYS"WimpExt_SetIcon",,, W%, I%, 1 - ((B%!36 AND (1<<21))>>21) |
194 |
ENDIF |
195 |
REM IF ButtonType = Click once AND indirected AND bordered AND text |
196 |
IF (((B%!36 AND (%1111<<12))>>12) = 3) AND ((B%!36 AND (%100000101)) <> 0) THEN |
197 |
Temp$ = FNWimp_GetString(B%!44) |
198 |
REM IF button is 3d action |
199 |
IF INSTR(Temp$, "r5") OR INSTR(Temp$, "R5") OR INSTR(Temp$, "r6") OR INSTR(Temp$, "R6") THEN |
200 |
SYS"WimpExt_SetIcon",,, W%, I%, 1 |
201 |
Task_Slab% = TRUE |
202 |
Slab_Wind% = W% |
203 |
Slab_Icon% = I% |
204 |
ENDIF |
205 |
ENDIF |
206 |
ELSE |
207 |
SYS"WimpExt_SetIcon",,, W%, I%, 1 |
208 |
ENDIF |
209 |
SYS"Wimp_SendMessage", 6, B%, Task_Hand% |
210 |
ENDIF |
211 |
ENDIF |
212 |
ENDIF |
213 |
WHEN 9: IF (FNWimp_Do("Menu_"+FNObject_Name(2, Menu_Current%, 0))=0 AND FNWimp_Do(Call$)=0) THEN PROCMenu_Adjust(Menu_Current$) |
214 |
WHEN 17, 18: |
215 |
CASE B%!16 OF |
216 |
WHEN &0: IF NOT FNWimp_Do(Call$) THEN Task_Quit% = TRUE |
217 |
WHEN &502: IF NOT FNWimp_Do(Call$) THEN PROCWimp_SendHelp |
218 |
OTHERWISE : IF FNWimp_Do(Call$) |
219 |
ENDCASE |
220 |
OTHERWISE: IF FNWimp_Do(Call$) |
221 |
ENDCASE |
222 |
|
223 |
SYS"Hourglass_Smash" |
224 |
ENDPROC |
225 |
|
226 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
227 |
|
228 |
DEF FNWimp_Do(Func$) |
229 |
LOCAL ERROR |
230 |
ON ERROR LOCAL RESTORE ERROR: =FNWimp_DoError |
231 |
=EVAL("FN" + Func$) |
232 |
|
233 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
234 |
|
235 |
DEF FNWimp_DoError |
236 |
IF Task_Slab% THEN SYS"WimpExt_SetIcon",,, Slab_Wind%, Slab_Icon%, 0: Task_Slab% = FALSE |
237 |
IF (ERR = 29) AND (Erro_ERR% = -1) THEN =FALSE |
238 |
IF Erro_ERR% = -1 THEN |
239 |
Erro_ERL% = ERL |
240 |
Erro_REPORT$ = REPORT$ |
241 |
Erro_ERR% = ERR |
242 |
ENDIF |
243 |
ERROR ERR, REPORT$ |
244 |
=FALSE |
245 |
|
246 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
247 |
|
248 |
DEF PROCWimp_Close |
249 |
SYS"WimpExt_CloseDown", Task_Hand% |
250 |
SYS"Wimp_CloseDown", Task_Hand%, &4B534154 |
251 |
SYS"XOS_CLI", "Unset " + Task_Name$ + "$Objects" |
252 |
ENDPROC |
253 |
|
254 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
255 |
|
256 |
DEF FNWimp_Error |
257 |
LOCAL Quit%, Text$ |
258 |
LOCAL ERROR |
259 |
ON ERROR LOCAL ON ERROR OFF: ERROR EXT 0, (REPORT$+" in Error Handler (Code "+STR$ERL+"); must exit.") |
260 |
|
261 |
SYS"Hourglass_Smash" |
262 |
|
263 |
IF Erro_ERR% = -1 THEN |
264 |
Erro_ERR% = ERR |
265 |
Erro_ERL% = ERL |
266 |
Erro_REPORT$ = REPORT$ |
267 |
ENDIF |
268 |
|
269 |
CASE Erro_ERR% OF |
270 |
|
271 |
WHEN Erro_Memo% |
272 |
Quit% = FNWimp_ReportError(Erro_Memo$, Erro_Warn%) |
273 |
|
274 |
WHEN Erro_Info%, Erro_Warn% |
275 |
IF LEFT$(Erro_REPORT$, 1) = "%" THEN |
276 |
Erro_REPORT$ = FNMess_Lookup(MID$(Erro_REPORT$, 2), File_Mess%) |
277 |
ENDIF |
278 |
Quit% = FNWimp_ReportError(Erro_REPORT$, Erro_ERR%) |
279 |
|
280 |
OTHERWISE |
281 |
@% = "+g20.20" |
282 |
SYS"WimpExt_SubstituteArgs", Erro_Erro$, B%, Erro_REPORT$, STR$Erro_ERL%, STR$~Erro_ERR%, 0, 0 TO ,Text$ |
283 |
Quit% = FNWimp_ReportError(Text$, 1) |
284 |
IF Quit% THEN Quit% = FNWimp_ReportError(Erro_Quit$, Erro_Ques%) |
285 |
|
286 |
ENDCASE |
287 |
|
288 |
Erro_ERR% = -1 |
289 |
|
290 |
=Quit% |
291 |
|
292 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
293 |
|
294 |
DEF FNWimp_ReportError(Text$, Type%) |
295 |
LOCAL Flag%, Clck% |
296 |
|
297 |
B%!00 = 1 |
298 |
$(B% + 04) = Text$ |
299 |
|
300 |
CASE Type% OF |
301 |
WHEN Erro_Info%: Flag% = %001100000001 |
302 |
WHEN Erro_Warn%: Flag% = %010100000001 |
303 |
WHEN Erro_Ques%: Flag% = %100100000011 |
304 |
OTHERWISE : Flag% = %000100000011 |
305 |
ENDCASE |
306 |
|
307 |
SYS"Wimp_ReportError", B%, Flag%, Task_Name$ TO ,Clck% |
308 |
=(Clck% = 2) |
309 |
|
310 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
311 |
|
312 |
DEF FNWimp_GetString(Addr%) |
313 |
LOCAL Text$, a% |
314 |
WHILE Addr%?a% > 31 |
315 |
Text$ += CHR$(Addr%?a%) |
316 |
a% += 1 |
317 |
ENDWHILE |
318 |
=Text$ |
319 |
|
320 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
321 |
|
322 |
DEF PROCWimp_ScreenSize(RETURN Wide%, RETURN High%) |
323 |
LOCAL a%, b% |
324 |
|
325 |
B%!400 = 130 |
326 |
B%!404 = 131 |
327 |
B%!408 = -1 |
328 |
SYS"OS_ReadVduVariables", B% + 400, B% + 400 |
329 |
SYS"OS_ReadModeVariable", -1, 4 TO ,, a% |
330 |
SYS"OS_ReadModeVariable", -1, 5 TO ,, b% |
331 |
Wide% = ((B%!400) + 1) * 2 ^ a% |
332 |
High% = ((B%!404) + 1) * 2 ^ b% |
333 |
|
334 |
ENDPROC |
335 |
|
336 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
337 |
|
338 |
DEF PROCWimp_StartDrag |
339 |
LOCAL Sprt$, Temp% |
340 |
|
341 |
B%!00 = W% |
342 |
B%!04 = I% |
343 |
SYS"Wimp_GetIconState",, B% |
344 |
IF (B%!24 AND %10) THEN |
345 |
CASE (B%!24 AND 1) + ((B%!24 AND 1<<8)>>7) OF |
346 |
REM IT |
347 |
WHEN %00, %01: SYS"WimpExt_DragIcon", %100000101, 1, W%, I%, B% + 28 |
348 |
WHEN %10: SYS"WimpExt_DragIcon", %100000101, 1, W%, I%, B%!28 |
349 |
WHEN %11 |
350 |
Vali$ = FNWimp_GetString(B%!32) |
351 |
IF (LEFT$(Vali$, 1) = "s") OR (LEFT$(Vali$, 1) = "S") THEN |
352 |
Sprt$ = MID$(Vali$, 2) |
353 |
ELSE |
354 |
Temp% = INSTR(Vali$, ";s") |
355 |
IF Temp% = 0 THEN Temp% = INSTR(Vali$, ";S") |
356 |
Sprt$ = MID$(Vali$, Temp% + 2) |
357 |
ENDIF |
358 |
IF INSTR(Sprt$, ";") THEN Sprt$ = LEFT$(Sprt$, INSTR(Sprt$, ";") - 1) |
359 |
SYS"WimpExt_DragIcon", %100000101, 1, W%, I%, Sprt$ |
360 |
ENDCASE |
361 |
ELSE |
362 |
SYS"WimpExt_DragIcon", %101, 0, W%, I% |
363 |
ENDIF |
364 |
ENDPROC |
365 |
|
366 |
|
367 |
CASE |
368 |
SYS"WimpExt_DragIcon", %100000101, 1, W%, I%, B%!28 |
369 |
ELSE |
370 |
SYS"WimpExt_DragIcon", %100000101, 1, W%, I%, B%+28 |
371 |
ENDIF |
372 |
ENDPROC |
373 |
|
374 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
375 |
|
376 |
DEF FNWimp_GetLeaf(Text$) |
377 |
IF INSTR(Text$, ".") = 0 THEN =Text$ |
378 |
WHILE INSTR(Text$, ".") |
379 |
Text$ = MID$(Text$, INSTR(Text$, ".") + 1) |
380 |
ENDWHILE |
381 |
=Text$ |
382 |
|
383 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
384 |
|
385 |
DEF PROCWimp_SendHelp |
386 |
LOCAL Buff%, Help%, Obje$, Mess$, Temp%, Menu%, Item% |
387 |
|
388 |
IF B%!32 = -2 THEN |
389 |
Mess$ = "IBar" |
390 |
Help% = FNWimp_Do("Help_"+Mess$) |
391 |
IF Help% = 0 THEN Help% = FNMess_XAdr(Mess$, File_Help%) |
392 |
|
393 |
ELSE |
394 |
Obje$ = FNObject_Name(0, B%!32, 0) |
395 |
|
396 |
IF Obje$ = "None" THEN |
397 |
SYS"Wimp_GetMenuState", 0, B% + 80 |
398 |
Menu% = Menu_Current% |
399 |
Item% = B%!80 |
400 |
Loop% = 84 |
401 |
WHILE B%!Loop% <> -1 |
402 |
Menu% = Menu%!(28 + 24 * Item% + 4) |
403 |
Item% = B%!Loop% |
404 |
Loop% += 4 |
405 |
ENDWHILE |
406 |
Mess$ = "Menu_"+FNObject_Name(2, Menu%, 0)+"_"+FNObject_Name(3, Item%, Menu%) |
407 |
Help% = FNWimp_Do("Help_"+Mess$) |
408 |
IF Help% = 0 THEN Help% = FNMess_XAdr(Mess$, File_Help%) |
409 |
Mess$ = "Menu_"+FNObject_Name(2, Menu%, 0) |
410 |
IF Help% = 0 THEN Help% = FNWimp_Do("Help_"+Mess$) |
411 |
IF Help% = 0 THEN Help% = FNMess_XAdr(Mess$, File_Help%) |
412 |
Mess$ = "Menu_"+FNObject_Name(2, Menu_Current%, 0) |
413 |
IF Help% = 0 THEN Help% = FNWimp_Do("Help_"+Mess$) |
414 |
IF Help% = 0 THEN Help% = FNMess_XAdr(Mess$, File_Help%) |
415 |
|
416 |
ELSE |
417 |
Mess$ = "Wind_"+Obje$+"_"+FNObject_Name(1, B%!36, B%!32) |
418 |
Help% = FNWimp_Do("Help_"+Mess$) |
419 |
IF Help% = 0 THEN Help% = FNMess_XAdr(Mess$, File_Help%) |
420 |
Mess$ = "Wind_"+Obje$ |
421 |
IF Help% = 0 THEN Help% = FNWimp_Do("Help_"+Mess$) |
422 |
IF Help% = 0 THEN Help% = FNMess_XAdr(Mess$, File_Help%) |
423 |
ENDIF |
424 |
ENDIF |
425 |
|
426 |
IF Help% = 0 THEN Help% = FNMess_XAdr("Default", File_Help%) |
427 |
SYS"WimpExt_SendHelp", Help%, B% |
428 |
|
429 |
ENDPROC |
430 |
|
431 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
432 |
|
433 |
DEF PROCWimp_LoadFile(File$, Word%, Name$) |
434 |
LOCAL File%, Type%, Siz1%, Siz2%, Siz3%, Sqsh%, Work% |
435 |
|
436 |
SYS"OS_File", 23, File$ TO File%,,,, Siz1%,, Type% |
437 |
IF File% = 0 THEN ERROR Erro_Warn%, FNMess_Global1("NoFile", File$) |
438 |
IF File% <> 1 THEN ERROR Erro_Warn%, FNMess_Global1("IsntFil", File$) |
439 |
|
440 |
CASE Type% OF |
441 |
WHEN &FCA |
442 |
IF NOT FNHeap_Grab(Siz1%, Word%, "_Sqsh") THEN ERROR Erro_Memo%, "NoMem" |
443 |
Sqsh% = FNHeap_Find(Word%, "_Sqsh") |
444 |
SYS"OS_File", 16, File$, Sqsh% |
445 |
Siz2% = Sqsh%!04 |
446 |
OTHERWISE |
447 |
Siz2% = Siz1% |
448 |
ENDCASE |
449 |
|
450 |
IF NOT FNHeap_Grab(Siz2% + 4, Word%, Name$) THEN ERROR Erro_Memo%, "NoMem" |
451 |
File% = FNHeap_Find(Word%, Name$) |
452 |
|
453 |
CASE Type% OF |
454 |
WHEN &FCA |
455 |
SYS"Squash_Decompress", %1000, Siz2% TO Siz3% |
456 |
IF NOT FNHeap_Grab(Siz3%, Word%, "Work") THEN ERROR Erro_Memo%, "NoMem" |
457 |
Work% = FNHeap_Find(Word%, "Work") |
458 |
SYS"Squash_Decompress", %100, Work%, Sqsh% + 20, Siz1% - 20, File% + 4, Siz2% |
459 |
PROCHeap_Lose(Word%, "_Sqsh") |
460 |
PROCHeap_Lose(Word%, "Work") |
461 |
OTHERWISE |
462 |
SYS"OS_File", 16, File$, File% + 4 |
463 |
ENDCASE |
464 |
File%!00 = Siz2% |
465 |
|
466 |
SYS"WimpExt_Heap", 6 |
467 |
ENDPROC |
468 |
|
469 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
470 |
|
471 |
DEF PROCWimp_SaveFile(File$, Word%, Name$, Type%) |
472 |
LOCAL File% |
473 |
File% = FNHeap_Find(Word%, Name$) |
474 |
SYS"OS_File", 10, File$, Type%,, File% + 4, File% + 4 + !File% |
475 |
ENDPROC |
476 |
|
477 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
478 |
|
479 |
DEF PROCWimp_SupplyHelp |
480 |
SYS"Wimp_StartTask", "Filer_Run Resources:$.Apps.!Help" |
481 |
ENDPROC |
482 |
|
483 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
484 |
|
485 |
DEF FNWimp_TempFile |
486 |
@% = "+g10.10" |
487 |
Task_LastTemp% = TIME |
488 |
=Task_Temp$+STR$TIME |
489 |
|
490 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
491 |
|
492 |
DEF FNWimp_FileExists(Path$) |
493 |
LOCAL Found% |
494 |
SYS"OS_File", 17, Path$ TO Found% |
495 |
=(Found% <> 0) |
496 |
|
497 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
498 |
|
499 |
DEF PROCWimp_IBoxVers |
500 |
LOCAL File_Vers% |
501 |
|
502 |
SYS"OS_File", 23, Task_Path$ + "!RunImage" TO ,, B%!04, B%!00 |
503 |
SYS"Territory_ConvertDateAndTime", -1, B%, B% + 08, 503, FNMess_Lookup("IBox_Date", File_Mess%) + CHR$0 |
504 |
|
505 |
PROCWimp_LoadFile(Task_Path$ + "!Version", -1, "_Vers") |
506 |
File_Vers% = 4 + FNHeap_Find(-1, "_Vers") |
507 |
@% = "+f20.2" |
508 |
|
509 |
PROCWind_SetText("IBox", "Vers", FNMess_Get2("IBox_Vers", File_Mess%, STR$(File_Vers%!00 / 100), FNWimp_GetString(B% + 08))) |
510 |
|
511 |
PROCHeap_Lose(-1, "_Vers") |
512 |
ENDPROC |