Refactored Tooltip text handling
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7299 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
2c79d33b56
commit
0302344430
5 changed files with 49 additions and 39 deletions
|
@ -599,7 +599,7 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
|||
{
|
||||
TCHAR buf[MAX_PATH];
|
||||
lstrcpyn(buf, FSPath::FindLastComponent(((PROMPT_FILEPATH_DATA*)cds->lpData)->Path), COUNTOF(buf));
|
||||
OPENFILENAME of = { sizeof(of) };
|
||||
OPENFILENAME of = { SizeOfStruct(of) };
|
||||
of.hwndOwner = hwndDlg;
|
||||
of.lpstrFilter = _T("*.exe\0*.exe\0*\0*.*\0");
|
||||
of.lpstrFile = buf, of.nMaxFile = COUNTOF(buf);
|
||||
|
@ -633,6 +633,7 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
|||
case TID_CONFIGURECLOSEORABORT:
|
||||
SendMessage(hCtl = GetDlgItem(hwndDlg, IDCANCEL), WM_SETTEXT, 0, (LPARAM) (g_sdata.thread ? _T("&Abort") : _T("&Close")));
|
||||
EnableWindow(hCtl, true);
|
||||
UpdateCloseButtonTooltip();
|
||||
return KillTimer(hwndDlg, wParam);
|
||||
}
|
||||
break;
|
||||
|
@ -666,7 +667,7 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
|||
case IDM_LOADSCRIPT:
|
||||
{
|
||||
if (!g_sdata.thread) {
|
||||
OPENFILENAME l={sizeof(l),};
|
||||
OPENFILENAME l = { SizeOfStruct(l) };
|
||||
TCHAR buf[MAX_PATH];
|
||||
l.hwndOwner = hwndDlg;
|
||||
l.lpstrFilter = _T("NSIS Script (*.nsi)\0*.nsi\0All Files (*.*)\0*.*\0");
|
||||
|
@ -783,7 +784,7 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
|||
return TRUE;
|
||||
case IDM_SAVE:
|
||||
{
|
||||
OPENFILENAME l={sizeof(l),};
|
||||
OPENFILENAME l = { SizeOfStruct(l) };
|
||||
TCHAR buf[MAX_STRING];
|
||||
l.hwndOwner = hwndDlg;
|
||||
l.lpstrFilter = _T("Log Files (*.log)\0*.log\0Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0");
|
||||
|
|
|
@ -89,6 +89,8 @@ static inline bool IsWin95() { return SupportsW95() && (GetVersion() & (0x8000FF
|
|||
#define SAVE_BUTTON_TEXT _T("Save")
|
||||
#define LOAD_SYMBOL_SET_MESSAGE _T("Please select a name for the Symbol Definitions Set to load.")
|
||||
#define SAVE_SYMBOL_SET_MESSAGE _T("Please enter or select a name for the Symbol Definitions Set to save.")
|
||||
#define TESTBTN_TIPTEXT _T("Test the generated installer")
|
||||
#define CLOSEBTN_TIPTEXT _T("Close MakeNSISW")
|
||||
|
||||
#define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
|
||||
#define WM_MAKENSIS_LOADSYMBOLSET (WM_USER+1002)
|
||||
|
|
|
@ -78,7 +78,7 @@ void CreateToolBar()
|
|||
tbbs[i].fsStyle = g_TBBtnsDesc[i].Style;
|
||||
tbbs[i].dwData = 0, tbbs[i].iString = 0;
|
||||
}
|
||||
SendMessage(g_toolbar.hwnd, TB_ADDBUTTONS, BUTTONCOUNT, (LPARAM) &tbbs);
|
||||
SendMessage(g_toolbar.hwnd, TB_ADDBUTTONS, BUTTONCOUNT, (LPARAM) &tbbs); // Note: TB_ADDBUTTONSW is IE4+
|
||||
LoadToolBarImages();
|
||||
}
|
||||
|
||||
|
@ -148,35 +148,18 @@ void UpdateToolBarCompressorButton()
|
|||
lstrcat(szBuffer,_T("]"));
|
||||
|
||||
SendMessage(g_toolbar.hwnd, TB_CHANGEBITMAP, (WPARAM) IDM_COMPRESSOR, (LPARAM) MAKELPARAM(iBitmap, 0));
|
||||
|
||||
TOOLINFO ti = { sizeof(TOOLINFO), 0 };
|
||||
ti.hwnd = g_toolbar.hwnd;
|
||||
ti.uId = (UINT)TBB_COMPRESSOR;
|
||||
ti.hinst = g_sdata.hInstance;
|
||||
SendMessage(g_tip.tip, TTM_GETTOOLINFO, 0, (LPARAM) (LPTOOLINFO) &ti);
|
||||
ti.lpszText = (LPTSTR)szBuffer;
|
||||
SendMessage(g_tip.tip, TTM_SETTOOLINFO, 0, (LPARAM) (LPTOOLINFO) &ti);
|
||||
SetTooltipText(g_toolbar.hwnd, (UINT) TBB_COMPRESSOR, szBuffer);
|
||||
}
|
||||
|
||||
void AddToolBarButtonTooltip(UINT idx, int iString)
|
||||
{
|
||||
TOOLINFO ti;
|
||||
TCHAR szBuffer[64];
|
||||
RECT rect;
|
||||
|
||||
memset(&ti, 0, sizeof(TOOLINFO));
|
||||
ti.cbSize = sizeof(TOOLINFO);
|
||||
ti.cbSize = SizeOfStruct(ti);
|
||||
ti.uFlags = 0;
|
||||
ti.hwnd = g_toolbar.hwnd;
|
||||
ti.hinst = g_sdata.hInstance;
|
||||
ti.uId = idx;
|
||||
LoadString(g_sdata.hInstance, iString, szBuffer, COUNTOF(szBuffer));
|
||||
ti.lpszText = (LPTSTR) szBuffer;
|
||||
SendMessage(g_toolbar.hwnd, TB_GETITEMRECT, idx, (LPARAM) &rect);
|
||||
ti.rect.left =rect.left;
|
||||
ti.rect.top = rect.top;
|
||||
ti.rect.right = rect.right;
|
||||
ti.rect.bottom = rect.bottom;
|
||||
ti.hinst = g_sdata.hInstance, ti.lpszText = MAKEINTRESOURCE(iString);
|
||||
SendMessage(g_toolbar.hwnd, TB_GETITEMRECT, idx, (LPARAM) &ti.rect);
|
||||
|
||||
SendMessage(g_tip.tip, TTM_ADDTOOL, 0, (LPARAM) &ti);
|
||||
}
|
||||
|
|
|
@ -79,6 +79,13 @@ bool WriteUTF16LEBOM(HANDLE hFile)
|
|||
return WriteFile(hFile, u16lb, sizeof(u16lb));
|
||||
}
|
||||
|
||||
BOOL InitCCExHelper(UINT icc) {
|
||||
INITCOMMONCONTROLSEX icx = { sizeof(icx), icc };
|
||||
BOOL suppw95 = SupportsW95();
|
||||
FARPROC icce = suppw95 ? GetSysProcAddr("COMCTL32", "InitCommonControlsEx") : (FARPROC) InitCommonControlsEx;
|
||||
return (!suppw95 || icce) && ((BOOL(WINAPI*)(const INITCOMMONCONTROLSEX*))icce)(&icx);
|
||||
}
|
||||
|
||||
int SetArgv(const TCHAR *cmdLine, TCHAR ***argv) {
|
||||
const TCHAR *p;
|
||||
TCHAR *arg, *argSpace;
|
||||
|
@ -736,21 +743,31 @@ int InitBranding() {
|
|||
return retval;
|
||||
}
|
||||
|
||||
LRESULT SetTooltipText(HWND hWnd, UINT_PTR Id, LPCTSTR Text) {
|
||||
TOOLINFO ti;
|
||||
ti.cbSize = SizeOfStruct(ti);
|
||||
ti.uFlags = Id > 0x7fff ? TTF_IDISHWND : 0;
|
||||
ti.hwnd = hWnd, ti.uId = Id;
|
||||
ti.hinst = g_sdata.hInstance, ti.lpszText = const_cast<LPTSTR>(Text);
|
||||
return SendMessage(g_tip.tip, TTM_UPDATETIPTEXT, 0, (LPARAM) (LPTOOLINFO) &ti);
|
||||
}
|
||||
|
||||
void UpdateCloseButtonTooltip() {
|
||||
LPCTSTR txt = g_sdata.thread ? _T("") : CLOSEBTN_TIPTEXT;
|
||||
SetTooltipText(g_tip.tip_p, (UINT_PTR) GetDlgItem(g_sdata.hwnd, IDCANCEL), txt);
|
||||
}
|
||||
|
||||
void InitTooltips(HWND h) {
|
||||
if (h == NULL) return;
|
||||
memset(&g_tip,0,sizeof(NTOOLTIP));
|
||||
InitCCEx(ICC_BAR_CLASSES);
|
||||
DWORD s = WS_POPUP | WS_BORDER | TTS_ALWAYSTIP, xs = WS_EX_TOOLWINDOW | WS_EX_TOPMOST;
|
||||
g_tip.hook = 0;
|
||||
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.tip = CreateWindowEx(dwExStyle,TOOLTIPS_CLASS,NULL,dwStyle,0,0,0,0,h,NULL,HINST_APPLICATION,NULL);
|
||||
g_tip.tip = CreateWindowEx(xs, TOOLTIPS_CLASS, NULL, s, 0, 0, 0, 0, h, NULL, HINST_APPLICATION, NULL);
|
||||
if (!g_tip.tip) return;
|
||||
g_tip.hook = SetWindowsHookEx(WH_GETMESSAGE,TipHookProc,NULL, GetCurrentThreadId());
|
||||
AddTip(GetDlgItem(h,IDCANCEL),_T("Close MakeNSISW"));
|
||||
AddTip(GetDlgItem(h,IDC_TEST),_T("Test the generated installer"));
|
||||
g_tip.hook = SetWindowsHookEx(WH_GETMESSAGE, TipHookProc, NULL, GetCurrentThreadId());
|
||||
AddTip(GetDlgItem(h, IDCANCEL), CLOSEBTN_TIPTEXT);
|
||||
AddTip(GetDlgItem(h, IDC_TEST), TESTBTN_TIPTEXT);
|
||||
AddToolBarTooltips();
|
||||
}
|
||||
|
||||
|
@ -758,9 +775,9 @@ void DestroyTooltips() {
|
|||
UnhookWindowsHookEx(g_tip.hook);
|
||||
}
|
||||
|
||||
void AddTip(HWND hWnd,LPCTSTR lpszToolTip) {
|
||||
void AddTip(HWND hWnd, LPCTSTR lpszToolTip) {
|
||||
TOOLINFO ti;
|
||||
ti.cbSize = sizeof(TOOLINFO);
|
||||
ti.cbSize = SizeOfStruct(ti);
|
||||
ti.uFlags = TTF_IDISHWND;
|
||||
ti.hwnd = g_tip.tip_p;
|
||||
ti.uId = (UINT_PTR) hWnd;
|
||||
|
|
|
@ -54,6 +54,11 @@ HMODULE LoadSysLibrary(LPCSTR Mod);
|
|||
FARPROC GetSysProcAddr(LPCSTR Mod, LPCSTR FuncName);
|
||||
bool WriteUTF16LEBOM(HANDLE hFile);
|
||||
|
||||
BOOL InitCCExHelper(UINT icc);
|
||||
static inline BOOL InitCCEx(UINT icc) { return icc > 0xff ? InitCCExHelper(icc) : true; }
|
||||
static inline UINT SizeOfStruct(const TOOLINFO&x) { return FIELD_OFFSET(TOOLINFO, lParam); }
|
||||
static inline UINT SizeOfStruct(const OPENFILENAME&x) { return sizeof(void*) < 8 ? 76 : sizeof(x); }
|
||||
|
||||
void FreeSpawn(PROCESS_INFORMATION *pPI, HANDLE hRd, HANDLE hWr);
|
||||
BOOL InitSpawn(STARTUPINFO &si, HANDLE &hRd, HANDLE &hWr);
|
||||
|
||||
|
@ -89,7 +94,9 @@ void ResetSymbols();
|
|||
int InitBranding();
|
||||
void InitTooltips(HWND h);
|
||||
void DestroyTooltips();
|
||||
void AddTip(HWND hWnd,LPCTSTR lpszToolTip);
|
||||
void AddTip(HWND hWnd, LPCTSTR lpszToolTip);
|
||||
LRESULT SetTooltipText(HWND hWnd, UINT_PTR Id, LPCTSTR Text);
|
||||
void UpdateCloseButtonTooltip();
|
||||
void ShowDocs();
|
||||
void RestoreCompressor();
|
||||
void SaveCompressor();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue