void SplitDetailDialog::CreateControls() { wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); this->SetSizer(itemBoxSizer2); wxStaticBox* itemStaticBoxSizer4Static = new wxStaticBox(this, wxID_ANY, _("Split Transaction Details")); wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(itemStaticBoxSizer4Static, wxVERTICAL); itemBoxSizer2->Add(itemStaticBoxSizer4, g_flagsExpand); wxPanel* itemPanel7 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); itemStaticBoxSizer4->Add(itemPanel7, g_flagsExpand); wxFlexGridSizer* controlSizer = new wxFlexGridSizer(0, 2, 0, 0); itemPanel7->SetSizer(controlSizer); wxStaticText* staticTextType = new wxStaticText(itemPanel7, wxID_STATIC, _("Type")); controlSizer->Add(staticTextType, g_flagsH); const wxString itemChoiceStrings[] = { _("Withdrawal"), _("Deposit"), }; choiceType_ = new wxChoice(itemPanel7, ID_DIALOG_SPLTTRANS_TYPE , wxDefaultPosition, wxDefaultSize , 2, itemChoiceStrings); choiceType_->SetSelection(split_.SPLITTRANSAMOUNT < 0 ? !transType_ : transType_); choiceType_->SetToolTip(_("Specify the type of transactions to be created.")); controlSizer->Add(choiceType_, g_flagsH); wxStaticText* staticTextAmount = new wxStaticText(itemPanel7, wxID_STATIC, _("Amount")); controlSizer->Add(staticTextAmount, g_flagsH); textAmount_ = new mmTextCtrl(itemPanel7, ID_TEXTCTRLAMOUNT, "" , wxDefaultPosition, wxSize(110, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER , mmCalcValidator()); controlSizer->Add(textAmount_, g_flagsH); wxStaticText* staticTextCategory = new wxStaticText(itemPanel7, wxID_STATIC, _("Category")); controlSizer->Add(staticTextCategory, g_flagsH); bCategory_ = new wxButton(itemPanel7, ID_BUTTONCATEGORY, "" , wxDefaultPosition, wxSize(200, -1)); controlSizer->Add(bCategory_, g_flagsH); /************************************************************************** Control Buttons ***************************************************************************/ wxPanel* buttons_panel = new wxPanel(this, wxID_ANY); itemBoxSizer2->Add(buttons_panel, wxSizerFlags(g_flagsV).Center().Border(wxALL, 10)); wxStdDialogButtonSizer* buttons_sizer = new wxStdDialogButtonSizer; buttons_panel->SetSizer(buttons_sizer); wxButton* itemButtonOK = new wxButton(buttons_panel, wxID_OK, _("&OK ")); buttons_sizer->Add(itemButtonOK, g_flagsH); wxButton* itemButtonCancel = new wxButton(buttons_panel, wxID_CANCEL, wxGetTranslation(g_CancelLabel)); buttons_sizer->Add(itemButtonCancel, g_flagsH); }
void mmNewAcctDialog::CreateControls() { wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); this->SetSizer(itemBoxSizer2); wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL); itemBoxSizer2->Add(itemBoxSizer3, g_flagsExpand); wxFlexGridSizer* grid_sizer = new wxFlexGridSizer(0, 2, 0, 0); grid_sizer->AddGrowableCol(1, 1); itemBoxSizer3->Add(grid_sizer, g_flagsExpand); grid_sizer->Add(new wxStaticText( this, wxID_STATIC, _("Account Name:")), g_flags); m_textAccountName = new wxTextCtrl( this, wxID_ANY, ""); grid_sizer->Add(m_textAccountName, g_flagsExpand); grid_sizer->Add(new wxStaticText( this, wxID_STATIC, _("Account Type:")), g_flags); wxChoice* itemChoice61 = new wxChoice( this, ID_DIALOG_NEWACCT_COMBO_ACCTTYPE); for (const auto& type: Model_Account::all_type()) itemChoice61->Append(wxGetTranslation(type), new wxStringClientData(type)); grid_sizer->Add(itemChoice61, g_flagsExpand); itemChoice61->SetSelection(0); grid_sizer->Add(new wxStaticText( this, wxID_STATIC, _("Account Status:")), g_flags); wxChoice* itemChoice6 = new wxChoice( this, ID_DIALOG_NEWACCT_COMBO_ACCTSTATUS); for(const auto& status: Model_Account::all_status()) itemChoice6->Append(wxGetTranslation(status), new wxStringClientData(status)); grid_sizer->Add(itemChoice6, g_flagsExpand); itemChoice6->SetSelection(0); grid_sizer->Add(new wxStaticText( this, wxID_STATIC , wxString::Format(_("Initial Balance: %s"),"")), g_flags); m_itemInitValue = new mmTextCtrl(this , ID_DIALOG_NEWACCT_TEXTCTRL_INITBALANCE , "", wxDefaultPosition, wxDefaultSize, 0, mmCalcValidator()); grid_sizer->Add(m_itemInitValue, g_flagsExpand); m_itemInitValue->Connect(ID_DIALOG_NEWACCT_TEXTCTRL_INITBALANCE, wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(mmNewAcctDialog::OnTextEntered), nullptr, this); grid_sizer->Add(new wxStaticText( this, wxID_STATIC, _("Currency:")), g_flags); wxString currName = _("Select Currency"); Model_Currency::Data* base_currency = Model_Currency::GetBaseCurrency(); if (base_currency) currName = base_currency->CURRENCYNAME; wxButton* itemButton71 = new wxButton( this, ID_DIALOG_NEWACCT_BUTTON_CURRENCY, currName ); grid_sizer->Add(itemButton71, g_flagsExpand); wxCheckBox* itemCheckBox10 = new wxCheckBox( this , ID_DIALOG_NEWACCT_CHKBOX_FAVACCOUNT , _("Favorite Account"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); itemCheckBox10->SetValue(TRUE); grid_sizer->AddSpacer(1); grid_sizer->Add(itemCheckBox10, g_flags); // Notes --------------------------------------------- wxNotebook* acc_notebook = new wxNotebook(this , wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_MULTILINE ); wxPanel* notes_tab = new wxPanel(acc_notebook, wxID_ANY); acc_notebook->AddPage(notes_tab, _("Notes")); wxBoxSizer *notes_sizer = new wxBoxSizer(wxVERTICAL); notes_tab->SetSizer(notes_sizer); m_notesCtrl = new wxTextCtrl(notes_tab, ID_DIALOG_NEWACCT_TEXTCTRL_NOTES, "" , wxDefaultPosition, wxSize(270,180), wxTE_MULTILINE); notes_sizer->Add(m_notesCtrl, g_flagsExpand); // wxPanel* others_tab = new wxPanel(acc_notebook, wxID_ANY); acc_notebook->AddPage(others_tab, _("Others")); wxBoxSizer *others_sizer = new wxBoxSizer(wxVERTICAL); others_tab->SetSizer(others_sizer); wxFlexGridSizer* grid_sizer2 = new wxFlexGridSizer(0, 2, 0, 0); grid_sizer2->AddGrowableCol(1, 1); others_sizer->Add(grid_sizer2, g_flagsExpand); grid_sizer2->Add(new wxStaticText(others_tab, wxID_STATIC, (Model_Account::type(m_account) == Model_Account::CREDIT_CARD ? _("Card Number:"):_("Account Number:"))), g_flags); wxTextCtrl* itemTextCtrl6 = new wxTextCtrl(others_tab , ID_ACCTNUMBER, "", wxDefaultPosition, wxDefaultSize); grid_sizer2->Add(itemTextCtrl6, g_flagsExpand); grid_sizer2->Add(new wxStaticText(others_tab, wxID_STATIC, _("Held At:")), g_flags); wxTextCtrl* itemTextCtrl8 = new wxTextCtrl(others_tab , ID_DIALOG_NEWACCT_TEXTCTRL_HELDAT, "" ); grid_sizer2->Add(itemTextCtrl8, g_flagsExpand); grid_sizer2->Add(new wxStaticText(others_tab, wxID_STATIC, _("Website:")), g_flags); wxTextCtrl* itemTextCtrl10 = new wxTextCtrl(others_tab , ID_DIALOG_NEWACCT_TEXTCTRL_WEBSITE, "" ); grid_sizer2->Add(itemTextCtrl10, g_flagsExpand); grid_sizer2->Add(new wxStaticText(others_tab , wxID_STATIC, _("Contact:")), g_flags); wxTextCtrl* itemTextCtrl12 = new wxTextCtrl(others_tab , ID_DIALOG_NEWACCT_TEXTCTRL_CONTACT, "" ); grid_sizer2->Add(itemTextCtrl12, g_flagsExpand); grid_sizer2->Add(new wxStaticText(others_tab , wxID_STATIC, _("Access Info:")), g_flags); wxTextCtrl* itemTextCtrl14 = new wxTextCtrl(others_tab , ID_DIALOG_NEWACCT_TEXTCTRL_ACCESSINFO, "*********"); grid_sizer2->Add(itemTextCtrl14, g_flagsExpand); itemBoxSizer3->Add(acc_notebook); //Buttons wxPanel* itemPanel27 = new wxPanel( this, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); itemBoxSizer3->Add(itemPanel27, g_flags); wxBoxSizer* itemBoxSizer28 = new wxBoxSizer(wxHORIZONTAL); itemPanel27->SetSizer(itemBoxSizer28); m_bitmapButtons = new wxBitmapButton( itemPanel27 , wxID_STATIC, wxNullBitmap, wxDefaultPosition , wxSize(m_textAccountName->GetSize().GetHeight(), m_textAccountName->GetSize().GetHeight())); m_bitmapButtons->Connect(wxID_STATIC, wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler(mmNewAcctDialog::OnImageButton), nullptr, this); itemBoxSizer28->Add(m_bitmapButtons, g_flags); bAttachments_ = new wxBitmapButton(itemPanel27, wxID_FILE , wxBitmap(attachment_xpm), wxDefaultPosition , wxSize(m_textAccountName->GetSize().GetHeight(), m_textAccountName->GetSize().GetHeight())); bAttachments_->SetToolTip(_("Organize attachments of this account")); itemBoxSizer28->Add(bAttachments_, g_flags); itemBoxSizer28->AddSpacer(20); wxButton* itemButton29 = new wxButton(itemPanel27, wxID_OK, _("&OK ")); itemBoxSizer28->Add(itemButton29, g_flags); wxButton* itemButton30 = new wxButton(itemPanel27, wxID_CANCEL, _("&Cancel ")); itemBoxSizer28->Add(itemButton30, g_flags); Fit(); if (true) { m_textAccountName->SetToolTip(_("Enter the Name of the Account. This name can be renamed at any time.")); itemChoice61->SetToolTip(_("Specify the type of account to be created.")); itemChoice6->SetToolTip(_("Specify if this account has been closed. Closed accounts are inactive in most calculations, reporting etc.")); m_itemInitValue->SetToolTip(_("Enter the initial balance in this account.")); itemButton71->SetToolTip(_("Specify the currency to be used by this account.")); itemCheckBox10->SetToolTip(_("Select whether this is an account that is used often. This is used to filter accounts display view.")); m_notesCtrl->SetToolTip(_("Enter user notes and details about this account.")); itemTextCtrl6->SetToolTip(_("Enter the Account Number associated with this account.")); itemTextCtrl8->SetToolTip(_("Enter the name of the financial institution in which the account is held.")); itemTextCtrl10->SetToolTip(_("Enter the URL of the website for the financial institution.")); itemTextCtrl12->SetToolTip(_("Enter any contact information for the financial institution.")); itemTextCtrl14->SetToolTip(_("Enter any login/access information for the financial institution. This is not secure as anyone with access to the mmb file can access it.")); } }
void mmStockDialog::CreateControls() { wxBoxSizer* mainBoxSizer = new wxBoxSizer(wxHORIZONTAL); this->SetSizer(mainBoxSizer); wxBoxSizer* leftBoxSizer = new wxBoxSizer(wxVERTICAL); mainBoxSizer->Add(leftBoxSizer, g_flags); wxStaticBox* itemStaticBoxSizer4Static = new wxStaticBox(this, wxID_ANY, _("Stock Investment Details")); wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(itemStaticBoxSizer4Static, wxVERTICAL); leftBoxSizer->Add(itemStaticBoxSizer4, g_flagsExpand); wxPanel* itemPanel5 = new wxPanel(this, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); itemStaticBoxSizer4->Add(itemPanel5, g_flags); wxFlexGridSizer* itemFlexGridSizer6 = new wxFlexGridSizer(0, 2, 0, 0); itemPanel5->SetSizer(itemFlexGridSizer6); itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Stock Name")), g_flags); stockName_ = new mmTextCtrl(itemPanel5, ID_TEXTCTRL_STOCKNAME, ""); itemFlexGridSizer6->Add(stockName_, g_flagsExpand); stockName_->SetToolTip(_("Enter the stock company name")); //Date itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Date")), g_flags); dpc_ = new wxDatePickerCtrl(itemPanel5, ID_DPC_STOCK_PDATE , wxDefaultDateTime, wxDefaultPosition, wxSize(150, -1), wxDP_DROPDOWN | wxDP_SHOWCENTURY); itemFlexGridSizer6->Add(dpc_, g_flags); dpc_->SetToolTip(_("Specify the purchase date of the stock investment")); //Symbol wxStaticText* symbol = new wxStaticText(itemPanel5, wxID_STATIC, _("Symbol")); itemFlexGridSizer6->Add(symbol, g_flags); symbol->SetFont(this->GetFont().Bold()); stockSymbol_ = new mmTextCtrl( itemPanel5, ID_TEXTCTRL_STOCK_SYMBOL , "", wxDefaultPosition, wxSize(150, -1), 0); itemFlexGridSizer6->Add(stockSymbol_, g_flags); stockSymbol_->SetToolTip(_("Enter the stock symbol. (Optional) Include exchange. eg: IBM.BE")); //Number of Shares wxStaticText* number = new wxStaticText(itemPanel5, wxID_STATIC, _("Number of Shares")); itemFlexGridSizer6->Add(number, g_flags); number->SetFont(this->GetFont().Bold()); numShares_ = new mmTextCtrl(itemPanel5, ID_TEXTCTRL_NUMBER_SHARES, "" , wxDefaultPosition, wxSize(150, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemFlexGridSizer6->Add(numShares_, g_flags); numShares_->SetToolTip(_("Enter number of shares held")); numShares_->Connect(ID_TEXTCTRL_NUMBER_SHARES, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmStockDialog::OnTextEntered), nullptr, this); //Purchase Price wxStaticText* pprice = new wxStaticText(itemPanel5, wxID_STATIC, _("Purchase Price")); itemFlexGridSizer6->Add(pprice, g_flags); pprice->SetFont(this->GetFont().Bold()); purchasePrice_ = new mmTextCtrl(itemPanel5, ID_TEXTCTRL_STOCK_PP, "" , wxDefaultPosition, wxSize(150, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemFlexGridSizer6->Add(purchasePrice_, g_flags); purchasePrice_->SetToolTip(_("Enter purchase price for each stock")); purchasePrice_->Connect(ID_TEXTCTRL_STOCK_PP, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmStockDialog::OnTextEntered), nullptr, this); // itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Current Price")), g_flags); currentPrice_ = new mmTextCtrl( itemPanel5, ID_TEXTCTRL_STOCK_CP, "" , wxDefaultPosition, wxSize(150, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemFlexGridSizer6->Add(currentPrice_, g_flags); currentPrice_->SetToolTip(_("Enter current stock price")); currentPrice_->Connect(ID_TEXTCTRL_STOCK_CP, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmStockDialog::OnTextEntered), nullptr, this); // itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Price Date")), g_flags); priceDate_ = new wxDatePickerCtrl(itemPanel5, ID_DPC_CP_PDATE , wxDefaultDateTime, wxDefaultPosition, wxSize(150, -1), wxDP_DROPDOWN | wxDP_SHOWCENTURY); itemFlexGridSizer6->Add(priceDate_, g_flags); priceDate_->SetToolTip(_("Specify the stock price date")); itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Commission")), g_flags); commission_ = new mmTextCtrl( itemPanel5, ID_TEXTCTRL_STOCK_COMMISSION, "0" , wxDefaultPosition, wxSize(150, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemFlexGridSizer6->Add(commission_, g_flags); commission_->SetToolTip(_("Enter any commission paid")); commission_->Connect(ID_TEXTCTRL_STOCK_COMMISSION, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmStockDialog::OnTextEntered), nullptr, this); // itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Value")), g_flags); valueInvestment_ = new wxStaticText(itemPanel5, ID_STATIC_STOCK_VALUE, "--"); itemFlexGridSizer6->Add(valueInvestment_, g_flags); // itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Notes")), g_flags); wxBoxSizer* iconsSizer = new wxBoxSizer(wxHORIZONTAL); itemFlexGridSizer6->Add(iconsSizer, wxSizerFlags(g_flags).Align(wxALIGN_RIGHT)); bAttachments_ = new wxBitmapButton(itemPanel5, wxID_FILE, wxBitmap(attachment_xpm), wxDefaultPosition , wxSize(commission_->GetSize().GetY(), commission_->GetSize().GetY())); bAttachments_->SetToolTip(_("Organize attachments of this stock")); wxBitmapButton* itemButton31 = new wxBitmapButton(itemPanel5, wxID_INDEX, wxBitmap(web_xpm) , wxDefaultPosition, wxSize(commission_->GetSize().GetY(), commission_->GetSize().GetY())); itemButton31->SetToolTip(_("Display the web page for the specified Stock symbol")); iconsSizer->Add(bAttachments_, g_flags); iconsSizer->Add(itemButton31, g_flags); notes_ = new mmTextCtrl(this, wxID_STATIC, "", wxDefaultPosition, wxSize(200, 90), wxTE_MULTILINE); itemStaticBoxSizer4->Add(notes_, g_flagsExpand); itemStaticBoxSizer4->AddSpacer(1); notes_->SetToolTip(_("Enter notes associated with this investment")); leftBoxSizer->AddSpacer(20); //History Panel wxBoxSizer* rightBoxSizer = new wxBoxSizer(wxVERTICAL); mainBoxSizer->Add(rightBoxSizer, g_flagsExpand); wxStaticBox* historyStaticBox = new wxStaticBox(this, wxID_ANY, _("Stock History Options")); wxStaticBoxSizer* historyStaticBoxSizer = new wxStaticBoxSizer(historyStaticBox, wxVERTICAL); rightBoxSizer->Add(historyStaticBoxSizer, g_flagsExpand); priceListBox_ = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxSize(250, 150) , wxLC_REPORT); historyStaticBoxSizer->Add(priceListBox_, g_flagsExpand); priceListBox_->SetToolTip(_("Stock Price History")); // Add first column wxListItem col0; col0.SetId(0); col0.SetText( _("Date") ); col0.SetWidth(90); priceListBox_->InsertColumn(0, col0); // Add second column wxListItem col1; col1.SetId(1); col1.SetText( _("Price") ); col1.SetWidth(80); priceListBox_->InsertColumn(1, col1); // Add third column wxListItem col2; col2.SetId(2); col2.SetText( _("Diff.") ); col2.SetWidth(80); priceListBox_->InsertColumn(2, col2); //History Buttons wxPanel* buttons_panel = new wxPanel(this, wxID_ANY); historyStaticBoxSizer->Add(buttons_panel, wxSizerFlags(g_flags).Centre()); wxStdDialogButtonSizer* buttons_sizer = new wxStdDialogButtonSizer; buttons_panel->SetSizer(buttons_sizer); wxBitmapButton* buttonDownload = new wxBitmapButton(buttons_panel, ID_BUTTON_DOWNLOAD, wxBitmap(checkupdate_xpm) , wxDefaultPosition, wxSize(commission_->GetSize().GetY(), commission_->GetSize().GetY())); buttonDownload->SetToolTip(_("Download Stock Price history")); wxBitmapButton* buttonImport = new wxBitmapButton(buttons_panel, ID_BUTTON_IMPORT, wxBitmap(uparrow_xpm) , wxDefaultPosition, wxSize(commission_->GetSize().GetY(), commission_->GetSize().GetY())); buttonImport->SetToolTip(_("Import Stock Price history (CSV Format)")); wxButton* buttonDel = new wxButton(buttons_panel, wxID_DELETE, _("&Delete ")); buttonDel->SetToolTip(_("Delete selected Stock Price")); wxButton* buttonAdd = new wxButton(buttons_panel, wxID_ADD, _("&Add ")); buttonAdd->SetToolTip(_("Add Stock Price to history")); buttons_sizer->Add(buttonDownload, g_flags); buttons_sizer->Add(buttonImport, g_flags); buttons_sizer->Add(buttonDel, g_flags); buttons_sizer->Add(buttonAdd, g_flags); //OK & Cancel buttons wxStdDialogButtonSizer* buttonsOK_CANCEL_sizer = new wxStdDialogButtonSizer; leftBoxSizer->Add(buttonsOK_CANCEL_sizer, wxSizerFlags(g_flags).Centre()); wxButton* itemButtonOK = new wxButton(this, wxID_SAVE, _("&Save ")); wxButton* itemButton30 = new wxButton(this, wxID_CANCEL, _("&Close ")); if (edit_) itemButton30->SetFocus(); buttonsOK_CANCEL_sizer->Add(itemButtonOK, g_flags); buttonsOK_CANCEL_sizer->Add(itemButton30, g_flags); }
void mmFilterTransactionsDialog::CreateControls() { wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL); itemBoxSizer2->Add(itemBoxSizer3, g_flagsExpand); wxStaticBox* static_box_sizer = new wxStaticBox(this, wxID_ANY, _(" Specify ")); wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(static_box_sizer, wxVERTICAL); itemBoxSizer3->Add(itemStaticBoxSizer4, 1, wxGROW|wxALL, 10); this->SetSizer(itemBoxSizer2); /****************************************************************************** Items Panel *******************************************************************************/ wxPanel* itemPanel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); itemStaticBoxSizer4->Add(itemPanel, g_flagsExpand); wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxVERTICAL); wxFlexGridSizer* itemPanelSizer = new wxFlexGridSizer(0, 2, 0, 0); itemPanelSizer->AddGrowableCol(1, 1); itemPanel->SetSizer(itemBoxSizer4); itemBoxSizer4->Add(itemPanelSizer, g_flagsExpand); //--Start of Row -------------------------------------------------------- accountCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Account") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); itemPanelSizer->Add(accountCheckBox_, g_flags); accountDropDown_ = new wxChoice(itemPanel , wxID_ANY, wxDefaultPosition, wxSize(220, -1) , Model_Account::instance().all_checking_account_names(), 0); itemPanelSizer->Add(accountDropDown_, g_flagsExpand); //--End of Row -------------------------------------------------------- dateRangeCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Date Range") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); itemPanelSizer->Add(dateRangeCheckBox_, g_flags); fromDateCtrl_ = new wxDatePickerCtrl(itemPanel, wxID_ANY, wxDefaultDateTime , wxDefaultPosition, wxDefaultSize, wxDP_DROPDOWN); toDateControl_ = new wxDatePickerCtrl(itemPanel, wxID_ANY, wxDefaultDateTime , wxDefaultPosition, wxDefaultSize, wxDP_DROPDOWN); dateRangeCheckBox_->Connect(wxID_ANY, wxEVT_RIGHT_DOWN , wxMouseEventHandler(mmFilterTransactionsDialog::datePresetMenu), nullptr, this); wxBoxSizer* dateSizer = new wxBoxSizer(wxHORIZONTAL); dateSizer->Add(fromDateCtrl_, g_flagsExpand); dateSizer->AddSpacer(5); dateSizer->Add(toDateControl_, g_flagsExpand); itemPanelSizer->Add(dateSizer, wxSizerFlags(g_flagsExpand).Border(0)); //--End of Row -------------------------------------------------------- payeeCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Payee") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); itemPanelSizer->Add(payeeCheckBox_, g_flags); cbPayee_ = new wxComboBox(itemPanel, wxID_ANY, "", wxDefaultPosition, wxSize(220, -1)); cbPayee_->Connect(wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED , wxCommandEventHandler(mmFilterTransactionsDialog::OnPayeeUpdated), nullptr, this); itemPanelSizer->Add(cbPayee_, g_flagsExpand); //--End of Row -------------------------------------------------------- categoryCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Category") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); wxFlexGridSizer* categSizer = new wxFlexGridSizer(0, 1, 0, 0); categSizer->AddGrowableCol(0, 1); itemPanelSizer->Add(categoryCheckBox_, g_flags); itemPanelSizer->Add(categSizer, wxSizerFlags(g_flagsExpand).Border(0)); btnCategory_ = new wxButton(itemPanel, wxID_ANY, "" , wxDefaultPosition, wxDefaultSize); btnCategory_->Connect(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(mmFilterTransactionsDialog::OnCategs), nullptr, this); similarCategCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Include Similar"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); similarCategCheckBox_->SetToolTip(_("Include all subcategories for the selected category.")); categSizer->Add(btnCategory_, g_flagsExpand); categSizer->Add(similarCategCheckBox_, wxSizerFlags(g_flags).Center().Border(0)); categSizer->AddSpacer(5); //--End of Row -------------------------------------------------------- statusCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Status") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); itemPanelSizer->Add(statusCheckBox_, g_flags); choiceStatus_ = new wxChoice(itemPanel, wxID_ANY); for(const auto& i : TRANSACTION_STATUSES) choiceStatus_->Append(wxGetTranslation(i), new wxStringClientData(i)); itemPanelSizer->Add(choiceStatus_, g_flagsExpand); choiceStatus_->SetToolTip(_("Specify the status for the transaction")); //--End of Row -------------------------------------------------------- typeCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Type") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); wxFlexGridSizer* typeSizer = new wxFlexGridSizer(0, 2, 0, 0); typeSizer->AddGrowableCol(0, 1); typeSizer->AddGrowableCol(1, 1); cbTypeWithdrawal_ = new wxCheckBox( itemPanel, wxID_ANY, _("Withdrawal") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); cbTypeDeposit_ = new wxCheckBox( itemPanel, wxID_ANY, _("Deposit") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); cbTypeTransferTo_ = new wxCheckBox( itemPanel, wxID_ANY, _("Transfer To") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); cbTypeTransferFrom_ = new wxCheckBox(itemPanel, wxID_ANY, _("Transfer From") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); itemPanelSizer->Add(typeCheckBox_, g_flags); itemPanelSizer->Add(typeSizer, g_flagsExpand); typeSizer->Add(cbTypeWithdrawal_, 1, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 2); typeSizer->Add(cbTypeDeposit_, 1, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 2); typeSizer->Add(cbTypeTransferTo_, 1, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 2); typeSizer->Add(cbTypeTransferFrom_, 1, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 2); typeSizer->AddSpacer(2); //--End of Row -------------------------------------------------------- amountRangeCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Amount Range") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); itemPanelSizer->Add(amountRangeCheckBox_, g_flags); amountMinEdit_ = new mmTextCtrl(itemPanel, wxID_ANY, "" , wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT|wxTE_PROCESS_ENTER , mmCalcValidator()); amountMinEdit_->Connect(wxID_ANY, wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(mmFilterTransactionsDialog::OnTextEntered), nullptr, this); amountMaxEdit_ = new mmTextCtrl(itemPanel, wxID_ANY, "" , wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT|wxTE_PROCESS_ENTER , mmCalcValidator()); amountMaxEdit_->Connect(wxID_ANY, wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(mmFilterTransactionsDialog::OnTextEntered), nullptr, this); wxBoxSizer* amountSizer = new wxBoxSizer(wxHORIZONTAL); amountSizer->Add(amountMinEdit_, g_flagsExpand); amountSizer->AddSpacer(5); amountSizer->Add(amountMaxEdit_, g_flagsExpand); itemPanelSizer->Add(amountSizer, wxSizerFlags(g_flagsExpand).Border(0)); //--End of Row -------------------------------------------------------- transNumberCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Number") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); itemPanelSizer->Add(transNumberCheckBox_, g_flags); transNumberEdit_ = new wxTextCtrl(itemPanel, wxID_ANY); itemPanelSizer->Add(transNumberEdit_, g_flagsExpand); //--End of Row -------------------------------------------------------- notesCheckBox_ = new wxCheckBox(itemPanel, wxID_ANY, _("Notes") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); itemPanelSizer->Add(notesCheckBox_, g_flags); notesEdit_ = new wxTextCtrl( itemPanel, wxID_ANY); itemPanelSizer->Add(notesEdit_, g_flagsExpand); //--End of Row -------------------------------------------------------- itemPanelSizer->Add(new wxStaticText(itemPanel, wxID_STATIC, _("Sort by")), g_flags); wxArrayString sorterLabels; sorterLabels.Add(wxTRANSLATE("Date")); sorterLabels.Add(wxTRANSLATE("Account")); sorterLabels.Add(wxTRANSLATE("Payee")); sorterLabels.Add(wxTRANSLATE("Status")); sorterLabels.Add(wxTRANSLATE("Category")); sorterLabels.Add(wxTRANSLATE("Type")); sorterLabels.Add(wxTRANSLATE("Amount")); sorterLabels.Add(wxTRANSLATE("Number")); sorterLabels.Add(wxTRANSLATE("Notes")); sorterDropDown_ = new wxChoice(itemPanel , wxID_ANY, wxDefaultPosition, wxSize(220, -1)); for (const auto& item : sorterLabels) { sorterDropDown_->Append(wxGetTranslation(item), new wxStringClientData(item)); } sorterDropDown_->SetSelection(0); itemPanelSizer->Add(sorterDropDown_, g_flagsExpand); //--End of Row -------------------------------------------------------- wxBoxSizer* settings_box_sizer = new wxBoxSizer(wxVERTICAL); m_settingLabel = new wxTextCtrl(this, wxID_INFO, ""); wxString choices[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; int num = sizeof(choices) / sizeof(wxString); m_radio_box_ = new wxRadioBox(this, wxID_APPLY, "" , wxDefaultPosition, wxDefaultSize, num, choices, num, wxRA_SPECIFY_COLS); m_radio_box_->Connect(wxID_APPLY, wxEVT_COMMAND_RADIOBOX_SELECTED , wxCommandEventHandler(mmFilterTransactionsDialog::OnSettingsSelected), nullptr, this); int view_no = Model_Infotable::instance().GetIntInfo("TRANSACTIONS_FILTER_VIEW_NO", 0); m_radio_box_->SetSelection(view_no); m_radio_box_->Show(true); itemBoxSizer3->Add(settings_box_sizer, wxSizerFlags(g_flags).Center()); settings_box_sizer->Add(m_settingLabel, wxSizerFlags(g_flagsExpand).Border(0)); settings_box_sizer->Add(m_radio_box_, g_flags); /****************************************************************************** Button Panel with OK/Cancel buttons *******************************************************************************/ wxPanel* buttonPanel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); itemBoxSizer3->Add(buttonPanel, wxSizerFlags(g_flags).Center()); wxBoxSizer* buttonPanelSizer = new wxBoxSizer(wxHORIZONTAL); buttonPanel->SetSizer(buttonPanelSizer); wxButton* itemButtonOK = new wxButton( buttonPanel, wxID_OK, _("&OK ")); wxButton* itemButtonCancel = new wxButton( buttonPanel, wxID_CANCEL, _("&Cancel ")); itemButtonCancel->SetFocus(); wxButton* itemButtonClear = new wxButton( buttonPanel, wxID_CLEAR, _("&Clear ")); wxBitmapButton* save_button = new wxBitmapButton(buttonPanel , wxID_SAVE, wxBitmap(save_xpm), wxDefaultPosition , wxSize(itemButtonOK->GetSize().GetHeight(), itemButtonOK->GetSize().GetHeight())); save_button->Show(true); buttonPanelSizer->Add(save_button,g_flags); buttonPanelSizer->Add(itemButtonOK, g_flags); buttonPanelSizer->Add(itemButtonCancel, g_flags); buttonPanelSizer->Add(itemButtonClear, g_flags); }
void mmAssetDialog::CreateControls() { wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); this->SetSizer(itemBoxSizer2); wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL); itemBoxSizer2->Add(itemBoxSizer3, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); wxStaticBox* itemStaticBoxSizer4Static = new wxStaticBox(this, wxID_ANY, _("Asset Details")); wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(itemStaticBoxSizer4Static , wxVERTICAL); itemBoxSizer3->Add(itemStaticBoxSizer4, g_flags); wxPanel* itemPanel5 = new wxPanel( this, wxID_STATIC, wxDefaultPosition , wxDefaultSize, wxTAB_TRAVERSAL ); itemStaticBoxSizer4->Add(itemPanel5, g_flags); wxFlexGridSizer* itemFlexGridSizer6 = new wxFlexGridSizer(0, 2, 0, 0); itemPanel5->SetSizer(itemFlexGridSizer6); wxStaticText* n = new wxStaticText(itemPanel5, wxID_STATIC, _("Name")); itemFlexGridSizer6->Add(n, g_flags); n->SetFont(this->GetFont().Bold()); m_assetName = new mmTextCtrl(itemPanel5, wxID_ANY, wxGetEmptyString()); m_assetName->SetToolTip(_("Enter the name of the asset")); itemFlexGridSizer6->Add(m_assetName, g_flagsExpand); itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Date")), g_flags); m_dpc = new wxDatePickerCtrl( itemPanel5, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxSize(120, -1), wxDP_DROPDOWN|wxDP_SHOWCENTURY); itemFlexGridSizer6->Add(m_dpc, g_flags); m_dpc->SetToolTip(_("Specify the date of purchase of asset")); itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Asset Type")), g_flags); m_assetType = new wxChoice(itemPanel5, wxID_STATIC, wxDefaultPosition, wxSize(150, -1)); for (const auto& a : Model_Asset::all_type()) m_assetType->Append(wxGetTranslation(a), new wxStringClientData(a)); m_assetType->SetToolTip(_("Select type of asset")); m_assetType->SetSelection(Model_Asset::TYPE_PROPERTY); itemFlexGridSizer6->Add(m_assetType, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); wxStaticText* v = new wxStaticText(itemPanel5, wxID_STATIC, _("Value")); itemFlexGridSizer6->Add(v, g_flags); v->SetFont(this->GetFont().Bold()); m_value = new mmTextCtrl(itemPanel5, IDC_VALUE, wxGetEmptyString() , wxDefaultPosition, wxSize(150,-1), wxALIGN_RIGHT|wxTE_PROCESS_ENTER , mmCalcValidator() ); m_value->SetToolTip(_("Enter the current value of the asset")); itemFlexGridSizer6->Add(m_value, g_flags); m_value->Connect(IDC_VALUE, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmAssetDialog::onTextEntered), nullptr, this); itemFlexGridSizer6->Add(new wxStaticText(itemPanel5, wxID_STATIC, _("Change in Value")), g_flags); m_valueChange = new wxChoice(itemPanel5, IDC_COMBO_TYPE, wxDefaultPosition, wxSize(150, -1)); for(const auto& a : Model_Asset::all_rate()) m_valueChange->Append(wxGetTranslation(a)); m_valueChange->SetToolTip(_("Specify if the value of the asset changes over time")); m_valueChange->SetSelection(Model_Asset::RATE_NONE); itemFlexGridSizer6->Add(m_valueChange, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); m_valueChangeRateLabel = new wxStaticText( itemPanel5, wxID_STATIC, _("% Rate")); itemFlexGridSizer6->Add(m_valueChangeRateLabel, g_flags); m_valueChangeRate = new mmTextCtrl(itemPanel5, IDC_RATE, wxGetEmptyString() , wxDefaultPosition, wxSize(150,-1), wxALIGN_RIGHT|wxTE_PROCESS_ENTER , mmCalcValidator()); m_valueChangeRate->SetToolTip(_("Enter the rate at which the asset changes its value in % per year")); itemFlexGridSizer6->Add(m_valueChangeRate, g_flags); m_valueChangeRate->Connect(IDC_RATE, IDC_RATE , wxCommandEventHandler(mmAssetDialog::onTextEntered), nullptr, this); enableDisableRate(false); itemFlexGridSizer6->Add(new wxStaticText( itemPanel5, wxID_STATIC, _("Notes")), g_flags); bAttachments_ = new wxBitmapButton(itemPanel5, wxID_FILE , wxBitmap(attachment_xpm), wxDefaultPosition , wxSize(m_valueChange->GetSize().GetY(), m_valueChange->GetSize().GetY())); itemFlexGridSizer6->Add(bAttachments_, wxSizerFlags(g_flags).Align(wxALIGN_RIGHT)); bAttachments_->SetToolTip(_("Organize attachments of this asset")); m_notes = new mmTextCtrl(this, IDC_NOTES, wxGetEmptyString(), wxDefaultPosition, wxSize(220, 170), wxTE_MULTILINE); m_notes->SetToolTip(_("Enter notes associated with this asset")); itemStaticBoxSizer4->Add(m_notes, 0, wxGROW | wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM, 10); wxPanel* itemPanel27 = new wxPanel(this, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); itemBoxSizer3->Add(itemPanel27, wxSizerFlags(g_flags).Center()); wxBoxSizer* itemBoxSizer28 = new wxBoxSizer(wxHORIZONTAL); itemPanel27->SetSizer(itemBoxSizer28); wxButton* itemButton29 = new wxButton(itemPanel27, wxID_OK, _("&OK ")); itemBoxSizer28->Add(itemButton29, g_flags); wxButton* itemButton30 = new wxButton(itemPanel27, wxID_CANCEL, _("&Cancel ")); itemBoxSizer28->Add(itemButton30, g_flags); itemButton30->SetFocus(); }
void mmCurrencyDialog::CreateControls() { wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); this->SetSizer(itemBoxSizer2); wxFlexGridSizer* itemFlexGridSizer3 = new wxFlexGridSizer(0, 2, 0, 0); itemFlexGridSizer3->AddGrowableCol(1); itemBoxSizer2->Add(itemFlexGridSizer3, g_flagsV); //-------------------------- itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Currency Name")), g_flagsH); m_currencyName = new mmTextCtrl(this, ID_DIALOG_CURRENCY, "", wxDefaultPosition, wxSize(220, -1)); itemFlexGridSizer3->Add(m_currencyName, g_flagsH); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Currency Symbol")), g_flagsH); m_currencySymbol = new mmTextCtrl(this, ID_DIALOG_CURRENCY, "", wxDefaultPosition, wxSize(220, -1)); m_currencySymbol->SetMaxLength(3); itemFlexGridSizer3->Add(m_currencySymbol, g_flagsExpand); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Unit Name")), g_flagsH); unitTx_ = new wxTextCtrl(this, ID_DIALOG_CURRENCY, ""); itemFlexGridSizer3->Add(unitTx_, g_flagsExpand); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Cents Name")), g_flagsH); centTx_ = new wxTextCtrl(this, ID_DIALOG_CURRENCY, ""); itemFlexGridSizer3->Add(centTx_, g_flagsExpand); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Prefix Symbol")), g_flagsH); pfxTx_ = new wxTextCtrl(this, ID_DIALOG_CURRENCY, ""); itemFlexGridSizer3->Add(pfxTx_, g_flagsExpand); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Suffix Symbol")), g_flagsH); sfxTx_ = new wxTextCtrl(this, ID_DIALOG_CURRENCY, ""); itemFlexGridSizer3->Add(sfxTx_, g_flagsExpand); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Decimal Char")), g_flagsH); decTx_ = new wxTextCtrl(this, ID_DIALOG_CURRENCY, ""); itemFlexGridSizer3->Add(decTx_, g_flagsExpand); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Grouping Char")), g_flagsH); grpTx_ = new wxTextCtrl(this, ID_DIALOG_CURRENCY, ""); itemFlexGridSizer3->Add(grpTx_, g_flagsExpand); wxIntegerValidator<int> valInt(&m_scale, wxNUM_VAL_THOUSANDS_SEPARATOR | wxNUM_VAL_ZERO_AS_BLANK); valInt.SetMin(0); // Only allow positive numbers valInt.SetMax(SCALE); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Scale")), g_flagsH); scaleTx_ = new wxTextCtrl(this, ID_DIALOG_CURRENCY, "", wxDefaultPosition, wxDefaultSize , wxALIGN_RIGHT, valInt); itemFlexGridSizer3->Add(scaleTx_, g_flagsExpand); itemFlexGridSizer3->Add(new wxStaticText(this, wxID_STATIC, _("Conversion to Base Rate")), g_flagsH); baseConvRate_ = new mmTextCtrl(this, ID_DIALOG_CURRENCY_RATE, "" , wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT | wxTE_PROCESS_ENTER , mmCalcValidator()); itemFlexGridSizer3->Add(baseConvRate_, g_flagsExpand); //-------------------------- wxStaticBox* itemStaticBox_01 = new wxStaticBox(this, wxID_STATIC, _("Value Display Sample:")); wxStaticBoxSizer* itemStaticBoxSizer_01 = new wxStaticBoxSizer(itemStaticBox_01, wxHORIZONTAL); itemBoxSizer2->Add(itemStaticBoxSizer_01, g_flagsExpand); sampleText_ = new wxStaticText(this, wxID_STATIC, ""); itemStaticBoxSizer_01->Add(sampleText_, g_flagsH); //-------------------------- wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer2->Add(itemBoxSizer22, wxSizerFlags(g_flagsV).Centre()); wxButton* itemButton24 = new wxButton(this, wxID_OK, _("&OK ")); itemBoxSizer22->Add(itemButton24, g_flagsH); itemButton24->SetToolTip(_("Save any changes made")); wxButton* itemButton25 = new wxButton(this, wxID_CANCEL, wxGetTranslation(g_CloseLabel)); itemBoxSizer22->Add(itemButton25, g_flagsH); itemButton25->SetToolTip(_("Any changes will be lost without update")); }
void ShareTransactionDialog::CreateControls() { wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); SetSizer(main_sizer); wxBoxSizer* panel_sizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* left_sizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer* right_sizer = new wxBoxSizer(wxVERTICAL); main_sizer->Add(panel_sizer, wxSizerFlags(g_flagsV)); panel_sizer->Add(left_sizer, 0); panel_sizer->Add(right_sizer, 0); /******************************************************************** Stock Details Panel *********************************************************************/ wxStaticBox* details_frame = new wxStaticBox(this, wxID_ANY, _("Stock Investment Details")); wxStaticBoxSizer* details_frame_sizer = new wxStaticBoxSizer(details_frame, wxVERTICAL); left_sizer->Add(details_frame_sizer, g_flagsExpand); wxPanel* stock_details_panel = new wxPanel(this, wxID_STATIC); details_frame_sizer->Add(stock_details_panel, g_flagsV); wxFlexGridSizer* itemFlexGridSizer6 = new wxFlexGridSizer(0, 2, 0, 0); stock_details_panel->SetSizer(itemFlexGridSizer6); itemFlexGridSizer6->Add(new wxStaticText(stock_details_panel, wxID_STATIC, _("Company Name")), g_flagsH); m_stock_name_ctrl = new mmTextCtrl(stock_details_panel, ID_STOCKTRANS_SHARE_NAME, ""); itemFlexGridSizer6->Add(m_stock_name_ctrl, g_flagsExpand); m_stock_name_ctrl->SetToolTip(_("Enter the stock company name")); //Symbol wxStaticText* symbol = new wxStaticText(stock_details_panel, wxID_STATIC, _("Stock Symbol")); itemFlexGridSizer6->Add(symbol, g_flagsH); symbol->SetFont(this->GetFont().Bold()); m_stock_symbol_ctrl = new mmTextCtrl(stock_details_panel, ID_STOCKTRANS_SHARE_SYMBOL , "", wxDefaultPosition, wxSize(150, -1), 0); itemFlexGridSizer6->Add(m_stock_symbol_ctrl, g_flagsH); m_stock_symbol_ctrl->SetToolTip(_("Enter the stock symbol. (Optional) Include exchange. eg: IBM.BE")); //Share Unit Number wxStaticText* number = new wxStaticText(stock_details_panel, wxID_STATIC, _("Share Number")); itemFlexGridSizer6->Add(number, g_flagsH); number->SetFont(this->GetFont().Bold()); m_share_num_ctrl = new mmTextCtrl(stock_details_panel, ID_STOCKTRANS_SHARE_NUMBER, "" , wxDefaultPosition, wxSize(150, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemFlexGridSizer6->Add(m_share_num_ctrl, g_flagsH); m_share_num_ctrl->SetToolTip(_("Enter number of shares held")); m_share_num_ctrl->Connect(ID_STOCKTRANS_SHARE_NUMBER, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(ShareTransactionDialog::OnTextEntered), nullptr, this); //Share Price wxStaticText* pprice = new wxStaticText(stock_details_panel, wxID_STATIC, _("Share Price")); pprice->SetFont(this->GetFont().Bold()); m_share_price_ctrl = new mmTextCtrl(stock_details_panel, ID_STOCKTRANS_SHARE_PRICE, "" , wxDefaultPosition, wxSize(150, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemFlexGridSizer6->Add(pprice, g_flagsH); itemFlexGridSizer6->Add(m_share_price_ctrl, g_flagsH); m_share_price_ctrl->SetToolTip(_("Enter the current value for a single share unit")); m_share_price_ctrl->Connect(ID_STOCKTRANS_SHARE_PRICE, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(ShareTransactionDialog::OnTextEntered), nullptr, this); // Commission m_commission_ctrl = new mmTextCtrl(stock_details_panel, ID_STOCKTRANS_SHARE_COMMISSION, "0" , wxDefaultPosition, wxSize(150, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemFlexGridSizer6->Add(new wxStaticText(stock_details_panel, wxID_STATIC, _("Commission")), g_flagsH); itemFlexGridSizer6->Add(m_commission_ctrl, g_flagsH); m_commission_ctrl->SetToolTip(_("Enter any commission paid")); m_commission_ctrl->Connect(ID_STOCKTRANS_SHARE_COMMISSION, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(ShareTransactionDialog::OnTextEntered), nullptr, this); //Share Lot wxStaticText* lot_text = new wxStaticText(stock_details_panel, wxID_STATIC, _("Share Lot")); itemFlexGridSizer6->Add(lot_text, g_flagsH); lot_text->SetFont(this->GetFont().Bold()); m_share_lot_ctrl = new mmTextCtrl(stock_details_panel, ID_STOCKTRANS_SHARE_LOT , "", wxDefaultPosition, wxSize(150, -1), 0); itemFlexGridSizer6->Add(m_share_lot_ctrl, g_flagsH); m_share_lot_ctrl->SetToolTip(_("Enter the LOT that this parcel os shares belong to")); //Notes itemFlexGridSizer6->Add(new wxStaticText(stock_details_panel, wxID_STATIC, _("Notes")), g_flagsH); //Attachments m_attachments_btn = new wxBitmapButton(stock_details_panel, wxID_FILE, mmBitmap(png::CLIP)); m_attachments_btn->SetToolTip(_("Organize attachments of this stock")); //TODO m_attachments not used here m_attachments_btn->Hide(); wxBitmapButton* web_button = new wxBitmapButton(stock_details_panel, wxID_INDEX, mmBitmap(png::WEB)); web_button->SetToolTip(_("Display the web page for the specified Stock symbol")); wxBoxSizer* icon_sizer = new wxBoxSizer(wxHORIZONTAL); icon_sizer->Add(m_attachments_btn, g_flagsH); icon_sizer->Add(web_button, g_flagsH); itemFlexGridSizer6->Add(icon_sizer, wxSizerFlags(g_flagsH).Align(wxALIGN_RIGHT)); m_notes_ctrl = new mmTextCtrl(this, wxID_STATIC, "", wxDefaultPosition, wxSize(200, 162), wxTE_MULTILINE); details_frame_sizer->Add(m_notes_ctrl, g_flagsExpand); details_frame_sizer->AddSpacer(1); m_notes_ctrl->SetToolTip(_("Enter notes associated with this investment")); /******************************************************************** Transaction Panel *********************************************************************/ wxString trans_frame_heading = _("Add Transaction Details"); if (m_checking_entry) { trans_frame_heading = _("Edit Transaction Details"); } wxStaticBox* transaction_frame = new wxStaticBox(this, wxID_ANY, trans_frame_heading); wxStaticBoxSizer* transaction_frame_sizer = new wxStaticBoxSizer(transaction_frame, wxVERTICAL); right_sizer->Add(transaction_frame_sizer, g_flagsV); m_transaction_panel = new UserTransactionPanel(this, m_checking_entry, wxID_STATIC); transaction_frame_sizer->Add(m_transaction_panel, g_flagsV); if (m_translink_entry && m_checking_entry) { m_transaction_panel->CheckingType(Model_Translink::type_checking(m_checking_entry->TOACCOUNTID)); } else { wxString acc_held = Model_Account::get_account_name(m_stock->HELDAT); m_transaction_panel->SetTransactionNumber(acc_held); } /******************************************************************** Separation Line *********************************************************************/ wxStaticLine* separation_line = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL); main_sizer->Add(separation_line, 0, wxEXPAND | wxALL, 1); /******************************************************************** Button Panel *********************************************************************/ wxPanel* button_panel = new wxPanel(this, wxID_STATIC); wxBoxSizer* button_panel_sizer = new wxBoxSizer(wxHORIZONTAL); wxButton* ok_button = new wxButton(button_panel, wxID_OK, _("&OK ")); wxButton* close_button = new wxButton(button_panel, wxID_CANCEL, _("&Cancel ")); main_sizer->Add(button_panel, wxSizerFlags(g_flagsH).Center()); button_panel->SetSizer(button_panel_sizer); button_panel_sizer->Add(ok_button, g_flagsH); button_panel_sizer->Add(close_button, g_flagsH); //cancel_button->SetFocus(); }
void mmTransDialog::CreateControls() { wxBoxSizer* box_sizer1 = new wxBoxSizer(wxVERTICAL); wxBoxSizer* box_sizer2 = new wxBoxSizer(wxVERTICAL); box_sizer1->Add(box_sizer2, g_flagsExpand); wxStaticBox* static_box = new wxStaticBox(this, wxID_ANY, _("Transaction Details")); wxStaticBoxSizer* box_sizer = new wxStaticBoxSizer(static_box, wxVERTICAL); box_sizer2->Add(box_sizer, g_flagsExpand); wxFlexGridSizer* flex_sizer = new wxFlexGridSizer(0, 2, 0, 0); box_sizer->Add(flex_sizer, g_flags); // Date -------------------------------------------- long date_style = wxDP_DROPDOWN | wxDP_SHOWCENTURY; dpc_ = new wxDatePickerCtrl(this, ID_DIALOG_TRANS_BUTTONDATE, wxDateTime::Today() , wxDefaultPosition, wxSize(110, -1), date_style); //Text field for day of the week itemStaticTextWeek_ = new wxStaticText(this, wxID_STATIC, ""); // Display the day of the week spinCtrl_ = new wxSpinButton(this, wxID_STATIC , wxDefaultPosition, wxSize(18, wxSize(dpc_->GetSize()).GetHeight()) , wxSP_VERTICAL | wxSP_ARROW_KEYS | wxSP_WRAP); spinCtrl_->SetRange (-32768, 32768); flex_sizer->Add(new wxStaticText(this, wxID_STATIC, _("Date")), g_flags); wxBoxSizer* date_sizer = new wxBoxSizer(wxHORIZONTAL); flex_sizer->Add(date_sizer); date_sizer->Add(dpc_, g_flags); date_sizer->Add(spinCtrl_, g_flags); date_sizer->Add(itemStaticTextWeek_, g_flags); // Status -------------------------------------------- choiceStatus_ = new wxChoice(this, ID_DIALOG_TRANS_STATUS , wxDefaultPosition, wxSize(110, -1)); for(const auto& i : Model_Checking::all_status()) choiceStatus_->Append(wxGetTranslation(i), new wxStringClientData(i)); flex_sizer->Add(new wxStaticText(this, wxID_STATIC, _("Status")), g_flags); flex_sizer->Add(choiceStatus_, g_flags); // Type -------------------------------------------- transaction_type_ = new wxChoice(this, ID_DIALOG_TRANS_TYPE , wxDefaultPosition, wxSize(110, -1)); for (const auto& i : Model_Checking::all_type()) { if (i != Model_Checking::all_type()[Model_Checking::TRANSFER] || Model_Account::instance().all().size() > 1) transaction_type_->Append(wxGetTranslation(i), new wxStringClientData(i)); } cAdvanced_ = new wxCheckBox(this , ID_DIALOG_TRANS_ADVANCED_CHECKBOX, _("&Advanced") , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); wxBoxSizer* typeSizer = new wxBoxSizer(wxHORIZONTAL); flex_sizer->Add(new wxStaticText(this, wxID_STATIC, _("Type")), g_flags); flex_sizer->Add(typeSizer); typeSizer->Add(transaction_type_, g_flags); typeSizer->Add(cAdvanced_, g_flags); // Amount Fields -------------------------------------------- textAmount_ = new mmTextCtrl(this, ID_DIALOG_TRANS_TEXTAMOUNT, "" , wxDefaultPosition, wxSize(110, -1) , wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); toTextAmount_ = new mmTextCtrl( this, ID_DIALOG_TRANS_TOTEXTAMOUNT, "" , wxDefaultPosition, wxSize(110, -1) , wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); wxBoxSizer* amountSizer = new wxBoxSizer(wxHORIZONTAL); amountSizer->Add(textAmount_, g_flags); amountSizer->Add(toTextAmount_, g_flags); flex_sizer->Add(new wxStaticText( this, wxID_STATIC, _("Amount")), g_flags); flex_sizer->Add(amountSizer); // Account --------------------------------------------- cbAccount_ = new wxComboBox(this, wxID_ANY, "" , wxDefaultPosition, wxSize(230, -1)); account_label_ = new wxStaticText(this, wxID_STATIC, _("Account")); flex_sizer->Add(account_label_, g_flags); flex_sizer->Add(cbAccount_, g_flags); // Payee --------------------------------------------- payee_label_ = new wxStaticText(this, wxID_STATIC, _("Payee")); /*Note: If you want to use EVT_TEXT_ENTER(id,func) to receive wxEVT_COMMAND_TEXT_ENTER events, you have to add the wxTE_PROCESS_ENTER window style flag. If you create a wxComboBox with the flag wxTE_PROCESS_ENTER, the tab key won't jump to the next control anymore.*/ cbPayee_ = new wxComboBox(this, ID_DIALOG_TRANS_PAYEECOMBO, "" , wxDefaultPosition, wxSize(230, -1)); flex_sizer->Add(payee_label_, g_flags); flex_sizer->Add(cbPayee_, g_flags); // Split Category ------------------------------------------- cSplit_ = new wxCheckBox(this, wxID_FORWARD , _("Split"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); cSplit_->SetValue(FALSE); flex_sizer->AddSpacer(20); // Fill empty space. flex_sizer->Add(cSplit_, g_flags); // Category ------------------------------------------------- bCategory_ = new wxButton(this, wxID_VIEW_DETAILS, "" , wxDefaultPosition, wxSize(230, -1)); flex_sizer->Add(new wxStaticText(this, wxID_STATIC, _("Category")), g_flags); flex_sizer->Add(bCategory_, g_flags); // Number --------------------------------------------- textNumber_ = new mmTextCtrl(this , ID_DIALOG_TRANS_TEXTNUMBER, "", wxDefaultPosition , wxDefaultSize, wxTE_PROCESS_ENTER); wxButton* bAuto = new wxButton(this , ID_DIALOG_TRANS_BUTTONTRANSNUM, "...", wxDefaultPosition , wxSize(cbPayee_->GetSize().GetY(), cbPayee_->GetSize().GetY())); bAuto->Connect(ID_DIALOG_TRANS_BUTTONTRANSNUM, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(mmTransDialog::OnAutoTransNum), nullptr, this); bAuto->SetToolTip(_("Populate Transaction #")); flex_sizer->Add(new wxStaticText(this, wxID_STATIC, _("Number")), g_flags); wxBoxSizer* number_sizer = new wxBoxSizer(wxHORIZONTAL); flex_sizer->Add(number_sizer, wxSizerFlags(g_flagsExpand).Border(wxALL, 0)); number_sizer->Add(textNumber_, g_flagsExpand); number_sizer->Add(bAuto, g_flags); // Notes --------------------------------------------- flex_sizer->Add(new wxStaticText(this, wxID_STATIC, _("Notes")), g_flags); wxButton* bFrequentUsedNotes = new wxButton(this, ID_DIALOG_TRANS_BUTTON_FREQENTNOTES , "...", wxDefaultPosition , wxSize(cbPayee_->GetSize().GetY(), cbPayee_->GetSize().GetY()), 0); bFrequentUsedNotes->SetToolTip(_("Select one of the frequently used notes")); bFrequentUsedNotes->Connect(ID_DIALOG_TRANS_BUTTON_FREQENTNOTES , wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(mmTransDialog::OnFrequentUsedNotes), nullptr, this); // Attachments --------------------------------------------- bAttachments_ = new wxBitmapButton(this, wxID_FILE , wxBitmap(attachment_xpm), wxDefaultPosition , wxSize(bFrequentUsedNotes->GetSize().GetY(), bFrequentUsedNotes->GetSize().GetY())); bAttachments_->SetToolTip(_("Organize attachments of this transaction")); wxBoxSizer* RightAlign_sizer = new wxBoxSizer(wxHORIZONTAL); flex_sizer->Add(RightAlign_sizer, wxSizerFlags(g_flags).Align(wxALIGN_RIGHT)); RightAlign_sizer->Add(bAttachments_, wxSizerFlags().Border(wxRIGHT, 5)); RightAlign_sizer->Add(bFrequentUsedNotes, wxSizerFlags().Border(wxLEFT, 5)); textNotes_ = new wxTextCtrl(this, ID_DIALOG_TRANS_TEXTNOTES, "", wxDefaultPosition, wxSize(-1, 120), wxTE_MULTILINE); box_sizer->Add(textNotes_, wxSizerFlags(g_flagsExpand).Border(wxLEFT | wxRIGHT | wxBOTTOM, 10)); /********************************************************************************************** Button Panel with OK and Cancel Buttons ***********************************************************************************************/ wxPanel* buttons_panel = new wxPanel(this, wxID_ANY); box_sizer1->Add(buttons_panel, wxSizerFlags(g_flags).Center().Border(wxALL, 0)); wxStdDialogButtonSizer* buttons_sizer = new wxStdDialogButtonSizer; buttons_panel->SetSizer(buttons_sizer); wxButton* itemButtonOK = new wxButton(buttons_panel, wxID_OK, _("&OK ")); itemButtonCancel_ = new wxButton(buttons_panel, wxID_CANCEL, _("&Cancel ")); buttons_sizer->Add(itemButtonOK, wxSizerFlags(g_flags).Border(wxBOTTOM | wxRIGHT, 10)); buttons_sizer->Add(itemButtonCancel_, wxSizerFlags(g_flags).Border(wxBOTTOM | wxRIGHT, 10)); itemButtonCancel_->SetFocus(); buttons_sizer->Realize(); Center(); this->SetSizer(box_sizer1); cbPayee_->Connect(ID_DIALOG_TRANS_PAYEECOMBO, wxEVT_COMMAND_TEXT_UPDATED , wxCommandEventHandler(mmTransDialog::OnAccountOrPayeeUpdated), nullptr, this); textAmount_->Connect(ID_DIALOG_TRANS_TEXTAMOUNT, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmTransDialog::onTextEntered), nullptr, this); toTextAmount_->Connect(ID_DIALOG_TRANS_TOTEXTAMOUNT, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmTransDialog::onTextEntered), nullptr, this); textNumber_->Connect(ID_DIALOG_TRANS_TEXTNUMBER, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmTransDialog::onTextEntered), nullptr, this); #ifdef __WXGTK__ // Workaround for bug http://trac.wxwidgets.org/ticket/11630 dpc_->Connect(ID_DIALOG_TRANS_BUTTONDATE, wxEVT_KILL_FOCUS , wxFocusEventHandler(mmTransDialog::OnDpcKillFocus), nullptr, this); #endif }
void mmBudgetEntryDialog::CreateControls() { wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); this->SetSizer(itemBoxSizer2); wxStaticBox* itemStaticBoxSizer4Static = new wxStaticBox(this, wxID_ANY, ""); // ,_("Budget Entry Details")); wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(itemStaticBoxSizer4Static, wxVERTICAL); itemBoxSizer2->Add(itemStaticBoxSizer4, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxTOP | wxRIGHT, 10); wxPanel* itemPanel7 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); itemStaticBoxSizer4->Add(itemPanel7, 0, wxGROW|wxALL, 10); wxFlexGridSizer* itemGridSizer2 = new wxFlexGridSizer(0, 2, 0, 0); itemPanel7->SetSizer(itemGridSizer2); const Model_Category::Data* category = Model_Category::instance().get(budgetEntry_->CATEGID); const Model_Subcategory::Data* sub_category = (budgetEntry_->SUBCATEGID != -1 ? Model_Subcategory::instance().get(budgetEntry_->SUBCATEGID) : 0); wxStaticText* itemTextEstCatAmt = new wxStaticText(itemPanel7, wxID_STATIC, catEstimateAmountStr_); wxStaticText* itemTextActCatAmt = new wxStaticText(itemPanel7, wxID_STATIC, catActualAmountStr_); itemGridSizer2->Add(new wxStaticText(itemPanel7, wxID_STATIC, _("Category: ")), g_flags); itemGridSizer2->Add(new wxStaticText(itemPanel7, wxID_STATIC, category->CATEGNAME), wxSizerFlags(g_flags).Align(wxALIGN_RIGHT)); // only add the subcategory if it exists. if (budgetEntry_->SUBCATEGID >= 0) { wxStaticText* itemTextSubCatTag = new wxStaticText(itemPanel7, wxID_STATIC , _("Sub Category: ")); wxStaticText* itemTextSubCatName = new wxStaticText(itemPanel7, wxID_STATIC , sub_category->SUBCATEGNAME); itemGridSizer2->Add(itemTextSubCatTag, g_flags); itemGridSizer2->Add(itemTextSubCatName, wxSizerFlags(g_flags).Align(wxALIGN_RIGHT)); } itemGridSizer2->Add(new wxStaticText(itemPanel7, wxID_STATIC, _("Estimated:")), g_flags); itemGridSizer2->Add(itemTextEstCatAmt, wxSizerFlags(g_flags).Align(wxALIGN_RIGHT)); itemGridSizer2->Add(new wxStaticText(itemPanel7, wxID_STATIC, _("Actual:")), g_flags); itemGridSizer2->Add(itemTextActCatAmt, wxSizerFlags(g_flags).Align(wxALIGN_RIGHT)); itemGridSizer2->Add(new wxStaticText(itemPanel7, wxID_STATIC, _("Type:")), g_flags); wxArrayString itemTypeStrings; itemTypeStrings.Add(_("Expense")); itemTypeStrings.Add(_("Income")); m_choiceType = new wxChoice(itemPanel7, wxID_ANY , wxDefaultPosition, wxDefaultSize, itemTypeStrings); itemGridSizer2->Add(m_choiceType, g_flagsExpand); m_choiceType->SetToolTip(_("Specify whether this category is an income or an expense category")); itemGridSizer2->Add(new wxStaticText(itemPanel7, wxID_STATIC, _("Frequency:")), g_flags); m_choiceItem = new wxChoice(itemPanel7, wxID_ANY , wxDefaultPosition, wxDefaultSize, Model_Budget::all_period()); itemGridSizer2->Add(m_choiceItem, g_flagsExpand); m_choiceItem->SetToolTip(_("Specify the frequency of the expense or deposit")); m_choiceItem->Connect(wxID_ANY, wxEVT_CHAR, wxKeyEventHandler(mmBudgetEntryDialog::onChoiceChar), nullptr, this); itemGridSizer2->Add(new wxStaticText(itemPanel7, wxID_STATIC, _("Amount:")), g_flags); m_textAmount = new mmTextCtrl(itemPanel7, wxID_ANY, "" , wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT | wxTE_PROCESS_ENTER, mmCalcValidator()); itemGridSizer2->Add(m_textAmount, g_flagsExpand); m_textAmount->SetToolTip(_("Enter the amount budgeted for this category.")); m_textAmount->Connect(wxID_ANY, wxEVT_COMMAND_TEXT_ENTER , wxCommandEventHandler(mmBudgetEntryDialog::OnTextEntered), nullptr, this); m_textAmount->SetFocus(); wxBoxSizer* itemBoxSizer9 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer2->Add(itemBoxSizer9, wxSizerFlags(g_flags).Center()); wxButton* itemButton7 = new wxButton(this, wxID_OK, _("&OK ")); itemBoxSizer9->Add(itemButton7, g_flags); wxButton* itemButton8 = new wxButton(this, wxID_CANCEL, _("&Cancel ")); itemBoxSizer9->Add(itemButton8, g_flags); }
void mmMainCurrencyDialog::CreateControls() { wxBoxSizer* mainBoxSizer = new wxBoxSizer(wxHORIZONTAL); this->SetSizer(mainBoxSizer); wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); mainBoxSizer->Add(itemBoxSizer2, g_flagsExpand); wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer2->Add(itemBoxSizer22, wxSizerFlags(g_flagsExpand).Proportion(0)); wxBitmapButton* update_button = new wxBitmapButton(this , wxID_STATIC, mmBitmap(png::UPDATE)); itemBoxSizer22->Add(update_button, g_flagsH); update_button->Connect(wxID_STATIC, wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler(mmMainCurrencyDialog::OnOnlineUpdateCurRate), nullptr, this); update_button->SetToolTip(_("Online update currency rate")); itemBoxSizer22->AddSpacer(4); itemBoxSizer22->Add(new wxStaticText(this, wxID_STATIC , _("Online Update")), g_flagsH); itemBoxSizer22->AddSpacer(15); cbShowAll_ = new wxCheckBox(this, wxID_SELECTALL, _("Show All"), wxDefaultPosition , wxDefaultSize, wxCHK_2STATE); cbShowAll_->SetToolTip(_("Show all even the unused currencies")); cbShowAll_->Connect(wxID_SELECTALL, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(mmMainCurrencyDialog::OnShowHiddenChbClick), nullptr, this); itemBoxSizer22->Add(cbShowAll_, g_flagsH); wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer2->Add(itemBoxSizer3, g_flagsExpand); //TODO:provide proper style and fix validator (does not working) currencyListBox_ = new wxDataViewListCtrl( this , wxID_ANY, wxDefaultPosition, wxSize(-1, 200)/*, wxDV_HORIZ_RULES, mmDoubleValidator(4)*/); currencyListBox_->AppendToggleColumn(ColName_[CURR_BASE], wxDATAVIEW_CELL_INERT, 30); currencyListBox_->AppendTextColumn(ColName_[CURR_SYMBOL], wxDATAVIEW_CELL_INERT, 60 , wxALIGN_LEFT, wxDATAVIEW_COL_SORTABLE); currencyListBox_->AppendTextColumn(ColName_[CURR_NAME], wxDATAVIEW_CELL_INERT, 170 , wxALIGN_LEFT, wxDATAVIEW_COL_SORTABLE); currencyListBox_->AppendTextColumn(ColName_[BASE_RATE], wxDATAVIEW_CELL_EDITABLE, 80); itemBoxSizer3->Add(currencyListBox_, g_flagsExpand); wxPanel* buttonsPanel = new wxPanel(this, wxID_ANY); itemBoxSizer2->Add(buttonsPanel, wxSizerFlags(g_flagsV).Center()); wxBoxSizer* buttonsSizer = new wxBoxSizer(wxVERTICAL); buttonsPanel->SetSizer(buttonsSizer); wxStdDialogButtonSizer* itemBoxSizer66 = new wxStdDialogButtonSizer; buttonsSizer->Add(itemBoxSizer66); wxButton* itemButton7 = new wxButton(buttonsPanel, wxID_ADD, _("&Add ")); itemBoxSizer66->Add(itemButton7, g_flagsH); itemButtonEdit_ = new wxButton(buttonsPanel, wxID_EDIT, _("&Edit ")); itemBoxSizer66->Add(itemButtonEdit_, g_flagsH); itemButtonEdit_->Disable(); itemButtonDelete_ = new wxButton(buttonsPanel, wxID_REMOVE, _("&Remove ")); itemBoxSizer66->Add(itemButtonDelete_, g_flagsH); itemButtonDelete_->Disable(); wxStdDialogButtonSizer* itemBoxSizer9 = new wxStdDialogButtonSizer; buttonsSizer->Add(itemBoxSizer9, wxSizerFlags(g_flagsExpand).Border(wxALL, 0)); wxButton* itemButtonSelect = new wxButton(buttonsPanel, wxID_SELECTALL, _("&Select")); itemBoxSizer9->Add(itemButtonSelect, wxSizerFlags(g_flagsExpand).Proportion(4)); //itemButtonSelect->SetToolTip(_("Select the currently selected currency as the selected currency for the account")); if (bEnableSelect_ == false) itemButtonSelect->Disable(); //Some interfaces has no any close buttons, it may confuse user. Cancel button added wxButton* itemCancelButton = new wxButton(buttonsPanel, wxID_CANCEL, wxGetTranslation(g_CloseLabel)); itemBoxSizer9->Add(itemCancelButton, g_flagsH); itemCancelButton->SetFocus(); //History Panel wxBoxSizer* rightBoxSizer = new wxBoxSizer(wxVERTICAL); mainBoxSizer->Add(rightBoxSizer, g_flagsExpand); historyStaticBox_ = new wxStaticBox(this, wxID_ANY, _("Currency History Options")); wxStaticBoxSizer* historyStaticBox_Sizer = new wxStaticBoxSizer(historyStaticBox_, wxVERTICAL); rightBoxSizer->Add(historyStaticBox_Sizer, g_flagsExpand); valueListBox_ = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxSize(250, 150) , wxLC_REPORT); historyStaticBox_Sizer->Add(valueListBox_, g_flagsExpand); wxListItem col0, col1, col2; // Add first column col0.SetId(0); col0.SetText(_("Date")); col0.SetWidth(90); valueListBox_->InsertColumn(0, col0); // Add second column col1.SetId(1); col1.SetText(_("Value")); col1.SetWidth(100); valueListBox_->InsertColumn(1, col1); // Add third column col2.SetId(2); col2.SetText(_("Diff.")); col2.SetWidth(90); valueListBox_->InsertColumn(2, col2); //History Buttons wxPanel* values_panel = new wxPanel(this, wxID_ANY); historyStaticBox_Sizer->Add(values_panel, wxSizerFlags(g_flagsV).Centre()); wxStdDialogButtonSizer* values_sizer = new wxStdDialogButtonSizer; values_panel->SetSizer(values_sizer); values_sizer->Add(new wxStaticText(values_panel, wxID_STATIC, _("Date")), g_flagsH); valueDatePicker_ = new wxDatePickerCtrl(values_panel, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxSize(120, -1), wxDP_DROPDOWN | wxDP_SHOWCENTURY); values_sizer->Add(valueDatePicker_, g_flagsH); valueDatePicker_->SetToolTip(_("Specify the date of currency value")); values_sizer->Add(new wxStaticText(values_panel, wxID_STATIC, _("Value")), g_flagsH); valueTextBox_ = new mmTextCtrl(values_panel, wxID_ANY, wxGetEmptyString() , wxDefaultPosition, wxSize(120, -1), wxALIGN_RIGHT | wxTE_PROCESS_ENTER , mmCalcValidator()); valueTextBox_->SetToolTip(_("Enter the currency value")); values_sizer->Add(valueTextBox_, g_flagsH); wxPanel* buttons_panel = new wxPanel(this, wxID_ANY); historyStaticBox_Sizer->Add(buttons_panel, wxSizerFlags(g_flagsV).Centre()); wxStdDialogButtonSizer* buttons_sizer = new wxStdDialogButtonSizer; buttons_panel->SetSizer(buttons_sizer); wxBitmapButton* buttonDownload = new wxBitmapButton(buttons_panel, HISTORY_UPDATE, mmBitmap(png::UPDATE)); buttonDownload->SetToolTip(_("Download Currency Values history")); historyButtonAdd_ = new wxButton(buttons_panel, HISTORY_ADD, _("&Add / Update "), wxDefaultPosition , wxSize(-1, buttonDownload->GetSize().GetY())); historyButtonAdd_->SetToolTip(_("Add Currency Values to history")); historyButtonDelete_ = new wxButton(buttons_panel, HISTORY_DELETE, _("&Delete "), wxDefaultPosition , wxSize(-1, buttonDownload->GetSize().GetY())); historyButtonDelete_->SetToolTip(_("Delete selected Currency Values")); wxBitmapButton* buttonDelUnusedHistory = new wxBitmapButton(buttons_panel , HISTORY_DELUNUSED, mmBitmap(png::VOID_STAT)); buttonDelUnusedHistory->SetToolTip(_("Delete Currency Values history for unused currencies")); buttons_sizer->Add(buttonDownload, g_flagsH); buttons_sizer->Add(historyButtonAdd_, g_flagsH); buttons_sizer->Add(historyButtonDelete_, g_flagsH); buttons_sizer->Add(buttonDelUnusedHistory, g_flagsH); this->SetMinSize(wxSize(800,550)); this->Fit(); }