VOID PROGRAM_NewProgram(HLOCAL hGroup) { INT nCmdShow = SW_SHOWNORMAL; INT nHotKey = 0; INT nIconIndex = 0; CHAR szName[MAX_PATHNAME_LEN] = ""; CHAR szCmdLine[MAX_PATHNAME_LEN] = ""; CHAR szIconFile[MAX_PATHNAME_LEN] = ""; CHAR szWorkDir[MAX_PATHNAME_LEN] = ""; HICON hIcon = 0; if (!DIALOG_ProgramAttributes(szName, szCmdLine, szWorkDir, szIconFile, &hIcon, &nIconIndex, &nHotKey, &nCmdShow, MAX_PATHNAME_LEN)) return; if (!hIcon) hIcon = LoadIcon(0, IDI_WINLOGO); if (!PROGRAM_AddProgram(hGroup, hIcon, szName, 0, 0, szCmdLine, szIconFile, nIconIndex, szWorkDir, nHotKey, nCmdShow)) return; GRPFILE_WriteGroupFile(hGroup); }
VOID PROGRAM_DeleteProgram(HLOCAL hProgram, BOOL bUpdateGrpFile) { PROGRAM *program = LocalLock(hProgram); PROGGROUP *group = LocalLock(program->hGroup); group->hActiveProgram = 0; if (program->hPrior) ((PROGRAM*)LocalLock(program->hPrior))->hNext = program->hNext; else ((PROGGROUP*)LocalLock(program->hGroup))->hPrograms = program->hNext; if (program->hNext) ((PROGRAM*)LocalLock(program->hNext))->hPrior = program->hPrior; if (bUpdateGrpFile) GRPFILE_WriteGroupFile(program->hGroup); DestroyWindow(program->hWnd); #if 0 if (program->hIcon) DestroyIcon(program->hIcon); #endif LocalFree(program->hName); LocalFree(program->hCmdLine); LocalFree(program->hIconFile); LocalFree(program->hWorkDir); LocalFree(hProgram); }
VOID PROGRAM_CopyMoveProgram(HLOCAL hProgram, BOOL bMove) { PROGRAM *program = LocalLock(hProgram); PROGGROUP *fromgroup = LocalLock(program->hGroup); HLOCAL hGroup = DIALOG_CopyMove(LocalLock(program->hName), LocalLock(fromgroup->hName), bMove); if (!hGroup) return; /* FIXME shouldn't be necessary */ OpenIcon(((PROGGROUP*)LocalLock(hGroup))->hWnd); if (!PROGRAM_AddProgram(hGroup, #if 0 CopyIcon(program->hIcon), #else program->hIcon, #endif LocalLock(program->hName), program->x, program->y, LocalLock(program->hCmdLine), LocalLock(program->hIconFile), program->nIconIndex, LocalLock(program->hWorkDir), program->nHotKey, program->nCmdShow)) return; GRPFILE_WriteGroupFile(hGroup); if (bMove) PROGRAM_DeleteProgram(hProgram, TRUE); }
VOID PROGRAM_ModifyProgram(HLOCAL hProgram) { PROGRAM *program = LocalLock(hProgram); CHAR szName[MAX_PATHNAME_LEN]; CHAR szCmdLine[MAX_PATHNAME_LEN]; CHAR szIconFile[MAX_PATHNAME_LEN]; CHAR szWorkDir[MAX_PATHNAME_LEN]; lstrcpyn(szName, LocalLock(program->hName), MAX_PATHNAME_LEN); lstrcpyn(szCmdLine, LocalLock(program->hCmdLine), MAX_PATHNAME_LEN); lstrcpyn(szIconFile, LocalLock(program->hIconFile), MAX_PATHNAME_LEN); lstrcpyn(szWorkDir, LocalLock(program->hWorkDir), MAX_PATHNAME_LEN); if (!DIALOG_ProgramAttributes(szName, szCmdLine, szWorkDir, szIconFile, &program->hIcon, &program->nIconIndex, &program->nHotKey, &program->nCmdShow, MAX_PATHNAME_LEN)) return; MAIN_ReplaceString(&program->hName, szName); MAIN_ReplaceString(&program->hCmdLine, szCmdLine); MAIN_ReplaceString(&program->hIconFile, szIconFile); MAIN_ReplaceString(&program->hWorkDir, szWorkDir); SetWindowText(program->hWnd, szName); UpdateWindow(program->hWnd); GRPFILE_WriteGroupFile(program->hGroup); return; }
VOID GROUP_ModifyGroup(PROGGROUP* hGroup) { WCHAR Dest[MAX_PATHNAME_LEN]; // szName WCHAR szGrpFile[MAX_PATHNAME_LEN]; // szFile wcsncpy(Dest, hGroup->hName, ARRAYSIZE(Dest)); wcsncpy(szGrpFile, hGroup->hGrpFile, ARRAYSIZE(szGrpFile)); if (!DIALOG_GroupAttributes(hGroup->format, Dest, szGrpFile, MAX_PATHNAME_LEN)) return; if (wcscmp(szGrpFile, hGroup->hGrpFile)) hGroup->bOverwriteFileOk = FALSE; MAIN_ReplaceString(&hGroup->hName, Dest); MAIN_ReplaceString(&hGroup->hGrpFile, szGrpFile); GRPFILE_WriteGroupFile(hGroup); /* FIXME Delete old GrpFile if GrpFile changed */ /* FIXME Update progman.ini */ SetWindowTextW(hGroup->hWnd, Dest); }
VOID GROUP_NewGroup(void) { CHAR szName[MAX_PATHNAME_LEN] = ""; CHAR szFile[MAX_PATHNAME_LEN] = ""; OFSTRUCT dummy; if (!DIALOG_GroupAttributes(szName, szFile, MAX_PATHNAME_LEN)) return; if (OpenFile(szFile, &dummy, OF_EXIST) == HFILE_ERROR) { /* File doesn't exist */ HLOCAL hGroup = GROUP_AddGroup(szName, szFile, SW_SHOWNORMAL, DEF_GROUP_WIN_XPOS, DEF_GROUP_WIN_YPOS, DEF_GROUP_WIN_WIDTH, DEF_GROUP_WIN_HEIGHT, 0, 0, FALSE, FALSE, FALSE); if (!hGroup) return; GRPFILE_WriteGroupFile(hGroup); } else /* File exist */ GRPFILE_ReadGroupFile(szFile); /* FIXME Update progman.ini */ }
VOID GROUP_ModifyGroup(HLOCAL hGroup) { PROGGROUP *group = LocalLock(hGroup); CHAR szName[MAX_PATHNAME_LEN]; CHAR szFile[MAX_PATHNAME_LEN]; lstrcpyn(szName, LocalLock(group->hName), MAX_PATHNAME_LEN); lstrcpyn(szFile, LocalLock(group->hGrpFile), MAX_PATHNAME_LEN); if (!DIALOG_GroupAttributes(szName, szFile, MAX_PATHNAME_LEN)) return; if (strcmp(szFile, LocalLock(group->hGrpFile))) group->bOverwriteFileOk = FALSE; MAIN_ReplaceString(&group->hName, szName); MAIN_ReplaceString(&group->hGrpFile, szFile); GRPFILE_WriteGroupFile(hGroup); /* FIXME Delete old GrpFile if GrpFile changed */ /* FIXME Update progman.ini */ SetWindowText(group->hWnd, szName); }
VOID GROUP_NewGroup(GROUPFORMAT format, BOOL bIsCommonGroup) { HANDLE hFile; WCHAR szGrpFile[MAX_PATHNAME_LEN] = L""; WCHAR szTitle[MAX_PATHNAME_LEN] = L""; // ZeroMemory(szTitle, sizeof(szTitle)); // ZeroMemory(szGrpFile, sizeof(szGrpFile)); if (!DIALOG_GroupAttributes(format, szTitle, szGrpFile, MAX_PATHNAME_LEN)) return; /* * Just check whether the group file does exist. If it does, close the handle, because GRPFILE_ReadGroupFile will * reopen the file for loading. If it doesn't exist, we create a new one. */ hFile = CreateFileW(szGrpFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { /* File doesn't exist */ PROGGROUP* hGroup = GROUP_AddGroup(format, bIsCommonGroup, szTitle, szGrpFile, DEF_GROUP_WIN_XPOS, DEF_GROUP_WIN_YPOS, DEF_GROUP_WIN_XPOS + DEF_GROUP_WIN_WIDTH, DEF_GROUP_WIN_YPOS + DEF_GROUP_WIN_HEIGHT, 0, 0, SW_SHOWNORMAL, 0, 0, FALSE, FALSE); if (hGroup) GRPFILE_WriteGroupFile(hGroup); } else { /* File exist */ CloseHandle(hFile); GRPFILE_ReadGroupFile(szGrpFile, bIsCommonGroup); } /* FIXME Update progman.ini */ }