home *** CD-ROM | disk | FTP | other *** search
- // FSMenu.c
- // 20 May 1996 21:26:09
-
- #ifndef BACKUP_INCLUDE
- #include "IncludeAll.c"
- #endif
- #include "Backup.h"
- #include "FileSelect.h"
- #include "Backup_proto.h"
- #include "BackupStrings.h"
- #include "FSMenu.h"
-
-
- static void SetMenuStrings(void);
-
-
- // aus Backup_Window.c
- extern APTR vi; // VisualInfo
-
- // aus FileSelect.c
- extern struct Window *MenuWin; // an diesem Window hängt das Menu
-
- // aus CmdFile.c
- extern char __far CmdFileName[FMSIZE]; // Name des Kommandofile
-
-
- struct Menu *FSMenuList = NULL;
-
- static BOOL CreateIcons = TRUE;
-
- static struct NewMenu NewFSMenu[] =
- {
- { NM_TITLE, (STRPTR) MSG_PROJECT_MENU, NULL, 0, 0, V(MENU_PROJECT) },
- { NM_ITEM, (STRPTR) MSG_NEW_MENU, "N", 0, 0, V(MENU_NEW) },
- { NM_ITEM, NM_BARLABEL, NULL, 0, 0, 0,},
- { NM_ITEM, (STRPTR) MSG_LOADSETTINGS_MENU, "L", 0, 0, V(MENU_LOADSETTINGS) },
- { NM_ITEM, NM_BARLABEL, NULL, 0, 0, 0,},
- { NM_ITEM, (STRPTR) MSG_SAVESETTINGS_MENU, "S", 0, 0, V(MENU_SAVESETTINGS) },
- { NM_ITEM, (STRPTR) MSG_SAVESETTINGS_AS_MENU, "A" , 0, 0, V(MENU_SAVESETTINGSAS) },
- { NM_ITEM, NM_BARLABEL, NULL, 0, 0, 0,},
- { NM_ITEM, (STRPTR) MSG_DISKSPACE_MENU, "P", 0, 0, V(MENU_DISKSPACE) },
- { NM_ITEM, (STRPTR) MSG_ABOUT_MENU, NULL, 0, 0, V(MENU_ABOUT) },
- { NM_ITEM, NM_BARLABEL, NULL, 0, 0, 0,},
- { NM_ITEM, (STRPTR) MSG_ABORT_MENU, "Q", 0, 0, V(MENU_QUIT) },
-
- { NM_TITLE, (STRPTR) MSG_VIEW_MENU, NULL, 0, 0, V(MENU_VIEW) },
- { NM_ITEM, (STRPTR) MSG_DIRSORT_MENU, NULL, 0, 0, V(MENU_DIRECTORIES) },
- { NM_SUB, (STRPTR) MSG_DIRSORT_FIRST_MENU, NULL, CHECKIT, ~1, V(MENU_DIRSFIRST) },
- { NM_SUB, (STRPTR) MSG_DIRSORT_LAST_MENU, NULL, CHECKIT, ~2, V(MENU_DIRSLAST) },
- { NM_SUB, (STRPTR) MSG_DIRSORT_BETWEEN_MENU, NULL, CHECKIT, ~4, V(MENU_DIRSBETWEEN) },
- { NM_ITEM, (STRPTR) MSG_SORT_MENU, NULL, 0, 0, V(MENU_SORTING) },
- { NM_SUB, (STRPTR) MSG_SORT_NAME_MENU, NULL, CHECKIT, ~1, V(MENU_SORTNAME) },
- { NM_SUB, (STRPTR) MSG_SORT_DATE_MENU, NULL, CHECKIT, ~2, V(MENU_SORTDATE) },
- { NM_SUB, (STRPTR) MSG_SORT_SIZE_MENU, NULL, CHECKIT, ~4, V(MENU_SORTSIZE) },
- { NM_ITEM, NM_BARLABEL, NULL, 0, 0, 0,},
- { NM_ITEM, (STRPTR) MSG_LISTFONT_MENU, "F", 0, 0, V(MENU_NEWLISTFONT) },
-
- { NM_TITLE, (STRPTR) MSG_OPTIONS_MENU, NULL, 0, 0, V(MENU_OPTIONS) },
- { NM_ITEM, (STRPTR) MSG_WILDCARDS_MENU, NULL, 0, 0, V(MENU_WILDCARDS) },
- { NM_SUB, (STRPTR) MSG_SIMPLEWILDCARDS_MENU, NULL, CHECKIT, ~1, V(MENU_SIMPLEWILD) },
- { NM_SUB, (STRPTR) MSG_DOSWILDCARDS_MENU, NULL, CHECKIT, ~2, V(MENU_DOSWILD) },
- { NM_ITEM, (STRPTR) MSG_CREATEICONS_MENU, "I", CHECKIT|MENUTOGGLE|CHECKED, 0, V(MENU_CREATEICONS) },
-
- { NM_TITLE, (STRPTR) MSG_TAPE_MENU, NULL, 0, 0, V(MENU_TAPE) },
- { NM_ITEM, (STRPTR) MSG_SETUPTAPE_MENU, NULL, 0, 0, V(MENU_SETUPTAPE) },
- { NM_ITEM, NM_BARLABEL, NULL, 0, 0, 0,},
- { NM_ITEM, (STRPTR) MSG_LOADTAPE_MENU, NULL, NM_ITEMDISABLED, 0, V(MENU_TAPELOAD) },
- { NM_ITEM, (STRPTR) MSG_UNLOADTAPE_MENU, NULL, NM_ITEMDISABLED, 0, V(MENU_TAPEUNLOAD) },
- { NM_ITEM, (STRPTR) MSG_REWINDTAPE_MENU, NULL, NM_ITEMDISABLED, 0, V(MENU_TAPEREWIND) },
- { NM_ITEM, (STRPTR) MSG_RETENSIONTAPE_MENU, NULL, NM_ITEMDISABLED, 0, V(MENU_TAPERETENSION) },
- { NM_ITEM, (STRPTR) MSG_ERASETAPE_MENU, NULL, NM_ITEMDISABLED, 0, V(MENU_TAPEERASE) },
-
- { NM_END, NULL, NULL, 0, 0, 0,},
- };
-
-
-
- void SetMenus(struct BackupOptions *BackupOpt)
- {
- void *MenuId;
-
- if (NULL == MenuWin || NULL == FSMenuList)
- return;
-
- // "Einstellungen speichern" nur wenn von Workbench gestartet
- if (WBenchMsg)
- OnMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_SAVESETTINGS)));
- else
- OffMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_SAVESETTINGS)));
-
- switch (BackupOpt->bo_HowToSort)
- {
- case SortName:
- MenuId = V(MENU_SORTNAME);
- break;
- case SortDate:
- MenuId = V(MENU_SORTDATE);
- break;
- case SortSize:
- MenuId = V(MENU_SORTSIZE);
- break;
- }
- SetMenuItem(FSMenuList, MenuWin, MenuId, TRUE);
-
- switch (BackupOpt->bo_WhereSortDirs)
- {
- case DirFirst:
- MenuId = V(MENU_DIRSFIRST);
- break;
- case DirLast:
- MenuId = V(MENU_DIRSLAST);
- break;
- case DirBetween:
- MenuId = V(MENU_DIRSBETWEEN);
- break;
- }
- SetMenuItem(FSMenuList, MenuWin, MenuId, TRUE);
-
- // Wildcard-Einstellung
- TranslateWildCards(BackupOpt);
- if (BackupOpt->bo_UseGrepPattern)
- SetMenuItem(FSMenuList, MenuWin, V(MENU_DOSWILD), TRUE);
- else
- SetMenuItem(FSMenuList, MenuWin, V(MENU_SIMPLEWILD), TRUE);
- }
-
-
- short ProcessFSMenu(USHORT code, struct BackupOptions *BackupOpt)
- {
- char TempFileName[FMSIZE];
- struct MenuItem *item;
- short result = 0;
-
- while (code != MENUNULL)
- {
- item = ItemAddress(FSMenuList, code);
-
- switch ((ULONG) GTMENUITEM_USERDATA(item))
- {
- case MENU_NEW: // Neu
- ClearSettings(TRUE);
- break;
-
- case MENU_LOADSETTINGS: // Einstellungen laden
- if (StdFile(MenuWin, GetString(MSG_LOAD_CMDFILE),
- BackupOpt->bo_ScriptPath,
- TempFileName, sizeof(TempFileName),
- ASLFR_RejectIcons, TRUE,
- ASLFR_DoPatterns, TRUE,
- TAG_END))
- {
- ClearSettings(FALSE); // zerstört <BackupOpt> und <CmdFileName> !!!
-
- stcgfp(BackupOpt->bo_ScriptPath, TempFileName);
- AddPart(BackupOpt->bo_ScriptPath, (STRPTR) "", sizeof(BackupOpt->bo_ScriptPath));
-
- stccpy(CmdFileName, TempFileName, sizeof(CmdFileName));
-
- LoadCmdFile(MenuWin, CmdFileName, BackupOpt);
- }
- break;
-
- case MENU_SAVESETTINGS: // Einstellungen speichern
- if (CmdFileName[0])
- WriteCmdFile(MenuWin, CmdFileName, CreateIcons, BackupOpt);
- else
- SetWBDefaults(WBenchMsg, BackupOpt);
- break;
-
- case MENU_SAVESETTINGSAS: // Einstellung speichern als...
- if (StdFile(MenuWin, GetString(MSG_SAVE_SETTINGS_AS),
- BackupOpt->bo_ScriptPath,
- TempFileName, sizeof(TempFileName),
- ASLFR_DoSaveMode, TRUE,
- ASLFR_RejectIcons, TRUE,
- ASLFR_DoPatterns, TRUE,
- TAG_END))
- {
- stcgfp(BackupOpt->bo_ScriptPath, TempFileName);
- AddPart(BackupOpt->bo_ScriptPath, (STRPTR) "", sizeof(BackupOpt->bo_ScriptPath));
-
- stccpy(CmdFileName, TempFileName, sizeof(CmdFileName));
-
- WriteCmdFile(MenuWin, CmdFileName, CreateIcons, BackupOpt);
- }
- break;
-
- case MENU_DISKSPACE: // Diskettenplatz
- GetByteCount(MenuWin, BackupOpt, NULL, NULL);
- break;
-
- case MENU_ABOUT: // About
- About(MenuWin);
- break;
-
- case MENU_QUIT: // Abbruch
- result = FS_ABORT;
- break;
-
- case MENU_DIRSFIRST: // zuerst
- BackupOpt->bo_WhereSortDirs = DirFirst;
- SortAllFSDirs();
- break;
- case MENU_DIRSLAST: // zuletzt
- BackupOpt->bo_WhereSortDirs = DirLast;
- SortAllFSDirs();
- break;
-
- case MENU_DIRSBETWEEN: // zwischendrin
- BackupOpt->bo_WhereSortDirs = DirBetween;
- SortAllFSDirs();
- break;
-
- case MENU_SORTNAME: // nach Name
- BackupOpt->bo_FSCompare = FSCompareName;
- BackupOpt->bo_HowToSort = SortName;
- SortAllFSDirs();
- break;
-
- case MENU_SORTDATE: // nach Datum
- BackupOpt->bo_FSCompare = FSCompareDate;
- BackupOpt->bo_HowToSort = SortDate;
- SortAllFSDirs();
- break;
-
- case MENU_SORTSIZE: // nach Größe
- BackupOpt->bo_FSCompare = FSCompareSize;
- BackupOpt->bo_HowToSort = SortSize;
- SortAllFSDirs();
- break;
-
- case MENU_NEWLISTFONT:
- {
- struct TextAttr OldListFontAttr;
- struct TextAttr *NewListFontAttr;
-
- OldListFontAttr.ta_Name = NULL;
- FillTextAttrFromFontName(&OldListFontAttr, BackupOpt->bo_ListFontName);
-
- NewListFontAttr = GetNewFont(MenuWin,
- GetString(MSG_LISTFONT_REQTTL),
- &OldListFontAttr,
- ASLFO_FixedWidthOnly, TRUE,
- TAG_END
- );
- if (NewListFontAttr)
- {
- sprintf(BackupOpt->bo_ListFontName, "%s/%d",
- NewListFontAttr->ta_Name,
- NewListFontAttr->ta_YSize
- );
- SetFSListFont(BackupOpt);
- SizeFSWindow(WSC_SameSize);
-
- free(NewListFontAttr->ta_Name);
- free(NewListFontAttr);
- }
- if (OldListFontAttr.ta_Name)
- free(OldListFontAttr.ta_Name);
- }
- break;
-
- case MENU_SIMPLEWILD: // nur *,?
- BackupOpt->bo_UseGrepPattern = FALSE;
- // "*" in "?#" und umgekehrt übersetzen
- TranslateWildCards(BackupOpt);
- ShowWildcardOpt(BackupOpt);
- SortAllFSDirs();
- break;
- case MENU_DOSWILD: // DOS-Pattern #?
- BackupOpt->bo_UseGrepPattern = TRUE;
- // "*" in "?#" und umgekehrt übersetzen
- TranslateWildCards(BackupOpt);
- ShowWildcardOpt(BackupOpt);
- SortAllFSDirs();
- break;
-
- case MENU_CREATEICONS: // Icons erzeugen
- CreateIcons = item->Flags & CHECKED;
- break;
-
- case MENU_SETUPTAPE: // Bandlaufwerk(e) einstellen
- SetupTape(MenuWin, NULL);
- break;
-
- case MENU_TAPEREWIND: // Rewind
- TapeFunction(BackupOpt->bo_FirstUnit, TF_Rewind);
- break;
-
- case MENU_TAPERETENSION: // Retension
- TapeFunction(BackupOpt->bo_FirstUnit, TF_Retension);
- break;
-
- case MENU_TAPEERASE: // Erase
- TapeFunction(BackupOpt->bo_FirstUnit, TF_Erase);
- break;
-
- case MENU_TAPEUNLOAD: // Unload
- TapeFunction(BackupOpt->bo_FirstUnit, TF_Unload);
- break;
-
- case MENU_TAPELOAD: // Load
- TapeFunction(BackupOpt->bo_FirstUnit, TF_Load);
- break;
- }
-
- code = item->NextSelect;
- }
-
- return result;
- }
-
-
- short ProcessFSMenuHelp(USHORT code)
- {
- struct MenuItem *item;
-
- item = ItemAddress(FSMenuList, code);
- if (item)
- CallHelp((ULONG) GTMENUITEM_USERDATA(item), TRUE);
-
- return 0;
- }
-
-
- BOOL SetupFSMenu(void)
- {
- SetMenuStrings();
-
- FSMenuList = CreateMenus(NewFSMenu,
- GTMN_FullMenu, TRUE,
- TAG_END );
- if (FSMenuList == NULL)
- {
- alarm(GetString(MSG_CREATEMENUS_FAILED), __FUNC__);
- return FALSE;
- }
-
- if (!LayoutMenus(FSMenuList, vi,
- GTMN_NewLookMenus, TRUE,
- TAG_END))
- {
- alarm(GetString(MSG_LAYOUTMENUS_FAILED), __FUNC__);
- return FALSE;
- }
-
- return TRUE;
- }
-
-
- static void SetMenuStrings(void)
- {
- static BOOL Done = FALSE;
- short n;
-
- for (n=0; !Done && NewFSMenu[n].nm_Type != NM_END; n++)
- {
- if (NewFSMenu[n].nm_Label != NM_BARLABEL)
- NewFSMenu[n].nm_Label = (STRPTR) GetString((long) NewFSMenu[n].nm_Label);
- }
-
- Done = TRUE;
- }
-
-
- void EnableTapeMenu(BOOL On)
- {
- if (On)
- {
- OnMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPEREWIND)));
- OnMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPERETENSION)));
- OnMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPEERASE)));
- OnMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPELOAD)));
- OnMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPEUNLOAD)));
- }
- else
- {
- OffMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPEREWIND)));
- OffMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPERETENSION)));
- OffMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPEERASE)));
- OffMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPELOAD)));
- OffMenu(MenuWin, FindMenuItem(FSMenuList, V(MENU_TAPEUNLOAD)));
- }
- }
-