Better wording for transaction fee notification messages
[novacoin.git] / ui.h
diff --git a/ui.h b/ui.h
index 1fb6f26..af97d5a 100644 (file)
--- a/ui.h
+++ b/ui.h
-// Copyright (c) 2009-2010 Satoshi Nakamoto\r
-// Distributed under the MIT/X11 software license, see the accompanying\r
-// file license.txt or http://www.opensource.org/licenses/mit-license.php.\r
-\r
-DECLARE_EVENT_TYPE(wxEVT_UITHREADCALL, -1)\r
-\r
-\r
-\r
-extern wxLocale g_locale;\r
-\r
-\r
-\r
-void HandleCtrlA(wxKeyEvent& event);\r
-string FormatTxStatus(const CWalletTx& wtx);\r
-void UIThreadCall(boost::function0<void>);\r
-int ThreadSafeMessageBox(const string& message, const string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1);\r
-bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent);\r
-void CalledSetStatusBar(const string& strText, int nField);\r
-void MainFrameRepaint();\r
-void CreateMainWindow();\r
-void SetStartOnSystemStartup(bool fAutoStart);\r
-\r
-\r
-\r
-\r
-inline int MyMessageBox(const wxString& message, const wxString& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)\r
-{\r
-#ifdef GUI\r
-    if (!fDaemon)\r
-        return wxMessageBox(message, caption, style, parent, x, y);\r
-#endif\r
-    printf("wxMessageBox %s: %s\n", string(caption).c_str(), string(message).c_str());\r
-    fprintf(stderr, "%s: %s\n", string(caption).c_str(), string(message).c_str());\r
-    return wxOK;\r
-}\r
-#define wxMessageBox  MyMessageBox\r
-\r
-\r
-\r
-\r
-\r
-\r
-class CMainFrame : public CMainFrameBase\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnNotebookPageChanged(wxNotebookEvent& event);\r
-    void OnClose(wxCloseEvent& event);\r
-    void OnIconize(wxIconizeEvent& event);\r
-    void OnMouseEvents(wxMouseEvent& event);\r
-    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }\r
-    void OnIdle(wxIdleEvent& event);\r
-    void OnPaint(wxPaintEvent& event);\r
-    void OnPaintListCtrl(wxPaintEvent& event);\r
-    void OnMenuFileExit(wxCommandEvent& event);\r
-    void OnMenuOptionsGenerate(wxCommandEvent& event);\r
-    void OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event);\r
-    void OnMenuOptionsChangeYourAddress(wxCommandEvent& event);\r
-    void OnMenuOptionsOptions(wxCommandEvent& event);\r
-    void OnMenuHelpAbout(wxCommandEvent& event);\r
-    void OnButtonSend(wxCommandEvent& event);\r
-    void OnButtonAddressBook(wxCommandEvent& event);\r
-    void OnSetFocusAddress(wxFocusEvent& event);\r
-    void OnMouseEventsAddress(wxMouseEvent& event);\r
-    void OnButtonNew(wxCommandEvent& event);\r
-    void OnButtonCopy(wxCommandEvent& event);\r
-    void OnListColBeginDrag(wxListEvent& event);\r
-    void OnListItemActivated(wxListEvent& event);\r
-    void OnListItemActivatedProductsSent(wxListEvent& event);\r
-    void OnListItemActivatedOrdersSent(wxListEvent& event);\r
-    void OnListItemActivatedOrdersReceived(wxListEvent& event);\r
-       \r
-public:\r
-    /** Constructor */\r
-    CMainFrame(wxWindow* parent);\r
-    ~CMainFrame();\r
-\r
-    // Custom\r
-    enum\r
-    {\r
-        ALL = 0,\r
-        SENTRECEIVED = 1,\r
-        SENT = 2,\r
-        RECEIVED = 3,\r
-    };\r
-    int nPage;\r
-    wxListCtrl* m_listCtrl;\r
-    bool fShowGenerated;\r
-    bool fShowSent;\r
-    bool fShowReceived;\r
-    bool fRefreshListCtrl;\r
-    bool fRefreshListCtrlRunning;\r
-    bool fOnSetFocusAddress;\r
-    unsigned int nListViewUpdated;\r
-    bool fRefresh;\r
-\r
-    void OnUIThreadCall(wxCommandEvent& event);\r
-    int GetSortIndex(const string& strSort);\r
-    void InsertLine(bool fNew, int nIndex, uint256 hashKey, string strSort, const wxString& str1, const wxString& str2, const wxString& str3, const wxString& str4, const wxString& str5);\r
-    bool DeleteLine(uint256 hashKey);\r
-    bool InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);\r
-    void RefreshListCtrl();\r
-    void RefreshStatusColumn();\r
-};\r
-\r
-\r
-\r
-\r
-class CTxDetailsDialog : public CTxDetailsDialogBase\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnButtonOK(wxCommandEvent& event);\r
-\r
-public:\r
-    /** Constructor */\r
-    CTxDetailsDialog(wxWindow* parent, CWalletTx wtx);\r
-\r
-    // State\r
-    CWalletTx wtx;\r
-};\r
-\r
-\r
-\r
-class COptionsDialog : public COptionsDialogBase\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnListBox(wxCommandEvent& event);\r
-    void OnKillFocusTransactionFee(wxFocusEvent& event);\r
-    void OnCheckBoxLimitProcessors(wxCommandEvent& event);\r
-    void OnCheckBoxUseProxy(wxCommandEvent& event);\r
-    void OnKillFocusProxy(wxFocusEvent& event);\r
-\r
-    void OnButtonOK(wxCommandEvent& event);\r
-    void OnButtonCancel(wxCommandEvent& event);\r
-    void OnButtonApply(wxCommandEvent& event);\r
-\r
-public:\r
-    /** Constructor */\r
-    COptionsDialog(wxWindow* parent);\r
-\r
-    // Custom\r
-    bool fTmpStartOnSystemStartup;\r
-    bool fTmpMinimizeOnClose;\r
-    void SelectPage(int nPage);\r
-    CAddress GetProxyAddr();\r
-};\r
-\r
-\r
-\r
-class CAboutDialog : public CAboutDialogBase\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnButtonOK(wxCommandEvent& event);\r
-\r
-public:\r
-    /** Constructor */\r
-    CAboutDialog(wxWindow* parent);\r
-};\r
-\r
-\r
-\r
-class CSendDialog : public CSendDialogBase\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }\r
-    void OnTextAddress(wxCommandEvent& event);\r
-    void OnKillFocusAmount(wxFocusEvent& event);\r
-    void OnButtonAddressBook(wxCommandEvent& event);\r
-    void OnButtonPaste(wxCommandEvent& event);\r
-    void OnButtonSend(wxCommandEvent& event);\r
-    void OnButtonCancel(wxCommandEvent& event);\r
-       \r
-public:\r
-    /** Constructor */\r
-    CSendDialog(wxWindow* parent, const wxString& strAddress="");\r
-\r
-    // Custom\r
-    bool fEnabledPrev;\r
-    string strFromSave;\r
-    string strMessageSave;\r
-};\r
-\r
-\r
-\r
-class CSendingDialog : public CSendingDialogBase\r
-{\r
-public:\r
-    // Event handlers\r
-    void OnClose(wxCloseEvent& event);\r
-    void OnButtonOK(wxCommandEvent& event);\r
-    void OnButtonCancel(wxCommandEvent& event);\r
-    void OnPaint(wxPaintEvent& event);\r
-       \r
-public:\r
-    /** Constructor */\r
-    CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn);\r
-    ~CSendingDialog();\r
-\r
-    // State\r
-    CAddress addr;\r
-    int64 nPrice;\r
-    CWalletTx wtx;\r
-    wxDateTime start;\r
-    char pszStatus[10000];\r
-    bool fCanCancel;\r
-    bool fAbort;\r
-    bool fSuccess;\r
-    bool fUIDone;\r
-    bool fWorkDone;\r
-\r
-    void Close();\r
-    void Repaint();\r
-    bool Status();\r
-    bool Status(const string& str);\r
-    bool Error(const string& str);\r
-    void StartTransfer();\r
-    void OnReply2(CDataStream& vRecv);\r
-    void OnReply3(CDataStream& vRecv);\r
-};\r
-\r
-void SendingDialogStartTransfer(void* parg);\r
-void SendingDialogOnReply2(void* parg, CDataStream& vRecv);\r
-void SendingDialogOnReply3(void* parg, CDataStream& vRecv);\r
-\r
-\r
-\r
-class CAddressBookDialog : public CAddressBookDialogBase\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnNotebookPageChanged(wxNotebookEvent& event);\r
-    void OnListEndLabelEdit(wxListEvent& event);\r
-    void OnListItemSelected(wxListEvent& event);\r
-    void OnListItemActivated(wxListEvent& event);\r
-    void OnButtonDelete(wxCommandEvent& event);\r
-    void OnButtonCopy(wxCommandEvent& event);\r
-    void OnButtonEdit(wxCommandEvent& event);\r
-    void OnButtonNew(wxCommandEvent& event);\r
-    void OnButtonOK(wxCommandEvent& event);\r
-    void OnButtonCancel(wxCommandEvent& event);\r
-    void OnClose(wxCloseEvent& event);\r
-\r
-public:\r
-    /** Constructor */\r
-    CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, int nPageIn, bool fDuringSendIn);\r
-\r
-    // Custom\r
-    enum\r
-    {\r
-        SENDING = 0,\r
-        RECEIVING = 1,\r
-    };\r
-    int nPage;\r
-    wxListCtrl* m_listCtrl;\r
-    bool fDuringSend;\r
-    wxString GetAddress();\r
-    wxString GetSelectedAddress();\r
-    wxString GetSelectedSendingAddress();\r
-    wxString GetSelectedReceivingAddress();\r
-    bool CheckIfMine(const string& strAddress, const string& strTitle);\r
-};\r
-\r
-\r
-\r
-class CGetTextFromUserDialog : public CGetTextFromUserDialogBase\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnButtonOK(wxCommandEvent& event)     { EndModal(true); }\r
-    void OnButtonCancel(wxCommandEvent& event) { EndModal(false); }\r
-    void OnClose(wxCloseEvent& event)          { EndModal(false); }\r
-\r
-    void OnKeyDown(wxKeyEvent& event)\r
-    {\r
-        if (event.GetKeyCode() == '\r' || event.GetKeyCode() == WXK_NUMPAD_ENTER)\r
-            EndModal(true);\r
-        else\r
-            HandleCtrlA(event);\r
-    }\r
-\r
-public:\r
-    /** Constructor */\r
-    CGetTextFromUserDialog(wxWindow* parent,\r
-                           const string& strCaption,\r
-                           const string& strMessage1,\r
-                           const string& strValue1="",\r
-                           const string& strMessage2="",\r
-                           const string& strValue2="") : CGetTextFromUserDialogBase(parent, wxID_ANY, strCaption)\r
-    {\r
-        int x = GetSize().GetWidth();\r
-        int y = GetSize().GetHeight();\r
-        m_staticTextMessage1->SetLabel(strMessage1);\r
-        m_textCtrl1->SetValue(strValue1);\r
-        y += wxString(strMessage1).Freq('\n') * 14;\r
-        if (!strMessage2.empty())\r
-        {\r
-            m_staticTextMessage2->Show(true);\r
-            m_staticTextMessage2->SetLabel(strMessage2);\r
-            m_textCtrl2->Show(true);\r
-            m_textCtrl2->SetValue(strValue2);\r
-            y += 46 + wxString(strMessage2).Freq('\n') * 14;\r
-        }\r
-#ifndef __WXMSW__\r
-        x *= 1.14;\r
-        y *= 1.14;\r
-#endif\r
-        SetSize(x, y);\r
-    }\r
-\r
-    // Custom\r
-    string GetValue()  { return (string)m_textCtrl1->GetValue(); }\r
-    string GetValue1() { return (string)m_textCtrl1->GetValue(); }\r
-    string GetValue2() { return (string)m_textCtrl2->GetValue(); }\r
-};\r
-\r
-\r
-\r
-class CMyTaskBarIcon : public wxTaskBarIcon\r
-{\r
-protected:\r
-    // Event handlers\r
-    void OnLeftButtonDClick(wxTaskBarIconEvent& event);\r
-    void OnMenuRestore(wxCommandEvent& event);\r
-    void OnMenuOptions(wxCommandEvent& event);\r
-    void OnUpdateUIGenerate(wxUpdateUIEvent& event);\r
-    void OnMenuGenerate(wxCommandEvent& event);\r
-    void OnMenuExit(wxCommandEvent& event);\r
-\r
-public:\r
-    CMyTaskBarIcon() : wxTaskBarIcon()\r
-    {\r
-        Show(true);\r
-    }\r
-\r
-    void Show(bool fShow=true);\r
-    void Hide();\r
-    void Restore();\r
-    void UpdateTooltip();\r
-    virtual wxMenu* CreatePopupMenu();\r
-\r
-DECLARE_EVENT_TABLE()\r
-};\r
+// Copyright (c) 2009-2010 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+DECLARE_EVENT_TYPE(wxEVT_UITHREADCALL, -1)
+
+
+
+extern wxLocale g_locale;
+
+
+
+void HandleCtrlA(wxKeyEvent& event);
+void UIThreadCall(boost::function0<void>);
+int ThreadSafeMessageBox(const string& message, const string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1);
+bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent);
+void CalledSetStatusBar(const string& strText, int nField);
+void MainFrameRepaint();
+void CreateMainWindow();
+void SetStartOnSystemStartup(bool fAutoStart);
+
+
+
+
+inline int MyMessageBox(const wxString& message, const wxString& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)
+{
+#ifdef GUI
+    if (!fDaemon)
+        return wxMessageBox(message, caption, style, parent, x, y);
+#endif
+    printf("wxMessageBox %s: %s\n", string(caption).c_str(), string(message).c_str());
+    fprintf(stderr, "%s: %s\n", string(caption).c_str(), string(message).c_str());
+    return wxOK;
+}
+#define wxMessageBox  MyMessageBox
+
+
+
+
+
+
+class CMainFrame : public CMainFrameBase
+{
+protected:
+    // Event handlers
+    void OnNotebookPageChanged(wxNotebookEvent& event);
+    void OnClose(wxCloseEvent& event);
+    void OnIconize(wxIconizeEvent& event);
+    void OnMouseEvents(wxMouseEvent& event);
+    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
+    void OnIdle(wxIdleEvent& event);
+    void OnPaint(wxPaintEvent& event);
+    void OnPaintListCtrl(wxPaintEvent& event);
+    void OnMenuFileExit(wxCommandEvent& event);
+    void OnMenuOptionsGenerate(wxCommandEvent& event);
+    void OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event);
+    void OnMenuOptionsChangeYourAddress(wxCommandEvent& event);
+    void OnMenuOptionsOptions(wxCommandEvent& event);
+    void OnMenuHelpAbout(wxCommandEvent& event);
+    void OnButtonSend(wxCommandEvent& event);
+    void OnButtonAddressBook(wxCommandEvent& event);
+    void OnSetFocusAddress(wxFocusEvent& event);
+    void OnMouseEventsAddress(wxMouseEvent& event);
+    void OnButtonNew(wxCommandEvent& event);
+    void OnButtonCopy(wxCommandEvent& event);
+    void OnListColBeginDrag(wxListEvent& event);
+    void OnListItemActivated(wxListEvent& event);
+    void OnListItemActivatedProductsSent(wxListEvent& event);
+    void OnListItemActivatedOrdersSent(wxListEvent& event);
+    void OnListItemActivatedOrdersReceived(wxListEvent& event);
+       
+public:
+    /** Constructor */
+    CMainFrame(wxWindow* parent);
+    ~CMainFrame();
+
+    // Custom
+    enum
+    {
+        ALL = 0,
+        SENTRECEIVED = 1,
+        SENT = 2,
+        RECEIVED = 3,
+    };
+    int nPage;
+    wxListCtrl* m_listCtrl;
+    bool fShowGenerated;
+    bool fShowSent;
+    bool fShowReceived;
+    bool fRefreshListCtrl;
+    bool fRefreshListCtrlRunning;
+    bool fOnSetFocusAddress;
+    unsigned int nListViewUpdated;
+    bool fRefresh;
+
+    void OnUIThreadCall(wxCommandEvent& event);
+    int GetSortIndex(const string& strSort);
+    void InsertLine(bool fNew, int nIndex, uint256 hashKey, string strSort, const wxColour& colour, const wxString& str1, const wxString& str2, const wxString& str3, const wxString& str4, const wxString& str5);
+    bool DeleteLine(uint256 hashKey);
+    bool InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);
+    void RefreshListCtrl();
+    void RefreshStatusColumn();
+};
+
+
+
+
+class CTxDetailsDialog : public CTxDetailsDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonOK(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CTxDetailsDialog(wxWindow* parent, CWalletTx wtx);
+
+    // State
+    CWalletTx wtx;
+};
+
+
+
+class COptionsDialog : public COptionsDialogBase
+{
+protected:
+    // Event handlers
+    void OnListBox(wxCommandEvent& event);
+    void OnKillFocusTransactionFee(wxFocusEvent& event);
+    void OnCheckBoxLimitProcessors(wxCommandEvent& event);
+    void OnCheckBoxUseProxy(wxCommandEvent& event);
+    void OnKillFocusProxy(wxFocusEvent& event);
+
+    void OnButtonOK(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+    void OnButtonApply(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    COptionsDialog(wxWindow* parent);
+
+    // Custom
+    bool fTmpStartOnSystemStartup;
+    bool fTmpMinimizeOnClose;
+    void SelectPage(int nPage);
+    CAddress GetProxyAddr();
+};
+
+
+
+class CAboutDialog : public CAboutDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonOK(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CAboutDialog(wxWindow* parent);
+};
+
+
+
+class CSendDialog : public CSendDialogBase
+{
+protected:
+    // Event handlers
+    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
+    void OnKillFocusAmount(wxFocusEvent& event);
+    void OnButtonAddressBook(wxCommandEvent& event);
+    void OnButtonPaste(wxCommandEvent& event);
+    void OnButtonSend(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+       
+public:
+    /** Constructor */
+    CSendDialog(wxWindow* parent, const wxString& strAddress="");
+
+    // Custom
+    bool fEnabledPrev;
+    string strFromSave;
+    string strMessageSave;
+};
+
+
+
+class CSendingDialog : public CSendingDialogBase
+{
+public:
+    // Event handlers
+    void OnClose(wxCloseEvent& event);
+    void OnButtonOK(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+    void OnPaint(wxPaintEvent& event);
+       
+public:
+    /** Constructor */
+    CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn);
+    ~CSendingDialog();
+
+    // State
+    CAddress addr;
+    int64 nPrice;
+    CWalletTx wtx;
+    wxDateTime start;
+    char pszStatus[10000];
+    bool fCanCancel;
+    bool fAbort;
+    bool fSuccess;
+    bool fUIDone;
+    bool fWorkDone;
+
+    void Close();
+    void Repaint();
+    bool Status();
+    bool Status(const string& str);
+    bool Error(const string& str);
+    void StartTransfer();
+    void OnReply2(CDataStream& vRecv);
+    void OnReply3(CDataStream& vRecv);
+};
+
+void SendingDialogStartTransfer(void* parg);
+void SendingDialogOnReply2(void* parg, CDataStream& vRecv);
+void SendingDialogOnReply3(void* parg, CDataStream& vRecv);
+
+
+
+class CAddressBookDialog : public CAddressBookDialogBase
+{
+protected:
+    // Event handlers
+    void OnNotebookPageChanged(wxNotebookEvent& event);
+    void OnListEndLabelEdit(wxListEvent& event);
+    void OnListItemSelected(wxListEvent& event);
+    void OnListItemActivated(wxListEvent& event);
+    void OnButtonDelete(wxCommandEvent& event);
+    void OnButtonCopy(wxCommandEvent& event);
+    void OnButtonEdit(wxCommandEvent& event);
+    void OnButtonNew(wxCommandEvent& event);
+    void OnButtonOK(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+    void OnClose(wxCloseEvent& event);
+
+public:
+    /** Constructor */
+    CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, int nPageIn, bool fDuringSendIn);
+
+    // Custom
+    enum
+    {
+        SENDING = 0,
+        RECEIVING = 1,
+    };
+    int nPage;
+    wxListCtrl* m_listCtrl;
+    bool fDuringSend;
+    wxString GetAddress();
+    wxString GetSelectedAddress();
+    wxString GetSelectedSendingAddress();
+    wxString GetSelectedReceivingAddress();
+    bool CheckIfMine(const string& strAddress, const string& strTitle);
+};
+
+
+
+class CGetTextFromUserDialog : public CGetTextFromUserDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonOK(wxCommandEvent& event)     { EndModal(true); }
+    void OnButtonCancel(wxCommandEvent& event) { EndModal(false); }
+    void OnClose(wxCloseEvent& event)          { EndModal(false); }
+
+    void OnKeyDown(wxKeyEvent& event)
+    {
+        if (event.GetKeyCode() == '\r' || event.GetKeyCode() == WXK_NUMPAD_ENTER)
+            EndModal(true);
+        else
+            HandleCtrlA(event);
+    }
+
+public:
+    /** Constructor */
+    CGetTextFromUserDialog(wxWindow* parent,
+                           const string& strCaption,
+                           const string& strMessage1,
+                           const string& strValue1="",
+                           const string& strMessage2="",
+                           const string& strValue2="") : CGetTextFromUserDialogBase(parent, wxID_ANY, strCaption)
+    {
+        int x = GetSize().GetWidth();
+        int y = GetSize().GetHeight();
+        m_staticTextMessage1->SetLabel(strMessage1);
+        m_textCtrl1->SetValue(strValue1);
+        y += wxString(strMessage1).Freq('\n') * 14;
+        if (!strMessage2.empty())
+        {
+            m_staticTextMessage2->Show(true);
+            m_staticTextMessage2->SetLabel(strMessage2);
+            m_textCtrl2->Show(true);
+            m_textCtrl2->SetValue(strValue2);
+            y += 46 + wxString(strMessage2).Freq('\n') * 14;
+        }
+#ifndef __WXMSW__
+        x = x * 114 / 100;
+        y = y * 114 / 100;
+#endif
+        SetSize(x, y);
+    }
+
+    // Custom
+    string GetValue()  { return (string)m_textCtrl1->GetValue(); }
+    string GetValue1() { return (string)m_textCtrl1->GetValue(); }
+    string GetValue2() { return (string)m_textCtrl2->GetValue(); }
+};
+
+
+
+class CMyTaskBarIcon : public wxTaskBarIcon
+{
+protected:
+    // Event handlers
+    void OnLeftButtonDClick(wxTaskBarIconEvent& event);
+    void OnMenuRestore(wxCommandEvent& event);
+    void OnMenuOptions(wxCommandEvent& event);
+    void OnUpdateUIGenerate(wxUpdateUIEvent& event);
+    void OnMenuGenerate(wxCommandEvent& event);
+    void OnMenuExit(wxCommandEvent& event);
+
+public:
+    CMyTaskBarIcon() : wxTaskBarIcon()
+    {
+        Show(true);
+    }
+
+    void Show(bool fShow=true);
+    void Hide();
+    void Restore();
+    void UpdateTooltip();
+    virtual wxMenu* CreatePopupMenu();
+
+DECLARE_EVENT_TABLE()
+};