-// Copyright (c) 2009 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
-\r
-\r
-\r
-DECLARE_EVENT_TYPE(wxEVT_CROSSTHREADCALL, -1)\r
-DECLARE_EVENT_TYPE(wxEVT_REPLY1, -1)\r
-DECLARE_EVENT_TYPE(wxEVT_REPLY2, -1)\r
-DECLARE_EVENT_TYPE(wxEVT_REPLY3, -1)\r
-DECLARE_EVENT_TYPE(wxEVT_TABLEADDED, -1)\r
-DECLARE_EVENT_TYPE(wxEVT_TABLEUPDATED, -1)\r
-DECLARE_EVENT_TYPE(wxEVT_TABLEDELETED, -1)\r
-\r
-enum\r
-{\r
- UICALL_ADDORDER = 1,\r
- UICALL_UPDATEORDER,\r
-};\r
-\r
-\r
-\r
-extern void HandleCtrlA(wxKeyEvent& event);\r
-extern string DateTimeStr(int64 nTime);\r
-extern string FormatTxStatus(const CWalletTx& wtx);\r
-extern void CrossThreadCall(int nID, void* pdata);\r
-extern void MainFrameRepaint();\r
-extern void Shutdown(void* parg);\r
-void ApplyUISettings();\r
-void GenerateBitcoins(bool flag);\r
-\r
-// UI settings\r
-extern int minimizeToTray;\r
-extern int closeToTray;\r
-extern int startOnSysBoot;\r
-extern int askBeforeClosing;\r
-extern int alwaysShowTrayIcon;\r
-\r
-\r
-\r
-class CMainFrame : public CMainFrameBase\r
-{\r
-protected:\r
- // Event handlers\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 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 OnButtonCopy(wxCommandEvent& event);\r
- void OnButtonChange(wxCommandEvent& event);\r
- void OnListColBeginDrag(wxListEvent& event);\r
- void OnListItemActivatedAllTransactions(wxListEvent& event);\r
- void OnListItemActivatedProductsSent(wxListEvent& event);\r
- void OnListItemActivatedOrdersSent(wxListEvent& event);\r
- void OnListItemActivatedOrdersReceived(wxListEvent& event);\r
- void OnUpdateMenuGenerate( wxUpdateUIEvent& event );\r
- \r
-public:\r
- /** Constructor */\r
- CMainFrame(wxWindow* parent);\r
- ~CMainFrame();\r
-\r
- // Custom\r
- bool fRefreshListCtrl;\r
- bool fRefreshListCtrlRunning;\r
- bool fOnSetFocusAddress;\r
- CBlockIndex* pindexBestLast;\r
- set<uint256> setUnmaturedDisplayed;\r
-\r
- void OnCrossThreadCall(wxCommandEvent& event);\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
- void InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);\r
- void RefreshListCtrl();\r
- void RefreshStatus();\r
- void SendToTray();\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 COptionsPanelBitcoin : public COptionsPanelBitcoinBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnKillFocusTransactionFee( wxFocusEvent& event );\r
-\r
-public:\r
- /** Constructor */\r
- COptionsPanelBitcoin(wxWindow* parent);\r
-};\r
-\r
-\r
-\r
-class COptionsPanelUI : public COptionsPanelUIBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnOptionsChanged( wxCommandEvent& event );\r
-\r
-public:\r
- /** Constructor */\r
- COptionsPanelUI(wxWindow* parent);\r
-};\r
-\r
-\r
-\r
-class COptionsDialog : public COptionsDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void MenuSelChanged( wxTreeEvent& event );\r
- void OnButtonOK(wxCommandEvent& event);\r
- void OnButtonCancel(wxCommandEvent& event);\r
-\r
- // Panels\r
- COptionsPanelBitcoin* panelBitcoin;\r
- COptionsPanelUI* panelUI;\r
- wxPanel* currentPanel;\r
-public:\r
- /** Constructor */\r
- COptionsDialog(wxWindow* parent);\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
-\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
- string strStatus;\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 CYourAddressDialog : public CYourAddressDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnListEndLabelEdit(wxListEvent& event);\r
- void OnListItemSelected(wxListEvent& event);\r
- void OnListItemActivated(wxListEvent& event);\r
- void OnButtonRename(wxCommandEvent& event);\r
- void OnButtonNew(wxCommandEvent& event);\r
- void OnButtonCopy(wxCommandEvent& event);\r
- void OnButtonOK(wxCommandEvent& event);\r
- void OnButtonCancel(wxCommandEvent& event);\r
- void OnClose(wxCloseEvent& event);\r
-\r
-public:\r
- /** Constructor */\r
- CYourAddressDialog(wxWindow* parent);\r
- CYourAddressDialog(wxWindow* parent, const string& strInitSelected);\r
-\r
- // Custom\r
- wxString GetAddress();\r
-};\r
-\r
-\r
-\r
-class CAddressBookDialog : public CAddressBookDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnListEndLabelEdit(wxListEvent& event);\r
- void OnListItemSelected(wxListEvent& event);\r
- void OnListItemActivated(wxListEvent& event);\r
- void OnButtonEdit(wxCommandEvent& event);\r
- void OnButtonDelete(wxCommandEvent& event);\r
- void OnButtonNew(wxCommandEvent& event);\r
- void OnButtonCopy(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, bool fSendingIn);\r
-\r
- // Custom\r
- bool fSending;\r
- wxString GetAddress();\r
- bool CheckIfMine(const string& strAddress, const string& strTitle);\r
-};\r
-\r
-\r
-\r
-class CProductsDialog : public CProductsDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }\r
- void OnCombobox(wxCommandEvent& event);\r
- void OnButtonSearch(wxCommandEvent& event);\r
- void OnListItemActivated(wxListEvent& event);\r
-\r
-public:\r
- /** Constructor */\r
- CProductsDialog(wxWindow* parent);\r
-\r
- // Custom\r
- vector<CProduct> m_vProduct;\r
-};\r
-\r
-\r
-\r
-class CEditProductDialog : public CEditProductDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }\r
- void OnButtonDel0(wxCommandEvent& event);\r
- void OnButtonDel1(wxCommandEvent& event);\r
- void OnButtonDel2(wxCommandEvent& event);\r
- void OnButtonDel3(wxCommandEvent& event);\r
- void OnButtonDel4(wxCommandEvent& event);\r
- void OnButtonDel5(wxCommandEvent& event);\r
- void OnButtonDel6(wxCommandEvent& event);\r
- void OnButtonDel7(wxCommandEvent& event);\r
- void OnButtonDel8(wxCommandEvent& event);\r
- void OnButtonDel9(wxCommandEvent& event);\r
- void OnButtonDel10(wxCommandEvent& event);\r
- void OnButtonDel11(wxCommandEvent& event);\r
- void OnButtonDel12(wxCommandEvent& event);\r
- void OnButtonDel13(wxCommandEvent& event);\r
- void OnButtonDel14(wxCommandEvent& event);\r
- void OnButtonDel15(wxCommandEvent& event);\r
- void OnButtonDel16(wxCommandEvent& event);\r
- void OnButtonDel17(wxCommandEvent& event);\r
- void OnButtonDel18(wxCommandEvent& event);\r
- void OnButtonDel19(wxCommandEvent& event);\r
- void OnButtonAddField(wxCommandEvent& event);\r
- void OnButtonSend(wxCommandEvent& event);\r
- void OnButtonPreview(wxCommandEvent& event);\r
- void OnButtonCancel(wxCommandEvent& event);\r
-\r
-public:\r
- /** Constructor */\r
- CEditProductDialog(wxWindow* parent);\r
-\r
- // Custom\r
- enum { FIELDS_MAX = 20 };\r
- wxTextCtrl* m_textCtrlLabel[FIELDS_MAX];\r
- wxTextCtrl* m_textCtrlField[FIELDS_MAX];\r
- wxButton* m_buttonDel[FIELDS_MAX];\r
-\r
- void LayoutAll();\r
- void ShowLine(int i, bool fShow=true);\r
- void OnButtonDel(wxCommandEvent& event, int n);\r
- void SetProduct(const CProduct& productIn);\r
- void GetProduct(CProduct& product);\r
-\r
-};\r
-\r
-\r
-\r
-class CViewProductDialog : public CViewProductDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnButtonSubmitForm(wxCommandEvent& event);\r
- void OnButtonCancelForm(wxCommandEvent& event);\r
- void OnButtonBack(wxCommandEvent& event);\r
- void OnButtonNext(wxCommandEvent& event);\r
- void OnButtonCancel(wxCommandEvent& event);\r
-\r
-public:\r
- /** Constructor */\r
- CViewProductDialog(wxWindow* parent, const CProduct& productIn);\r
- ~CViewProductDialog();\r
-\r
- // Custom\r
- CProduct product;\r
- enum { FIELDS_MAX = 20 };\r
- wxStaticText* m_staticTextLabel[FIELDS_MAX];\r
- wxTextCtrl* m_textCtrlField[FIELDS_MAX];\r
- wxChoice* m_choiceField[FIELDS_MAX];\r
-\r
- void GetOrder(CWalletTx& order);\r
- void UpdateProductDisplay(bool fDetails);\r
- void OnReply1(wxCommandEvent& event);\r
-};\r
-\r
-\r
-\r
-class CViewOrderDialog : public CViewOrderDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnButtonOK(wxCommandEvent& event);\r
-\r
-public:\r
- /** Constructor */\r
- CViewOrderDialog(wxWindow* parent, CWalletTx order, bool fReceived);\r
-\r
- // Custom\r
- bool fReceived;\r
-};\r
-\r
-\r
-\r
-class CEditReviewDialog : public CEditReviewDialogBase\r
-{\r
-protected:\r
- // Event handlers\r
- void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }\r
- void OnButtonSubmit(wxCommandEvent& event);\r
- void OnButtonCancel(wxCommandEvent& event);\r
-\r
-public:\r
- /** Constructor */\r
- CEditReviewDialog(wxWindow* parent);\r
-\r
- // Custom\r
- void GetReview(CReview& review);\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
- m_staticTextMessage1->SetLabel(strMessage1);\r
- m_textCtrl1->SetValue(strValue1);\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
- SetSize(wxDefaultCoord, 180);\r
- }\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 CBitcoinTBIcon : public wxTaskBarIcon\r
-{\r
-protected:\r
- void Restore();\r
-\r
- // Event handlers\r
- void OnLeftButtonDClick(wxTaskBarIconEvent&);\r
- void OnMenuExit(wxCommandEvent&);\r
- void OnMenuGenerate(wxCommandEvent&);\r
- void OnMenuRestore(wxCommandEvent&);\r
-\r
-public:\r
- void Show();\r
- void Hide();\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()
+};