1 // Copyright (c) 2009 Satoshi Nakamoto
\r
2 // Distributed under the MIT/X11 software license, see the accompanying
\r
3 // file license.txt or http://www.opensource.org/licenses/mit-license.php.
\r
8 DECLARE_EVENT_TYPE(wxEVT_CROSSTHREADCALL, -1)
\r
9 DECLARE_EVENT_TYPE(wxEVT_REPLY1, -1)
\r
10 DECLARE_EVENT_TYPE(wxEVT_REPLY2, -1)
\r
11 DECLARE_EVENT_TYPE(wxEVT_REPLY3, -1)
\r
12 DECLARE_EVENT_TYPE(wxEVT_TABLEADDED, -1)
\r
13 DECLARE_EVENT_TYPE(wxEVT_TABLEUPDATED, -1)
\r
14 DECLARE_EVENT_TYPE(wxEVT_TABLEDELETED, -1)
\r
18 UICALL_ADDORDER = 1,
\r
25 extern map<string, string> mapArgs;
\r
28 extern int fShowGenerated;
\r
29 extern int fMinimizeToTray;
\r
30 extern int fMinimizeOnClose;
\r
34 extern void HandleCtrlA(wxKeyEvent& event);
\r
35 extern string DateTimeStr(int64 nTime);
\r
36 extern string FormatTxStatus(const CWalletTx& wtx);
\r
37 extern void CrossThreadCall(int nID, void* pdata);
\r
38 extern void MainFrameRepaint();
\r
39 extern void Shutdown(void* parg);
\r
46 class CMainFrame : public CMainFrameBase
\r
50 void OnClose(wxCloseEvent& event);
\r
51 void OnIconize(wxIconizeEvent& event);
\r
52 void OnMouseEvents(wxMouseEvent& event);
\r
53 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
54 void OnIdle(wxIdleEvent& event);
\r
55 void OnPaint(wxPaintEvent& event);
\r
56 void OnPaintListCtrl(wxPaintEvent& event);
\r
57 void OnMenuFileExit(wxCommandEvent& event);
\r
58 void OnMenuViewShowGenerated(wxCommandEvent& event);
\r
59 void OnUpdateUIViewShowGenerated(wxUpdateUIEvent& event);
\r
60 void OnMenuOptionsGenerate(wxCommandEvent& event);
\r
61 void OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event);
\r
62 void OnMenuOptionsChangeYourAddress(wxCommandEvent& event);
\r
63 void OnMenuOptionsOptions(wxCommandEvent& event);
\r
64 void OnMenuHelpAbout(wxCommandEvent& event);
\r
65 void OnButtonSend(wxCommandEvent& event);
\r
66 void OnButtonAddressBook(wxCommandEvent& event);
\r
67 void OnSetFocusAddress(wxFocusEvent& event);
\r
68 void OnMouseEventsAddress(wxMouseEvent& event);
\r
69 void OnButtonCopy(wxCommandEvent& event);
\r
70 void OnButtonChange(wxCommandEvent& event);
\r
71 void OnListColBeginDrag(wxListEvent& event);
\r
72 void OnListItemActivatedAllTransactions(wxListEvent& event);
\r
73 void OnListItemActivatedProductsSent(wxListEvent& event);
\r
74 void OnListItemActivatedOrdersSent(wxListEvent& event);
\r
75 void OnListItemActivatedOrdersReceived(wxListEvent& event);
\r
79 CMainFrame(wxWindow* parent);
\r
83 bool fRefreshListCtrl;
\r
84 bool fRefreshListCtrlRunning;
\r
85 bool fOnSetFocusAddress;
\r
86 CBlockIndex* pindexBestLast;
\r
87 set<uint256> setUnmaturedDisplayed;
\r
89 void OnCrossThreadCall(wxCommandEvent& event);
\r
90 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
91 bool DeleteLine(uint256 hashKey);
\r
92 void InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);
\r
93 void RefreshListCtrl();
\r
94 void RefreshStatus();
\r
100 class CTxDetailsDialog : public CTxDetailsDialogBase
\r
104 void OnButtonOK(wxCommandEvent& event);
\r
108 CTxDetailsDialog(wxWindow* parent, CWalletTx wtx);
\r
116 class COptionsDialog : public COptionsDialogBase
\r
120 void OnListBox(wxCommandEvent& event);
\r
121 void OnKillFocusTransactionFee(wxFocusEvent& event);
\r
122 void OnCheckBoxLimitProcessors(wxCommandEvent& event);
\r
123 void OnCheckBoxMinimizeToTray(wxCommandEvent& event);
\r
124 void OnButtonOK(wxCommandEvent& event);
\r
125 void OnButtonCancel(wxCommandEvent& event);
\r
126 void OnButtonApply(wxCommandEvent& event);
\r
130 COptionsDialog(wxWindow* parent);
\r
133 bool fTmpStartOnSystemStartup;
\r
134 bool fTmpMinimizeOnClose;
\r
135 void SelectPage(int nPage);
\r
140 class CAboutDialog : public CAboutDialogBase
\r
144 void OnButtonOK(wxCommandEvent& event);
\r
148 CAboutDialog(wxWindow* parent);
\r
153 class CSendDialog : public CSendDialogBase
\r
157 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
158 void OnTextAddress(wxCommandEvent& event);
\r
159 void OnKillFocusAmount(wxFocusEvent& event);
\r
160 void OnButtonAddressBook(wxCommandEvent& event);
\r
161 void OnButtonPaste(wxCommandEvent& event);
\r
162 void OnButtonSend(wxCommandEvent& event);
\r
163 void OnButtonCancel(wxCommandEvent& event);
\r
167 CSendDialog(wxWindow* parent, const wxString& strAddress="");
\r
171 string strFromSave;
\r
172 string strMessageSave;
\r
177 class CSendingDialog : public CSendingDialogBase
\r
181 void OnClose(wxCloseEvent& event);
\r
182 void OnButtonOK(wxCommandEvent& event);
\r
183 void OnButtonCancel(wxCommandEvent& event);
\r
184 void OnPaint(wxPaintEvent& event);
\r
188 CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn);
\r
206 bool Status(const string& str);
\r
207 bool Error(const string& str);
\r
208 void StartTransfer();
\r
209 void OnReply2(CDataStream& vRecv);
\r
210 void OnReply3(CDataStream& vRecv);
\r
213 void SendingDialogStartTransfer(void* parg);
\r
214 void SendingDialogOnReply2(void* parg, CDataStream& vRecv);
\r
215 void SendingDialogOnReply3(void* parg, CDataStream& vRecv);
\r
219 class CYourAddressDialog : public CYourAddressDialogBase
\r
223 void OnListEndLabelEdit(wxListEvent& event);
\r
224 void OnListItemSelected(wxListEvent& event);
\r
225 void OnListItemActivated(wxListEvent& event);
\r
226 void OnButtonRename(wxCommandEvent& event);
\r
227 void OnButtonNew(wxCommandEvent& event);
\r
228 void OnButtonCopy(wxCommandEvent& event);
\r
229 void OnButtonOK(wxCommandEvent& event);
\r
230 void OnButtonCancel(wxCommandEvent& event);
\r
231 void OnClose(wxCloseEvent& event);
\r
235 CYourAddressDialog(wxWindow* parent);
\r
236 CYourAddressDialog(wxWindow* parent, const string& strInitSelected);
\r
239 wxString GetAddress();
\r
244 class CAddressBookDialog : public CAddressBookDialogBase
\r
248 void OnListEndLabelEdit(wxListEvent& event);
\r
249 void OnListItemSelected(wxListEvent& event);
\r
250 void OnListItemActivated(wxListEvent& event);
\r
251 void OnButtonEdit(wxCommandEvent& event);
\r
252 void OnButtonDelete(wxCommandEvent& event);
\r
253 void OnButtonNew(wxCommandEvent& event);
\r
254 void OnButtonCopy(wxCommandEvent& event);
\r
255 void OnButtonOK(wxCommandEvent& event);
\r
256 void OnButtonCancel(wxCommandEvent& event);
\r
257 void OnClose(wxCloseEvent& event);
\r
261 CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, bool fSendingIn);
\r
265 wxString GetAddress();
\r
266 bool CheckIfMine(const string& strAddress, const string& strTitle);
\r
271 class CProductsDialog : public CProductsDialogBase
\r
275 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
276 void OnCombobox(wxCommandEvent& event);
\r
277 void OnButtonSearch(wxCommandEvent& event);
\r
278 void OnListItemActivated(wxListEvent& event);
\r
282 CProductsDialog(wxWindow* parent);
\r
285 vector<CProduct> m_vProduct;
\r
290 class CEditProductDialog : public CEditProductDialogBase
\r
294 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
295 void OnButtonDel0(wxCommandEvent& event);
\r
296 void OnButtonDel1(wxCommandEvent& event);
\r
297 void OnButtonDel2(wxCommandEvent& event);
\r
298 void OnButtonDel3(wxCommandEvent& event);
\r
299 void OnButtonDel4(wxCommandEvent& event);
\r
300 void OnButtonDel5(wxCommandEvent& event);
\r
301 void OnButtonDel6(wxCommandEvent& event);
\r
302 void OnButtonDel7(wxCommandEvent& event);
\r
303 void OnButtonDel8(wxCommandEvent& event);
\r
304 void OnButtonDel9(wxCommandEvent& event);
\r
305 void OnButtonDel10(wxCommandEvent& event);
\r
306 void OnButtonDel11(wxCommandEvent& event);
\r
307 void OnButtonDel12(wxCommandEvent& event);
\r
308 void OnButtonDel13(wxCommandEvent& event);
\r
309 void OnButtonDel14(wxCommandEvent& event);
\r
310 void OnButtonDel15(wxCommandEvent& event);
\r
311 void OnButtonDel16(wxCommandEvent& event);
\r
312 void OnButtonDel17(wxCommandEvent& event);
\r
313 void OnButtonDel18(wxCommandEvent& event);
\r
314 void OnButtonDel19(wxCommandEvent& event);
\r
315 void OnButtonAddField(wxCommandEvent& event);
\r
316 void OnButtonSend(wxCommandEvent& event);
\r
317 void OnButtonPreview(wxCommandEvent& event);
\r
318 void OnButtonCancel(wxCommandEvent& event);
\r
322 CEditProductDialog(wxWindow* parent);
\r
325 enum { FIELDS_MAX = 20 };
\r
326 wxTextCtrl* m_textCtrlLabel[FIELDS_MAX];
\r
327 wxTextCtrl* m_textCtrlField[FIELDS_MAX];
\r
328 wxButton* m_buttonDel[FIELDS_MAX];
\r
331 void ShowLine(int i, bool fShow=true);
\r
332 void OnButtonDel(wxCommandEvent& event, int n);
\r
333 void SetProduct(const CProduct& productIn);
\r
334 void GetProduct(CProduct& product);
\r
340 class CViewProductDialog : public CViewProductDialogBase
\r
344 void OnButtonSubmitForm(wxCommandEvent& event);
\r
345 void OnButtonCancelForm(wxCommandEvent& event);
\r
346 void OnButtonBack(wxCommandEvent& event);
\r
347 void OnButtonNext(wxCommandEvent& event);
\r
348 void OnButtonCancel(wxCommandEvent& event);
\r
352 CViewProductDialog(wxWindow* parent, const CProduct& productIn);
\r
353 ~CViewProductDialog();
\r
357 enum { FIELDS_MAX = 20 };
\r
358 wxStaticText* m_staticTextLabel[FIELDS_MAX];
\r
359 wxTextCtrl* m_textCtrlField[FIELDS_MAX];
\r
360 wxChoice* m_choiceField[FIELDS_MAX];
\r
362 void GetOrder(CWalletTx& order);
\r
363 void UpdateProductDisplay(bool fDetails);
\r
364 void OnReply1(wxCommandEvent& event);
\r
369 class CViewOrderDialog : public CViewOrderDialogBase
\r
373 void OnButtonOK(wxCommandEvent& event);
\r
377 CViewOrderDialog(wxWindow* parent, CWalletTx order, bool fReceived);
\r
385 class CEditReviewDialog : public CEditReviewDialogBase
\r
389 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
390 void OnButtonSubmit(wxCommandEvent& event);
\r
391 void OnButtonCancel(wxCommandEvent& event);
\r
395 CEditReviewDialog(wxWindow* parent);
\r
398 void GetReview(CReview& review);
\r
403 class CGetTextFromUserDialog : public CGetTextFromUserDialogBase
\r
407 void OnButtonOK(wxCommandEvent& event) { EndModal(true); }
\r
408 void OnButtonCancel(wxCommandEvent& event) { EndModal(false); }
\r
409 void OnClose(wxCloseEvent& event) { EndModal(false); }
\r
411 void OnKeyDown(wxKeyEvent& event)
\r
413 if (event.GetKeyCode() == '\r' || event.GetKeyCode() == WXK_NUMPAD_ENTER)
\r
416 HandleCtrlA(event);
\r
421 CGetTextFromUserDialog(wxWindow* parent,
\r
422 const string& strCaption,
\r
423 const string& strMessage1,
\r
424 const string& strValue1="",
\r
425 const string& strMessage2="",
\r
426 const string& strValue2="") : CGetTextFromUserDialogBase(parent, wxID_ANY, strCaption)
\r
428 m_staticTextMessage1->SetLabel(strMessage1);
\r
429 m_textCtrl1->SetValue(strValue1);
\r
430 if (!strMessage2.empty())
\r
432 m_staticTextMessage2->Show(true);
\r
433 m_staticTextMessage2->SetLabel(strMessage2);
\r
434 m_textCtrl2->Show(true);
\r
435 m_textCtrl2->SetValue(strValue2);
\r
436 SetSize(wxDefaultCoord, 180);
\r
441 string GetValue() { return (string)m_textCtrl1->GetValue(); }
\r
442 string GetValue1() { return (string)m_textCtrl1->GetValue(); }
\r
443 string GetValue2() { return (string)m_textCtrl2->GetValue(); }
\r
448 class CMyTaskBarIcon : public wxTaskBarIcon
\r
452 void OnLeftButtonDClick(wxTaskBarIconEvent& event);
\r
453 void OnMenuRestore(wxCommandEvent& event);
\r
454 void OnUpdateUIGenerate(wxUpdateUIEvent& event);
\r
455 void OnMenuGenerate(wxCommandEvent& event);
\r
456 void OnMenuExit(wxCommandEvent& event);
\r
459 CMyTaskBarIcon() : wxTaskBarIcon()
\r
464 void Show(bool fShow=true);
\r
467 void UpdateTooltip();
\r
468 virtual wxMenu* CreatePopupMenu();
\r
470 DECLARE_EVENT_TABLE()
\r