Add tip in Find dialog for informing users the usage of Shift+Enter

This commit is contained in:
Don HO 2017-02-23 23:56:35 +01:00
parent a435e68164
commit a482cbd215
5 changed files with 75 additions and 43 deletions

View File

@ -932,3 +932,46 @@ generic_string GetLastErrorAsString(DWORD errorCode)
return errorMsg;
}
HWND CreateToolTip(int toolID, HWND hDlg, HINSTANCE hInst, const PTSTR pszText)
{
if (!toolID || !hDlg || !pszText)
{
return NULL;
}
// Get the window of the tool.
HWND hwndTool = GetDlgItem(hDlg, toolID);
if (!hwndTool)
{
return NULL;
}
// Create the tooltip. g_hInst is the global instance handle.
HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hDlg, NULL,
hInst, NULL);
if (!hwndTip)
{
return NULL;
}
// Associate the tooltip with the tool.
TOOLINFO toolInfo = { 0 };
toolInfo.cbSize = sizeof(toolInfo);
toolInfo.hwnd = hDlg;
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
toolInfo.uId = (UINT_PTR)hwndTool;
toolInfo.lpszText = pszText;
if (!SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo))
{
DestroyWindow(hwndTip);
return NULL;
}
return hwndTip;
}

View File

@ -186,4 +186,6 @@ bool str2Clipboard(const generic_string &str2cpy, HWND hwnd);
generic_string GetLastErrorAsString(DWORD errorCode = 0);
generic_string intToString(int val);
generic_string uintToString(unsigned int val);
generic_string uintToString(unsigned int val);
HWND CreateToolTip(int toolID, HWND hDlg, HINSTANCE hInst, const PTSTR pszText);

View File

@ -32,6 +32,7 @@
#include "Notepad_plus_msgs.h"
#include "UniConversion.h"
#include "LongRunningOperation.h"
#include "localization.h"
using namespace std;
@ -235,6 +236,11 @@ FindReplaceDlg::~FindReplaceDlg()
_findersOfFinder.erase(_findersOfFinder.begin() + n);
}
if (_shiftTrickUpTip)
::DestroyWindow(_shiftTrickUpTip);
if (_shiftTrickDownTip)
::DestroyWindow(_shiftTrickDownTip);
delete[] _uniFileName;
}
@ -697,6 +703,26 @@ INT_PTR CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
_findClosePos.left = p.x;
_findClosePos.top = p.y + 10;
NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance())->getNativeLangSpeaker();
generic_string tip2show = pNativeSpeaker->getLocalizedStrFromID("shift-change-direction-tip");
if (tip2show.empty())
tip2show = TEXT("Use Shift+Enter to search in the reverse set direction.");
_shiftTrickUpTip = CreateToolTip(IDDIRECTIONUP, _hSelf, _hInst, const_cast<PTSTR>(tip2show.c_str()));
_shiftTrickDownTip = CreateToolTip(IDDIRECTIONDOWN, _hSelf, _hInst, const_cast<PTSTR>(tip2show.c_str()));
if (_shiftTrickUpTip && _shiftTrickDownTip)
{
SendMessage(_shiftTrickUpTip, TTM_ACTIVATE, TRUE, 0);
SendMessage(_shiftTrickUpTip, TTM_SETMAXTIPWIDTH, 0, 200);
// Make tip stay 30 seconds
SendMessage(_shiftTrickUpTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, MAKELPARAM((30000), (0)));
SendMessage(_shiftTrickDownTip, TTM_ACTIVATE, TRUE, 0);
SendMessage(_shiftTrickDownTip, TTM_SETMAXTIPWIDTH, 0, 200);
// Make tip stay 30 seconds
SendMessage(_shiftTrickDownTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, MAKELPARAM((30000), (0)));
}
return TRUE;
}

View File

@ -353,6 +353,9 @@ private :
std::vector<Finder *> _findersOfFinder;
HWND _shiftTrickUpTip = nullptr;
HWND _shiftTrickDownTip = nullptr;
bool _isRTL;

View File

@ -2901,48 +2901,6 @@ void DelimiterSettingsDlg::detectSpace(const char *text2Check, int & nbSp, int &
}
}
HWND CreateToolTip(int toolID, HWND hDlg, HINSTANCE hInst, const PTSTR pszText)
{
if (!toolID || !hDlg || !pszText)
{
return NULL;
}
// Get the window of the tool.
HWND hwndTool = GetDlgItem(hDlg, toolID);
if (!hwndTool)
{
return NULL;
}
// Create the tooltip. g_hInst is the global instance handle.
HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hDlg, NULL,
hInst, NULL);
if (!hwndTip)
{
return NULL;
}
// Associate the tooltip with the tool.
TOOLINFO toolInfo = { 0 };
toolInfo.cbSize = sizeof(toolInfo);
toolInfo.hwnd = hDlg;
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
toolInfo.uId = (UINT_PTR)hwndTool;
toolInfo.lpszText = pszText;
if (!SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo))
{
DestroyWindow(hwndTip);
return NULL;
}
return hwndTip;
}
generic_string DelimiterSettingsDlg::getWarningText(size_t nbSp, size_t nbTab) const
{