| 1 |
james |
32 |
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 |