/* * Program Manager * * Copyright 1996 Ulrich Schmid */ #ifndef PROGMAN_H #define PROGMAN_H #define MAX_STRING_LEN 255 #define MAX_PATHNAME_LEN 1024 #define MAX_LANGUAGE_NUMBER (PM_LAST_LANGUAGE - PM_FIRST_LANGUAGE) #ifndef RC_INVOKED #include "windows.h" /* Fallback icon */ #ifdef WINELIB #define DEFAULTICON OIC_WINEICON #else #define DEFAULTICON OIC_LANDSCAPE #endif /* Icon index in M$ Window's progman.exe */ #define PROGMAN_ICON_INDEX 0 #define GROUP_ICON_INDEX 6 #define DEFAULT_ICON_INDEX 7 #define DEF_GROUP_WIN_XPOS 100 #define DEF_GROUP_WIN_YPOS 100 #define DEF_GROUP_WIN_WIDTH 300 #define DEF_GROUP_WIN_HEIGHT 200 typedef struct { HLOCAL hGroup; HLOCAL hPrior; HLOCAL hNext; HWND hWnd; /**/ /* Numbers are byte indexes in *.grp */ /**/ /* Program entry */ INT x, y; /* 0 - 3 */ INT nIconIndex; /* 4 - 5 */ HICON hIcon; /* icon flags ??? */ /* 6 - 7 */ /* iconANDsize */ /* 8 - 9 */ /* iconXORsize */ /* 10 - 11 */ /* pointer to IconInfo */ /* 12 - 13 */ /* pointer to iconXORbits */ /* 14 - 15 */ /* sometimes iconANDbits ?! */ /* pointer to iconANDbits */ /* 16 - 17 */ /* sometimes iconXORbits ?! */ HLOCAL hName; /* 18 - 19 */ HLOCAL hCmdLine; /* 20 - 21 */ HLOCAL hIconFile; /* 22 - 23 */ HLOCAL hWorkDir; /* Extension 0x8101 */ INT nHotKey; /* Extension 0x8102 */ /* Modifier: bit 8... */ INT nCmdShow; /* Extension 0x8103 */ /**/ /* IconInfo */ /* HotSpot x ??? */ /* 0 - 1 */ /* HotSpot y ??? */ /* 2 - 3 */ /* Width */ /* 4 - 5 */ /* Height */ /* 6 - 7 */ /* WidthBytes ??? */ /* 8 - 9 */ /* Planes */ /* 10 - 10 */ /* BitsPerPixel */ /* 11 - 11 */ } PROGRAM; typedef struct { HLOCAL hPrior; HLOCAL hNext; HWND hWnd; HLOCAL hGrpFile; HLOCAL hActiveProgram; BOOL bFileNameModified; BOOL bOverwriteFileOk; INT seqnum; /**/ /* Absolute */ /* magic `PMCC' */ /* 0 - 3 */ /* checksum */ /* 4 - 5 */ /* Extension ptr */ /* 6 - 7 */ INT nCmdShow; /* 8 - 9 */ INT x, y; /* 10 - 13 */ INT width, height; /* 14 - 17 */ INT iconx, icony; /* 18 - 21 */ HLOCAL hName; /* 22 - 23 */ /* unknown */ /* 24 - 31 */ /* number of programs */ /* 32 - 33 */ HLOCAL hPrograms; /* 34 ... */ /**/ /* Extensions */ /* Extension type */ /* 0 - 1 */ /* Program number */ /* 2 - 3 */ /* Size of entry */ /* 4 - 5 */ /* Data */ /* 6 ... */ /* magic `PMCC' */ /* Extension 0x8000 */ /* End of Extensions */ /* Extension 0xffff */ } GROUP; typedef struct { HANDLE hInstance; HANDLE hAccel; HWND hMainWnd; HWND hMDIWnd; HICON hMainIcon; HICON hGroupIcon; HICON hDefaultIcon; HMENU hMainMenu; HMENU hFileMenu; HMENU hOptionMenu; HMENU hWindowsMenu; HMENU hLanguageMenu; LPCSTR lpszIniFile; LPCSTR lpszIcoFile; BOOL bAutoArrange; BOOL bSaveSettings; BOOL bMinOnRun; HLOCAL hGroups; LPCSTR lpszLanguage; UINT wStringTableOffset; HLOCAL hActiveGroup; } GLOBALS; extern GLOBALS Globals; INT MAIN_MessageBoxIDS(UINT ids_text, UINT ids_title, WORD type); INT MAIN_MessageBoxIDS_s(UINT ids_text_s, LPCSTR str, UINT ids_title, WORD type); VOID MAIN_ReplaceString(HLOCAL *handle, LPSTR replacestring); HLOCAL GRPFILE_ReadGroupFile(const char* path); BOOL GRPFILE_WriteGroupFile(HLOCAL hGroup); ATOM GROUP_RegisterGroupWinClass(void); HLOCAL GROUP_AddGroup(LPCSTR lpszName, LPCSTR lpszGrpFile, INT showcmd, INT x, INT y, INT width, INT heiht, INT iconx, INT icony, BOOL bModifiedFileName, BOOL bOverwriteFileOk, /* FIXME shouldn't be necessary */ BOOL bSuppressShowWindow); VOID GROUP_NewGroup(void); VOID GROUP_ModifyGroup(HLOCAL hGroup); VOID GROUP_DeleteGroup(HLOCAL hGroup); /* FIXME shouldn't be necessary */ VOID GROUP_ShowGroupWindow(HLOCAL hGroup); HLOCAL GROUP_FirstGroup(void); HLOCAL GROUP_NextGroup(HLOCAL hGroup); HLOCAL GROUP_ActiveGroup(void); HWND GROUP_GroupWnd(HLOCAL hGroup); LPCSTR GROUP_GroupName(HLOCAL hGroup); ATOM PROGRAM_RegisterProgramWinClass(void); HLOCAL PROGRAM_AddProgram(HLOCAL hGroup, HICON hIcon, LPCSTR lpszName, INT x, INT y, LPCSTR lpszCmdLine, LPCSTR lpszIconFile, INT nIconIndex, LPCSTR lpszWorkDir, INT nHotKey, INT nCmdShow); VOID PROGRAM_NewProgram(HLOCAL hGroup); VOID PROGRAM_ModifyProgram(HLOCAL hProgram); VOID PROGRAM_CopyMoveProgram(HLOCAL hProgram, BOOL bMove); VOID PROGRAM_DeleteProgram(HLOCAL hProgram, BOOL BUpdateGrpFile); HLOCAL PROGRAM_FirstProgram(HLOCAL hGroup); HLOCAL PROGRAM_NextProgram(HLOCAL hProgram); HLOCAL PROGRAM_ActiveProgram(HLOCAL hGroup); LPCSTR PROGRAM_ProgramName(HLOCAL hProgram); VOID PROGRAM_ExecuteProgram(HLOCAL hLocal); INT DIALOG_New(INT nDefault); HLOCAL DIALOG_CopyMove(LPCSTR lpszProgramName, LPCSTR lpszGroupName, BOOL bMove); BOOL DIALOG_Delete(UINT ids_format_s, LPCSTR lpszName); BOOL DIALOG_GroupAttributes(LPSTR lpszTitle, LPSTR lpszPath, INT nSize); BOOL DIALOG_ProgramAttributes(LPSTR lpszTitle, LPSTR lpszCmdLine, LPSTR lpszWorkDir, LPSTR lpszIconFile, HICON *lphIcon, INT *nIconIndex, INT *lpnHotKey, INT *lpnCmdShow, INT nSize); VOID DIALOG_Symbol(HICON *lphIcon, LPSTR lpszIconFile, INT *lpnIconIndex, INT nSize); VOID DIALOG_Execute(void); VOID STRING_SelectLanguageByName(LPCSTR); VOID STRING_SelectLanguageByNumber(UINT); /* Class names */ extern CHAR STRING_MAIN_WIN_CLASS_NAME[]; extern CHAR STRING_MDI_WIN_CLASS_NAME[]; extern CHAR STRING_GROUP_WIN_CLASS_NAME[]; extern CHAR STRING_PROGRAM_WIN_CLASS_NAME[]; /* Resource names */ extern CHAR STRING_ACCEL[]; extern CHAR STRING_MAIN_Xx[]; extern CHAR STRING_NEW_Xx[]; extern CHAR STRING_OPEN_Xx[]; extern CHAR STRING_MOVE_Xx[]; extern CHAR STRING_COPY_Xx[]; extern CHAR STRING_DELETE_Xx[]; extern CHAR STRING_GROUP_Xx[]; extern CHAR STRING_PROGRAM_Xx[]; extern CHAR STRING_SYMBOL_Xx[]; extern CHAR STRING_EXECUTE_Xx[]; #define STRINGID(id) (0x##id + Globals.wStringTableOffset) #else /* RC_INVOKED */ #define STRINGID(id) id #endif /* Stringtable index */ #define IDS_LANGUAGE_ID STRINGID(00) #define IDS_LANGUAGE_MENU_ITEM STRINGID(01) #define IDS_PROGRAM_MANAGER STRINGID(02) #define IDS_ERROR STRINGID(03) #define IDS_WARNING STRINGID(04) #define IDS_INFO STRINGID(05) #define IDS_DELETE STRINGID(06) #define IDS_DELETE_GROUP_s STRINGID(07) #define IDS_DELETE_PROGRAM_s STRINGID(08) #define IDS_NOT_IMPLEMENTED STRINGID(09) #define IDS_FILE_READ_ERROR_s STRINGID(0a) #define IDS_FILE_WRITE_ERROR_s STRINGID(0b) #define IDS_GRPFILE_READ_ERROR_s STRINGID(0c) #define IDS_OUT_OF_MEMORY STRINGID(0d) #define IDS_WINHELP_ERROR STRINGID(0e) #define IDS_UNKNOWN_FEATURE_s STRINGID(0f) #define IDS_FILE_NOT_OVERWRITTEN_s STRINGID(10) #define IDS_SAVE_GROUP_AS_s STRINGID(11) #define IDS_NO_HOT_KEY STRINGID(12) #define IDS_ALL_FILES STRINGID(13) #define IDS_PROGRAMS STRINGID(14) #define IDS_LIBRARIES_DLL STRINGID(15) #define IDS_SYMBOL_FILES STRINGID(16) #define IDS_SYMBOLS_ICO STRINGID(17) /* Menu */ #define PM_NEW 100 #define PM_OPEN 101 #define PM_MOVE 102 #define PM_COPY 103 #define PM_DELETE 104 #define PM_ATTRIBUTES 105 #define PM_EXECUTE 107 #define PM_EXIT 108 #define PM_AUTO_ARRANGE 200 #define PM_MIN_ON_RUN 201 #define PM_SAVE_SETTINGS 203 #define PM_OVERLAP 300 #define PM_SIDE_BY_SIDE 301 #define PM_ARRANGE 302 #define PM_FIRST_CHILD 3030 #define PM_FIRST_LANGUAGE 400 #define PM_LAST_LANGUAGE 499 #define PM_CONTENTS 501 #define PM_SEARCH 502 #define PM_HELPONHELP 503 #define PM_TUTORIAL 504 #define PM_LICENSE 510 #define PM_NO_WARRANTY 511 #define PM_ABOUT_WINE 512 /* Dialog `New' */ /* RADIOBUTTON: The next two must be in sequence */ #define PM_NEW_GROUP 1000 #define PM_NEW_PROGRAM 1001 #define PM_NEW_GROUP_TXT 1002 #define PM_NEW_PROGRAM_TXT 1003 /* Dialogs `Copy', `Move' */ #define PM_PROGRAM 1200 #define PM_FROM_GROUP 1201 #define PM_TO_GROUP 1202 #define PM_TO_GROUP_TXT 1203 /* Dialogs `Group attributes' */ #define PM_DESCRIPTION 1500 #define PM_DESCRIPTION_TXT 1501 #define PM_FILE 1502 #define PM_FILE_TXT 1503 /* Dialogs `Program attributes' */ #define PM_COMMAND_LINE 1510 #define PM_COMMAND_LINE_TXT 1511 #define PM_DIRECTORY 1512 #define PM_DIRECTORY_TXT 1513 #define PM_HOT_KEY 1514 #define PM_HOT_KEY_TXT 1515 #define PM_ICON 1516 #define PM_OTHER_SYMBOL 1517 /* Dialog `Symbol' */ #define PM_ICON_FILE 1520 #define PM_ICON_FILE_TXT 1521 #define PM_SYMBOL_LIST 1522 #define PM_SYMBOL_LIST_TXT 1523 /* Dialog `Execute' */ #define PM_COMMAND 1600 #define PM_SYMBOL 1601 #define PM_BROWSE 1602 #define PM_HELP 1603 #endif /* PROGMAN_H */ /* Local Variables: */ /* c-file-style: "GNU" */ /* End: */