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 void InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);
\r
92 void RefreshListCtrl();
\r
93 void RefreshStatus();
\r
99 class CTxDetailsDialog : public CTxDetailsDialogBase
\r
103 void OnButtonOK(wxCommandEvent& event);
\r
107 CTxDetailsDialog(wxWindow* parent, CWalletTx wtx);
\r
115 class COptionsDialog : public COptionsDialogBase
\r
119 void OnListBox(wxCommandEvent& event);
\r
120 void OnKillFocusTransactionFee(wxFocusEvent& event);
\r
121 void OnCheckBoxLimitProcessors(wxCommandEvent& event);
\r
122 void OnCheckBoxMinimizeToTray(wxCommandEvent& event);
\r
123 void OnButtonOK(wxCommandEvent& event);
\r
124 void OnButtonCancel(wxCommandEvent& event);
\r
125 void OnButtonApply(wxCommandEvent& event);
\r
129 COptionsDialog(wxWindow* parent);
\r
132 bool fTmpStartOnSystemStartup;
\r
133 bool fTmpMinimizeOnClose;
\r
134 void SelectPage(int nPage);
\r
139 class CAboutDialog : public CAboutDialogBase
\r
143 void OnButtonOK(wxCommandEvent& event);
\r
147 CAboutDialog(wxWindow* parent);
\r
152 class CSendDialog : public CSendDialogBase
\r
156 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
157 void OnTextAddress(wxCommandEvent& event);
\r
158 void OnKillFocusAmount(wxFocusEvent& event);
\r
159 void OnButtonAddressBook(wxCommandEvent& event);
\r
160 void OnButtonPaste(wxCommandEvent& event);
\r
161 void OnButtonSend(wxCommandEvent& event);
\r
162 void OnButtonCancel(wxCommandEvent& event);
\r
166 CSendDialog(wxWindow* parent, const wxString& strAddress="");
\r
170 string strFromSave;
\r
171 string strMessageSave;
\r
176 class CSendingDialog : public CSendingDialogBase
\r
180 void OnClose(wxCloseEvent& event);
\r
181 void OnButtonOK(wxCommandEvent& event);
\r
182 void OnButtonCancel(wxCommandEvent& event);
\r
183 void OnPaint(wxPaintEvent& event);
\r
187 CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn);
\r
205 bool Status(const string& str);
\r
206 bool Error(const string& str);
\r
207 void StartTransfer();
\r
208 void OnReply2(CDataStream& vRecv);
\r
209 void OnReply3(CDataStream& vRecv);
\r
212 void SendingDialogStartTransfer(void* parg);
\r
213 void SendingDialogOnReply2(void* parg, CDataStream& vRecv);
\r
214 void SendingDialogOnReply3(void* parg, CDataStream& vRecv);
\r
218 class CYourAddressDialog : public CYourAddressDialogBase
\r
222 void OnListEndLabelEdit(wxListEvent& event);
\r
223 void OnListItemSelected(wxListEvent& event);
\r
224 void OnListItemActivated(wxListEvent& event);
\r
225 void OnButtonRename(wxCommandEvent& event);
\r
226 void OnButtonNew(wxCommandEvent& event);
\r
227 void OnButtonCopy(wxCommandEvent& event);
\r
228 void OnButtonOK(wxCommandEvent& event);
\r
229 void OnButtonCancel(wxCommandEvent& event);
\r
230 void OnClose(wxCloseEvent& event);
\r
234 CYourAddressDialog(wxWindow* parent);
\r
235 CYourAddressDialog(wxWindow* parent, const string& strInitSelected);
\r
238 wxString GetAddress();
\r
243 class CAddressBookDialog : public CAddressBookDialogBase
\r
247 void OnListEndLabelEdit(wxListEvent& event);
\r
248 void OnListItemSelected(wxListEvent& event);
\r
249 void OnListItemActivated(wxListEvent& event);
\r
250 void OnButtonEdit(wxCommandEvent& event);
\r
251 void OnButtonDelete(wxCommandEvent& event);
\r
252 void OnButtonNew(wxCommandEvent& event);
\r
253 void OnButtonCopy(wxCommandEvent& event);
\r
254 void OnButtonOK(wxCommandEvent& event);
\r
255 void OnButtonCancel(wxCommandEvent& event);
\r
256 void OnClose(wxCloseEvent& event);
\r
260 CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, bool fSendingIn);
\r
264 wxString GetAddress();
\r
265 bool CheckIfMine(const string& strAddress, const string& strTitle);
\r
270 class CProductsDialog : public CProductsDialogBase
\r
274 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
275 void OnCombobox(wxCommandEvent& event);
\r
276 void OnButtonSearch(wxCommandEvent& event);
\r
277 void OnListItemActivated(wxListEvent& event);
\r
281 CProductsDialog(wxWindow* parent);
\r
284 vector<CProduct> m_vProduct;
\r
289 class CEditProductDialog : public CEditProductDialogBase
\r
293 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
294 void OnButtonDel0(wxCommandEvent& event);
\r
295 void OnButtonDel1(wxCommandEvent& event);
\r
296 void OnButtonDel2(wxCommandEvent& event);
\r
297 void OnButtonDel3(wxCommandEvent& event);
\r
298 void OnButtonDel4(wxCommandEvent& event);
\r
299 void OnButtonDel5(wxCommandEvent& event);
\r
300 void OnButtonDel6(wxCommandEvent& event);
\r
301 void OnButtonDel7(wxCommandEvent& event);
\r
302 void OnButtonDel8(wxCommandEvent& event);
\r
303 void OnButtonDel9(wxCommandEvent& event);
\r
304 void OnButtonDel10(wxCommandEvent& event);
\r
305 void OnButtonDel11(wxCommandEvent& event);
\r
306 void OnButtonDel12(wxCommandEvent& event);
\r
307 void OnButtonDel13(wxCommandEvent& event);
\r
308 void OnButtonDel14(wxCommandEvent& event);
\r
309 void OnButtonDel15(wxCommandEvent& event);
\r
310 void OnButtonDel16(wxCommandEvent& event);
\r
311 void OnButtonDel17(wxCommandEvent& event);
\r
312 void OnButtonDel18(wxCommandEvent& event);
\r
313 void OnButtonDel19(wxCommandEvent& event);
\r
314 void OnButtonAddField(wxCommandEvent& event);
\r
315 void OnButtonSend(wxCommandEvent& event);
\r
316 void OnButtonPreview(wxCommandEvent& event);
\r
317 void OnButtonCancel(wxCommandEvent& event);
\r
321 CEditProductDialog(wxWindow* parent);
\r
324 enum { FIELDS_MAX = 20 };
\r
325 wxTextCtrl* m_textCtrlLabel[FIELDS_MAX];
\r
326 wxTextCtrl* m_textCtrlField[FIELDS_MAX];
\r
327 wxButton* m_buttonDel[FIELDS_MAX];
\r
330 void ShowLine(int i, bool fShow=true);
\r
331 void OnButtonDel(wxCommandEvent& event, int n);
\r
332 void SetProduct(const CProduct& productIn);
\r
333 void GetProduct(CProduct& product);
\r
339 class CViewProductDialog : public CViewProductDialogBase
\r
343 void OnButtonSubmitForm(wxCommandEvent& event);
\r
344 void OnButtonCancelForm(wxCommandEvent& event);
\r
345 void OnButtonBack(wxCommandEvent& event);
\r
346 void OnButtonNext(wxCommandEvent& event);
\r
347 void OnButtonCancel(wxCommandEvent& event);
\r
351 CViewProductDialog(wxWindow* parent, const CProduct& productIn);
\r
352 ~CViewProductDialog();
\r
356 enum { FIELDS_MAX = 20 };
\r
357 wxStaticText* m_staticTextLabel[FIELDS_MAX];
\r
358 wxTextCtrl* m_textCtrlField[FIELDS_MAX];
\r
359 wxChoice* m_choiceField[FIELDS_MAX];
\r
361 void GetOrder(CWalletTx& order);
\r
362 void UpdateProductDisplay(bool fDetails);
\r
363 void OnReply1(wxCommandEvent& event);
\r
368 class CViewOrderDialog : public CViewOrderDialogBase
\r
372 void OnButtonOK(wxCommandEvent& event);
\r
376 CViewOrderDialog(wxWindow* parent, CWalletTx order, bool fReceived);
\r
384 class CEditReviewDialog : public CEditReviewDialogBase
\r
388 void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
\r
389 void OnButtonSubmit(wxCommandEvent& event);
\r
390 void OnButtonCancel(wxCommandEvent& event);
\r
394 CEditReviewDialog(wxWindow* parent);
\r
397 void GetReview(CReview& review);
\r
402 class CGetTextFromUserDialog : public CGetTextFromUserDialogBase
\r
406 void OnButtonOK(wxCommandEvent& event) { EndModal(true); }
\r
407 void OnButtonCancel(wxCommandEvent& event) { EndModal(false); }
\r
408 void OnClose(wxCloseEvent& event) { EndModal(false); }
\r
410 void OnKeyDown(wxKeyEvent& event)
\r
412 if (event.GetKeyCode() == '\r' || event.GetKeyCode() == WXK_NUMPAD_ENTER)
\r
415 HandleCtrlA(event);
\r
420 CGetTextFromUserDialog(wxWindow* parent,
\r
421 const string& strCaption,
\r
422 const string& strMessage1,
\r
423 const string& strValue1="",
\r
424 const string& strMessage2="",
\r
425 const string& strValue2="") : CGetTextFromUserDialogBase(parent, wxID_ANY, strCaption)
\r
427 m_staticTextMessage1->SetLabel(strMessage1);
\r
428 m_textCtrl1->SetValue(strValue1);
\r
429 if (!strMessage2.empty())
\r
431 m_staticTextMessage2->Show(true);
\r
432 m_staticTextMessage2->SetLabel(strMessage2);
\r
433 m_textCtrl2->Show(true);
\r
434 m_textCtrl2->SetValue(strValue2);
\r
435 SetSize(wxDefaultCoord, 180);
\r
440 string GetValue() { return (string)m_textCtrl1->GetValue(); }
\r
441 string GetValue1() { return (string)m_textCtrl1->GetValue(); }
\r
442 string GetValue2() { return (string)m_textCtrl2->GetValue(); }
\r
447 class CMyTaskBarIcon : public wxTaskBarIcon
\r
451 void OnLeftButtonDClick(wxTaskBarIconEvent& event);
\r
452 void OnMenuRestore(wxCommandEvent& event);
\r
453 void OnUpdateUIGenerate(wxUpdateUIEvent& event);
\r
454 void OnMenuGenerate(wxCommandEvent& event);
\r
455 void OnMenuExit(wxCommandEvent& event);
\r
458 CMyTaskBarIcon() : wxTaskBarIcon()
\r
463 void Show(bool fShow=true);
\r
466 void UpdateTooltip();
\r
467 virtual wxMenu* CreatePopupMenu();
\r
469 DECLARE_EVENT_TABLE()
\r