Improved MakeNSISW UI command state handling
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7043 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
5642b70dd5
commit
a6abbc6f4c
7 changed files with 87 additions and 45 deletions
|
@ -479,12 +479,9 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
switch (((NMHDR*)lParam)->code ) {
|
switch (((NMHDR*)lParam)->code ) {
|
||||||
case EN_SELCHANGE:
|
case EN_SELCHANGE:
|
||||||
SendDlgItemMessage(hwndDlg,IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM) &g_sdata.textrange);
|
EnableMenuItem(g_sdata.menu, IDM_COPYSELECTED, RicheditHasSelection(GetDlgItem(hwndDlg, IDC_LOGWIN)) ? MF_ENABLED : MF_GRAYED);
|
||||||
{
|
break;
|
||||||
BOOL enabled = (g_sdata.textrange.cpMax-g_sdata.textrange.cpMin<=0?FALSE:TRUE);
|
|
||||||
EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,(enabled?MF_ENABLED:MF_GRAYED));
|
|
||||||
EnableToolBarButton(IDM_COPY,enabled);
|
|
||||||
}
|
|
||||||
// Altered by Darren Owen (DrO) on 6/10/2003
|
// Altered by Darren Owen (DrO) on 6/10/2003
|
||||||
// Allows the detection of the right-click menu when running on OSes below Windows 2000
|
// Allows the detection of the right-click menu when running on OSes below Windows 2000
|
||||||
// and will then simulate the effective WM_CONTEXTMENU message that would be received
|
// and will then simulate the effective WM_CONTEXTMENU message that would be received
|
||||||
|
@ -492,10 +489,11 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
// Windows 2000 and higher
|
// Windows 2000 and higher
|
||||||
case EN_MSGFILTER:
|
case EN_MSGFILTER:
|
||||||
#define lpnmMsg ((MSGFILTER*)lParam)
|
#define lpnmMsg ((MSGFILTER*)lParam)
|
||||||
if(WM_RBUTTONUP == lpnmMsg->msg || (WM_KEYUP == lpnmMsg->msg && lpnmMsg->wParam == VK_APPS)){
|
if(WM_RBUTTONUP == lpnmMsg->msg || (WM_KEYUP == lpnmMsg->msg && lpnmMsg->wParam == VK_APPS))
|
||||||
POINT pt;
|
{
|
||||||
HWND edit = GetDlgItem(g_sdata.hwnd,IDC_LOGWIN);
|
POINT pt;
|
||||||
RECT r;
|
HWND edit = GetDlgItem(g_sdata.hwnd,IDC_LOGWIN);
|
||||||
|
RECT r;
|
||||||
GetCursorPos(&pt);
|
GetCursorPos(&pt);
|
||||||
|
|
||||||
// Added and altered by Darren Owen (DrO) on 29/9/2003
|
// Added and altered by Darren Owen (DrO) on 29/9/2003
|
||||||
|
@ -504,11 +502,11 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
// from here...
|
// from here...
|
||||||
ScreenToClient(edit, &pt);
|
ScreenToClient(edit, &pt);
|
||||||
GetClientRect(edit, &r);
|
GetClientRect(edit, &r);
|
||||||
if(!PtInRect(&r, pt))
|
if (!PtInRect(&r, pt)) pt.x = pt.y = 0;
|
||||||
pt.x = pt.y = 0;
|
|
||||||
MapWindowPoints(edit, HWND_DESKTOP, &pt, 1);
|
MapWindowPoints(edit, HWND_DESKTOP, &pt, 1);
|
||||||
TrackPopupMenu(g_sdata.editSubmenu, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, 0, g_sdata.hwnd, 0);
|
TrackPopupMenu(g_sdata.editSubmenu, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, 0, g_sdata.hwnd, 0);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case TBN_DROPDOWN:
|
case TBN_DROPDOWN:
|
||||||
{
|
{
|
||||||
LPNMTOOLBAR pToolBar = (LPNMTOOLBAR) lParam;
|
LPNMTOOLBAR pToolBar = (LPNMTOOLBAR) lParam;
|
||||||
|
@ -526,8 +524,9 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
switch (cds->dwData) {
|
switch (cds->dwData) {
|
||||||
case MakensisAPI::NOTIFY_SCRIPT:
|
case MakensisAPI::NOTIFY_SCRIPT:
|
||||||
MemSafeFree(g_sdata.input_script);
|
MemSafeFree(g_sdata.input_script);
|
||||||
g_sdata.input_script = (TCHAR*) MemAlloc(cds->cbData * sizeof(TCHAR));
|
if ((g_sdata.input_script = (TCHAR*) MemAlloc(cds->cbData * sizeof(TCHAR))))
|
||||||
lstrcpy(g_sdata.input_script, (TCHAR *)cds->lpData);
|
lstrcpy(g_sdata.input_script, (TCHAR*) cds->lpData);
|
||||||
|
EnableUICommand(IDM_BROWSESCR, !!g_sdata.input_script);
|
||||||
break;
|
break;
|
||||||
case MakensisAPI::NOTIFY_WARNING:
|
case MakensisAPI::NOTIFY_WARNING:
|
||||||
g_sdata.warnings++;
|
g_sdata.warnings++;
|
||||||
|
@ -542,6 +541,17 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
case WM_INITMENU:
|
||||||
|
EnableMenuItem(g_sdata.menu, IDM_CANCEL, g_sdata.thread ? MF_ENABLED : MF_GRAYED);
|
||||||
|
break;
|
||||||
|
case WM_MAKENSIS_UPDATEUISTATE:
|
||||||
|
{
|
||||||
|
UINT i, emptylog = SendDlgItemMessage(hwndDlg, IDC_LOGWIN, WM_GETTEXTLENGTH, 0, 0) == 0;
|
||||||
|
static const PACKEDCMDID_T nonemptylogids [] = { PACKCMDID(IDM_COPY), PACKCMDID(IDM_COPYALL), PACKCMDID(IDM_CLEARLOG), PACKCMDID(IDM_SELECTALL) };
|
||||||
|
for (i = 0; i < COUNTOF(nonemptylogids); ++i) EnableUICommand(UNPACKCMDID(nonemptylogids[i]), !emptylog);
|
||||||
|
EnableUICommand(IDM_BROWSESCR, !!g_sdata.input_script);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
|
@ -576,8 +586,6 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
l.nMaxFile = MAX_STRING-1;
|
l.nMaxFile = MAX_STRING-1;
|
||||||
l.lpstrTitle = _T("Load Script");
|
l.lpstrTitle = _T("Load Script");
|
||||||
l.lpstrDefExt = _T("log");
|
l.lpstrDefExt = _T("log");
|
||||||
l.lpstrFileTitle = NULL;
|
|
||||||
l.lpstrInitialDir = NULL;
|
|
||||||
l.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
|
l.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
|
||||||
buf[0] = _T('\0');
|
buf[0] = _T('\0');
|
||||||
if (GetOpenFileName(&l)) {
|
if (GetOpenFileName(&l)) {
|
||||||
|
@ -671,15 +679,14 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_COPY:
|
case IDM_COPY:
|
||||||
{
|
if (RicheditHasSelection(GetDlgItem(hwndDlg, IDC_LOGWIN))) goto logwndcopysel;
|
||||||
|
// fall through
|
||||||
|
case IDM_COPYALL:
|
||||||
CopyToClipboard(g_sdata.hwnd);
|
CopyToClipboard(g_sdata.hwnd);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
case IDM_COPYSELECTED: logwndcopysel:
|
||||||
case IDM_COPYSELECTED:
|
SendDlgItemMessage(g_sdata.hwnd, IDC_LOGWIN, WM_COPY, 0, 0);
|
||||||
{
|
|
||||||
SendDlgItemMessage(g_sdata.hwnd,IDC_LOGWIN, WM_COPY, 0, 0);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
|
||||||
case IDM_SAVE:
|
case IDM_SAVE:
|
||||||
{
|
{
|
||||||
OPENFILENAME l={sizeof(l),};
|
OPENFILENAME l={sizeof(l),};
|
||||||
|
|
|
@ -80,6 +80,7 @@
|
||||||
#define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
|
#define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
|
||||||
#define WM_MAKENSIS_LOADSYMBOLSET (WM_USER+1002)
|
#define WM_MAKENSIS_LOADSYMBOLSET (WM_USER+1002)
|
||||||
#define WM_MAKENSIS_SAVESYMBOLSET (WM_USER+1003)
|
#define WM_MAKENSIS_SAVESYMBOLSET (WM_USER+1003)
|
||||||
|
#define WM_MAKENSIS_UPDATEUISTATE (WM_USER+1004)
|
||||||
|
|
||||||
namespace MakensisAPI {
|
namespace MakensisAPI {
|
||||||
extern const TCHAR* SigintEventNameFmt;
|
extern const TCHAR* SigintEventNameFmt;
|
||||||
|
@ -216,7 +217,6 @@ typedef struct NSISScriptData {
|
||||||
HANDLE sigint_event;
|
HANDLE sigint_event;
|
||||||
HANDLE sigint_event_legacy;
|
HANDLE sigint_event_legacy;
|
||||||
HWND focused_hwnd;
|
HWND focused_hwnd;
|
||||||
CHARRANGE textrange;
|
|
||||||
NCOMPRESSOR default_compressor;
|
NCOMPRESSOR default_compressor;
|
||||||
NCOMPRESSOR compressor;
|
NCOMPRESSOR compressor;
|
||||||
LPCTSTR compressor_name;
|
LPCTSTR compressor_name;
|
||||||
|
@ -247,4 +247,10 @@ typedef struct ToolTipStruct {
|
||||||
HHOOK hook;
|
HHOOK hook;
|
||||||
} NTOOLTIP;
|
} NTOOLTIP;
|
||||||
|
|
||||||
|
static void EnableUICommand(UINT Id, INT_PTR Enabled)
|
||||||
|
{
|
||||||
|
EnableToolBarButton(Id, !!Enabled);
|
||||||
|
EnableMenuItem(g_sdata.menu, Id, Enabled ? MF_ENABLED : MF_GRAYED);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
#define IDM_LOADSCRIPT 507
|
#define IDM_LOADSCRIPT 507
|
||||||
#define IDM_EDITSCRIPT 508
|
#define IDM_EDITSCRIPT 508
|
||||||
#define IDM_SAVE 509
|
#define IDM_SAVE 509
|
||||||
#define IDM_COPY 510
|
#define IDM_COPYALL 510
|
||||||
#define IDM_COPYSELECTED 511
|
#define IDM_COPYSELECTED 511
|
||||||
#define IDM_FIND 512
|
#define IDM_FIND 512
|
||||||
#define IDM_CLEARLOG 513
|
#define IDM_CLEARLOG 513
|
||||||
|
@ -121,13 +121,14 @@
|
||||||
#define IDM_CANCEL 534
|
#define IDM_CANCEL 534
|
||||||
#define IDM_SETTINGS 535
|
#define IDM_SETTINGS 535
|
||||||
#define IDM_WNDSPY 536
|
#define IDM_WNDSPY 536
|
||||||
|
#define IDM_COPY 537
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 138
|
#define _APS_NEXT_RESOURCE_VALUE 138
|
||||||
#define _APS_NEXT_COMMAND_VALUE 537
|
#define _APS_NEXT_COMMAND_VALUE 538
|
||||||
#define _APS_NEXT_CONTROL_VALUE 241
|
#define _APS_NEXT_CONTROL_VALUE 241
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -77,7 +77,7 @@ BEGIN
|
||||||
POPUP "&Edit", IDM_EDIT
|
POPUP "&Edit", IDM_EDIT
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "&Copy\tCtrl+C", IDM_COPYSELECTED
|
MENUITEM "&Copy\tCtrl+C", IDM_COPYSELECTED
|
||||||
MENUITEM "Copy &All", IDM_COPY
|
MENUITEM "Copy &All", IDM_COPYALL
|
||||||
MENUITEM "", -1, MFT_SEPARATOR
|
MENUITEM "", -1, MFT_SEPARATOR
|
||||||
MENUITEM "&Find...\tCtrl+F", IDM_FIND
|
MENUITEM "&Find...\tCtrl+F", IDM_FIND
|
||||||
MENUITEM "", -1, MFT_SEPARATOR
|
MENUITEM "", -1, MFT_SEPARATOR
|
||||||
|
@ -108,7 +108,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Tools", IDM_TOOLS
|
POPUP "&Tools", IDM_TOOLS
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "&Settings..\tCtrl+S", IDM_SETTINGS
|
MENUITEM "&Settings\tCtrl+S", IDM_SETTINGS
|
||||||
MENUITEM "", -1, MFT_SEPARATOR
|
MENUITEM "", -1, MFT_SEPARATOR
|
||||||
MENUITEM "&Window Info", IDM_WNDSPY
|
MENUITEM "&Window Info", IDM_WNDSPY
|
||||||
MENUITEM "", -1, MFT_SEPARATOR
|
MENUITEM "", -1, MFT_SEPARATOR
|
||||||
|
@ -118,9 +118,10 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "NSIS Users &Manual\tF1", IDM_DOCS
|
MENUITEM "NSIS Users &Manual\tF1", IDM_DOCS
|
||||||
MENUITEM "", -1, MFT_SEPARATOR
|
MENUITEM "", -1, MFT_SEPARATOR
|
||||||
|
MENUITEM "Check for &Updates", IDM_NSISUPDATE
|
||||||
|
MENUITEM "", -1, MFT_SEPARATOR
|
||||||
MENUITEM "NSIS &Homepage", IDM_NSISHOME
|
MENUITEM "NSIS &Homepage", IDM_NSISHOME
|
||||||
MENUITEM "NSIS &Forum", IDM_FORUM
|
MENUITEM "NSIS &Forum", IDM_FORUM
|
||||||
MENUITEM "Check for &Updates", IDM_NSISUPDATE
|
|
||||||
MENUITEM "", -1, MFT_SEPARATOR
|
MENUITEM "", -1, MFT_SEPARATOR
|
||||||
MENUITEM "&About MakeNSISW", IDM_ABOUT
|
MENUITEM "&About MakeNSISW", IDM_ABOUT
|
||||||
END
|
END
|
||||||
|
|
|
@ -43,7 +43,7 @@ static const TBBTNDESC g_TBBtnsDesc[BUTTONCOUNT] = {
|
||||||
/*TBB_LOADSCRIPT*/ { MKNAMEDTBBTNDESC(LOADSCRIPT, TBSTATE_ENABLED, TBSTYLE_BUTTON ) },
|
/*TBB_LOADSCRIPT*/ { MKNAMEDTBBTNDESC(LOADSCRIPT, TBSTATE_ENABLED, TBSTYLE_BUTTON ) },
|
||||||
/*TBB_SAVE */ { MKNAMEDTBBTNDESC(SAVE, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON ) },
|
/*TBB_SAVE */ { MKNAMEDTBBTNDESC(SAVE, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON ) },
|
||||||
/*TBB_SEP1 */ { TBSTYLE_SEP },
|
/*TBB_SEP1 */ { TBSTYLE_SEP },
|
||||||
/*TBB_COPY */ { MKNAMEDTBBTNDESC(COPY, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON ) },
|
/*TBB_COPY */ { MKNAMEDTBBTNDESC(COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON ) },
|
||||||
/*TBB_FIND */ { MKNAMEDTBBTNDESC(FIND, TBSTATE_ENABLED, TBSTYLE_BUTTON ) },
|
/*TBB_FIND */ { MKNAMEDTBBTNDESC(FIND, TBSTATE_ENABLED, TBSTYLE_BUTTON ) },
|
||||||
/*TBB_CLEARLOG */ { MKNAMEDTBBTNDESC(CLEARLOG, TBSTATE_ENABLED, TBSTYLE_BUTTON ) },
|
/*TBB_CLEARLOG */ { MKNAMEDTBBTNDESC(CLEARLOG, TBSTATE_ENABLED, TBSTYLE_BUTTON ) },
|
||||||
/*TBB_SEP2 */ { TBSTYLE_SEP },
|
/*TBB_SEP2 */ { TBSTYLE_SEP },
|
||||||
|
|
|
@ -27,9 +27,19 @@
|
||||||
#include "toolbar.h"
|
#include "toolbar.h"
|
||||||
#include <shlwapi.h>
|
#include <shlwapi.h>
|
||||||
|
|
||||||
typedef BYTE PACKEDCMDID_T;
|
#ifndef MONITOR_DEFAULTTONEAREST
|
||||||
#define PACKCMDID(id) ( PACKEDCMDID_T((id) - IDM_CMDBASE) )
|
#define MONITOR_DEFAULTTONEAREST 2
|
||||||
#define UNPACKCMDID(id) ( IDM_CMDBASE + (id) )
|
WINUSERAPI HMONITOR WINAPI MonitorFromWindow(HWND hwnd, DWORD dwFlags);
|
||||||
|
#endif
|
||||||
|
#ifndef GRADIENT_FILL_RECT_H
|
||||||
|
#define GRADIENT_FILL_RECT_H 0
|
||||||
|
#if !defined(_WIN32_WINNT) || _WIN32_WINNT-0 < 0x0410
|
||||||
|
typedef USHORT COLOR16;
|
||||||
|
typedef struct _TRIVERTEX { LONG x, y; COLOR16 Red, Green, Blue, Alpha; } TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX;
|
||||||
|
WINGDIAPI BOOL WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
NTOOLTIP g_tip;
|
NTOOLTIP g_tip;
|
||||||
LRESULT CALLBACK TipHookProc(int nCode, WPARAM wParam, LPARAM lParam);
|
LRESULT CALLBACK TipHookProc(int nCode, WPARAM wParam, LPARAM lParam);
|
||||||
|
@ -164,6 +174,7 @@ void CopyToClipboard(HWND hwnd) {
|
||||||
|
|
||||||
void ClearLog(HWND hwnd) {
|
void ClearLog(HWND hwnd) {
|
||||||
SetDlgItemText(hwnd, IDC_LOGWIN, _T(""));
|
SetDlgItemText(hwnd, IDC_LOGWIN, _T(""));
|
||||||
|
SendMessage(g_sdata.hwnd, WM_MAKENSIS_UPDATEUISTATE, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogMessage(HWND hwnd,const TCHAR *str) {
|
void LogMessage(HWND hwnd,const TCHAR *str) {
|
||||||
|
@ -236,8 +247,7 @@ void EnableDisableItems(HWND hwnd, int on)
|
||||||
|
|
||||||
static const PACKEDCMDID_T cmds [] = {
|
static const PACKEDCMDID_T cmds [] = {
|
||||||
PACKCMDID(IDM_EXIT), PACKCMDID(IDM_LOADSCRIPT), PACKCMDID(IDM_EDITSCRIPT),
|
PACKCMDID(IDM_EXIT), PACKCMDID(IDM_LOADSCRIPT), PACKCMDID(IDM_EDITSCRIPT),
|
||||||
PACKCMDID(IDM_COPY), PACKCMDID(IDM_COPYSELECTED), PACKCMDID(IDM_SAVE),
|
PACKCMDID(IDM_SAVE), PACKCMDID(IDM_CLEARLOG),
|
||||||
PACKCMDID(IDM_CLEARLOG), PACKCMDID(IDM_BROWSESCR),
|
|
||||||
PACKCMDID(IDM_COMPRESSOR), PACKCMDID(IDM_COMPRESSOR_SUBMENU),
|
PACKCMDID(IDM_COMPRESSOR), PACKCMDID(IDM_COMPRESSOR_SUBMENU),
|
||||||
PACKCMDID(IDM_RECOMPILE), PACKCMDID(IDM_RECOMPILE_TEST)
|
PACKCMDID(IDM_RECOMPILE), PACKCMDID(IDM_RECOMPILE_TEST)
|
||||||
};
|
};
|
||||||
|
@ -248,6 +258,10 @@ void EnableDisableItems(HWND hwnd, int on)
|
||||||
EnableToolBarButton(id, on);
|
EnableToolBarButton(id, on);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendMessage(g_sdata.hwnd, WM_MAKENSIS_UPDATEUISTATE, 0 ,0);
|
||||||
|
EnableMenuItem(hMenu, IDM_FILE, mf); // Disable the whole File menu because of the MRU list
|
||||||
|
DrawMenuBar(g_sdata.hwnd);
|
||||||
|
|
||||||
HWND hFocus = g_sdata.focused_hwnd, hOptimal = hTestBtn;
|
HWND hFocus = g_sdata.focused_hwnd, hOptimal = hTestBtn;
|
||||||
if (on && hCloseBtn == hFocus) hFocus = hOptimal;
|
if (on && hCloseBtn == hFocus) hFocus = hOptimal;
|
||||||
if (!IsWindowEnabled(hFocus)) hFocus = GetDlgItem(hwnd, IDC_LOGWIN);
|
if (!IsWindowEnabled(hFocus)) hFocus = GetDlgItem(hwnd, IDC_LOGWIN);
|
||||||
|
@ -284,23 +298,25 @@ void SetCompressorStats()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SetUIState_NoScript()
|
||||||
|
{
|
||||||
|
static const PACKEDCMDID_T cmds [] = {
|
||||||
|
PACKCMDID(IDM_RECOMPILE),PACKCMDID(IDM_RECOMPILE_TEST),PACKCMDID(IDM_TEST),
|
||||||
|
PACKCMDID(IDM_BROWSESCR),PACKCMDID(IDM_EDITSCRIPT)
|
||||||
|
};
|
||||||
|
for (UINT i = 0; i < COUNTOF(cmds); ++i)
|
||||||
|
EnableUICommand(UNPACKCMDID(cmds[i]), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(g_sdata.hwnd, IDC_TEST), FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
void CompileNSISScript() {
|
void CompileNSISScript() {
|
||||||
DragAcceptFiles(g_sdata.hwnd,FALSE);
|
DragAcceptFiles(g_sdata.hwnd,FALSE);
|
||||||
ClearLog(g_sdata.hwnd);
|
ClearLog(g_sdata.hwnd);
|
||||||
SetTitle(g_sdata.hwnd,NULL);
|
SetTitle(g_sdata.hwnd,NULL);
|
||||||
|
PostMessage(g_sdata.hwnd, WM_MAKENSIS_UPDATEUISTATE, 0, 0);
|
||||||
if (lstrlen(g_sdata.script)==0) {
|
if (lstrlen(g_sdata.script)==0) {
|
||||||
LogMessage(g_sdata.hwnd,USAGE);
|
LogMessage(g_sdata.hwnd,USAGE);
|
||||||
|
SetUIState_NoScript();
|
||||||
static const PACKEDCMDID_T cmds [] = {
|
|
||||||
PACKCMDID(IDM_RECOMPILE),PACKCMDID(IDM_RECOMPILE_TEST),PACKCMDID(IDM_TEST),
|
|
||||||
PACKCMDID(IDM_BROWSESCR),PACKCMDID(IDM_EDITSCRIPT)
|
|
||||||
};
|
|
||||||
for (UINT i = 0; i < COUNTOF(cmds); ++i) {
|
|
||||||
int id = UNPACKCMDID(cmds[i]);
|
|
||||||
EnableMenuItem(g_sdata.menu,id,MF_GRAYED);
|
|
||||||
EnableToolBarButton(id,FALSE);
|
|
||||||
}
|
|
||||||
EnableWindow(GetDlgItem(g_sdata.hwnd,IDC_TEST),FALSE);
|
|
||||||
DragAcceptFiles(g_sdata.hwnd,TRUE);
|
DragAcceptFiles(g_sdata.hwnd,TRUE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,10 @@ bool WriteUTF16LEBOM(HANDLE hFile);
|
||||||
void FreeSpawn(PROCESS_INFORMATION *pPI, HANDLE hRd, HANDLE hWr);
|
void FreeSpawn(PROCESS_INFORMATION *pPI, HANDLE hRd, HANDLE hWr);
|
||||||
BOOL InitSpawn(STARTUPINFO &si, HANDLE &hRd, HANDLE &hWr);
|
BOOL InitSpawn(STARTUPINFO &si, HANDLE &hRd, HANDLE &hWr);
|
||||||
|
|
||||||
|
typedef BYTE PACKEDCMDID_T;
|
||||||
|
#define PACKCMDID(id) ( PACKEDCMDID_T((id) - IDM_CMDBASE) )
|
||||||
|
#define UNPACKCMDID(id) ( IDM_CMDBASE + (id) )
|
||||||
|
|
||||||
int SetArgv(const TCHAR *cmdLine, TCHAR ***argv);
|
int SetArgv(const TCHAR *cmdLine, TCHAR ***argv);
|
||||||
void SetTitle(HWND hwnd,const TCHAR *substr);
|
void SetTitle(HWND hwnd,const TCHAR *substr);
|
||||||
void CopyToClipboard(HWND hwnd);
|
void CopyToClipboard(HWND hwnd);
|
||||||
|
@ -113,4 +117,11 @@ static inline void GetGripperPos(HWND hwnd, RECT&r)
|
||||||
r.top = r.bottom - GetSystemMetrics(SM_CYVSCROLL);
|
r.top = r.bottom - GetSystemMetrics(SM_CYVSCROLL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool RicheditHasSelection(HWND hRE)
|
||||||
|
{
|
||||||
|
CHARRANGE tr;
|
||||||
|
SendMessage(hRE, EM_EXGETSEL, 0, (LPARAM) &tr);
|
||||||
|
return tr.cpMax - tr.cpMin <= 0 ? FALSE : TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue