From 3e5dab1a8298130da0ebfb20d91b6963a64367b1 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 11 Dec 2014 17:07:25 +0000 Subject: chat's component COLORCHOOSER standardized in the core git-svn-id: http://svn.miranda-ng.org/main/trunk@11332 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/core/commonheaders.h | 1 + src/core/stdchat/res/chat.rc | 67 +------ src/core/stdchat/src/chat.h | 14 -- src/core/stdchat/src/colorchooser.cpp | 266 ---------------------------- src/core/stdchat/src/resource.h | 2 - src/core/stdchat/src/window.cpp | 57 +++--- src/core/stdchat/stdchat_10.vcxproj | 1 - src/core/stdchat/stdchat_10.vcxproj.filters | 3 - src/core/stdchat/stdchat_12.vcxproj | 1 - src/core/stdchat/stdchat_12.vcxproj.filters | 3 - 10 files changed, 22 insertions(+), 393 deletions(-) delete mode 100644 src/core/stdchat/src/colorchooser.cpp (limited to 'src/core') diff --git a/src/core/commonheaders.h b/src/core/commonheaders.h index bcf4291b89..73a91c4028 100644 --- a/src/core/commonheaders.h +++ b/src/core/commonheaders.h @@ -48,6 +48,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include +#include #include #include #include diff --git a/src/core/stdchat/res/chat.rc b/src/core/stdchat/res/chat.rc index 1465655e61..c4fc84fc82 100644 --- a/src/core/stdchat/res/chat.rc +++ b/src/core/stdchat/res/chat.rc @@ -277,7 +277,6 @@ BEGIN END #endif // APSTUDIO_INVOKED - ///////////////////////////////////////////////////////////////////////////// // // Icon @@ -287,42 +286,6 @@ END // remains consistent on all systems. IDI_TAG1 ICON "tag1.ico" IDI_TAG2 ICON "tag2.ico" -#endif // Neutral (Default) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Swedish resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE) -#ifdef _WIN32 -LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_COLORCHOOSER DIALOGEX 0, 0, 198, 150 -STYLE DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | - WS_VISIBLE | WS_BORDER -EXSTYLE WS_EX_TOPMOST -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,172,136,26,14,NOT WS_TABSTOP - CTEXT "",IDC_COLORTEXT,0,0,197,12,SS_CENTERIMAGE -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. IDI_BUNDERLINE ICON "underline.ico" IDI_BBOLD ICON "bold.ico" IDI_BITALICS ICON "italics.ico" @@ -360,33 +323,6 @@ IDI_OVERLAY ICON "overlay.ico" IDI_NICKLIST2 ICON "nicklist2.ico" IDI_FILTER2 ICON "filter2.ico" -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\src\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "#include ""richedit.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - ///////////////////////////////////////////////////////////////////////////// // // Menu @@ -438,11 +374,10 @@ BEGIN END END -#endif // Swedish resources +#endif // Neutral (Default) resources ///////////////////////////////////////////////////////////////////////////// - #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // diff --git a/src/core/stdchat/src/chat.h b/src/core/stdchat/src/chat.h index 3507e8f5c5..d0702be5d2 100644 --- a/src/core/stdchat/src/chat.h +++ b/src/core/stdchat/src/chat.h @@ -137,23 +137,9 @@ struct CREOleCallback : public IRichEditOleCallback extern CREOleCallback reOleCallback; -struct COLORCHOOSER -{ - MODULEINFO* pModule; - int xPosition; - int yPosition; - HWND hWndTarget; - BOOL bForeground; - SESSION_INFO *si; -}; - //main.c - void LoadIcons(void); -//colorchooser.c -INT_PTR CALLBACK DlgProcColorToolWindow(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - // log.c void Log_StreamInEvent(HWND hwndDlg, LOGINFO* lin, SESSION_INFO *si, BOOL bRedraw, BOOL bPhaseTwo); void ValidateFilename (TCHAR * filename); diff --git a/src/core/stdchat/src/colorchooser.cpp b/src/core/stdchat/src/colorchooser.cpp deleted file mode 100644 index b7a1066e7d..0000000000 --- a/src/core/stdchat/src/colorchooser.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* -Chat module plugin for Miranda IM - -Copyright (C) 2003 Jörgen Persson - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - - -// this color chooser window is inspired by PeaCow's smiley chooser window for the Smileyadd plugin - -#include "chat.h" -#include - -static int CalculateCoordinatesToButton(COLORCHOOSER * pCC, POINT pt) -{ - int iSquareRoot = (int)sqrt((double)pCC->pModule->nColorCount); - int nCols = iSquareRoot * iSquareRoot < pCC->pModule->nColorCount?iSquareRoot+1:iSquareRoot; - - int col = pt.x / 25; - int row = (pt.y-20) / 20; - int pos = nCols * row + col; - - if (pt.y < 20 && pos >= pCC->pModule->nColorCount) - pos = -1; - - return pos; -} - -static RECT CalculateButtonToCoordinates(COLORCHOOSER * pCC, int buttonPosition) -{ - RECT pt; - int iSquareRoot = (int)sqrt((double)pCC->pModule->nColorCount); - int nCols = iSquareRoot * iSquareRoot < pCC->pModule->nColorCount?iSquareRoot+1:iSquareRoot; - - int row = buttonPosition / nCols; - int col = buttonPosition % nCols; - - pt.left = col * 25+1; - pt.top = row * 20 + 20; - pt.right = pt.left + 25-1; - pt.bottom = pt.top + 20; - - return pt; -} - -INT_PTR CALLBACK DlgProcColorToolWindow(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static COLORCHOOSER* pCC = NULL; - static int iCurrentHotTrack; - static BOOL bChoosing; - static int iRows; - static int iColumns; - static HWND hPreviousActiveWindow; - - switch(msg) { - case WM_INITDIALOG: - { - RECT rc; - int iSquareRoot; - int width ; - int height; - - TranslateDialogDefault(hwndDlg); - pCC = (COLORCHOOSER*) lParam; - - iCurrentHotTrack = -2; - bChoosing = FALSE; - - iSquareRoot = (int)sqrt((double)pCC->pModule->nColorCount); - - iColumns = iSquareRoot * iSquareRoot == pCC->pModule->nColorCount?iSquareRoot:iSquareRoot+1; - iRows = iSquareRoot; - - rc.top = rc.left = 100; - rc.right = 100 + iColumns * 25 + 1; - rc.bottom = iRows * 20 + 100 + 20; - - AdjustWindowRectEx(&rc, GetWindowLongPtr(hwndDlg, GWL_STYLE), FALSE, GetWindowLongPtr(hwndDlg, GWL_EXSTYLE)); - - width = rc.right - rc.left; - height = rc.bottom - rc.top; - - pCC->yPosition -= height; - - - SetDlgItemText(hwndDlg, IDC_COLORTEXT, pCC->bForeground?TranslateT("Text color"):TranslateT("Background color")); - SetWindowPos(GetDlgItem(hwndDlg, IDC_COLORTEXT), NULL, 0, 0, width, 20, 0); - SetWindowPos(hwndDlg, NULL, pCC->xPosition, pCC->yPosition, width, height, SWP_SHOWWINDOW); - } - break; - - case WM_CTLCOLOREDIT: - case WM_CTLCOLORSTATIC: - if (( HWND )lParam == GetDlgItem( hwndDlg, IDC_COLORTEXT )) { - SetTextColor((HDC)wParam,RGB(60,60,150)); - SetBkColor((HDC)wParam,GetSysColor(COLOR_WINDOW)); - return (INT_PTR)GetSysColorBrush(COLOR_WINDOW); - } - break; - - case WM_COMMAND: - switch ( LOWORD( wParam )) { - case IDOK: - if (iCurrentHotTrack >= 0) - PostMessage(hwndDlg, WM_LBUTTONUP, 0, 0); - break; - case IDCANCEL: - DestroyWindow(hwndDlg); - break; - } - break; - - case WM_LBUTTONUP: - if (iCurrentHotTrack >= 0 && iCurrentHotTrack < pCC->pModule->nColorCount && pCC->hWndTarget != NULL) { - HWND hWindow; - CHARFORMAT2 cf; - cf.cbSize = sizeof(CHARFORMAT2); - cf.dwMask = 0; - cf.dwEffects = 0; - hWindow = GetParent( pCC->hWndTarget ); - - if ( pCC->bForeground ) { - pCC->si->bFGSet = TRUE; - pCC->si->iFG = iCurrentHotTrack; - if ( IsDlgButtonChecked( hWindow, IDC_COLOR )) { - cf.dwMask = CFM_COLOR; - cf.crTextColor = pCC->pModule->crColors[iCurrentHotTrack]; - SendMessage(pCC->hWndTarget, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf); - } - } - else { - pCC->si->bBGSet = TRUE; - pCC->si->iBG = iCurrentHotTrack; - if ( IsDlgButtonChecked( hWindow, IDC_BKGCOLOR )) { - cf.dwMask = CFM_BACKCOLOR; - cf.crBackColor = pCC->pModule->crColors[iCurrentHotTrack]; - SendMessage(pCC->hWndTarget, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf); - } } } - PostMessage(hwndDlg, WM_CLOSE, 0, 0); - break; - - case WM_ACTIVATE: - if (wParam == WA_INACTIVE) - PostMessage(hwndDlg, WM_CLOSE, 0, 0); - else if ((wParam == WA_ACTIVE) || (wParam == WA_CLICKACTIVE)) - hPreviousActiveWindow = (HWND)lParam; - break; - - case WM_MOUSEMOVE: - { - HDC hdc = GetDC(hwndDlg); - POINT pt; - RECT rect; - int but; - - pt.x = LOWORD(lParam); - pt.y = HIWORD(lParam); - - if (iCurrentHotTrack == -2) - return 0; // prevent focussing when not drawn yet! - - but = CalculateCoordinatesToButton(pCC, pt); - - // weird stuff - if (but != iCurrentHotTrack) { - if (iCurrentHotTrack >= 0) { - rect = CalculateButtonToCoordinates(pCC, iCurrentHotTrack); - DrawFocusRect(hdc, &rect); - iCurrentHotTrack = -1; - } - iCurrentHotTrack = but; - - if (iCurrentHotTrack >= 0) { - rect = CalculateButtonToCoordinates(pCC, iCurrentHotTrack); - DrawFocusRect(hdc, &rect); - } } - ReleaseDC(hwndDlg, hdc); - } - break; - - case WM_PAINT: - { - PAINTSTRUCT ps; - HDC hdc; - RECT rc; - int i = 0; - int iThisRow = 1; - int iThisColumn = 0; - - GetClientRect(hwndDlg, &rc); - - rc.top += 20; - - hdc = BeginPaint(hwndDlg, &ps); - - // fill background - FillRect(hdc, &rc, GetSysColorBrush(COLOR_WINDOW)); - - for (i; i < pCC->pModule->nColorCount; i++) { - HBRUSH hbr; - - // decide place to draw the color block in the window - iThisColumn ++; - if (iThisColumn > iColumns) { - iThisColumn = 1; - iThisRow++; - } - - if ( pCC->bForeground && pCC->si->bFGSet && pCC->si->iFG == i || - !pCC->bForeground && pCC->si->bBGSet && pCC->si->iBG == i ) { - rc.top = (iThisRow-1) * 20+ 1 +20 ; - rc.left = (iThisColumn-1) * 25 + 1 + 1 ; - rc.bottom = iThisRow * 20- 1 + 20 ; - rc.right = iThisColumn * 25-1 ; - - DrawEdge(hdc, &rc, EDGE_RAISED, BF_TOP|BF_LEFT|BF_RIGHT|BF_BOTTOM); - } - - rc.top = (iThisRow-1) * 20+ 3 +20 ; - rc.left = (iThisColumn-1) * 25 + 3 + 1 ; - rc.bottom = iThisRow * 20- 3 + 20 ; - rc.right = iThisColumn * 25-3 ; - - FillRect(hdc, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH)); - - hbr = CreateSolidBrush(pCC->pModule->crColors[i]); - - rc.top = (iThisRow-1) * 20+4 +20; - rc.left = (iThisColumn-1) * 25+ 4 + 1; - rc.bottom = iThisRow * 20-4 + 20; - rc.right = iThisColumn * 25-4; - - FillRect(hdc, &rc, hbr); - DeleteObject(hbr); - } - - EndPaint(hwndDlg, &ps); - iCurrentHotTrack = -1; - } - break; - - case WM_CLOSE: - SetFocus(pCC->hWndTarget); - DestroyWindow(hwndDlg); - break; - - case WM_DESTROY: - mir_free( pCC ); - return TRUE; - } - - return FALSE; -} diff --git a/src/core/stdchat/src/resource.h b/src/core/stdchat/src/resource.h index f95fa7dd01..439c6d3639 100644 --- a/src/core/stdchat/src/resource.h +++ b/src/core/stdchat/src/resource.h @@ -36,7 +36,6 @@ #define IDI_TAG1 149 #define IDI_TAG2 150 #define IDR_MENU 151 -#define IDD_COLORCHOOSER 152 #define IDI_STATUS3 153 #define IDI_STATUS2 154 #define IDI_STATUS4 155 @@ -94,7 +93,6 @@ #define IDC_HIGHLIGHT 1068 #define IDC_TEXTO 1069 #define IDC_LOGGING 1069 -#define IDC_COLORTEXT 1070 #define IDC_LIST 1072 #define IDC_TAB 1074 #define IDC_1 1075 diff --git a/src/core/stdchat/src/window.cpp b/src/core/stdchat/src/window.cpp index 4a73524523..f3dbde1bb6 100644 --- a/src/core/stdchat/src/window.cpp +++ b/src/core/stdchat/src/window.cpp @@ -1121,6 +1121,7 @@ static void __cdecl phase2(void * lParam) INT_PTR CALLBACK RoomWndProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { SESSION_INFO *si = (SESSION_INFO*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + RECT rc; switch (uMsg) { case WM_INITDIALOG: @@ -1876,7 +1877,6 @@ LABEL_SHOWWINDOW: case GC_SPLITTERMOVED: { POINT pt; - RECT rc; RECT rcLog; BOOL bFormat = IsWindowVisible(GetDlgItem(hwndDlg,IDC_SMILEY)); @@ -1940,7 +1940,6 @@ LABEL_SHOWWINDOW: case GC_SHOWFILTERMENU: { - RECT rc; HWND hwnd = CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_FILTER), hwndDlg, FilterWndProc, (LPARAM)si); TranslateDialogDefault(hwnd); GetWindowRect(GetDlgItem(hwndDlg, IDC_FILTER), &rc); @@ -1949,38 +1948,25 @@ LABEL_SHOWWINDOW: break; case GC_SHOWCOLORCHOOSER: - { - BOOL bFG = lParam == IDC_COLOR ? TRUE : FALSE; - COLORCHOOSER * pCC = (COLORCHOOSER *)mir_alloc(sizeof(COLORCHOOSER)); - - RECT rc; - GetWindowRect(GetDlgItem(hwndDlg, bFG ? IDC_COLOR : IDC_BKGCOLOR), &rc); - pCC->hWndTarget = GetDlgItem(hwndDlg, IDC_MESSAGE); - pCC->pModule = pci->MM_FindModule(si->pszModule); - pCC->xPosition = rc.left+3; - pCC->yPosition = IsWindowVisible(GetDlgItem(hwndDlg, IDC_COLOR))?rc.top-1:rc.top+20; - pCC->bForeground = bFG; - pCC->si = si; - - CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_COLORCHOOSER), hwndDlg, DlgProcColorToolWindow, (LPARAM) pCC); - } + pci->ColorChooser(si, lParam == IDC_COLOR, hwndDlg, GetDlgItem(hwndDlg, IDC_MESSAGE), GetDlgItem(hwndDlg, lParam)); break; case GC_SCROLLTOBOTTOM: - { + if ((GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_LOG), GWL_STYLE) & WS_VSCROLL) != 0) { SCROLLINFO si = { 0 }; - if ((GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_LOG), GWL_STYLE) & WS_VSCROLL) != 0) { - CHARRANGE sel; - si.cbSize = sizeof(si); - si.fMask = SIF_PAGE | SIF_RANGE; - GetScrollInfo(GetDlgItem(hwndDlg, IDC_LOG), SB_VERT, &si); - si.fMask = SIF_POS; - si.nPos = si.nMax - si.nPage + 1; - SetScrollInfo(GetDlgItem(hwndDlg, IDC_LOG), SB_VERT, &si, TRUE); - sel.cpMin = sel.cpMax = GetRichTextLength(GetDlgItem(hwndDlg, IDC_LOG)); - SendMessage(GetDlgItem(hwndDlg, IDC_LOG), EM_EXSETSEL, 0, (LPARAM) &sel); - PostMessage(GetDlgItem(hwndDlg, IDC_LOG), WM_VSCROLL, MAKEWPARAM(SB_BOTTOM, 0), 0); - } } + si.cbSize = sizeof(si); + si.fMask = SIF_PAGE | SIF_RANGE; + GetScrollInfo(GetDlgItem(hwndDlg, IDC_LOG), SB_VERT, &si); + + si.fMask = SIF_POS; + si.nPos = si.nMax - si.nPage + 1; + SetScrollInfo(GetDlgItem(hwndDlg, IDC_LOG), SB_VERT, &si, TRUE); + + CHARRANGE sel; + sel.cpMin = sel.cpMax = GetRichTextLength(GetDlgItem(hwndDlg, IDC_LOG)); + SendMessage(GetDlgItem(hwndDlg, IDC_LOG), EM_EXSETSEL, 0, (LPARAM) &sel); + PostMessage(GetDlgItem(hwndDlg, IDC_LOG), WM_VSCROLL, MAKEWPARAM(SB_BOTTOM, 0), 0); + } break; case WM_TIMER: @@ -2363,10 +2349,9 @@ LABEL_SHOWWINDOW: break; case IDC_SMILEY: - { - RECT rc; - GetWindowRect(GetDlgItem(hwndDlg, IDC_SMILEY), &rc); - + GetWindowRect(GetDlgItem(hwndDlg, IDC_SMILEY), &rc); + + if (SmileyAddInstalled) { SMADD_SHOWSEL3 smaddInfo = { sizeof(smaddInfo) }; smaddInfo.hwndTarget = GetDlgItem(hwndDlg, IDC_MESSAGE); smaddInfo.targetMessage = EM_REPLACESEL; @@ -2377,9 +2362,7 @@ LABEL_SHOWWINDOW: smaddInfo.yPosition = rc.top - 1; smaddInfo.hContact = si->hContact; smaddInfo.hwndParent = hwndDlg; - - if (SmileyAddInstalled) - CallService(MS_SMILEYADD_SHOWSELECTION, 0, (LPARAM) &smaddInfo); + CallService(MS_SMILEYADD_SHOWSELECTION, 0, (LPARAM)&smaddInfo); } break; diff --git a/src/core/stdchat/stdchat_10.vcxproj b/src/core/stdchat/stdchat_10.vcxproj index 2367473f54..610b1baf71 100644 --- a/src/core/stdchat/stdchat_10.vcxproj +++ b/src/core/stdchat/stdchat_10.vcxproj @@ -201,7 +201,6 @@ - Create diff --git a/src/core/stdchat/stdchat_10.vcxproj.filters b/src/core/stdchat/stdchat_10.vcxproj.filters index 3db0ba41e8..1250407396 100644 --- a/src/core/stdchat/stdchat_10.vcxproj.filters +++ b/src/core/stdchat/stdchat_10.vcxproj.filters @@ -19,9 +19,6 @@ - - Source Files - Source Files diff --git a/src/core/stdchat/stdchat_12.vcxproj b/src/core/stdchat/stdchat_12.vcxproj index a3d1589a8b..0912c9dd3d 100644 --- a/src/core/stdchat/stdchat_12.vcxproj +++ b/src/core/stdchat/stdchat_12.vcxproj @@ -204,7 +204,6 @@ - Create diff --git a/src/core/stdchat/stdchat_12.vcxproj.filters b/src/core/stdchat/stdchat_12.vcxproj.filters index 3db0ba41e8..1250407396 100644 --- a/src/core/stdchat/stdchat_12.vcxproj.filters +++ b/src/core/stdchat/stdchat_12.vcxproj.filters @@ -19,9 +19,6 @@ - - Source Files - Source Files -- cgit v1.2.3