From d5d6965af7e69367babf40b7fb1d7fca8617cabe Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 26 Jul 2012 14:56:53 +0000 Subject: dbtool is divided into two parts: DbChecker & appendix for db3x_mmap plugin git-svn-id: http://svn.miranda-ng.org/main/trunk@1195 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/DbChecker/src/wizard.cpp | 141 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 plugins/DbChecker/src/wizard.cpp (limited to 'plugins/DbChecker/src/wizard.cpp') diff --git a/plugins/DbChecker/src/wizard.cpp b/plugins/DbChecker/src/wizard.cpp new file mode 100644 index 0000000000..dd10b614ac --- /dev/null +++ b/plugins/DbChecker/src/wizard.cpp @@ -0,0 +1,141 @@ +/* +Miranda Database Tool +Copyright 2000-2011 Miranda ICQ/IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +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. +*/ +#include "dbchecker.h" + +static HFONT hBoldFont = NULL; +static HENHMETAFILE hEmfHeaderLogo = NULL; + +static BOOL CALLBACK MyControlsEnumChildren(HWND hwnd, LPARAM lParam) +{ + DWORD style = GetWindowLongPtr(hwnd, GWL_STYLE); + DWORD exstyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE); + char szClass[64]; + int makeBold = 0; + + GetClassNameA(hwnd, szClass, sizeof(szClass)); + if (!strcmp(szClass, "Static")) { + if (((style & SS_TYPEMASK) == SS_LEFT || (style & SS_TYPEMASK) == SS_CENTER || (style & SS_TYPEMASK) == SS_RIGHT) && exstyle & WS_EX_CLIENTEDGE) + makeBold = 1; + } + else if (!strcmp(szClass, "Button")) { + if (exstyle&WS_EX_CLIENTEDGE) + makeBold = 1; + } + if (makeBold) { + if (hBoldFont == NULL) { + LOGFONT lf; + hBoldFont = (HFONT)SendMessage(hwnd, WM_GETFONT, 0, 0); + GetObject(hBoldFont, sizeof(lf), &lf); + lf.lfWeight = FW_BOLD; + hBoldFont = CreateFontIndirect(&lf); + } + SendMessage(hwnd, WM_SETFONT, (WPARAM)hBoldFont, 0); + SetWindowLongPtr(hwnd, GWL_EXSTYLE, exstyle&~WS_EX_CLIENTEDGE); + SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); + } + return TRUE; +} + +int DoMyControlProcessing(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam, INT_PTR *bReturn) +{ + switch(message) { + case WM_INITDIALOG: + EnumChildWindows(hdlg, MyControlsEnumChildren, 0); + if (hEmfHeaderLogo == NULL) { + HRSRC hRsrc = FindResourceA(hInst, MAKEINTRESOURCEA(IDE_HDRLOGO), "EMF"); + HGLOBAL hGlob = LoadResource(hInst, hRsrc); + hEmfHeaderLogo = SetEnhMetaFileBits(SizeofResource(hInst, hRsrc), (PBYTE)LockResource(hGlob)); + } + SendDlgItemMessage(hdlg, IDC_HDRLOGO, STM_SETIMAGE, IMAGE_ENHMETAFILE, (LPARAM)hEmfHeaderLogo); + break; + + case WM_CTLCOLORSTATIC: + if ((GetWindowLongPtr((HWND)lParam, GWL_STYLE)&0xFFFF) == 0) { + char szText[256]; + GetWindowTextA((HWND)lParam, szText, sizeof(szText)); + if (!strcmp(szText, "whiterect")) { + SetTextColor((HDC)wParam, RGB(255, 255, 255)); + SetBkColor((HDC)wParam, RGB(255, 255, 255)); + SetBkMode((HDC)wParam, OPAQUE); + *bReturn = (INT_PTR)GetStockObject(WHITE_BRUSH); + return TRUE; + } + else { + SetBkMode((HDC)wParam, TRANSPARENT); + *bReturn = (INT_PTR)GetStockObject(NULL_BRUSH); + return TRUE; + } + } + break; + } + return FALSE; +} + +INT_PTR CALLBACK WizardDlgProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + static HWND hdlgPage; + + switch(message) { + case WM_INITDIALOG: + SendMessage(hdlg, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(hInst, MAKEINTRESOURCE(IDI_DBTOOL))); + hdlgPage = NULL; + SendMessage(hdlg, WZM_GOTOPAGE, IDD_WELCOME, (LPARAM)WelcomeDlgProc); + TranslateDialogDefault(hdlg); + return TRUE; + + case WZM_GOTOPAGE: + if (hdlgPage != NULL) DestroyWindow(hdlgPage); + EnableWindow(GetDlgItem(hdlg, IDC_BACK), TRUE); + EnableWindow(GetDlgItem(hdlg, IDOK), TRUE); + EnableWindow(GetDlgItem(hdlg, IDCANCEL), TRUE); + SetDlgItemText(hdlg, IDCANCEL, TranslateT("Cancel")); + hdlgPage = CreateDialog(hInst, MAKEINTRESOURCE(wParam), hdlg, (DLGPROC)lParam); + TranslateDialogDefault(hdlgPage); + SetWindowPos(hdlgPage, 0, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOSIZE); + ShowWindow(hdlgPage, SW_SHOW); + break; + + case WM_COMMAND: + switch(LOWORD(wParam)) { + case IDC_BACK: + case IDOK: + SendMessage(hdlgPage, WZN_PAGECHANGING, wParam, 0); + SendMessage(hdlgPage, message, wParam, lParam); + break; + case IDCANCEL: + if (SendMessage(hdlgPage, WZN_CANCELCLICKED, 0, 0)) break; + EndDialog(hdlg, 0); + break; + } + break; + + case WM_DESTROY: + if (opts.hFile) + CloseHandle(opts.hFile); + if (opts.hOutFile) + CloseHandle(opts.hOutFile); + DestroyWindow(hdlgPage); + if (hBoldFont != NULL) DeleteObject(hBoldFont); + if (hEmfHeaderLogo != NULL) DeleteEnhMetaFile(hEmfHeaderLogo); + break; + } + return FALSE; +} -- cgit v1.2.3