Skip to content

Commit

Permalink
Merge branch 'search'
Browse files Browse the repository at this point in the history
Conflicts:
	Console/Console.rc
  • Loading branch information
cbucher committed Jun 23, 2014
2 parents 8bf0f03 + 1b1dc8c commit 685045b
Show file tree
Hide file tree
Showing 22 changed files with 999 additions and 150 deletions.
52 changes: 37 additions & 15 deletions Console/Console.rc
Original file line number Diff line number Diff line change
Expand Up @@ -306,14 +306,15 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "Show &menu",IDC_CHECK_SHOW_MENU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,12,53,10
CONTROL "Show &toolbar",IDC_CHECK_SHOW_TOOLBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,24,58,10
CONTROL "Sho&w status bar",IDC_CHECK_SHOW_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,36,68,10
CONTROL "Show t&abs",IDC_CHECK_SHOW_TABS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,48,49,10
CONTROL "Hide &single tab",IDC_CHECK_HIDE_SINGLE_TAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,60,59,10
CONTROL "Tabs on bottom",IDC_CHECK_TABS_ON_BOTTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,72,70,10
CONTROL "Hide icons*",IDC_CHECK_HIDE_TAB_ICONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,84,70,10
CONTROL "Show scro&llbars",IDC_CHECK_SHOW_SCROLLBARS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,96,72,10
CONTROL "&Flat scrollbars",IDC_CHECK_FLAT_SCROLLBARS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,108,59,10
GROUPBOX "Controls",IDC_STATIC,0,0,92,130
CONTROL "Show search bar",IDC_CHECK_SHOW_SEARCH_BAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,36,68,10
CONTROL "Sho&w status bar",IDC_CHECK_SHOW_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,48,68,10
CONTROL "Show t&abs",IDC_CHECK_SHOW_TABS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,60,49,10
CONTROL "Hide &single tab",IDC_CHECK_HIDE_SINGLE_TAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,72,59,10
CONTROL "Tabs on bottom",IDC_CHECK_TABS_ON_BOTTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,84,70,10
CONTROL "Hide icons*",IDC_CHECK_HIDE_TAB_ICONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,96,70,10
CONTROL "Show scro&llbars",IDC_CHECK_SHOW_SCROLLBARS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,108,72,10
CONTROL "&Flat scrollbars",IDC_CHECK_FLAT_SCROLLBARS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,120,59,10
GROUPBOX "Controls",IDC_STATIC,0,0,92,133

CONTROL "&Caption",IDC_CHECK_STYLE_CAPTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,12,47,10
CONTROL "Resi&zable",IDC_CHECK_STYLE_RESIZABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,24,52,10
Expand All @@ -333,11 +334,13 @@ BEGIN
LTEXT "Inside &border:",IDC_STATIC,104,96,46,8
EDITTEXT IDC_INSIDE_BORDER,155,93,33,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT
CONTROL "",IDC_SPIN_INSIDE_BORDER,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,193,93,11,14
LTEXT "Selection col&or:",IDC_STATIC,103,113,50,8
CONTROL "",IDC_SELECTION_COLOR,"Static",SS_BLACKFRAME | SS_NOTIFY,155,110,16,14,WS_EX_DLGMODALFRAME
GROUPBOX "Styles",IDC_STATIC,96,0,130,130
LTEXT "Selection:",IDC_STATIC,103,113,30,8
CONTROL "",IDC_SELECTION_COLOR,"Static",SS_BLACKFRAME | SS_NOTIFY,135,110,16,14,WS_EX_DLGMODALFRAME
LTEXT "Highlight:",IDC_STATIC,163,113,30,8
CONTROL "",IDC_HIGHLIGHT_COLOR,"Static",SS_BLACKFRAME | SS_NOTIFY,195,110,16,14,WS_EX_DLGMODALFRAME
GROUPBOX "Styles",IDC_STATIC,96,0,130,133

CONTROL "&None",IDC_TRANSPARENCY_TYPE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,8,145,33,10
CONTROL "&None",IDC_TRANSPARENCY_TYPE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,8,148,33,10
CONTROL "&Alpha",IDC_TRANSPARENCY_TYPE2,"Button",BS_AUTORADIOBUTTON,8,160,34,10
CONTROL "Color &key",IDC_TRANSPARENCY_TYPE3,"Button",BS_AUTORADIOBUTTON,8,235,46,10
#ifdef _USE_AERO
Expand All @@ -353,7 +356,7 @@ BEGIN

LTEXT "Key col&or:",IDC_STATIC_KEY_COLOR,19,248,33,8
CONTROL "",IDC_KEY_COLOR,"Static",SS_BLACKFRAME | SS_NOTIFY,54,245,16,14,WS_EX_DLGMODALFRAME
GROUPBOX "Window transparency",IDC_STATIC,0,133,226,132
GROUPBOX "Window transparency",IDC_STATIC,0,136,226,129
END

IDD_SETTINGS_FONT DIALOGEX 0, 0, 226, 276
Expand Down Expand Up @@ -740,6 +743,15 @@ BEGIN
BUTTON ID_HELP
END

IDR_SEARCH TOOLBAR 16, 16
BEGIN
BUTTON ID_SEARCH_COMBO
BUTTON ID_SEARCH_PREV
BUTTON ID_SEARCH_NEXT
BUTTON ID_SEARCH_MATCH_CASE
BUTTON ID_SEARCH_MATCH_WHOLE_WORD
END


/////////////////////////////////////////////////////////////////////////////
//
Expand All @@ -749,6 +761,8 @@ END
IDR_MAINFRAME BITMAP "res\\toolbar_aero.bmp"
IDR_FULLSCREEN1 BITMAP "res\\fullscreen1.bmp"
IDR_FULLSCREEN2 BITMAP "res\\fullscreen2.bmp"
IDR_SEARCH BITMAP "res\\search.bmp"


/////////////////////////////////////////////////////////////////////////////
//
Expand Down Expand Up @@ -795,6 +809,7 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "&Menu", ID_VIEW_MENU
MENUITEM "&Toolbar", ID_VIEW_TOOLBAR
MENUITEM "Search Bar", ID_VIEW_SEARCH_BAR
MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR
MENUITEM "Ta&bs", ID_VIEW_TABS
MENUITEM SEPARATOR
Expand Down Expand Up @@ -1007,8 +1022,13 @@ CONSOLE.XML HTML "..\\setup\\config\\console.xml"

STRINGTABLE
BEGIN
IDR_MAINFRAME "ConsoleZ"
IDS_TAB_CREATE_FAILED "Failed to open %s tab!\nThe process %s could still be running (use the Task Manager to find it and end it)"
IDR_MAINFRAME "ConsoleZ"
IDR_SEARCH "Search"
ID_SEARCH_COMBO "\nSearch"
ID_SEARCH_PREV "\nFind Previous"
ID_SEARCH_NEXT "\nFind Next"
ID_SEARCH_MATCH_CASE "\nMatch case"
ID_SEARCH_MATCH_WHOLE_WORD "\nMatch whole word"
END

STRINGTABLE
Expand Down Expand Up @@ -1070,6 +1090,7 @@ BEGIN
ID_VIEW_MENU "Show or hide the menu"
ID_VIEW_TABS "Show or hide the tabs"
ID_VIEW_TOOLBAR "Show or hide the toolbar"
ID_VIEW_SEARCH_BAR "Show or hide the search bar"
ID_VIEW_STATUS_BAR "Show or hide the status bar"
END

Expand Down Expand Up @@ -1141,6 +1162,7 @@ BEGIN
IDS_ERR_CREATE_SHARED_OBJECTS_FAILED "Unable to create shared objects (reason:%1%)!"
IDS_ERR_CANT_START_SHELL_AS_ADMIN "Unable to start %1% %2% as administrator (reason:%3%)!"
IDS_ERR_CANT_GET_ELEVATION_TYPE "Unable to get the elevation level (reason:%1%)!"
IDS_ERR_TAB_CREATE_FAILED "Failed to open %s tab!\nThe process %s could still be running (use the Task Manager to find it and end it)"
END

STRINGTABLE
Expand Down
36 changes: 32 additions & 4 deletions Console/ConsoleHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -734,10 +734,38 @@ bool ConsoleHandler::SelectWord(const COORD& coordCurrent, COORD& coordLeft, COO
m_multipleInfo->coordCurrent = coordCurrent;

CopyPasteSettings& copyPasteSettings = g_settingsHandler->GetBehaviorSettings().copyPasteSettings;
wcscpy_s<MAX_WORD_DELIMITERS>(m_multipleInfo->szLeftDelimiters, copyPasteSettings.strLeftDelimiters.c_str());
wcscpy_s<MAX_WORD_DELIMITERS>(m_multipleInfo->szRightDelimiters, copyPasteSettings.strRightDelimiters.c_str());
m_multipleInfo->bIncludeLeftDelimiter = copyPasteSettings.bIncludeLeftDelimiter;
m_multipleInfo->bIncludeRightDelimiter = copyPasteSettings.bIncludeRightDelimiter;
wcscpy_s<MAX_WORD_DELIMITERS>(m_multipleInfo->u.select_word.szLeftDelimiters, copyPasteSettings.strLeftDelimiters.c_str());
wcscpy_s<MAX_WORD_DELIMITERS>(m_multipleInfo->u.select_word.szRightDelimiters, copyPasteSettings.strRightDelimiters.c_str());
m_multipleInfo->u.select_word.bIncludeLeftDelimiter = copyPasteSettings.bIncludeLeftDelimiter;
m_multipleInfo->u.select_word.bIncludeRightDelimiter = copyPasteSettings.bIncludeRightDelimiter;

if( ::SetEvent(m_multipleInfo.GetReqEvent()) &&
::WaitForSingleObject(m_multipleInfo.GetRespEvent(), 2000) == WAIT_OBJECT_0 )
{
coordLeft = m_multipleInfo->coordLeft;
coordRight = m_multipleInfo->coordRight;

return true;
}

return false;
}

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////

bool ConsoleHandler::SearchText(CString& text, bool bNext, const COORD& coordCurrent, COORD& coordLeft, COORD& coordRight) const
{
m_multipleInfo->fMask = MULTIPLEINFO_SEARCH_TEXT;
m_multipleInfo->coordCurrent = coordCurrent;

SearchSettings& searchSettings = g_settingsHandler->GetBehaviorSettings2().searchSettings;
m_multipleInfo->u.search_text.bMatchCase = searchSettings.bMatchCase;
m_multipleInfo->u.search_text.bMatchWholeWord = searchSettings.bMatchWholeWord;
m_multipleInfo->u.search_text.bNext = bNext;
wcscpy_s<MAX_SEARCH_TEXT>(m_multipleInfo->u.search_text.szText, text.GetString());

if( ::SetEvent(m_multipleInfo.GetReqEvent()) &&
::WaitForSingleObject(m_multipleInfo.GetRespEvent(), 2000) == WAIT_OBJECT_0 )
Expand Down
1 change: 1 addition & 0 deletions Console/ConsoleHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ class ConsoleHandler
std::wstring GetCurrentDirectory(void) const;
DWORD GetLastProcessId(void) const;
bool SelectWord(const COORD& coordCurrent, COORD& coordLeft, COORD& coordRight) const;
bool SearchText(CString& text, bool bNext, const COORD& coordCurrent, COORD& coordLeft, COORD& coordRight) const;

private:

Expand Down
70 changes: 70 additions & 0 deletions Console/ConsoleView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ ConsoleView::ConsoleView(MainFrame& mainFrame, HWND hwndTabView, std::shared_ptr
, m_strCmdLineInitialCmd(strCmdLineInitialCmd)
, m_boolImmComposition(false)
{
m_coordSearchText.X = -1;
m_coordSearchText.Y = -1;
}

ConsoleView::~ConsoleView()
Expand Down Expand Up @@ -1954,6 +1956,74 @@ void ConsoleView::DoScroll(int nType, int nScrollCode, int nThumbPos)
/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////

void ConsoleView::SearchText(CString& text, bool bNext)
{
SMALL_RECT& window = m_consoleHandler.GetConsoleInfo()->csbi.srWindow;
COORD& buffer = m_consoleHandler.GetConsoleInfo()->csbi.dwSize;

if( m_coordSearchText.X == -1 && m_coordSearchText.Y == -1 )
{
if( bNext )
{
// we search from the top/left current window
m_coordSearchText.X = window.Left - 1;
m_coordSearchText.Y = window.Top;
}
else
{
// we search from the bottom/right current window
m_coordSearchText.X = window.Right + 1;
m_coordSearchText.Y = window.Bottom;
}
}

COORD left, right;
m_consoleHandler.SearchText(text, bNext, m_coordSearchText, left, right);

TRACE(L"searching from %hdx%hd returns %hdx%hd - %hdx%hd\n",
m_coordSearchText.X, m_coordSearchText.Y,
left.X, left.Y,
right.X, right.Y);

if( left.X != -1 && left.Y != -1 && right.X != -1 && right.Y != -1 )
{
LONG cx = 0;
LONG cy = 0;

if( left.X < window.Left || right.X > window.Right )
{
cx = left.X - window.Left;
if( (window.Right + cx) > buffer.X )
cx -= (buffer.X - window.Right);
}

if( left.Y < window.Top || right.Y > window.Bottom )
{
cy = left.Y - window.Top;
if( (window.Bottom + cy) > buffer.Y )
cy -= (buffer.Y - window.Bottom);
}

if( cx || cy )
{
SharedMemory<SIZE>& newScrollPos = m_consoleHandler.GetNewScrollPos();
newScrollPos->cx = cx;
newScrollPos->cy = cy;
newScrollPos.SetReqEvent();
}
}

m_selectionHandler->SetHighlightCoordinates(left, right);
BitBltOffscreen();

m_coordSearchText = left;
}

/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////

DWORD ConsoleView::GetBufferDifference()
Expand Down
4 changes: 4 additions & 0 deletions Console/ConsoleView.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@ class ConsoleView

void DoScroll(int nType, int nScrollCode, int nThumbPos);

void SearchText(CString& text, bool bNext);

static inline int GetCharWidth(void) { return m_nCharWidth; }
static inline int GetCharHeight(void) { return m_nCharHeight; }

Expand Down Expand Up @@ -265,6 +267,8 @@ class ConsoleView

CString m_strUACPrefix;

COORD m_coordSearchText;

// static members
private:

Expand Down
2 changes: 2 additions & 0 deletions Console/DlgSettingsMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ DlgSettingsMain::DlgSettingsMain()

LRESULT DlgSettingsMain::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
g_settingsHandler->SaveSettings();

HRESULT hr = XmlHelper::OpenXmlDocument(
g_settingsHandler->GetSettingsFileName(),
m_pSettingsDocument,
Expand Down
28 changes: 28 additions & 0 deletions Console/DlgSettingsStyles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,15 @@ LRESULT DlgSettingsStyles::OnCtlColorStatic(UINT /*uMsg*/, WPARAM wParam, LPARAM
dc.FillRect(&rect, brush);
return 0;
}
else if (staticCtl.m_hWnd == GetDlgItem(IDC_HIGHLIGHT_COLOR))
{
CBrush brush(::CreateSolidBrush(m_stylesSettings.crHighlightColor));
CRect rect;

staticCtl.GetClientRect(&rect);
dc.FillRect(&rect, brush);
return 0;
}

bHandled = FALSE;
return 0;
Expand Down Expand Up @@ -217,6 +226,25 @@ LRESULT DlgSettingsStyles::OnClickedSelColor(WORD /*wNotifyCode*/, WORD /*wID*/,
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////

LRESULT DlgSettingsStyles::OnClickedHiColor(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/)
{
CColorDialog dlg(m_stylesSettings.crHighlightColor, CC_FULLOPEN);

if (dlg.DoModal() == IDOK)
{
// update color
m_stylesSettings.crHighlightColor = dlg.GetColor();
CWindow(hWndCtl).Invalidate();
}

return 0;
}

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////

LRESULT DlgSettingsStyles::OnClickedTransType(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
Expand Down
3 changes: 3 additions & 0 deletions Console/DlgSettingsStyles.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class DlgSettingsStyles
BEGIN_DDX_MAP(DlgSettingsStyles)
DDX_CHECK(IDC_CHECK_SHOW_MENU, m_controlsSettings.bShowMenu)
DDX_CHECK(IDC_CHECK_SHOW_TOOLBAR, m_controlsSettings.bShowToolbar)
DDX_CHECK(IDC_CHECK_SHOW_SEARCH_BAR, m_controlsSettings.bShowSearchbar)
DDX_CHECK(IDC_CHECK_SHOW_STATUS, m_controlsSettings.bShowStatusbar)
DDX_CHECK(IDC_CHECK_SHOW_TABS, m_controlsSettings.bShowTabs)
DDX_CHECK(IDC_CHECK_HIDE_SINGLE_TAB, m_controlsSettings.bHideSingleTab)
Expand Down Expand Up @@ -54,6 +55,7 @@ class DlgSettingsStyles
COMMAND_HANDLER(IDC_CHECK_STYLE_QUAKE, BN_CLICKED, OnClickedQuake)
COMMAND_HANDLER(IDC_KEY_COLOR, BN_CLICKED, OnClickedKeyColor)
COMMAND_HANDLER(IDC_SELECTION_COLOR, BN_CLICKED, OnClickedSelColor)
COMMAND_HANDLER(IDC_HIGHLIGHT_COLOR, BN_CLICKED, OnClickedHiColor)
COMMAND_RANGE_CODE_HANDLER(IDC_TRANSPARENCY_TYPE, IDC_TRANSPARENCY_TYPE4, BN_CLICKED, OnClickedTransType)
END_MSG_MAP()

Expand All @@ -72,6 +74,7 @@ class DlgSettingsStyles
LRESULT OnClickedQuake(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/);
LRESULT OnClickedKeyColor(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/);
LRESULT OnClickedSelColor(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/);
LRESULT OnClickedHiColor(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/);
LRESULT OnClickedTransType(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

private:
Expand Down
Loading

0 comments on commit 685045b

Please sign in to comment.