From b014c6435602a07aff989613653ecaee7d461100 Mon Sep 17 00:00:00 2001 From: rainwater Date: Wed, 9 Oct 2002 20:41:37 +0000 Subject: [PATCH] Alternate doc path points to docs on nsis.sf.net not cvs; Use smaller logo.bmp; Removed background color code from about dialog; Stupid typo in about box (thanks joost); Created some structs for globals git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1361 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/Makensisw/logo.bmp | Bin 7334 -> 7334 bytes Contrib/Makensisw/makensisw.cpp | 239 +++++++++++++++----------------- Contrib/Makensisw/makensisw.h | 43 +++++- Contrib/Makensisw/utils.cpp | 161 ++++++++++----------- 4 files changed, 220 insertions(+), 223 deletions(-) diff --git a/Contrib/Makensisw/logo.bmp b/Contrib/Makensisw/logo.bmp index c9b552f222ce40472fc9ede543fa58a0c7f17d89..e9e88cbde593925a4b05f907bb94dd01df60bb8c 100644 GIT binary patch delta 383 zcmW-d!AiqG6h#~8LTar((UM7mgSc~3Tz2a>xO1UDAovMpD?&RAtw;-DHU*0if*%mv zRS`;e+KuE3+U$}{+UJ{GF0(n8JC8f*PP+XY>ovN~8b=IagrC4u7MB8`myxB_zLUSZ z9rlC}A}XFbhy~Qb!q`ZjHlJCDRzn2~p2C!E0Ag*CjpU*^bQmH~UqTq{Ex>APY$W}? zq2p=7Y#tdr*1#}+(I_f>(HgjE_=AK?pZFMO;B10v{--LQ5YJWup|??VxQ$BySD$<* zaa3`!Kk&2$gm?zT-O{H!au=f@GaTgQfwVc5BA^&ig6AxP;KM=XdFVNE|+k9#tWd(ewlTJQbC GcHpD5iZAB1dph%^a=35PyLJl6a&KLHC zJff1V&1l$k$-%WYTg%BHCb&`G(!#J>lyLC1edd8wD-v~zZBwi4|m+?i3GxkKhm49k-X$tIXq{+ui&!BdO{=@tp0%L%B zRVZHIl1`1{r|m9d0CEB@rJzs=PY6^6aS0O*fV#VZU)C1x!Oq{T=C;L82)q)a0^+Ox rSsRc2CQf00ebHS4kb6td4JQ-$1)Sy(J+f?A7D98A`#X1om9G5*o8G#9 diff --git a/Contrib/Makensisw/makensisw.cpp b/Contrib/Makensisw/makensisw.cpp index 663a4558..9532ff06 100644 --- a/Contrib/Makensisw/makensisw.cpp +++ b/Contrib/Makensisw/makensisw.cpp @@ -24,47 +24,36 @@ #include "resource.h" #include "noclib.h" -static RECT resizeRect; -static RECT g_griprect; -static int dx; -static int dy; - -char *g_script; -int g_retcode; -HINSTANCE g_hInstance; -HWND g_hwnd; -HANDLE g_hThread; -BOOL g_warnings; -FINDREPLACE fr; -UINT uFindReplaceMsg=0; -HWND hwndFind=0; -CHARRANGE g_chrg; -HMENU g_submnu; -HMENU g_mnu; +NSCRIPTDATA g_sdata; +NRESIZEDATA g_resize; +NFINDREPLACE g_find; int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow) { MSG msg; int status; HACCEL haccel; - g_hInstance=GetModuleHandle(0); - g_script=GetCommandLine(); - if (*g_script=='"') { g_script++; while (*g_script && *g_script++!='"' ); } - else while (*g_script!=' ' && *g_script) g_script++; - while (*g_script==' ') g_script++; + ZeroMemory(&g_sdata,sizeof(NSCRIPTDATA)); + ZeroMemory(&g_resize,sizeof(NRESIZEDATA)); + ZeroMemory(&g_find,sizeof(NFINDREPLACE)); + g_sdata.hInstance=GetModuleHandle(0); + g_sdata.script=GetCommandLine(); + if (*g_sdata.script=='"') { g_sdata.script++; while (*g_sdata.script && *g_sdata.script++!='"' ); } + else while (*g_sdata.script!=' ' && *g_sdata.script) g_sdata.script++; + while (*g_sdata.script==' ') g_sdata.script++; if (!InitBranding()) { MessageBox(0,NSISERROR,"Error",MB_ICONEXCLAMATION|MB_OK); return 1; } ResetObjects(); - HWND hDialog = CreateDialog(g_hInstance,MAKEINTRESOURCE(DLG_MAIN),0,DialogProc); + HWND hDialog = CreateDialog(g_sdata.hInstance,MAKEINTRESOURCE(DLG_MAIN),0,DialogProc); if (!hDialog) { MessageBox(0,DLGERROR,"Error",MB_ICONEXCLAMATION|MB_OK); return 1; } - haccel = LoadAccelerators(g_hInstance, MAKEINTRESOURCE(IDK_ACCEL)); + haccel = LoadAccelerators(g_sdata.hInstance, MAKEINTRESOURCE(IDK_ACCEL)); while ((status=GetMessage(&msg,0,0,0))!=0) { if (status==-1) return -1; - if (!IsDialogMessage(hwndFind, &msg)) { + if (!IsDialogMessage(g_find.hwndFind, &msg)) { if (!TranslateAccelerator(hDialog,haccel,&msg)) { if (!IsDialogMessage(hDialog,&msg)) { TranslateMessage(&msg); @@ -83,44 +72,44 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { - g_hwnd=hwndDlg; - HICON hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_ICON)); + g_sdata.hwnd=hwndDlg; + HICON hIcon = LoadIcon(g_sdata.hInstance,MAKEINTRESOURCE(IDI_ICON)); SetClassLong(hwndDlg,GCL_HICON,(long)hIcon); SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,NULL,ENM_SELCHANGE); - DragAcceptFiles(g_hwnd,FALSE); - InitTooltips(g_hwnd); - g_mnu = GetMenu(hwndDlg); - g_submnu = GetSubMenu(g_mnu,1); - SetBranding(g_hwnd); + DragAcceptFiles(g_sdata.hwnd,FALSE); + InitTooltips(g_sdata.hwnd); + g_sdata.menu = GetMenu(g_sdata.hwnd); + g_sdata.submenu = GetSubMenu(g_sdata.menu,1); + SetBranding(g_sdata.hwnd); HFONT hFont = CreateFont(14,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_DONTCARE,"Courier New"); SendDlgItemMessage(hwndDlg,IDC_LOGWIN,WM_SETFONT,(WPARAM)hFont,0); SendDlgItemMessage(hwndDlg,IDC_LOGWIN,EM_SETBKGNDCOLOR,0,GetSysColor(COLOR_BTNFACE)); - RestoreWindowPos(g_hwnd); + RestoreWindowPos(g_sdata.hwnd); CompileNSISScript(); return TRUE; } case WM_PAINT: { PAINTSTRUCT ps; - GetClientRect(g_hwnd, &g_griprect); - HDC hdc = BeginPaint(g_hwnd, &ps); - g_griprect.left = g_griprect.right - GetSystemMetrics(SM_CXVSCROLL); - g_griprect.top = g_griprect.bottom - GetSystemMetrics(SM_CYVSCROLL); - DrawFrameControl(hdc, &g_griprect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP); - EndPaint(g_hwnd,&ps); + GetClientRect(g_sdata.hwnd, &g_resize.griprect); + HDC hdc = BeginPaint(g_sdata.hwnd, &ps); + g_resize.griprect.left = g_resize.griprect.right - GetSystemMetrics(SM_CXVSCROLL); + g_resize.griprect.top = g_resize.griprect.bottom - GetSystemMetrics(SM_CYVSCROLL); + DrawFrameControl(hdc, &g_resize.griprect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP); + EndPaint(g_sdata.hwnd,&ps); return TRUE; } case WM_DESTROY: { - SaveWindowPos(g_hwnd); + SaveWindowPos(g_sdata.hwnd); DestroyTooltips(); PostQuitMessage(0); return TRUE; } case WM_CLOSE: { - if (!g_hThread) { - DragAcceptFiles(g_hwnd,FALSE); + if (!g_sdata.thread) { + DragAcceptFiles(g_sdata.hwnd,FALSE); DestroyWindow(hwndDlg); FreeLibrary(hRichEditDLL); } @@ -128,8 +117,8 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } case WM_CONTEXTMENU: { - if ((HWND)wParam==GetDlgItem(g_hwnd,IDC_LOGWIN)) { - TrackPopupMenu(g_submnu,NULL,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),0,g_hwnd,0); + if ((HWND)wParam==GetDlgItem(g_sdata.hwnd,IDC_LOGWIN)) { + TrackPopupMenu(g_sdata.submenu,NULL,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),0,g_sdata.hwnd,0); } return TRUE; } @@ -140,8 +129,8 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { if (num==1) { DragQueryFile((HDROP)wParam,0,szTmp,MAX_PATH); if (lstrlen(szTmp)>0) { - g_script = (char *)GlobalAlloc(GPTR,sizeof(szTmp)+7); - wsprintf(g_script,"/CD \"%s\"",szTmp); + g_sdata.script = (char *)GlobalAlloc(GPTR,sizeof(szTmp)+7); + wsprintf(g_sdata.script,"/CD \"%s\"",szTmp); ResetObjects(); CompileNSISScript(); } @@ -155,55 +144,55 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } case WM_ENTERSIZEMOVE: { - GetClientRect(g_hwnd, &resizeRect); + GetClientRect(g_sdata.hwnd, &g_resize.resizeRect); return TRUE; } case WM_SIZE: { if ((wParam == SIZE_MAXHIDE)||(wParam == SIZE_MAXSHOW)) return TRUE; RECT rSize; - if (hwndDlg == g_hwnd) { - GetClientRect(g_hwnd, &rSize); - if (((rSize.right==0)&&(rSize.bottom==0))||((resizeRect.right==0)&&(resizeRect.bottom==0))) return TRUE; - dx = rSize.right - resizeRect.right; - dy = rSize.bottom - resizeRect.bottom; - EnumChildWindows(g_hwnd, DialogResize, (LPARAM)0); - resizeRect = rSize; + if (hwndDlg == g_sdata.hwnd) { + GetClientRect(g_sdata.hwnd, &rSize); + if (((rSize.right==0)&&(rSize.bottom==0))||((g_resize.resizeRect.right==0)&&(g_resize.resizeRect.bottom==0))) return TRUE; + g_resize.dx = rSize.right - g_resize.resizeRect.right; + g_resize.dy = rSize.bottom - g_resize.resizeRect.bottom; + EnumChildWindows(g_sdata.hwnd, DialogResize, (LPARAM)0); + g_resize.resizeRect = rSize; } return TRUE; } case WM_SIZING: { - InvalidateRect(g_hwnd,&g_griprect,TRUE); - GetClientRect(g_hwnd, &g_griprect); - g_griprect.left = g_griprect.right - GetSystemMetrics(SM_CXVSCROLL); - g_griprect.top = g_griprect.bottom - GetSystemMetrics(SM_CYVSCROLL); + InvalidateRect(g_sdata.hwnd,&g_resize.griprect,TRUE); + GetClientRect(g_sdata.hwnd, &g_resize.griprect); + g_resize.griprect.left = g_resize.griprect.right - GetSystemMetrics(SM_CXVSCROLL); + g_resize.griprect.top = g_resize.griprect.bottom - GetSystemMetrics(SM_CYVSCROLL); return TRUE; } case WM_MAKENSIS_PROCESSCOMPLETE: { - if (g_hThread) { - CloseHandle(g_hThread); - g_hThread=0; + if (g_sdata.thread) { + CloseHandle(g_sdata.thread); + g_sdata.thread=0; } - EnableItems(g_hwnd); - if (g_retcode==0) { + EnableItems(g_sdata.hwnd); + if (g_sdata.retcode==0) { MessageBeep(MB_ICONASTERISK); - if (g_warnings) SetTitle(g_hwnd,"Finished with Warnings"); - else SetTitle(g_hwnd,"Finished Sucessfully"); + if (g_sdata.warnings) SetTitle(g_sdata.hwnd,"Finished with Warnings"); + else SetTitle(g_sdata.hwnd,"Finished Sucessfully"); } else { MessageBeep(MB_ICONEXCLAMATION); - SetTitle(g_hwnd,"Compile Error: See Log for Details"); + SetTitle(g_sdata.hwnd,"Compile Error: See Log for Details"); } - DragAcceptFiles(g_hwnd,TRUE); + DragAcceptFiles(g_sdata.hwnd,TRUE); return TRUE; } case WM_NOTIFY: switch (((NMHDR*)lParam)->code ) { case EN_SELCHANGE: - SendDlgItemMessage(hwndDlg,IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM) &g_chrg); - EnableMenuItem(g_mnu,IDM_COPYSELECTED,(g_chrg.cpMax-g_chrg.cpMin<=0?MF_GRAYED:MF_ENABLED)); + SendDlgItemMessage(hwndDlg,IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM) &g_sdata.textrange); + EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,(g_sdata.textrange.cpMax-g_sdata.textrange.cpMin<=0?MF_GRAYED:MF_ENABLED)); break; } return TRUE; @@ -211,33 +200,33 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { { switch (LOWORD(wParam)) { case IDM_BROWSESCR: { - if (g_input_script) { + if (g_sdata.input_script) { char str[MAX_PATH],*str2; - lstrcpy(str,g_input_script); + lstrcpy(str,g_sdata.input_script); str2=strrchr(str,'\\'); if(str2!=NULL) *str2=0; - ShellExecute(g_hwnd,"open",str,NULL,NULL,SW_SHOWNORMAL); + ShellExecute(g_sdata.hwnd,"open",str,NULL,NULL,SW_SHOWNORMAL); } return TRUE; } case IDM_ABOUT: { - DialogBox(g_hInstance,MAKEINTRESOURCE(DLG_ABOUT),g_hwnd,(DLGPROC)AboutProc); + DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_ABOUT),g_sdata.hwnd,(DLGPROC)AboutProc); return TRUE; } case IDM_NSISHOME: { - ShellExecute(g_hwnd,"open",NSIS_URL,NULL,NULL,SW_SHOWNORMAL); + ShellExecute(g_sdata.hwnd,"open",NSIS_URL,NULL,NULL,SW_SHOWNORMAL); return TRUE; } case IDM_NSISDEV: { - ShellExecute(g_hwnd,"open",NSIS_DEV,NULL,NULL,SW_SHOWNORMAL); + ShellExecute(g_sdata.hwnd,"open",NSIS_DEV,NULL,NULL,SW_SHOWNORMAL); return TRUE; } case IDM_SELECTALL: { - SendDlgItemMessage(g_hwnd, IDC_LOGWIN, EM_SETSEL, 0, -1); + SendDlgItemMessage(g_sdata.hwnd, IDC_LOGWIN, EM_SETSEL, 0, -1); return TRUE; } case IDM_DOCS: @@ -247,7 +236,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } case IDM_LOADSCRIPT: { - if (!g_hThread) { + if (!g_sdata.thread) { OPENFILENAME l={sizeof(l),}; char buf[MAX_STRING]; l.hwndOwner = hwndDlg; @@ -261,8 +250,8 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { l.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST; lstrcpy(buf,""); if (GetOpenFileName(&l)) { - g_script = (char *)GlobalAlloc(GPTR,sizeof(buf)+7); - wsprintf(g_script,"/CD \"%s\"",buf); + g_sdata.script = (char *)GlobalAlloc(GPTR,sizeof(buf)+7); + wsprintf(g_sdata.script,"/CD \"%s\"",buf); ResetObjects(); CompileNSISScript(); } @@ -271,9 +260,9 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } case IDM_CLEARLOG: { - if (!g_hThread) { - ClearLog(g_hwnd); - LogMessage(g_hwnd,USAGE); + if (!g_sdata.thread) { + ClearLog(g_sdata.hwnd); + LogMessage(g_sdata.hwnd,USAGE); } return TRUE; } @@ -285,19 +274,19 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { case IDM_TEST: case IDC_TEST: { - if (g_output_exe) { - ShellExecute(g_hwnd,"open",g_output_exe,NULL,NULL,SW_SHOWNORMAL); + if (g_sdata.output_exe) { + ShellExecute(g_sdata.hwnd,"open",g_sdata.output_exe,NULL,NULL,SW_SHOWNORMAL); } return TRUE; } case IDM_EDITSCRIPT: { - if (g_input_script) { - if ((int)ShellExecute(g_hwnd,"open",g_input_script,NULL,NULL,SW_SHOWNORMAL)<=32) { + if (g_sdata.input_script) { + if ((int)ShellExecute(g_sdata.hwnd,"open",g_sdata.input_script,NULL,NULL,SW_SHOWNORMAL)<=32) { char path[MAX_PATH]; if (GetWindowsDirectory(path,sizeof(path))) { lstrcat(path,"\\notepad.exe"); - ShellExecute(g_hwnd,"open",path,g_input_script,NULL,SW_SHOWNORMAL); + ShellExecute(g_sdata.hwnd,"open",path,g_sdata.input_script,NULL,SW_SHOWNORMAL); } } } @@ -306,19 +295,19 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { case IDC_CLOSE: case IDM_EXIT: { - if (!g_hThread) { - DestroyWindow(hwndDlg); + if (!g_sdata.thread) { + DestroyWindow(g_sdata.hwnd); } return TRUE; } case IDM_COPY: { - CopyToClipboard(g_hwnd); + CopyToClipboard(g_sdata.hwnd); return TRUE; } case IDM_COPYSELECTED: { - SendDlgItemMessage(g_hwnd,IDC_LOGWIN, WM_COPY, 0, 0); + SendDlgItemMessage(g_sdata.hwnd,IDC_LOGWIN, WM_COPY, 0, 0); return TRUE; } case IDM_SAVE: @@ -337,10 +326,10 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { if (GetSaveFileName(&l)) { HANDLE hFile = CreateFile(buf,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0); if (hFile) { - int len=SendDlgItemMessage(g_hwnd,IDC_LOGWIN,WM_GETTEXTLENGTH,0,0); + int len=SendDlgItemMessage(g_sdata.hwnd,IDC_LOGWIN,WM_GETTEXTLENGTH,0,0); char *existing_text=(char*)GlobalAlloc(GPTR,len); existing_text[0]=0; - GetDlgItemText(g_hwnd, IDC_LOGWIN, existing_text, len); + GetDlgItemText(g_sdata.hwnd, IDC_LOGWIN, existing_text, len); DWORD dwWritten = 0; WriteFile(hFile,existing_text,len,&dwWritten,0); CloseHandle(hFile); @@ -351,21 +340,21 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } case IDM_FIND: { - if (!uFindReplaceMsg) uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING); - my_memset(&fr, 0, sizeof(FINDREPLACE)); - fr.lStructSize = sizeof(FINDREPLACE); - fr.hwndOwner = hwndDlg; - fr.Flags = FR_NOUPDOWN; - fr.lpstrFindWhat = (char *)GlobalAlloc(GPTR, 128); - if (!fr.lpstrFindWhat) return TRUE; - fr.wFindWhatLen = 128; - hwndFind = FindText(&fr); + if (!g_find.uFindReplaceMsg) g_find.uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING); + my_memset(&g_find.fr, 0, sizeof(FINDREPLACE)); + g_find.fr.lStructSize = sizeof(FINDREPLACE); + g_find.fr.hwndOwner = hwndDlg; + g_find.fr.Flags = FR_NOUPDOWN; + g_find.fr.lpstrFindWhat = (char *)GlobalAlloc(GPTR, 128); + if (!g_find.fr.lpstrFindWhat) return TRUE; + g_find.fr.wFindWhatLen = 128; + g_find.hwndFind = FindText(&g_find.fr); return TRUE; } } } } - if (uFindReplaceMsg && msg == uFindReplaceMsg) { + if (g_find.uFindReplaceMsg && msg == g_find.uFindReplaceMsg) { LPFINDREPLACE lpfr = (LPFINDREPLACE)lParam; if (lpfr->Flags & FR_FINDNEXT) { WPARAM flags = FR_DOWN; @@ -381,7 +370,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { if (ft.chrg.cpMin != -1) SendDlgItemMessage(hwndDlg, IDC_LOGWIN, EM_SETSEL, ft.chrgText.cpMin, ft.chrgText.cpMax); else MessageBeep(MB_ICONASTERISK); } - if (lpfr->Flags & FR_DIALOGTERM) hwndFind = 0; + if (lpfr->Flags & FR_DIALOGTERM) g_find.hwndFind = 0; return TRUE; } return 0; @@ -403,8 +392,8 @@ DWORD WINAPI MakeNSISProc(LPVOID p) { else sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = true; if (!CreatePipe(&read_stdout,&newstdout,&sa,0)) { - ErrorMessage(g_hwnd,"There was an error creating the pipe."); - PostMessage(g_hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0); + ErrorMessage(g_sdata.hwnd,"There was an error creating the pipe."); + PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0); return 1; } GetStartupInfo(&si); @@ -412,13 +401,13 @@ DWORD WINAPI MakeNSISProc(LPVOID p) { si.wShowWindow = SW_HIDE; si.hStdOutput = newstdout; si.hStdError = newstdout; - if (!CreateProcess(NULL,g_script,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) { + if (!CreateProcess(NULL,g_sdata.script,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) { char buf[MAX_STRING]; - wsprintf(buf,"Could not execute:\r\n %s.",g_script); - ErrorMessage(g_hwnd,buf); + wsprintf(buf,"Could not execute:\r\n %s.",g_sdata.script); + ErrorMessage(g_sdata.hwnd,buf); CloseHandle(newstdout); CloseHandle(read_stdout); - PostMessage(g_hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0); + PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0); return 1; } char szBuf[1024]; @@ -429,7 +418,7 @@ DWORD WINAPI MakeNSISProc(LPVOID p) { if (dwRead) { ReadFile(read_stdout, szBuf, sizeof(szBuf)-1, &dwRead, NULL); szBuf[dwRead] = 0; - LogMessage(g_hwnd, szBuf); + LogMessage(g_sdata.hwnd, szBuf); } else Sleep(TIMEOUT); GetExitCodeProcess(pi.hProcess, &dwExit); @@ -439,12 +428,12 @@ DWORD WINAPI MakeNSISProc(LPVOID p) { } } - g_retcode = dwExit; + g_sdata.retcode = dwExit; CloseHandle(pi.hThread); CloseHandle(pi.hProcess); CloseHandle(newstdout); CloseHandle(read_stdout); - PostMessage(g_hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0); + PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0); return 0; } @@ -452,28 +441,25 @@ BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused */) { RECT r; GetWindowRect(hWnd, &r); - ScreenToClient(g_hwnd, (LPPOINT)&r); - ScreenToClient(g_hwnd, ((LPPOINT)&r)+1); + ScreenToClient(g_sdata.hwnd, (LPPOINT)&r); + ScreenToClient(g_sdata.hwnd, ((LPPOINT)&r)+1); switch (GetDlgCtrlID(hWnd)) { case IDC_LOGWIN: - SetWindowPos(hWnd, 0, r.left, r.top,r.right - r.left + dx, r.bottom - r.top + dy, SWP_NOZORDER|SWP_NOMOVE); + SetWindowPos(hWnd, 0, r.left, r.top,r.right - r.left + g_resize.dx, r.bottom - r.top + g_resize.dy, SWP_NOZORDER|SWP_NOMOVE); break; case IDC_TEST: case IDC_CLOSE: - SetWindowPos(hWnd, 0, r.left + dx, r.top + dy, 0, 0, SWP_NOZORDER|SWP_NOSIZE); + SetWindowPos(hWnd, 0, r.left + g_resize.dx, r.top + g_resize.dy, 0, 0, SWP_NOZORDER|SWP_NOSIZE); break; default: - SetWindowPos(hWnd, 0, r.left, r.top + dy, r.right - r.left + dx, r.bottom - r.top, SWP_NOZORDER); + SetWindowPos(hWnd, 0, r.left, r.top + g_resize.dy, r.right - r.left + g_resize.dx, r.bottom - r.top, SWP_NOZORDER); break; } RedrawWindow(hWnd,NULL,NULL,RDW_INVALIDATE); return TRUE; } -extern char *g_branding; - BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - static HBRUSH hBrush; switch(msg) { case WM_INITDIALOG: { @@ -503,21 +489,12 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { SendDlgItemMessage(hwndDlg, IDC_NSISVER, WM_SETFONT, (WPARAM)rfont, FALSE); SendDlgItemMessage(hwndDlg, IDC_OTHERCONTRIB, WM_SETFONT, (WPARAM)rfont, FALSE); } - SetDlgItemText(hwndDlg,IDC_NSISVER,g_branding); + SetDlgItemText(hwndDlg,IDC_NSISVER,g_sdata.branding); SetDlgItemText(hwndDlg,IDC_ABOUTVERSION,NSISW_VERSION); SetDlgItemText(hwndDlg,IDC_ABOUTCOPY,COPYRIGHT); SetDlgItemText(hwndDlg,IDC_OTHERCONTRIB,CONTRIB); break; } - case WM_CTLCOLORDLG: - case WM_CTLCOLORSTATIC: - case WM_CTLCOLORLISTBOX: - { - if(!hBrush) hBrush=CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); - SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNFACE)); - SelectObject((HDC)wParam, hBrush); - return((LONG)hBrush); - } case WM_COMMAND: { switch (LOWORD(wParam)) { diff --git a/Contrib/Makensisw/makensisw.h b/Contrib/Makensisw/makensisw.h index 14378f31..24cb5b78 100644 --- a/Contrib/Makensisw/makensisw.h +++ b/Contrib/Makensisw/makensisw.h @@ -35,7 +35,7 @@ #define USAGE "Usage:\r\n\r\n - File | Load Script...\r\n - Drag the .nsi file into this window\r\n - Right click the .nsi file and choose \"Compile NSI\"" #define COPYRIGHT "Copyright © 2002 Robert Rainwater" #define CONTRIB "Fritz Elfert, Justin Frankel, Amir Szekely" -#define DOCPATH "http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/nsis/NSIS/docs/index.html?rev=HEAD" +#define DOCPATH "http://nsis.sourceforge.net/Docs/" #define LOCALDOCS "\\docs\\index.html" #define NSISERROR "Unable to intialize MakeNSIS. Please verify that makensis.exe is in the same directory as makensisw.exe." #define DLGERROR "Unable to intialize MakeNSISW." @@ -55,12 +55,6 @@ // Extern Variables extern const char* NSISW_VERSION; -extern char* g_script; -extern HWND g_hwnd; -extern HANDLE g_hThread; -extern char * g_output_exe; -extern char * g_input_script; -extern int g_retcode; int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow); static BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); @@ -70,4 +64,39 @@ BOOL CALLBACK AboutNSISProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); void CompileNSISScript(); +typedef struct NSISScriptData { + char *script; + char *output_exe; + char *input_script; + char *branding; + int retcode; + BOOL warnings; + BOOL appended; + HINSTANCE hInstance; + HWND hwnd; + HMENU menu; + HMENU submenu; + HANDLE thread; + CHARRANGE textrange; +} NSCRIPTDATA; + +typedef struct ResizeData { + RECT resizeRect; + RECT griprect; + int dx; + int dy; +} NRESIZEDATA; + +typedef struct FindReplaceDialog { + FINDREPLACE fr; + UINT uFindReplaceMsg; + HWND hwndFind; +} NFINDREPLACE; + +typedef struct ToolTipStruct { + HWND tip; + HWND tip_p; + HHOOK hook; +} NTOOLTIP; + #endif \ No newline at end of file diff --git a/Contrib/Makensisw/utils.cpp b/Contrib/Makensisw/utils.cpp index 037bcc35..9b453f4b 100644 --- a/Contrib/Makensisw/utils.cpp +++ b/Contrib/Makensisw/utils.cpp @@ -24,21 +24,11 @@ #include "makensisw.h" #include "noclib.h" -char *g_branding; -char *g_output_exe; -char *g_input_script; -HWND g_tip; -HWND g_tip_p; -HHOOK g_hook; DWORD g_dwLength; +NTOOLTIP g_tip; LRESULT CALLBACK TipHookProc(int nCode, WPARAM wParam, LPARAM lParam); -extern BOOL g_warnings; -extern HANDLE g_hThread; -extern int g_retcode; -extern HMENU g_mnu; - -static BOOL g_appended = FALSE; +extern NSCRIPTDATA g_sdata; void SetTitle(HWND hwnd,char *substr) { char title[64]; @@ -48,7 +38,7 @@ void SetTitle(HWND hwnd,char *substr) { } void SetBranding(HWND hwnd) { - SetDlgItemText(hwnd, IDC_VERSION, g_branding); + SetDlgItemText(hwnd, IDC_VERSION, g_sdata.branding); } void CopyToClipboard(HWND hwnd) { @@ -87,29 +77,29 @@ void ErrorMessage(HWND hwnd,const char *str) { void DisableItems(HWND hwnd) { EnableWindow(GetDlgItem(hwnd,IDC_CLOSE),0); EnableWindow(GetDlgItem(hwnd,IDC_TEST),0); - EnableMenuItem(g_mnu,IDM_SAVE,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_TEST,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_EXIT,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_LOADSCRIPT,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_RECOMPILE,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_COPY,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_COPYSELECTED,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_EDITSCRIPT,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_CLEARLOG,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_BROWSESCR,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_SAVE,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_TEST,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_EXIT,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_LOADSCRIPT,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_RECOMPILE,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_COPY,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_EDITSCRIPT,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_CLEARLOG,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_BROWSESCR,MF_GRAYED); } void EnableItems(HWND hwnd) { #define MSG(a) SendDlgItemMessage(hwnd,IDC_LOGWIN,a,0,0) #define MSG1(a,b) SendDlgItemMessage(hwnd,IDC_LOGWIN,a,b,0) #define MSG2(a,b,c) SendDlgItemMessage(hwnd,IDC_LOGWIN,a,b,c) - if (g_input_script) { - GlobalFree(g_input_script); - g_input_script = 0; + if (g_sdata.input_script) { + GlobalFree(g_sdata.input_script); + g_sdata.input_script = 0; } - if (g_output_exe) { - GlobalFree(g_output_exe); - g_output_exe = 0; + if (g_sdata.output_exe) { + GlobalFree(g_sdata.output_exe); + g_sdata.output_exe = 0; } TEXTRANGE tr; FINDTEXT ft; @@ -121,8 +111,8 @@ void EnableItems(HWND hwnd) { ft.chrg.cpMin = tr.chrg.cpMin = MSG2(EM_FINDTEXT, 0, (LPARAM)&ft) + lstrlen("Processing script file: \""); ft.lpstrText = "\""; tr.chrg.cpMax = MSG2(EM_FINDTEXT, 0, (LPARAM)&ft); - if (tr.chrg.cpMin == lstrlen("Processing script file: \"") - 1) tr.chrg.cpMax = tr.chrg.cpMin = 0; - tr.lpstrText = g_input_script = (char *)GlobalAlloc(GPTR, tr.chrg.cpMax-tr.chrg.cpMin+1); + if (tr.chrg.cpMin == lstrlen("Processing script file: \"") - 1) tr.chrg.cpMax = tr.chrg.cpMin = 0; + tr.lpstrText = g_sdata.input_script = (char *)GlobalAlloc(GPTR, tr.chrg.cpMax-tr.chrg.cpMin+1); MSG2(EM_GETTEXTRANGE, 0, (WPARAM)&tr); // find output exe @@ -132,60 +122,60 @@ void EnableItems(HWND hwnd) { ft.chrg.cpMin = tr.chrg.cpMin = MSG2(EM_FINDTEXT, 0, (LPARAM)&ft) + lstrlen("Output: \""); ft.lpstrText = "\""; tr.chrg.cpMax = MSG2(EM_FINDTEXT, 0, (LPARAM)&ft); - if (tr.chrg.cpMin == lstrlen("Output: \"") - 1) tr.chrg.cpMax = tr.chrg.cpMin = 0; - tr.lpstrText = g_output_exe = (char *)GlobalAlloc(GPTR, tr.chrg.cpMax-tr.chrg.cpMin+1); + if (tr.chrg.cpMin == lstrlen("Output: \"") - 1) tr.chrg.cpMax = tr.chrg.cpMin = 0; + tr.lpstrText = g_sdata.output_exe = (char *)GlobalAlloc(GPTR, tr.chrg.cpMax-tr.chrg.cpMin+1); MSG2(EM_GETTEXTRANGE, 0, (WPARAM)&tr); - g_warnings = FALSE; + g_sdata.warnings = FALSE; ft.lpstrText = "warning:"; - if (MSG2(EM_FINDTEXT, 0, (LPARAM)&ft) != -1) g_warnings++; + if (MSG2(EM_FINDTEXT, 0, (LPARAM)&ft) != -1) g_sdata.warnings++; ft.lpstrText = "warnings:"; - if (MSG2(EM_FINDTEXT, 0, (LPARAM)&ft) != -1) g_warnings++; + if (MSG2(EM_FINDTEXT, 0, (LPARAM)&ft) != -1) g_sdata.warnings++; - if (g_output_exe && !g_retcode) { + if (g_sdata.output_exe && !g_sdata.retcode) { EnableWindow(GetDlgItem(hwnd,IDC_TEST),1); - EnableMenuItem(g_mnu,IDM_TEST,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_TEST,MF_ENABLED); } EnableWindow(GetDlgItem(hwnd,IDC_CLOSE),1); - EnableMenuItem(g_mnu,IDM_SAVE,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_EXIT,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_LOADSCRIPT,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_RECOMPILE,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_COPY,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_COPYSELECTED,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_EDITSCRIPT,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_CLEARLOG,MF_ENABLED); - EnableMenuItem(g_mnu,IDM_BROWSESCR,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_SAVE,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_EXIT,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_LOADSCRIPT,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_RECOMPILE,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_COPY,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_EDITSCRIPT,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_CLEARLOG,MF_ENABLED); + EnableMenuItem(g_sdata.menu,IDM_BROWSESCR,MF_ENABLED); } void CompileNSISScript() { static char *s; - DragAcceptFiles(g_hwnd,FALSE); - ClearLog(g_hwnd); - SetTitle(g_hwnd,NULL); - if (lstrlen(g_script)==0) { - LogMessage(g_hwnd,USAGE); - EnableMenuItem(g_mnu,IDM_RECOMPILE,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_EDITSCRIPT,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_TEST,MF_GRAYED); - EnableMenuItem(g_mnu,IDM_BROWSESCR,MF_GRAYED); - EnableWindow(GetDlgItem(g_hwnd,IDC_TEST),0); - DragAcceptFiles(g_hwnd,TRUE); + DragAcceptFiles(g_sdata.hwnd,FALSE); + ClearLog(g_sdata.hwnd); + SetTitle(g_sdata.hwnd,NULL); + if (lstrlen(g_sdata.script)==0) { + LogMessage(g_sdata.hwnd,USAGE); + EnableMenuItem(g_sdata.menu,IDM_RECOMPILE,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_EDITSCRIPT,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_TEST,MF_GRAYED); + EnableMenuItem(g_sdata.menu,IDM_BROWSESCR,MF_GRAYED); + EnableWindow(GetDlgItem(g_sdata.hwnd,IDC_TEST),0); + DragAcceptFiles(g_sdata.hwnd,TRUE); return; } - if (!g_appended) { + if (!g_sdata.appended) { if (s) GlobalFree(s); - s = (char *)GlobalAlloc(GPTR, lstrlen(g_script)+lstrlen(EXENAME)+2); - wsprintf(s,"%s %s",EXENAME,g_script); - g_script = s; - g_appended = TRUE; + s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+lstrlen(EXENAME)+2); + wsprintf(s,"%s %s",EXENAME,g_sdata.script); + g_sdata.script = s; + g_sdata.appended = TRUE; } g_dwLength = 0; // Disable buttons during compile - DisableItems(g_hwnd); + DisableItems(g_sdata.hwnd); DWORD id; - g_hThread=CreateThread(NULL,0,MakeNSISProc,0,0,&id); + g_sdata.thread=CreateThread(NULL,0,MakeNSISProc,0,0,&id); } void RestoreWindowPos(HWND hwnd) { @@ -214,10 +204,10 @@ void SaveWindowPos(HWND hwnd) { } void ResetObjects() { - g_appended = FALSE; - g_warnings = FALSE; - g_retcode = -1; - g_hThread = NULL; + g_sdata.appended = FALSE; + g_sdata.warnings = FALSE; + g_sdata.retcode = -1; + g_sdata.thread = NULL; } int InitBranding() { @@ -262,8 +252,8 @@ int InitBranding() { ReadFile(read_stdout, szBuf, sizeof(szBuf)-1, &dwRead, NULL); szBuf[dwRead] = 0; if (lstrlen(szBuf)==0) return 0; - g_branding = (char *)GlobalAlloc(GPTR,lstrlen(szBuf)+6); - wsprintf(g_branding,"NSIS %s",szBuf); + g_sdata.branding = (char *)GlobalAlloc(GPTR,lstrlen(szBuf)+6); + wsprintf(g_sdata.branding,"NSIS %s",szBuf); GlobalFree(s); } return 1; @@ -271,45 +261,46 @@ int InitBranding() { void InitTooltips(HWND h) { if (h == NULL) return; - g_tip_p = h; + ZeroMemory(&g_tip,sizeof(NTOOLTIP)); + g_tip.tip_p = h; INITCOMMONCONTROLSEX icx; icx.dwSize = sizeof(icx); icx.dwICC = ICC_BAR_CLASSES; InitCommonControlsEx(&icx); DWORD dwStyle = WS_POPUP | WS_BORDER | TTS_ALWAYSTIP; DWORD dwExStyle = WS_EX_TOOLWINDOW | WS_EX_TOPMOST; - g_tip = CreateWindowEx(dwExStyle,TOOLTIPS_CLASS,NULL,dwStyle,0,0,0,0,h,NULL,GetModuleHandle(NULL),NULL); - if (!g_tip) return; - g_hook = SetWindowsHookEx(WH_GETMESSAGE,TipHookProc,NULL, GetCurrentThreadId()); + g_tip.tip = CreateWindowEx(dwExStyle,TOOLTIPS_CLASS,NULL,dwStyle,0,0,0,0,h,NULL,GetModuleHandle(NULL),NULL); + if (!g_tip.tip) return; + g_tip.hook = SetWindowsHookEx(WH_GETMESSAGE,TipHookProc,NULL, GetCurrentThreadId()); AddTip(GetDlgItem(h,IDC_CLOSE),TEXT("Close MakeNSISW")); AddTip(GetDlgItem(h,IDC_TEST),TEXT("Test the installer generated by MakeNSISW")); } void DestroyTooltips() { - UnhookWindowsHookEx(g_hook); + UnhookWindowsHookEx(g_tip.hook); } void AddTip(HWND hWnd,LPSTR lpszToolTip) { TOOLINFO ti; ti.cbSize = sizeof(TOOLINFO); ti.uFlags = TTF_IDISHWND; - ti.hwnd = g_tip_p; + ti.hwnd = g_tip.tip_p; ti.uId = (UINT) hWnd; ti.lpszText = lpszToolTip; - SendMessage(g_tip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); + SendMessage(g_tip.tip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); } LRESULT CALLBACK TipHookProc(int nCode, WPARAM wParam, LPARAM lParam) { - if (nCode < 0) return CallNextHookEx(g_hook, nCode, wParam, lParam); + if (nCode < 0) return CallNextHookEx(g_tip.hook, nCode, wParam, lParam); switch (((MSG*)lParam)->message) { case WM_MOUSEMOVE: - if (IsChild(g_tip_p,((MSG*)lParam)->hwnd)) - SendMessage(g_tip, TTM_RELAYEVENT, 0,lParam); + if (IsChild(g_tip.tip_p,((MSG*)lParam)->hwnd)) + SendMessage(g_tip.tip, TTM_RELAYEVENT, 0,lParam); break; default: break; } - return CallNextHookEx(g_hook, nCode, wParam, lParam); + return CallNextHookEx(g_tip.hook, nCode, wParam, lParam); } void ShowDocs() { @@ -318,6 +309,6 @@ void ShowDocs() { path=my_strrchr(pathf,'\\'); if(path!=NULL) *path=0; lstrcat(pathf,LOCALDOCS); - if ((int)ShellExecute(g_hwnd,"open",pathf,NULL,NULL,SW_SHOWNORMAL)<=32) - ShellExecute(g_hwnd,"open",DOCPATH,NULL,NULL,SW_SHOWNORMAL); -} \ No newline at end of file + if ((int)ShellExecute(g_sdata.hwnd,"open",pathf,NULL,NULL,SW_SHOWNORMAL)<=32) + ShellExecute(g_sdata.hwnd,"open",DOCPATH,NULL,NULL,SW_SHOWNORMAL); +}