From: <vo...@us...> - 2014-01-18 02:56:01
|
Revision: 5952 http://sourceforge.net/p/moneymanagerex/code/5952 Author: vomikan Date: 2014-01-18 02:55:56 +0000 (Sat, 18 Jan 2014) Log Message: ----------- transdialog update Modified Paths: -------------- branches/version_1.0.0.0/src/mmtextctrl.h branches/version_1.0.0.0/src/model/Model_Currency.h branches/version_1.0.0.0/src/transdialog.cpp branches/version_1.0.0.0/src/transdialog.h branches/version_1.0.0.0/src/util.cpp branches/version_1.0.0.0/src/util.h Modified: branches/version_1.0.0.0/src/mmtextctrl.h =================================================================== --- branches/version_1.0.0.0/src/mmtextctrl.h 2014-01-18 01:35:58 UTC (rev 5951) +++ branches/version_1.0.0.0/src/mmtextctrl.h 2014-01-18 02:55:56 UTC (rev 5952) @@ -22,7 +22,7 @@ #include "mmCalculator.h" #include "model/Model_Currency.h" #include "model/Model_Account.h" -#include "util.h" +#include <wx/richtooltip.h> class mmTextCtrl : public wxTextCtrl { @@ -34,7 +34,8 @@ , const wxString &value = wxEmptyString , const wxPoint &pos = wxDefaultPosition , const wxSize &size = wxDefaultSize - , long style = 0, const wxValidator &validator = wxDefaultValidator + , long style = 0 + , const wxValidator &validator = wxDefaultValidator , const wxString &name = wxTextCtrlNameStr) : wxTextCtrl(parent, id, value, pos, size, style, validator, name) , currency_(Model_Currency::GetBaseCurrency()) @@ -47,21 +48,22 @@ { this->SetValue(Model_Currency::toString(value, currency_, precision)); } - void SetValue(double value, const Model_Account::Data* account) + void SetValue(double value, const Model_Account::Data* account, int precision = -1) { - currency_ = Model_Currency::instance().get(account->CURRENCYID); - this->SetValue(Model_Account::toString(value, account)); + if (account) currency_ = Model_Currency::instance().get(account->CURRENCYID); + this->SetValue(value, precision > -1 ? precision : log10(currency_->SCALE)); } - void SetValue(double value, const Model_Account::Data* account, int precision) + void SetValue(double value, const Model_Currency::Data* currency, int precision = -1) { - currency_ = Model_Currency::instance().get(account->CURRENCYID); - this->SetValue(value, precision); + currency_ = (currency ? currency : Model_Currency::GetBaseCurrency()); + this->SetValue(value, precision > -1 ? precision : log10(currency_->SCALE)); } void Calculate(const Model_Currency::Data* currency, int alt_precision = -1) { + if (!currency) return; mmCalculator calc; int precision = alt_precision >= 0 ? alt_precision : log10(currency->SCALE); - if (calc.is_ok(Model_Currency::fromString(this->GetValue(), currency))) + if (calc.is_ok(Model_Currency::fromString2Default(this->GetValue(), currency))) this->SetValue(Model_Currency::toString(calc.get_result(), currency, precision)); this->SetInsertionPoint(this->GetValue().Len()); } @@ -80,10 +82,15 @@ { if (!GetDouble(amount) || amount < 0) { - this->SetBackgroundColour(wxColour("RED")); - mmShowErrorMessageInvalid(this, _("Amount")); - this->SetBackgroundColour(wxNullColour); - this->SetFocus(); + wxRichToolTip tip(_("Invalid Amount Entered "), + _("You might have made an error in the amount entered.") + + "\n" + + _("Value should be positive and proper formated.") + + "\n\n" + + _("Tip: Enter some amount or math expression like '2+2'\nthen press Enter for proper format")); + tip.SetIcon(wxICON_WARNING); + tip.ShowFor(this); + SetFocus(); return false; } return true; Modified: branches/version_1.0.0.0/src/model/Model_Currency.h =================================================================== --- branches/version_1.0.0.0/src/model/Model_Currency.h 2014-01-18 01:35:58 UTC (rev 5951) +++ branches/version_1.0.0.0/src/model/Model_Currency.h 2014-01-18 02:55:56 UTC (rev 5952) @@ -165,6 +165,18 @@ } return s; } + static wxString Model_Currency::fromString2Default(wxString s, const Data* currency) + { + // Remove prefix and suffix characters from value + if (currency) + { + if (!currency->DECIMAL_POINT.empty()) s.Replace(currency->DECIMAL_POINT, "\x05"); + if (!currency->GROUP_SEPARATOR.empty()) s.Replace(currency->GROUP_SEPARATOR, "\t"); + s.Replace("\t", os_group_separator()); + s.Replace("\x05", wxNumberFormatter::GetDecimalSeparator()); + } + return s; + } static wxString fromString(wxString s, const Data* currency) { // Remove prefix and suffix characters from value Modified: branches/version_1.0.0.0/src/transdialog.cpp =================================================================== --- branches/version_1.0.0.0/src/transdialog.cpp 2014-01-18 01:35:58 UTC (rev 5951) +++ branches/version_1.0.0.0/src/transdialog.cpp 2014-01-18 02:55:56 UTC (rev 5952) @@ -41,9 +41,10 @@ EVT_CHOICE(ID_DIALOG_TRANS_TYPE, mmTransDialog::OnTransTypeChanged) EVT_CHECKBOX(ID_DIALOG_TRANS_ADVANCED_CHECKBOX, mmTransDialog::OnAdvanceChecked) EVT_CHECKBOX(wxID_FORWARD, mmTransDialog::OnSplitChecked) - EVT_CHILD_FOCUS(mmTransDialog::changeFocus) + EVT_CHILD_FOCUS(mmTransDialog::onFocusChange) EVT_SPIN(wxID_ANY,mmTransDialog::OnSpin) EVT_DATE_CHANGED(ID_DIALOG_TRANS_BUTTONDATE, mmTransDialog::OnDateChanged) + EVT_COMBOBOX(wxID_ANY, mmTransDialog::OnAccountOrPayeeUpdated) END_EVENT_TABLE() mmTransDialog::mmTransDialog(wxWindow* parent @@ -54,6 +55,7 @@ , referenceAccountID_(account_id) , transaction_id_(transaction_id) , categUpdated_(false) + , m_transfer(false) , advancedToTransAmountSet_(false) , edit_currency_rate(1.0) , skip_account_init_(false) @@ -62,12 +64,12 @@ , skip_notes_init_(false) , skip_category_init_(false) , skip_amount_init_(false) - { if (transaction_id_) { transaction_ = Model_Checking::instance().get(transaction_id_); for (const auto& item : Model_Checking::splittransaction(transaction_)) m_local_splits.push_back(item); + m_transfer = Model_Checking::type(transaction_) == Model_Checking::TRANSFER; } else { @@ -92,7 +94,7 @@ for (const auto &trx : transactions) { if (trx.ACCOUNTID != transaction_->ACCOUNTID) continue; - if (Model_Checking::type(trx) == Model_Checking::TRANSFER) continue; + if (m_transfer) continue; transaction_->PAYEEID = trx.PAYEEID; Model_Payee::Data * payee = Model_Payee::instance().get(trx.PAYEEID); @@ -149,8 +151,6 @@ else SetDialogTitle(_("New Transaction")); - bool transfer = Model_Checking::type(transaction_) == Model_Checking::TRANSFER; - //Date const wxDateTime trx_date = Model_Checking::TRANSDATE(transaction_); dpc_->SetValue(trx_date); @@ -163,14 +163,14 @@ { choiceStatus_->SetSelection(Model_Checking::status(transaction_)); skip_status_init_ = true; - } + } //Type transaction_type_->SetSelection(Model_Checking::type(transaction_)); //Advanced - cAdvanced_->Enable(transfer); - cAdvanced_->SetValue(advancedToTransAmountSet_ && transfer); + cAdvanced_->Enable(m_transfer); + cAdvanced_->SetValue(advancedToTransAmountSet_ && m_transfer); //Amounts if (!skip_amount_init_) @@ -179,12 +179,13 @@ textAmount_->SetValue(transaction_->TRANSAMOUNT, Model_Account::instance().get(accountID_)); skip_amount_init_ = true; } - if (transaction_->TOTRANSAMOUNT && cAdvanced_->IsChecked() && transfer) + + if (transaction_->TOTRANSAMOUNT && advancedToTransAmountSet_) toTextAmount_->SetValue(transaction_->TOTRANSAMOUNT, Model_Account::instance().get(accountID_)); - if (!transfer) + if (!m_transfer) toTextAmount_->SetValue(""); - toTextAmount_->Enable(cAdvanced_->IsChecked()); + toTextAmount_->Enable(cAdvanced_->IsChecked() && m_transfer); textAmount_->UnsetToolTip(); toTextAmount_->UnsetToolTip(); @@ -197,13 +198,13 @@ { cbAccount_->SetEvtHandlerEnabled(false); cbAccount_->Clear(); - newAccountID_ = accountID_; Model_Account::Data_Set accounts = Model_Account::instance().all(Model_Account::COL_ACCOUNTNAME); + for (const auto &account : accounts) { if (Model_Account::type(account) == Model_Account::INVESTMENT) continue; cbAccount_->Append(account.ACCOUNTNAME); - if (account.ACCOUNTID == transaction_->ACCOUNTID) cbAccount_->SetStringSelection(account.ACCOUNTNAME); + if (account.ACCOUNTID == transaction_->ACCOUNTID) cbAccount_->ChangeValue(account.ACCOUNTNAME); } cbAccount_->AutoComplete(Model_Account::instance().all_checking_account_names()); accountID_ = transaction_->ACCOUNTID; @@ -225,7 +226,7 @@ cbAccount_->UnsetToolTip(); cbPayee_->UnsetToolTip(); wxString payee_tooltip = ""; - if (!transfer) + if (!m_transfer) { textAmount_->SetToolTip(amountNormalTip_); @@ -250,7 +251,7 @@ if (payee) cbPayee_->ChangeValue(payee->PAYEENAME); } - else + else //transfer { textAmount_->SetToolTip(amountTransferTip_); toTextAmount_->SetToolTip(_("Specify the transfer amount in the To Account")); @@ -259,11 +260,21 @@ cSplit_->SetValue(false); m_local_splits.clear(); } + + Model_Category::Data_Set categs = Model_Category::instance().find(Model_Category::CATEGNAME(wxGetTranslation("Transfer"))); + if (!categs.empty()) + { + transaction_->SUBCATEGID = -1; + transaction_->CATEGID = categs.begin()->CATEGID; + bCategory_->SetLabel(Model_Category::full_name(transaction_->CATEGID, -1)); + } + for (const auto & entry : Model_Account::instance().all_checking_account_names()) cbPayee_->Append(entry); Model_Account::Data *account = Model_Account::instance().get(transaction_->TOACCOUNTID); if (account) cbPayee_->ChangeValue(account->ACCOUNTNAME); + cbPayee_->AutoComplete(Model_Account::instance().all_checking_account_names()); payee_label_->SetLabel(_("To")); @@ -304,7 +315,7 @@ skip_category_init_ = true; } textAmount_->Enable(m_local_splits.empty()); - cSplit_->Enable(!transfer); + cSplit_->Enable(!m_transfer); //Notes & Transaction Number if (!skip_notes_init_) @@ -383,9 +394,9 @@ transaction_type_->Append(wxGetTranslation(i), new wxStringClientData(i)); } - cAdvanced_ = new wxCheckBox(this, - ID_DIALOG_TRANS_ADVANCED_CHECKBOX, _("Advanced"), - wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + cAdvanced_ = new wxCheckBox(this + , ID_DIALOG_TRANS_ADVANCED_CHECKBOX, _("&Advanced") + , wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); wxBoxSizer* typeSizer = new wxBoxSizer(wxHORIZONTAL); @@ -494,7 +505,7 @@ buttons_panel->SetSizer(buttons_sizer); wxButton* itemButtonOK = new wxButton( buttons_panel, wxID_OK, _("&OK ")); - itemButtonCancel_ = new wxButton(buttons_panel, wxID_CANCEL, _("&Cancel ")); + itemButtonCancel_ = new wxButton( buttons_panel, wxID_CANCEL, _("&Cancel ")); buttons_sizer->Add(itemButtonOK, flags.Border(wxBOTTOM|wxRIGHT, 10)); buttons_sizer->Add(itemButtonCancel_, flags); @@ -505,12 +516,8 @@ Center(); this->SetSizer(box_sizer1); - cbAccount_->Connect(wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, - wxCommandEventHandler(mmTransDialog::OnAccountUpdated), NULL, this); cbPayee_->Connect(ID_DIALOG_TRANS_PAYEECOMBO, wxEVT_COMMAND_TEXT_UPDATED, - wxCommandEventHandler(mmTransDialog::OnPayeeUpdated), NULL, this); - cbPayee_->Connect(ID_DIALOG_TRANS_PAYEECOMBO, wxEVT_COMMAND_COMBOBOX_CLOSEUP, - wxCommandEventHandler(mmTransDialog::OnPayeeUpdated), NULL, this); + wxCommandEventHandler(mmTransDialog::OnAccountOrPayeeUpdated), NULL, this); textAmount_->Connect(ID_DIALOG_TRANS_TEXTAMOUNT, wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(mmTransDialog::onTextEntered), NULL, this); toTextAmount_->Connect(ID_DIALOG_TRANS_TOTEXTAMOUNT, wxEVT_COMMAND_TEXT_ENTER, @@ -546,60 +553,23 @@ Model_Account::Data* account = Model_Account::instance().get(cbAccount_->GetValue()); if (account && Model_Account::type(account) != Model_Account::INVESTMENT) { - newAccountID_ = account->ACCOUNTID; + accountID_ = account->ACCOUNTID; } else { - mmShowErrorMessageInvalid(this, _("Account")); + mmMessageAccountInvalid(cbAccount_); return false; } bool bTransfer = (Model_Checking::type(transaction_) == Model_Checking::TRANSFER); - if (cSplit_->IsChecked()) - { - transaction_->TRANSAMOUNT = Model_Splittransaction::instance().get_total(m_local_splits); - if (transaction_->TRANSAMOUNT < 0.0) - { - if (bTransfer) { - if (transaction_->TRANSAMOUNT < 0) - transaction_->TRANSAMOUNT = - transaction_->TRANSAMOUNT; - } else { - mmShowErrorMessageInvalid(this, _("Amount")); - return false; - } - } - - if (m_local_splits.empty()) - { - mmShowErrorMessageInvalid(this, _("Category")); - return false; - } - } - else - { - if (!textAmount_->checkValue(transaction_->TRANSAMOUNT)) - { - return false; - } - - Model_Category::Data *category = Model_Category::instance().get(transaction_->CATEGID); - Model_Subcategory::Data *subcategory = Model_Subcategory::instance().get(transaction_->SUBCATEGID); - if (!category || !(subcategory || transaction_->SUBCATEGID < 0)) - { - mmShowErrorMessageInvalid(this, _("Category")); - return false; - } - } - transaction_->TOTRANSAMOUNT = transaction_->TRANSAMOUNT; - if (!bTransfer) { wxString payee_name = cbPayee_->GetValue(); if (payee_name.IsEmpty()) { - mmShowErrorMessageInvalid(this, _("Payee")); + mmMessagePayeeInvalid(cbPayee_); return false; } @@ -631,24 +601,61 @@ payee->SUBCATEGID = transaction_->SUBCATEGID; Model_Payee::instance().save(payee); } - else //Transfer + else //transfer { + Model_Account::Data *to_account = Model_Account::instance().get(cbPayee_->GetValue()); + if (!to_account || to_account->ACCOUNTID == accountID_ || Model_Account::type(to_account) == Model_Account::INVESTMENT) + { + mmMessageAccountInvalid(cbPayee_, true); + return false; + } + transaction_->TOACCOUNTID = to_account->ACCOUNTID; if (advancedToTransAmountSet_) { if (!toTextAmount_->checkValue(transaction_->TOTRANSAMOUNT)) return false; } - Model_Account::Data *to_account = Model_Account::instance().get(transaction_->TOACCOUNTID); - if (!to_account || transaction_->TOACCOUNTID == newAccountID_ || Model_Account::type(to_account) == Model_Account::INVESTMENT) + transaction_->PAYEEID = -1; + } + + if (cSplit_->IsChecked()) + { + transaction_->TRANSAMOUNT = Model_Splittransaction::instance().get_total(m_local_splits); + if (transaction_->TRANSAMOUNT < 0.0) { - mmShowErrorMessageInvalid(this, _("To Account")); - cbPayee_->SetFocus(); + if (bTransfer) { + if (transaction_->TRANSAMOUNT < 0) + transaction_->TRANSAMOUNT = -transaction_->TRANSAMOUNT; + } + else { + mmShowErrorMessageInvalid(this, _("Amount")); + return false; + } + } + + if (m_local_splits.empty()) + { + mmMessageCategoryInvalid(bCategory_); return false; } + } + else //non split + { + if (!textAmount_->checkValue(transaction_->TRANSAMOUNT)) + { + return false; + } - transaction_->PAYEEID = -1; + Model_Category::Data *category = Model_Category::instance().get(transaction_->CATEGID); + Model_Subcategory::Data *subcategory = Model_Subcategory::instance().get(transaction_->SUBCATEGID); + if (!category || !(subcategory || transaction_->SUBCATEGID < 0)) + { + mmMessageCategoryInvalid(bCategory_); + return false; + } } + return true; } @@ -677,7 +684,7 @@ } -void mmTransDialog::changeFocus(wxChildFocusEvent& event) +void mmTransDialog::onFocusChange(wxChildFocusEvent& event) { wxWindow *w = event.GetWindow(); if ( w ) @@ -688,6 +695,33 @@ textNotes_->SetValue(""); textNotes_->SetForegroundColour(notesColour_); } + + const Model_Currency::Data* currency = Model_Currency::GetBaseCurrency(); + const Model_Account::Data* account = Model_Account::instance().get(cbAccount_->GetValue()); + if (account) + { + currency = Model_Account::currency(account); + accountID_ = account->ACCOUNTID; + cbAccount_->SetValue(account->ACCOUNTNAME); + } + textAmount_->GetDouble(transaction_->TRANSAMOUNT); + if (transaction_->TRANSAMOUNT) textAmount_->SetValue(transaction_->TRANSAMOUNT, currency); + + if (advancedToTransAmountSet_) + { + toTextAmount_->GetDouble(transaction_->TOTRANSAMOUNT); + if (transaction_->TOTRANSAMOUNT) toTextAmount_->SetValue(transaction_->TOTRANSAMOUNT, currency); + } + + if (m_transfer) + { + } + else + { + Model_Payee::Data * payee = Model_Payee::instance().get(transaction_->PAYEEID); + if (payee) cbPayee_->ChangeValue(payee->PAYEENAME); + } + event.Skip(); } @@ -709,7 +743,7 @@ transaction_->CATEGID = -1; transaction_->SUBCATEGID = -1; - SplitTransactionDialog dlg(&m_local_splits, this, transaction_type_->GetSelection(), newAccountID_); + SplitTransactionDialog dlg(&m_local_splits, this, transaction_type_->GetSelection(), accountID_); dlg.ShowModal(); transaction_->TRANSAMOUNT = Model_Splittransaction::instance().get_total(m_local_splits); skip_category_init_ = false; @@ -720,7 +754,7 @@ this->SetTitle(title); } -//** --------------=Event handlers=----------------- **// +//** --------------=Event handlers=------------------ **// void mmTransDialog::OnDateChanged(wxDateEvent& event) { //get weekday name @@ -753,43 +787,30 @@ if (client_obj) transaction_->TRANSCODE = client_obj->GetData(); if (old_type != transaction_->TRANSCODE) { + m_transfer = Model_Checking::type(transaction_) == Model_Checking::TRANSFER; skip_payee_init_ = false; dataToControls(); } } -void mmTransDialog::OnAccountUpdated(wxCommandEvent& /*event*/) +void mmTransDialog::OnAccountOrPayeeUpdated(wxCommandEvent& event) { - const Model_Account::Data* account = Model_Account::instance().get(cbAccount_->GetValue()); - if (account) newAccountID_ = account->ACCOUNTID; - wxLogDebug("%i", newAccountID_); -} - -void mmTransDialog::OnPayeeUpdated(wxCommandEvent& event) -{ - // Get payee string from populated list to address issues with case compare differences between autocomplete and payee list - wxString payee_str = cbPayee_->GetValue(); - int payee_loc = cbPayee_->FindString(payee_str); - if (payee_loc != wxNOT_FOUND) - payee_str = cbPayee_->GetString(payee_loc); - - bool transfer_transaction = transaction_type_->GetSelection() == Model_Checking::TRANSFER; - if (!transfer_transaction) + transaction_->PAYEEID = -1; + if (!m_transfer && event.GetId() == ID_DIALOG_TRANS_PAYEECOMBO) { - const Model_Payee::Data *payee = Model_Payee::instance().get(payee_str); + const Model_Payee::Data *payee = Model_Payee::instance().get(event.GetString()); if (payee) transaction_->PAYEEID = payee->PAYEEID; // Only for new transactions: if user want to autofill last category used for payee. // If this is a Split Transaction, ignore displaying last category for payee - if (transaction_->PAYEEID != -1 && mmIniOptions::instance().transCategorySelectionNone_ == 1 + if (payee && mmIniOptions::instance().transCategorySelectionNone_ != 0 && !categUpdated_ && m_local_splits.empty() && transaction_id_ == 0) { - Model_Payee::Data* payee = Model_Payee::instance().get(transaction_->PAYEEID); // if payee has memory of last category used then display last category for payee - if (payee && payee->CATEGID != -1) + Model_Category::Data *category = Model_Category::instance().get(payee->CATEGID); + if (category) { - Model_Category::Data *category = Model_Category::instance().get(payee->CATEGID); Model_Subcategory::Data *subcategory = (payee->SUBCATEGID != -1 ? Model_Subcategory::instance().get(payee->SUBCATEGID) : 0); wxString fullCategoryName = Model_Category::full_name(category, subcategory); @@ -797,17 +818,11 @@ transaction_->SUBCATEGID = payee->SUBCATEGID; bCategory_->SetLabel(fullCategoryName); wxLogDebug("Category: %s", bCategory_->GetLabel()); - } } } - else - { - const Model_Account::Data* account = Model_Account::instance().get(payee_str); - if (account) transaction_->TOACCOUNTID = account->ACCOUNTID; - } - - event.Skip(); + wxChildFocusEvent evt; + onFocusChange(evt); } void mmTransDialog::OnSplitChecked(wxCommandEvent& /*event*/) @@ -862,19 +877,15 @@ { advancedToTransAmountSet_ = cAdvanced_->IsChecked(); - wxString amountStr = textAmount_->GetValue().Trim(); if (advancedToTransAmountSet_) { - if (amountStr.IsEmpty()) + if (textAmount_->GetValue().Trim().IsEmpty()) { - amountStr = "1"; transaction_->TRANSAMOUNT = 1; transaction_->TOTRANSAMOUNT = transaction_->TRANSAMOUNT; - textAmount_->SetValue(amountStr); + textAmount_->SetValue(1); } - toTextAmount_->GetDouble(transaction_->TRANSAMOUNT); - const Model_Account::Data* to_account = Model_Account::instance().get(cbPayee_->GetValue()); if (to_account) { @@ -882,10 +893,11 @@ const Model_Currency::Data* from_currency = Model_Currency::GetBaseCurrency(); if (from_account) from_currency = Model_Account::currency(from_account); double rateFrom = from_currency->BASECONVRATE; - double rateTo = Model_Account::currency(to_account)->BASECONVRATE; + const Model_Currency::Data* to_currency = Model_Account::currency(to_account); + double rateTo = to_currency->BASECONVRATE; textAmount_->GetDouble(transaction_->TRANSAMOUNT); double toAmount = rateFrom * transaction_->TRANSAMOUNT / rateTo; - toTextAmount_->SetValue(toAmount, from_account); + toTextAmount_->SetValue(toAmount, to_account); transaction_->TOTRANSAMOUNT = toAmount; } else @@ -897,6 +909,7 @@ else { transaction_->TOTRANSAMOUNT = transaction_->TRANSAMOUNT; + toTextAmount_->SetValue(""); } dataToControls(); @@ -955,8 +968,7 @@ transaction_->NOTES = textNotes_->GetValue(); transaction_->TRANSACTIONNUMBER = textNumber_->GetValue(); - transaction_->ACCOUNTID = newAccountID_; - transaction_->TOACCOUNTID = transaction_->TOACCOUNTID; + transaction_->ACCOUNTID = accountID_; transaction_->TRANSDATE = dpc_->GetValue().FormatISODate(); if (!m_local_splits.empty()) @@ -1004,7 +1016,7 @@ } } - if ((int)object_in_focus_ == (int)toTextAmount_->GetId()) + if ((int) object_in_focus_ == (int) toTextAmount_->GetId()) { if (!toTextAmount_->IsEmpty()) { toTextAmount_->SetValue(""); @@ -1016,7 +1028,7 @@ } } - if ((int)object_in_focus_ == (int)textNumber_->GetId()) + if ((int) object_in_focus_ == (int) textNumber_->GetId()) { if (!textNumber_->IsEmpty()) textNumber_->SetValue(""); Modified: branches/version_1.0.0.0/src/transdialog.h =================================================================== --- branches/version_1.0.0.0/src/transdialog.h 2014-01-18 01:35:58 UTC (rev 5951) +++ branches/version_1.0.0.0/src/transdialog.h 2014-01-18 02:55:56 UTC (rev 5952) @@ -20,12 +20,6 @@ #ifndef _MM_EX_TRANSDIALOG_H_ #define _MM_EX_TRANSDIALOG_H_ -#define SYMBOL_TRANSDIALOG_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX -#define SYMBOL_TRANSDIALOG_IDNAME ID_DIALOG_TRANS -#define SYMBOL_TRANSDIALOG_SIZE wxSize(500, 300) -#define SYMBOL_TRANSDIALOG_POSITION wxDefaultPosition - -#include "guiid.h" #include "defs.h" #include "model/Model_Splittransaction.h" #include "model/Model_Checking.h" @@ -59,7 +53,7 @@ ); void SetDialogTitle(const wxString& title); - int getAccountID() { return newAccountID_; } + int getAccountID() { return accountID_; } int getToAccountID() { return transaction_->TOACCOUNTID; } int getTransactionID() { return transaction_->TRANSID; } @@ -73,14 +67,13 @@ void OnCancel(wxCommandEvent& event); void OnQuit(wxCloseEvent& event); void OnCategs(wxCommandEvent& event); - void OnPayeeUpdated(wxCommandEvent& event); + void OnAccountOrPayeeUpdated(wxCommandEvent& event); void OnDpcKillFocus(wxFocusEvent& event); - void OnAccountUpdated(wxCommandEvent& event); void OnAutoTransNum(wxCommandEvent& event); void OnTransTypeChanged(wxCommandEvent& event); void OnSpin(wxSpinEvent&); void OnDateChanged(wxDateEvent& event); - void changeFocus(wxChildFocusEvent& event); + void onFocusChange(wxChildFocusEvent& event); void onTextEntered(wxCommandEvent& event); void OnAdvanceChecked(wxCommandEvent& event); void activateSplitTransactionsDlg(); @@ -103,6 +96,7 @@ wxStaticText* account_label_; wxStaticText* payee_label_; + bool m_transfer; bool categUpdated_; bool advancedToTransAmountSet_; @@ -117,8 +111,7 @@ Model_Checking::Data * transaction_; Model_Splittransaction::Data_Set m_local_splits; - int accountID_; //The transaction account ID - int newAccountID_; + int accountID_; //The transaction account ID //TODO: may be Model_Account ? int referenceAccountID_; // used for transfer transactions int transaction_id_; //The transaction ID. NULL if new transaction @@ -129,6 +122,28 @@ bool skip_notes_init_; bool skip_category_init_; + enum + { + /* Transaction Dialog */ + ID_DIALOG_TRANS_TYPE = wxID_HIGHEST + 900, + ID_DIALOG_TRANS_TEXTNUMBER, + ID_DIALOG_TRANS_BUTTONDATE, + ID_DIALOG_TRANS_TEXTNOTES, + ID_DIALOG_TRANS_TEXTAMOUNT, + ID_DIALOG_TRANS_TOTEXTAMOUNT, + ID_DIALOG_TRANS_STATIC_PAYEE, + ID_DIALOG_TRANS_BUTTONPAYEE, + ID_DIALOG_TRANS_BUTTONTO, + ID_DIALOG_TRANS_STATUS, + ID_DIALOG_TRANS_ADVANCED_CHECKBOX, + ID_DIALOG_TRANS_ADVANCED_FROM, + ID_DIALOG_TRANS_ADVANCED_TO, + ID_DIALOG_TRANS_SPLITCHECKBOX, + ID_DIALOG_TRANS_BUTTONTRANSNUM, + ID_DIALOG_TRANS_PAYEECOMBO, + ID_DIALOG_TRANS_BUTTON_FREQENTNOTES, + ID_DIALOG_TRANS_DATE_SPINNER, + }; }; #endif Modified: branches/version_1.0.0.0/src/util.cpp =================================================================== --- branches/version_1.0.0.0/src/util.cpp 2014-01-18 01:35:58 UTC (rev 5951) +++ branches/version_1.0.0.0/src/util.cpp 2014-01-18 02:55:56 UTC (rev 5952) @@ -26,6 +26,7 @@ #include "singleton.h" #include "model/Model_Setting.h" #include <wx/sound.h> +#include <wx/richtooltip.h> //---------------------------------------------------------------------------- int CaseInsensitiveCmp(const wxString &s1, const wxString &s2) @@ -436,3 +437,42 @@ return date_regex; } + + +void mmMessageCategoryInvalid(wxButton *button) +{ + wxRichToolTip tip(_("Invalid Category Entered "), + _("No any categories selected for this transaction.") + + "\n" + + _("Please, choose a category.") + + "\n"); + tip.SetIcon(wxICON_WARNING); + tip.ShowFor(button); + button->SetFocus(); +} + +void mmMessageAccountInvalid(wxComboBox *comboBox, bool transfer) +{ + const wxString errorHeader = _("Invalid Account "); + wxString errorMessage = _("Account not selected for this transaction."); + if (transfer) errorMessage = _("Specify which account the transfer is going to"); + + errorMessage += ("\n" + + _("Please, choose an account.") + + "\n"); + wxRichToolTip tip(errorHeader, errorMessage); + tip.SetIcon(wxICON_WARNING); + tip.ShowFor((wxWindow*) comboBox); +} + +void mmMessagePayeeInvalid(wxComboBox *comboBox) +{ + const wxString errorHeader = _("Invalid Payee "); + const wxString errorMessage = (_("Payee not selected for this transaction.") + + "\n" + + _("Please, choose a payee.") + + "\n"); + wxRichToolTip tip(errorHeader, errorMessage); + tip.SetIcon(wxICON_WARNING); + tip.ShowFor((wxWindow*) comboBox); +} Modified: branches/version_1.0.0.0/src/util.h =================================================================== --- branches/version_1.0.0.0/src/util.h 2014-01-18 01:35:58 UTC (rev 5951) +++ branches/version_1.0.0.0/src/util.h 2014-01-18 02:55:56 UTC (rev 5952) @@ -103,6 +103,9 @@ void mmShowErrorMessageInvalid(wxWindow *parent, const wxString &message); void mmShowErrorMessage(wxWindow *parent, const wxString &message, const wxString &messageheader); +void mmMessageCategoryInvalid(wxButton *button); +void mmMessageAccountInvalid(wxComboBox *comboBox, bool transfer = false); +void mmMessagePayeeInvalid(wxComboBox *comboBox); wxString mmSelectLanguage(wxWindow *parent, bool forced_show_dlg, bool save_setting = true); This was sent by MMEX an easy to use, money management application. |