-// Copyright (c) 2009 Satoshi Nakamoto\r
+// 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
+#if wxUSE_GUI\r
+static const bool fGUI=true;\r
+#else\r
+static const bool fGUI=false;\r
+#endif\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
+#if wxUSE_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
-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
+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
\r
\r
-extern map<string, string> mapArgs;\r
\r
-// Settings\r
-extern int fShowGenerated;\r
-extern int fMinimizeToTray;\r
-extern int fMinimizeOnClose;\r
\r
\r
+#if !wxUSE_GUI\r
+inline int ThreadSafeMessageBox(const string& message, const string& caption, int style, wxWindow* parent, int x, int y)\r
+{\r
+ return MyMessageBox(message, caption, style, parent, x, y);\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
+inline bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent)\r
+{\r
+ return true;\r
+}\r
\r
+inline void CalledSetStatusBar(const string& strText, int nField)\r
+{\r
+}\r
+\r
+inline void UIThreadCall(boost::function0<void> fn)\r
+{\r
+}\r
+\r
+inline void MainFrameRepaint()\r
+{\r
+}\r
+\r
+inline void CreateMainWindow()\r
+{\r
+}\r
+#else // wxUSE_GUI\r
\r
\r
\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 OnPaint(wxPaintEvent& event);\r
void OnPaintListCtrl(wxPaintEvent& event);\r
void OnMenuFileExit(wxCommandEvent& event);\r
- void OnMenuViewShowGenerated(wxCommandEvent& event);\r
- void OnUpdateUIViewShowGenerated(wxUpdateUIEvent& event);\r
void OnMenuOptionsGenerate(wxCommandEvent& event);\r
void OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event);\r
void OnMenuOptionsChangeYourAddress(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 OnButtonChange(wxCommandEvent& event);\r
void OnListColBeginDrag(wxListEvent& event);\r
- void OnListItemActivatedAllTransactions(wxListEvent& event);\r
+ void OnListItemActivated(wxListEvent& event);\r
void OnListItemActivatedProductsSent(wxListEvent& event);\r
void OnListItemActivatedOrdersSent(wxListEvent& event);\r
void OnListItemActivatedOrdersReceived(wxListEvent& event);\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
- CBlockIndex* pindexBestLast;\r
- set<uint256> setUnmaturedDisplayed;\r
+ unsigned int nListViewUpdated;\r
+ bool fRefresh;\r
\r
- void OnCrossThreadCall(wxCommandEvent& event);\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 RefreshStatus();\r
+ void RefreshStatusColumn();\r
};\r
\r
\r
void OnListBox(wxCommandEvent& event);\r
void OnKillFocusTransactionFee(wxFocusEvent& event);\r
void OnCheckBoxLimitProcessors(wxCommandEvent& event);\r
- void OnCheckBoxMinimizeToTray(wxCommandEvent& event);\r
void OnCheckBoxUseProxy(wxCommandEvent& event);\r
void OnKillFocusProxy(wxFocusEvent& event);\r
\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 OnNotebookPageChanged(wxNotebookEvent& event);\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 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, bool fSendingIn);\r
+ CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, int nPageIn, bool fDuringSendIn);\r
\r
// Custom\r
- bool fSending;\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 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
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
- SetSize(wxDefaultCoord, 180);\r
+ y += 46 + wxString(strMessage2).Freq('\n') * 14;\r
}\r
+ if (!fWindows)\r
+ {\r
+ x *= 1.14;\r
+ y *= 1.14;\r
+ }\r
+ SetSize(x, y);\r
}\r
\r
// Custom\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
DECLARE_EVENT_TABLE()\r
};\r
\r
-\r
-\r
-\r
-\r
-\r
+#endif // wxUSE_GUI\r