REM > BootEditCode:Boot DEF PROCBoot_Scan LOCAL Wide% SYS"WimpExt_MiscOp", 1 TO ,,, Wide% Wide% = 810 - Wide% CASE TRUE OF WHEN FNWind_GetIcon("Boot", "PreDesktop") Boot_Editing% = 1 PROCBoot_LoadFile("PreDesktop", "small_feb") WHEN FNWind_GetIcon("Boot", "PreDesk") Boot_Editing% = 2 PROCBoot_ScanDirectory("PreDesk") WHEN FNWind_GetIcon("Boot", "Desktop") Boot_Editing% = 3 PROCBoot_LoadFile("Desktop", "small_fea") WHEN FNWind_GetIcon("Boot", "Tasks") Boot_Editing% = 4 PROCBoot_ScanDirectory("Tasks") ENDCASE PROCWind_IconGrey("Boot", "Remove", 1) PROCWind_IconGrey("Boot", "Edit", 1) PROCWind_IconGrey("Boot", "Open", -(Boot_Editing% = 1 OR Boot_Editing% = 3)) IF High% < 364 THEN High% = 364 B%!400 = 0 B%!404 = -High% B%!408 = Wide% B%!412 = 0 SYS"Wimp_SetExtent", FNObject_Hand(0, "BootPane", 0), B% + 400 IF FNWind_Open("BootPane") THEN PROCWind_PopOpen("BootPane") B%!00 = FNObject_Hand(0, "BootPane", 0) SYS"Wimp_GetWindowState",, B% IF FNOpen_BootPane PROCWind_ForceRedraw("BootPane") ENDIF BootPane_Wide% = Wide% ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_LoadFile(File$, Icon$) LOCAL List%, File% IF NOT(FNWimp_FileExists(Boot_Path$ + ".Choices.Boot." + File$)) THEN ERROR Erro_Warn%, "%No" + File$ LOCAL ERROR ON ERROR LOCAL RESTORE ERROR: PROCBoot_Error(File%) PROCHeap_Lose(0, "BootList") List% = FNHeap_Safe(4, 0, "BootList") !List% = 0 File% = OPENIN(Boot_Path$ + ".Choices.Boot." + File$) WHILE NOT EOF#File% Line$ = GET$#File% IF LEFT$(Line$, 6) = "|Start" THEN !List% += 1 IF NOT FNHeap_ReAlloc(List%, 4 + !List% * 80) THEN ERROR Erro_Memo%, "" List% = FNHeap_Find(0, "BootList") !(List% + 4 + 80 * (!List% - 1) + 00) = 0 $(List% + 4 + 80 * (!List% - 1) + 04) = "S" + Icon$ $(List% + 4 + 80 * (!List% - 1) + 20) = MID$(Line$, 8, 59) ENDIF ENDWHILE CLOSE#File% High% = !List% * List_High% ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_Error(File%) PROCHeap_Lose(0, "BootList") Erro_ERL% = ERL Erro_REPORT$ = REPORT$ Erro_ERR% = ERR IF File% <> 0 THEN CLOSE#File% ERROR ERR, REPORT$ ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_ScanDirectory(Directory$) LOCAL Offset%, List%, Read% IF NOT(FNWimp_FileExists(Boot_Path$ + ".Choices.Boot." + Directory$)) THEN ERROR Erro_Warn%, "%No" + Directory$ PROCHeap_Lose(0, "BootList") List% = FNHeap_Safe(4, 0, "BootList") !List% = 0 REPEAT SYS"OS_GBPB", 12, Boot_Path$ + ".Choices.Boot." + Directory$, B% + 400, 1, Offset%, 112 TO ,,, Read%, Offset% IF Read% = 1 THEN !List% += 1 IF NOT FNHeap_ReAlloc(List%, 4 + !List% * 80) THEN ERROR Erro_Memo%, "" List% = FNHeap_Find(0, "BootList") CASE B%!420 OF WHEN &1000 Icon$ = "small_dir" WHEN &2000 Icon$ = "sm" + LEFT$(FNWimp_GetString(B% + 424), 10) SYS"XWimp_SpriteOp", 40,, Icon$ TO ;PFlg% IF (PFlg% AND 1) THEN Icon$ = "small_app" OTHERWISE Icon$ = "small_" + RIGHT$("00" + STR$~(B%!420), 3) SYS"XWimp_SpriteOp", 40,, Icon$ TO ;PFlg% IF (PFlg% AND 1) THEN Icon$ = "small_xxx" ENDCASE !(List% + 4 + 80 * (!List% - 1) + 00) = 0 $(List% + 4 + 80 * (!List% - 1) + 04) = "S" + Icon$ $(List% + 4 + 80 * (!List% - 1) + 20) = FNWimp_GetString(B% + 424) ENDIF UNTIL Offset% = -1 High% = !List% * List_High% ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_Edited(File$) LOCAL File%, In%, Out%, Line$, In$, Done% File% = OPENIN("Pipe:$." + File$) IF EOF#File% THEN ENDPROC Line$ = GET$#File% In% = OPENIN(Boot_Path$ + ".Choices.Boot." + File$) Out% = OPENOUT(".BootEdit") WHILE NOT EOF#In% In$ = GET$#In% IF (In$ = Line$) AND NOT(Done%) THEN REPEAT IF In$ <> "" THEN BPUT#Out%, In$ In$ = GET$#File% UNTIL In$ = "|End" REPEAT Line$ = GET$#In% UNTIL Line$ = "|End" Done% = TRUE ENDIF IF In$ <> "" THEN BPUT#Out%, In$ ENDWHILE IF NOT Done% THEN BPUT#Out%, Line$ REPEAT In$ = GET$#File% IF In$ <> "" THEN BPUT#Out%, In$ UNTIL In$ = "|End" ENDIF CLOSE#File% CLOSE#In% CLOSE#Out% OSCLI"Copy .BootEdit " + Boot_Path$ + ".Choices.Boot." + File$ + " ~CDFL~V" IF File$ = "PreDesktop" THEN OSCLI"SetType " + Boot_Path$ + ".Choices.Boot." + File$ + " FEB" ELSE OSCLI"SetType " + Boot_Path$ + ".Choices.Boot." + File$ + " FEA" ENDIF PROCBoot_Scan ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_Remove(File$) LOCAL List%, Item%, In%, Out%, Line$ List% = FNHeap_Find(0, "BootList") In% = OPENIN(Boot_Path$ + ".Choices.Boot." + File$) Out% = OPENOUT(".BootEdit") WHILE NOT EOF#In% Line$ = GET$#In% IF LEFT$(Line$, 6) = "|Start" THEN Item% = 1 WHILE ($(List% + 4 + 80 * (Item% - 1) + 20) <> MID$(Line$, 8)) AND (Item% <= !List%) Item% += 1 ENDWHILE IF (($(List% + 4 + 80 * (Item% - 1) + 20) = MID$(Line$, 8))) AND (!(List% + 4 + 80 * (Item% - 1) + 00) AND 1) THEN REPEAT Line$ = GET$#In% UNTIL Line$ = "|End" Line$ = GET$#In% ENDIF ENDIF IF Line$ <> "" THEN BPUT#Out%, Line$ ENDWHILE CLOSE#In% CLOSE#Out% OSCLI"Copy .BootEdit " + Boot_Path$ + ".Choices.Boot." + File$ + " ~CDFL~V" IF File$ = "PreDesktop" THEN OSCLI"SetType " + Boot_Path$ + ".Choices.Boot." + File$ + " FEB" ELSE OSCLI"SetType " + Boot_Path$ + ".Choices.Boot." + File$ + " FEA" ENDIF PROCBoot_Scan ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_Delete(Directory$) LOCAL List%, Item% List% = FNHeap_Find(0, "BootList") FOR Item% = 1 TO !List% IF (!(List% + 4 + 80 * (Item% - 1) + 00) AND 1) THEN OSCLI("Wipe " + Boot_Path$ + ".Choices.Boot." + Directory$ + "." + $(List% + 4 + 80 * (Item% - 1) + 20) + " ~CFR~V") ENDIF NEXT PROCBoot_Scan ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_Edit(File$, Item%) LOCAL List%, In%, Out% List% = FNHeap_Find(0, "BootList") In% = OPENIN(Boot_Path$ + ".Choices.Boot." + File$) Out% = OPENOUT("Pipe:$." + File$) IF Item% = 0 THEN Item% = 1 WHILE (!(List% + 4 + 80 * (Item% - 1) + 00) AND 1) = 0 Item% += 1 ENDWHILE ENDIF WHILE NOT EOF#In% Line$ = GET$#In% IF LEFT$(Line$, 6) = "|Start" THEN IF MID$(Line$, 8) = $(List% + 4 + 80 * (Item% - 1) + 20) THEN BPUT#Out%, Line$ REPEAT Line$ = GET$#In% BPUT#Out%, Line$ UNTIL Line$ = "|End" ENDIF ENDIF ENDWHILE CLOSE#In% CLOSE#Out% OSCLI("SetType Pipe:$." + File$ + " FFF") OSCLI("Filer_Run Pipe:$." + File$) ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_Load(File$) LOCAL File%, In%, Line$ IF File$ = "PreDesktop" AND B%!40 <> &FEB THEN ERROR Erro_Warn%, "%NotFEB" IF File$ = "Desktop" AND B%!40 <> &FEA THEN ERROR Erro_Warn%, "%NotFEA" File% = OPENIN(FNWimp_GetString(B% + 44)) IF EOF#File% THEN CLOSE#File%: ERROR Erro_Warn%, "%NoHeader" Line$ = GET$#File% IF LEFT$(Line$, 6) <> "|Start" THEN CLOSE#File%: ERROR Erro_Warn%, "%NoHeader" WHILE NOT EOF#File% Line$ = GET$#File% ENDWHILE IF Line$ <> "|End" THEN CLOSE#File%: ERROR Erro_Warn%, "%NoEnd" PTR#File% = 0 In% = OPENUP(Boot_Path$ + ".Choices.Boot." + File$) PTR#In% = EXT#In% WHILE NOT EOF#File% BPUT#In%, GET$#File% ENDWHILE CLOSE#In% CLOSE#File% FOR A% = 0 TO !B% STEP 4: !(B% + 200 + A%) = B%!A%: NEXT PROCBoot_Scan FOR A% = 0 TO B%!200 STEP 4: B%!A% = !(B% + 200 + A%): NEXT ENDPROC REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCBoot_Copy(Directory$) LOCAL File$ File$ = FNWimp_GetString(B% + 44) Leaf$ = FNWimp_GetLeaf(File$) IF FNWimp_FileExists(Boot_Path$ + ".Choices.Boot." + Directory$ + "." + Leaf$) THEN ERROR Erro_Warn%, "%AlreadyExists" SYS"Wimp_StartTask", "Copy " + File$ + " " + Boot_Path$ + ".Choices.Boot." + Directory$ + "." + Leaf$ + " ~C~D~FLR~V" FOR A% = 0 TO !B% STEP 4: !(B% + 200 + A%) = B%!A%: NEXT PROCBoot_Scan FOR A% = 0 TO B%!200 STEP 4: B%!A% = !(B% + 200 + A%): NEXT ENDPROC