Index: src/ch/TMsgBox.cpp
===================================================================
diff -u
--- src/ch/TMsgBox.cpp (revision 0)
+++ src/ch/TMsgBox.cpp (revision 096451721a732567aad7e103bfe2d0a9f2f32c95)
@@ -0,0 +1,353 @@
+// ============================================================================
+// Copyright (C) 2001-2014 by Jozef Starosczyk
+// ixen@copyhandler.com
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Library General Public License
+// (version 2) as published by the Free Software Foundation;
+//
+// 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 Library 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 "stdafx.h"
+#include "TMsgBox.h"
+#include "ch.h"
+
+using namespace ictranslate;
+
+IMPLEMENT_DYNAMIC(TMsgBox, CLanguageDialog)
+
+BEGIN_MESSAGE_MAP(TMsgBox, CLanguageDialog)
+ ON_BN_CLICKED(IDC_FIRST_BUTTON, &TMsgBox::OnFirstButtonClicked)
+ ON_BN_CLICKED(IDC_SECOND_BUTTON, &TMsgBox::OnSecondButtonClicked)
+ ON_BN_CLICKED(IDC_THIRD_BUTTON, &TMsgBox::OnThirdButtonClicked)
+ ON_NOTIFY(EN_REQUESTRESIZE, IDC_MSG_RICHEDIT, OnRichEditResize)
+ ON_NOTIFY(EN_REQUESTRESIZE, IDC_MEASURE_RICHEDIT, OnRichEditResize)
+END_MESSAGE_MAP()
+
+TMsgBox::TMsgBox(UINT uiMsgResourceID, EButtonConfig eButtons, EIconConfig eIcon, CWnd* pParent /*= NULL*/) :
+ CLanguageDialog(IDD_MSGBOX_DIALOG, pParent),
+ m_eButtons(eButtons),
+ m_eIcon(eIcon),
+ m_rcRichEdit(0,0,0,0)
+{
+ m_strMessageText = GetResManager().LoadString(uiMsgResourceID);
+}
+
+TMsgBox::TMsgBox(const CString& strMessage, EButtonConfig eButtons, EIconConfig eIcon, CWnd* pParent /*= NULL*/) :
+ CLanguageDialog(IDD_MSGBOX_DIALOG, pParent),
+ m_strMessageText(strMessage),
+ m_eButtons(eButtons),
+ m_eIcon(eIcon)
+{
+}
+
+TMsgBox::~TMsgBox()
+{
+}
+
+void TMsgBox::DoDataExchange(CDataExchange* pDX)
+{
+ CLanguageDialog::DoDataExchange(pDX);
+
+ DDX_Control(pDX, IDC_MSG_RICHEDIT, m_ctlRichEdit);
+ DDX_Control(pDX, IDC_FIRST_BUTTON, m_ctlButton1);
+ DDX_Control(pDX, IDC_SECOND_BUTTON, m_ctlButton2);
+ DDX_Control(pDX, IDC_THIRD_BUTTON, m_ctlButton3);
+ DDX_Control(pDX, IDC_BASIC_CHECK, m_ctlCheck);
+ DDX_Control(pDX, IDC_IMAGE_STATIC, m_ctlImage);
+ DDX_Control(pDX, IDC_MEASURE_RICHEDIT, m_ctlMeasureRichEdit);
+}
+
+BOOL TMsgBox::OnInitDialog()
+{
+ CLanguageDialog::OnInitDialog();
+
+ m_ctlMeasureRichEdit.SetEventMask(m_ctlRichEdit.GetEventMask() | ENM_REQUESTRESIZE);
+
+ AddResizableControl(IDC_IMAGE_STATIC, 0.0, 0.0, 0.0, 0.0);
+ AddResizableControl(IDC_MSG_RICHEDIT, 0.0, 0.0, 1.0, 1.0);
+ AddResizableControl(IDC_FIRST_BUTTON, 1.0, 1.0, 0.0, 0.0);
+ AddResizableControl(IDC_SECOND_BUTTON, 1.0, 1.0, 0.0, 0.0);
+ AddResizableControl(IDC_THIRD_BUTTON, 1.0, 1.0, 0.0, 0.0);
+ AddResizableControl(IDC_BASIC_CHECK, 0.0, 1.0, 1.0, 0.0);
+
+ InitializeResizableControls();
+
+ m_ctlRichEdit.GetWindowRect(&m_rcRichEdit);
+ ScreenToClient(&m_rcRichEdit);
+
+ // initialize controls' texts
+ InitializeControls();
+
+ return TRUE;
+}
+
+void TMsgBox::OnFirstButtonClicked()
+{
+ const int iUndefinedResult = IDCANCEL;
+
+ switch(m_eButtons)
+ {
+ case eOk:
+ EndDialog(iUndefinedResult);
+ break;
+ case eCancel:
+ EndDialog(iUndefinedResult);
+ break;
+ case eOkCancel:
+ EndDialog(iUndefinedResult);
+ break;
+ case eYesNo:
+ EndDialog(iUndefinedResult);
+ break;
+ case eYesNoCancel:
+ EndDialog(IDYES);
+ break;
+
+ default:
+ {
+ _ASSERTE(FALSE); // unsupported option
+ EndDialog(iUndefinedResult);
+ }
+ }
+}
+
+void TMsgBox::OnSecondButtonClicked()
+{
+ const int iUndefinedResult = IDCANCEL;
+
+ // the middle button
+ switch(m_eButtons)
+ {
+ case eOk:
+ EndDialog(iUndefinedResult);
+ break;
+ case eCancel:
+ EndDialog(iUndefinedResult);
+ break;
+ case eOkCancel:
+ EndDialog(IDOK);
+ break;
+ case eYesNo:
+ EndDialog(IDYES);
+ break;
+ case eYesNoCancel:
+ EndDialog(IDNO);
+ break;
+
+ default:
+ {
+ _ASSERTE(FALSE); // unsupported option
+ EndDialog(iUndefinedResult);
+ }
+ }
+}
+
+void TMsgBox::OnThirdButtonClicked()
+{
+ const int iUndefinedResult = IDCANCEL;
+
+ // the rightmost button
+ switch(m_eButtons)
+ {
+ case eOk:
+ EndDialog(IDOK);
+ break;
+ case eCancel:
+ EndDialog(IDCANCEL);
+ break;
+ case eOkCancel:
+ EndDialog(IDCANCEL);
+ break;
+ case eYesNo:
+ EndDialog(IDNO);
+ break;
+ case eYesNoCancel:
+ EndDialog(IDCANCEL);
+ break;
+
+ default:
+ {
+ _ASSERTE(FALSE); // unsupported option
+ EndDialog(iUndefinedResult);
+ }
+ }
+}
+
+void TMsgBox::SetCheckBoxMessage(UINT uiMsgResourceID)
+{
+ m_strCheckboxText = GetResManager().LoadString(uiMsgResourceID);
+}
+
+void TMsgBox::SetCheckBoxMessage(const CString& strCheckboxMessage)
+{
+ m_strCheckboxText = strCheckboxMessage;
+}
+
+void TMsgBox::InitializeControls()
+{
+ m_ctlRichEdit.SetWindowText(m_strMessageText);
+ m_ctlMeasureRichEdit.SetWindowText(m_strMessageText);
+
+ HICON hIcon = NULL;
+ switch(m_eIcon)
+ {
+ case eIcon_Warning:
+ hIcon = AfxGetApp()->LoadStandardIcon(IDI_WARNING);
+ break;
+
+ case eIcon_Error:
+ hIcon = AfxGetApp()->LoadStandardIcon(IDI_ERROR);
+ break;
+
+ case eIcon_Info:
+ default:
+ hIcon = AfxGetApp()->LoadStandardIcon(IDI_INFORMATION);
+ break;
+ }
+
+ m_ctlImage.SetIcon(hIcon);
+
+ if(m_strCheckboxText.IsEmpty())
+ m_ctlCheck.ShowWindow(SW_HIDE);
+ else
+ m_ctlCheck.SetWindowText(m_strCheckboxText);
+
+ switch(m_eButtons)
+ {
+ case eOk:
+ m_ctlButton1.ShowWindow(SW_HIDE);
+ m_ctlButton2.ShowWindow(SW_HIDE);
+ m_ctlButton3.SetWindowText(GetResManager().LoadString(IDS_OK_STRING));
+ break;
+ case eOkCancel:
+ m_ctlButton1.ShowWindow(SW_HIDE);
+ m_ctlButton2.SetWindowText(GetResManager().LoadString(IDS_OK_STRING));
+ m_ctlButton3.SetWindowText(GetResManager().LoadString(IDS_CANCEL_STRING));
+ break;
+ case eYesNo:
+ m_ctlButton1.ShowWindow(SW_HIDE);
+ m_ctlButton2.SetWindowText(GetResManager().LoadString(IDS_YES_STRING));
+ m_ctlButton3.SetWindowText(GetResManager().LoadString(IDS_NO_STRING));
+ break;
+ case eYesNoCancel:
+ m_ctlButton1.SetWindowText(GetResManager().LoadString(IDS_YES_STRING));
+ m_ctlButton2.SetWindowText(GetResManager().LoadString(IDS_NO_STRING));
+ m_ctlButton3.SetWindowText(GetResManager().LoadString(IDS_CANCEL_STRING));
+ break;
+
+ case eCancel:
+ default:
+ m_ctlButton1.ShowWindow(SW_HIDE);
+ m_ctlButton2.ShowWindow(SW_HIDE);
+ m_ctlButton3.SetWindowText(GetResManager().LoadString(IDS_CANCEL_STRING));
+ break;
+ }
+}
+
+void TMsgBox::OnRichEditResize(NMHDR* pNMHDR, LRESULT* pResult)
+{
+ REQRESIZE* pResize = (REQRESIZE*)pNMHDR;
+
+ if(pResize && !m_rcRichEdit.IsRectNull())
+ {
+ if(pNMHDR->idFrom == IDC_MEASURE_RICHEDIT)
+ {
+ // get current monitor's resolution (and an aspect ratio)
+ CSize sizeMax = GetMaxSize();
+
+ // new rich edit control width/height suggestion
+ int iSuggestedWidth = pResize->rc.right - pResize->rc.left;
+ int iSuggestedHeight = pResize->rc.bottom - pResize->rc.top;
+ int iSuggestedArea = iSuggestedWidth * iSuggestedHeight;
+
+ // calculate approximate new height/width of a control with monitor's aspect ratio
+ // with total area similar to the suggested one
+ int iCalcWidth = (int)sqrt((double)sizeMax.cx * (double)iSuggestedArea / (double)sizeMax.cy);
+ int iCalcHeight = (int)sqrt((double)sizeMax.cy * (double)iSuggestedArea / (double)sizeMax.cx);
+
+ // calculate control size difference to apply to the dialog size
+ int iWidthDiff = iCalcWidth - m_rcRichEdit.Width();
+ int iHeightDiff = iCalcHeight - m_rcRichEdit.Height();
+
+ // and apply the diff
+ CRect rcThis(0,0,0,0);
+ GetWindowRect(&rcThis);
+
+ int iNewWidth = rcThis.Width() + iWidthDiff;
+ int iNewHeight = rcThis.Height() + iHeightDiff;
+
+ // make sure we don't exceed the max size
+ if(iNewHeight > sizeMax.cy)
+ iNewHeight = sizeMax.cy;
+ if(iNewWidth > sizeMax.cx)
+ iNewWidth = sizeMax.cx;
+
+ // move window
+ SetWindowPos(NULL, 0, 0, iNewWidth, iNewHeight, SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE);
+
+ // update richedit size
+ m_ctlRichEdit.GetWindowRect(&m_rcRichEdit);
+ ScreenToClient(&m_rcRichEdit);
+
+ // and request another resize (now on the real richedit)
+ m_ctlRichEdit.SetEventMask(m_ctlRichEdit.GetEventMask() | ENM_REQUESTRESIZE);
+ m_ctlRichEdit.RequestResize();
+
+ m_ctlMeasureRichEdit.SetEventMask(m_ctlMeasureRichEdit.GetEventMask() & ~ENM_REQUESTRESIZE);
+ }
+ else
+ {
+ int iWidthDiff = pResize->rc.right - pResize->rc.left - m_rcRichEdit.Width();
+ int iHeightDiff = pResize->rc.bottom - pResize->rc.top - m_rcRichEdit.Height();
+
+ CRect rcThis(0,0,0,0);
+ GetWindowRect(&rcThis);
+
+ SetWindowPos(NULL, 0, 0, rcThis.Width() + iWidthDiff, rcThis.Height() + iHeightDiff, SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE);
+
+ m_ctlRichEdit.SetEventMask(m_ctlRichEdit.GetEventMask() & ~ENM_REQUESTRESIZE);
+ }
+ }
+
+ if(pResult)
+ *pResult = 0;
+}
+
+CSize TMsgBox::GetMaxSize()
+{
+ CSize sizeMax = CSize(800, 600);
+
+ HMONITOR hMonitor = MonitorFromWindow(GetSafeHwnd(), MONITOR_DEFAULTTONEAREST);
+ if(hMonitor)
+ {
+ MONITORINFO mi;
+ mi.cbSize = sizeof(MONITORINFO);
+
+ if(GetMonitorInfo(hMonitor, &mi))
+ {
+ sizeMax.cx = (int)((mi.rcWork.right - mi.rcWork.left) * 0.8);
+ sizeMax.cy = (int)((mi.rcWork.bottom - mi.rcWork.top) * 0.8);
+ }
+ }
+ else
+ {
+ RECT rcArea = { 0, 0, 0, 0 };
+
+ if(SystemParametersInfo(SPI_GETWORKAREA, 0, &rcArea, 0))
+ {
+ sizeMax.cx = (int)((rcArea.right - rcArea.left) * 0.8);
+ sizeMax.cy = (int)((rcArea.bottom - rcArea.top) * 0.8);
+ }
+ }
+
+ return sizeMax;
+}
Index: src/ch/TMsgBox.h
===================================================================
diff -u
--- src/ch/TMsgBox.h (revision 0)
+++ src/ch/TMsgBox.h (revision 096451721a732567aad7e103bfe2d0a9f2f32c95)
@@ -0,0 +1,87 @@
+// ============================================================================
+// Copyright (C) 2001-2014 by Jozef Starosczyk
+// ixen@copyhandler.com
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Library General Public License
+// (version 2) as published by the Free Software Foundation;
+//
+// 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 Library 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.
+// ============================================================================
+#ifndef __TMSGBOX_H__
+#define __TMSGBOX_H__
+
+#include "..\libictranslate\LanguageDialog.h"
+
+class TMsgBox : public ictranslate::CLanguageDialog
+{
+public:
+ enum EButtonConfig
+ {
+ eOk,
+ eCancel,
+ eOkCancel,
+ eYesNo,
+ eYesNoCancel
+ };
+
+ enum EIconConfig
+ {
+ eIcon_Info,
+ eIcon_Warning,
+ eIcon_Error
+ };
+
+public:
+ TMsgBox(UINT uiMsgResourceID, EButtonConfig eButtons, EIconConfig eIcon, CWnd* pParent = NULL);
+ TMsgBox(const CString& strMessage, EButtonConfig eButtons, EIconConfig eIcon, CWnd* pParent = NULL);
+ virtual ~TMsgBox();
+
+ void SetCheckBoxMessage(UINT uiMsgResourceID);
+ void SetCheckBoxMessage(const CString& strCheckboxMessage);
+
+protected:
+ virtual void DoDataExchange(CDataExchange* pDX);
+ virtual BOOL OnInitDialog();
+
+ void InitializeControls();
+
+ void OnFirstButtonClicked();
+ void OnSecondButtonClicked();
+ void OnThirdButtonClicked();
+ void OnRichEditResize(NMHDR* pNMHDR, LRESULT* pResult);
+
+ CSize GetMaxSize();
+
+private:
+ CRichEditCtrl m_ctlRichEdit;
+ CRichEditCtrl m_ctlMeasureRichEdit;
+ CButton m_ctlButton1;
+ CButton m_ctlButton2;
+ CButton m_ctlButton3;
+ CButton m_ctlCheck;
+ CStatic m_ctlImage;
+
+ CString m_strMessageText;
+
+ EIconConfig m_eIcon;
+ EButtonConfig m_eButtons;
+
+ CString m_strCheckboxText;
+
+ CRect m_rcRichEdit;
+
+protected:
+ DECLARE_MESSAGE_MAP()
+ DECLARE_DYNAMIC(TMsgBox)
+};
+
+#endif
Index: src/ch/ch.cpp
===================================================================
diff -u -r7b830c34855c8aaa81aac2c6e0ca0fa6bae95e66 -r096451721a732567aad7e103bfe2d0a9f2f32c95
--- src/ch/ch.cpp (.../ch.cpp) (revision 7b830c34855c8aaa81aac2c6e0ca0fa6bae95e66)
+++ src/ch/ch.cpp (.../ch.cpp) (revision 096451721a732567aad7e103bfe2d0a9f2f32c95)
@@ -35,6 +35,7 @@
#include "../libchcore/ISerializerContainer.h"
#include "../libchcore/ISerializerRowData.h"
#include "../libchcore/TFileInfo.h"
+#include "TMsgBox.h"
#ifdef _DEBUG
#define new DEBUG_NEW
@@ -262,6 +263,7 @@
return FALSE;
#else
+
// ================================= Crash handling =======================================
SetUnhandledExceptionFilter(&MyUnhandledExceptionFilter);
@@ -408,8 +410,27 @@
// Set this to include all the common control classes you want to use
// in your application.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
- InitCommonControlsEx(&InitCtrls);
+ if(!InitCommonControlsEx(&InitCtrls))
+ {
+ LOG_ERROR(_T("Cannot initialize common controls."));
+ MsgBox(IDS_ERROR_INITIALIZING_COMMON_CONTROLS, MB_OK | MB_ICONERROR);
+ return FALSE;
+ }
+ if(!AfxInitRichEdit2())
+ {
+ LOG_ERROR(_T("Cannot initialize rich edit control."));
+ MsgBox(IDS_ERROR_INITIALIZING_RICH_EDIT_CONTROL, MB_OK | MB_ICONERROR);
+ return FALSE;
+ }
+
+ // tmp
+ //CString strLongText = _T("This is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big. This is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big. This is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line. This is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\nThis is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\nThis is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\nThis is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\nThis is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\nThis is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\nThis is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\nThis is some very very long text to be displayed in the text message box. There is no formatting applied (unfortunately) and we don't have any plans to incorporate it. This text should be split into multiple lines to avoid making dialog box too big.\nThere is also a shorter second line.\n");
+ //TMsgBox msgBox(strLongText, TMsgBox::eOkCancel, TMsgBox::eIcon_Warning);
+ //if(msgBox.DoModal())
+ // return -1;
+ // /tmp
+
// ================================= Shell extension ========================================
LOG_INFO(_T("Checking shell extension compatibility"));
Index: src/ch/ch.rc
===================================================================
diff -u -r6a71d60b7ab5489db9ffc75784557e713df9a52f -r096451721a732567aad7e103bfe2d0a9f2f32c95
--- src/ch/ch.rc (.../ch.rc) (revision 6a71d60b7ab5489db9ffc75784557e713df9a52f)
+++ src/ch/ch.rc (.../ch.rc) (revision 096451721a732567aad7e103bfe2d0a9f2f32c95)
@@ -28,89 +28,23 @@
/////////////////////////////////////////////////////////////////////////////
//
-// Icon
+// Dialog
//
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDR_MAINFRAME ICON "res\\ch.ico"
-IDI_ERROR_ICON ICON "res\\error.ico"
-IDI_WORKING_ICON ICON "res\\working.ico"
-IDI_PAUSED_ICON ICON "res\\paused.ico"
-IDI_FINISHED_ICON ICON "res\\finished.ico"
-IDI_CANCELLED_ICON ICON "res\\cancelled.ico"
-IDI_WAITING_ICON ICON "res\\waiting.ico"
-IDI_QUESTION_ICON ICON "res\\question.ico"
-IDI_INFO_ICON ICON "res\\info.ico"
-IDI_ERR_ICON ICON "res\\err.ico"
-IDI_WARNING_ICON ICON "res\\warning.ico"
-IDI_SHUTDOWN_ICON ICON "res\\shut.ico"
-IDI_NET_ICON ICON "res\\net.ico"
-IDI_HDD_ICON ICON "res\\hd.ico"
-IDI_CD_ICON ICON "res\\cd.ico"
-IDI_HDD2_ICON ICON "res\\HD2.ICO"
-IDI_TRIBE_ICON ICON "res\\tribe.ico"
-IDI_FOLDER_ICON ICON "res\\folder.ico"
-IDI_ADDSHORTCUT_ICON ICON "res\\addshort.ico"
-IDI_DELETESHORTCUT_ICON ICON "res\\delshort.ico"
-IDI_LARGEICONS_ICON ICON "res\\large.ico"
-IDI_LIST_ICON ICON "res\\list.ico"
-IDI_NEWFOLDER_ICON ICON "res\\newdir.ico"
-IDI_REPORT_ICON ICON "res\\report.ico"
-IDI_SMALLICONS_ICON ICON "res\\small.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-IDR_POPUP_MENU MENU
+IDD_MSGBOX_DIALOG DIALOGEX 0, 0, 177, 83
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+CAPTION "Copy Handler"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- POPUP "POPUP"
- BEGIN
- MENUITEM "Show status...", ID_POPUP_SHOW_STATUS
- MENUITEM "Show mini-status...", ID_SHOW_MINI_VIEW
- MENUITEM "Enter copy parameters...", ID_POPUP_CUSTOM_COPY
- MENUITEM SEPARATOR
- MENUITEM "Monitor clipboard", ID_POPUP_MONITORING, CHECKED
- MENUITEM "Shutdown after finished", ID_POPUP_SHUTAFTERFINISHED, CHECKED
- MENUITEM SEPARATOR
- POPUP "&Tools|ID_POPUP_TOOLS"
- BEGIN
- MENUITEM "&Check for updates...", ID_POPUP_CHECKFORUPDATES
- MENUITEM SEPARATOR
- MENUITEM "&Enable integration with system", ID_POPUP_REGISTERDLL
- MENUITEM "&Disable integration with system", ID_POPUP_UNREGISTERDLL
- END
- MENUITEM SEPARATOR
- MENUITEM "&Options...", ID_POPUP_OPTIONS
- MENUITEM "&Help...", ID_POPUP_HELP
- MENUITEM "About...", ID_APP_ABOUT
- MENUITEM SEPARATOR
- MENUITEM "Exit", ID_APP_EXIT
- END
+ PUSHBUTTON "Btn2",IDC_SECOND_BUTTON,64,62,50,14
+ PUSHBUTTON "Btn3",IDC_THIRD_BUTTON,120,62,50,14
+ ICON "",IDC_IMAGE_STATIC,13,13,21,20,SS_REALSIZEIMAGE
+ CONTROL "Do not show this again",IDC_BASIC_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,48,163,10
+ PUSHBUTTON "Btn1",IDC_FIRST_BUTTON,8,62,50,14
+ CONTROL "",IDC_MSG_RICHEDIT,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_TABSTOP,43,13,127,31
+ CONTROL "",IDC_MEASURE_RICHEDIT,"RichEdit20W",ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,7,7,11,7
END
-IDR_PRIORITY_MENU MENU
-BEGIN
- POPUP "_POPUP_"
- BEGIN
- MENUITEM "Time critical", ID_POPUP_TIME_CRITICAL
- MENUITEM "Highest", ID_POPUP_HIGHEST
- MENUITEM "Above normal", ID_POPUP_ABOVE_NORMAL
- MENUITEM "Normal", ID_POPUP_NORMAL
- MENUITEM "Below normal", ID_POPUP_BELOW_NORMAL
- MENUITEM "Lowest", ID_POPUP_LOWEST
- MENUITEM "Idle", ID_POPUP_IDLE
- END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
IDD_BUFFERSIZE_DIALOG DIALOGEX 0, 0, 344, 127
STYLE DS_SETFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Buffer size settings"
@@ -481,6 +415,14 @@
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
+ IDD_MSGBOX_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 170
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 76
+ END
+
IDD_BUFFERSIZE_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
@@ -604,6 +546,86 @@
#endif // APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDR_MAINFRAME ICON "res\\ch.ico"
+IDI_ERROR_ICON ICON "res\\error.ico"
+IDI_WORKING_ICON ICON "res\\working.ico"
+IDI_PAUSED_ICON ICON "res\\paused.ico"
+IDI_FINISHED_ICON ICON "res\\finished.ico"
+IDI_CANCELLED_ICON ICON "res\\cancelled.ico"
+IDI_WAITING_ICON ICON "res\\waiting.ico"
+IDI_QUESTION_ICON ICON "res\\question.ico"
+IDI_INFO_ICON ICON "res\\info.ico"
+IDI_ERR_ICON ICON "res\\err.ico"
+IDI_WARNING_ICON ICON "res\\warning.ico"
+IDI_SHUTDOWN_ICON ICON "res\\shut.ico"
+IDI_NET_ICON ICON "res\\net.ico"
+IDI_HDD_ICON ICON "res\\hd.ico"
+IDI_CD_ICON ICON "res\\cd.ico"
+IDI_HDD2_ICON ICON "res\\HD2.ICO"
+IDI_TRIBE_ICON ICON "res\\tribe.ico"
+IDI_FOLDER_ICON ICON "res\\folder.ico"
+IDI_ADDSHORTCUT_ICON ICON "res\\addshort.ico"
+IDI_DELETESHORTCUT_ICON ICON "res\\delshort.ico"
+IDI_LARGEICONS_ICON ICON "res\\large.ico"
+IDI_LIST_ICON ICON "res\\list.ico"
+IDI_NEWFOLDER_ICON ICON "res\\newdir.ico"
+IDI_REPORT_ICON ICON "res\\report.ico"
+IDI_SMALLICONS_ICON ICON "res\\small.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_POPUP_MENU MENU
+BEGIN
+ POPUP "POPUP"
+ BEGIN
+ MENUITEM "Show status...", ID_POPUP_SHOW_STATUS
+ MENUITEM "Show mini-status...", ID_SHOW_MINI_VIEW
+ MENUITEM "Enter copy parameters...", ID_POPUP_CUSTOM_COPY
+ MENUITEM SEPARATOR
+ MENUITEM "Monitor clipboard", ID_POPUP_MONITORING, CHECKED
+ MENUITEM "Shutdown after finished", ID_POPUP_SHUTAFTERFINISHED, CHECKED
+ MENUITEM SEPARATOR
+ POPUP "&Tools|ID_POPUP_TOOLS"
+ BEGIN
+ MENUITEM "&Check for updates...", ID_POPUP_CHECKFORUPDATES
+ MENUITEM SEPARATOR
+ MENUITEM "&Enable integration with system", ID_POPUP_REGISTERDLL
+ MENUITEM "&Disable integration with system", ID_POPUP_UNREGISTERDLL
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "&Options...", ID_POPUP_OPTIONS
+ MENUITEM "&Help...", ID_POPUP_HELP
+ MENUITEM "About...", ID_APP_ABOUT
+ MENUITEM SEPARATOR
+ MENUITEM "Exit", ID_APP_EXIT
+ END
+END
+
+IDR_PRIORITY_MENU MENU
+BEGIN
+ POPUP "_POPUP_"
+ BEGIN
+ MENUITEM "Time critical", ID_POPUP_TIME_CRITICAL
+ MENUITEM "Highest", ID_POPUP_HIGHEST
+ MENUITEM "Above normal", ID_POPUP_ABOVE_NORMAL
+ MENUITEM "Normal", ID_POPUP_NORMAL
+ MENUITEM "Below normal", ID_POPUP_BELOW_NORMAL
+ MENUITEM "Lowest", ID_POPUP_LOWEST
+ MENUITEM "Idle", ID_POPUP_IDLE
+ END
+END
+
+
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
@@ -952,6 +974,10 @@
STRINGTABLE
BEGIN
IDS_IMPORTERROR_STRING "Cannot import paths from the specified file"
+ IDS_ERROR_INITIALIZING_COMMON_CONTROLS
+ "Cannot initialize common controls. The application will now exit."
+ IDS_ERROR_INITIALIZING_RICH_EDIT_CONTROL
+ "Cannot initialize rich edit contro. The application will now exit."
END
STRINGTABLE
@@ -1056,6 +1082,10 @@
BEGIN
IDS_INFO_TWO_FILE_STRING
"Source file: %filename\nDestination file: %dstfilename"
+ IDS_OK_STRING "&OK"
+ IDS_CANCEL_STRING "&Cancel"
+ IDS_YES_STRING "&Yes"
+ IDS_NO_STRING "&No"
END
STRINGTABLE
@@ -1084,8 +1114,9 @@
"Copy Handler's component enabling integration with system was updated.\nPlease reboot your system for changes to take effect."
IDS_CH_PORTABLE_STRING " (portable mode)"
IDS_TASK_IMPORT_FAILED "Failed to import task '%path'."
- IDS_TASK_CREATE_FAILED "Cannot create new task. Reason: %reason."
- IDS_TASKMANAGER_LOAD_FAILED "Failed to load task list database. Copy Handler will create a new, empty database for you."
+ IDS_TASK_CREATE_FAILED "Cannot create new task. Reason: %reason."
+ IDS_TASKMANAGER_LOAD_FAILED
+ "Failed to load task list database. Copy Handler will create a new, empty database for you."
END
STRINGTABLE
Index: src/ch/ch.vc90.vcproj
===================================================================
diff -u -r8422e5787e56453d78c7270066c3e8d1743ca757 -r096451721a732567aad7e103bfe2d0a9f2f32c95
--- src/ch/ch.vc90.vcproj (.../ch.vc90.vcproj) (revision 8422e5787e56453d78c7270066c3e8d1743ca757)
+++ src/ch/ch.vc90.vcproj (.../ch.vc90.vcproj) (revision 096451721a732567aad7e103bfe2d0a9f2f32c95)
@@ -1170,6 +1170,14 @@
>
+
+
+
+
Index: src/ch/resource.h
===================================================================
diff -u -r30297d6aab17483da8e7b8323b4d17ff1a9f78d6 -r096451721a732567aad7e103bfe2d0a9f2f32c95
--- src/ch/resource.h (.../resource.h) (revision 30297d6aab17483da8e7b8323b4d17ff1a9f78d6)
+++ src/ch/resource.h (.../resource.h) (revision 096451721a732567aad7e103bfe2d0a9f2f32c95)
@@ -52,6 +52,7 @@
#define IDD_CRASH_DIALOG 212
#define IDD_UPDATER_DIALOG 213
#define IDD_FEEDBACK_REPLACE_DIALOG 214
+#define IDD_MSGBOX_DIALOG 215
#define IDC_PROGRAM_STATIC 1000
#define IDC_ADDFILE_BUTTON 1002
#define IDC_STATUS_LIST 1003
@@ -339,6 +340,15 @@
#define IDC_CURRENTPHASE_GROUP_STATIC 1311
#define IDC_ENTIRETASK_GROUP_STATIC 1312
#define IDC_GLOBAL_GROUP_STATIC 1313
+#define IDC_BASIC_CHECK 1314
+#define IDC_MSG_RICHEDIT 1315
+#define IDC_FIRST_BUTTON 1316
+#define IDC_SECOND_BUTTON 1317
+#define IDC_THIRD_BUTTON 1318
+#define IDC_IMAGE_STATIC 1319
+#define IDC_HORIZONTAL_BAR_STATIC 1320
+#define IDC_MSG_RICHEDIT2 1321
+#define IDC_MEASURE_RICHEDIT 1321
#define IDS_APPNAME_STRING 5000
#define IDS_PRIORITY0_STRING 5001
#define IDS_PRIORITY1_STRING 5002
@@ -371,7 +381,7 @@
#define IDS_SHELL_EXTENSION_REGISTERED_MISMATCH_STRING 5029
#define IDS_CH_PORTABLE_STRING 5030
#define IDS_TASK_IMPORT_FAILED 5031
-#define IDS_TASK_CREATE_FAILED 5032
+#define IDS_TASK_CREATE_FAILED 5032
#define IDS_TASKMANAGER_LOAD_FAILED 5033
#define IDS_ONECOPY_STRING 6000
#define IDS_REGISTEROK_STRING 6001
@@ -536,6 +546,10 @@
#define IDS_TITLEUNKNOWNOPERATION_STRING 13502
#define IDS_MAINBROWSETEXT_STRING 13503
#define IDS_INFO_TWO_FILE_STRING 13504
+#define IDS_OK_STRING 13505
+#define IDS_CANCEL_STRING 13506
+#define IDS_YES_STRING 13507
+#define IDS_NO_STRING 13508
#define IDS_ABTNOTHANX_STRING 14000
#define IDS_ABOUTVERSION_STRING 14001
#define IDS_BUFFERSIZEZERO_STRING 14500
@@ -564,6 +578,8 @@
#define IDS_FLTALLFILTER_STRING 15022
#define IDS_IMPORTREPORT_STRING 15023
#define IDS_IMPORTERROR_STRING 15024
+#define IDS_ERROR_INITIALIZING_COMMON_CONTROLS 15025
+#define IDS_ERROR_INITIALIZING_RICH_EDIT_CONTROL 15026
#define IDS_NERPATH_STRING 16500
#define IDS_DATECREATED_STRING 18000
#define IDS_DATELASTWRITE_STRING 18001
@@ -642,9 +658,9 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
-#define _APS_NEXT_RESOURCE_VALUE 215
+#define _APS_NEXT_RESOURCE_VALUE 216
#define _APS_NEXT_COMMAND_VALUE 32818
-#define _APS_NEXT_CONTROL_VALUE 1314
+#define _APS_NEXT_CONTROL_VALUE 1322
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif