void SplitDetailDialog::onTextEntered(wxCommandEvent& WXUNUSED(event))
{
    if (textAmount_->Calculate())
        textAmount_->GetDouble(split_.SPLITTRANSAMOUNT);

    DataToControls();
}
void SplitTransactionDialog::OnButtonRemoveClick( wxCommandEvent& event )
{
    if (selectedIndex_ < 0 || selectedIndex_ >= (int)this->m_local_splits.size())
        return;
    this->m_local_splits.erase(this->m_local_splits.begin() + selectedIndex_);
    selectedIndex_ = -1;
    items_changed_ = true;
    DataToControls();
}
void SplitDetailDialog::onTextEntered(wxCommandEvent& WXUNUSED(event))
{
    Model_Currency::Data *currency = Model_Currency::GetBaseCurrency();
    Model_Account::Data *account = Model_Account::instance().get(accountID_);
    if (account) currency = Model_Account::currency(account); 
    textAmount_->Calculate(currency);

    DataToControls();
}
void SplitTransactionDialog::EditEntry(int index)
{
    if (index < 0 || index >= (int)this->m_local_splits.size()) return;
    SplitDetailDialog sdd(this, m_local_splits[index], transType_, accountID_);
    if (sdd.ShowModal() == wxID_OK)
    {
        m_local_splits[index] = sdd.getResult();
        items_changed_ = true;
        DataToControls();
        UpdateSplitTotal();
    }
}
bool SplitDetailDialog::Create(wxWindow* parent)
{
    long style = wxCAPTION | wxSYSTEM_MENU | wxCLOSE_BOX;
    wxDialog::Create(parent, wxID_ANY, _("Split Detail Dialog"), wxDefaultPosition, wxSize(400, 300), style);

    CreateControls();
    GetSizer()->Fit(this);
    GetSizer()->SetSizeHints(this);
    Centre();
    DataToControls();

    return TRUE;
}
void SplitDetailDialog::OnButtonCategoryClick( wxCommandEvent& /*event*/ )
{
    mmCategDialog dlg(this, split_.CATEGID, split_.SUBCATEGID, false);
    if (dlg.ShowModal() == wxID_OK)
    {
        split_.CATEGID = dlg.getCategId();
        split_.SUBCATEGID = dlg.getSubCategId();
        bCategory_->SetLabelText(dlg.getFullCategName());
    }
    wxCommandEvent evt(wxID_ANY, wxID_ANY);
    onTextEntered(evt);
    DataToControls();
}
void SplitDetailDialog::OnButtonCategoryClick( wxCommandEvent& /*event*/ )
{
    mmCategDialog dlg(this);
    dlg.setTreeSelection(split_->CATEGID, split_->SUBCATEGID);
    if ( dlg.ShowModal() == wxID_OK )
    {
        split_->CATEGID = dlg.getCategId();
        split_->SUBCATEGID = dlg.getSubCategId();

        bCategory_->SetLabel(dlg.getFullCategName());
    }
    DataToControls();
}
void SplitTransactionDialog::OnButtonAddClick( wxCommandEvent& /*event*/ )
{
    double amount = totalAmount_ - Model_Splittransaction::get_total(m_local_splits);
    if (amount < 0.0) amount = 0.0;
    Split split = { -1, -1, amount };
    SplitDetailDialog sdd(this, split, transType_, accountID_);
    if (sdd.ShowModal() == wxID_OK)
    {
        this->m_local_splits.push_back(sdd.getResult());
        items_changed_ = true;
    }
    DataToControls();
}
bool ShareTransactionDialog::Create(wxWindow* parent, wxWindowID id, const wxString& caption
    , const wxPoint& pos, const wxSize& size, long style)
{
    SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);
    wxDialog::Create(parent, id, caption, pos, size, style);

    CreateControls();
    GetSizer()->Fit(this);
    GetSizer()->SetSizeHints(this);

    SetIcon(mmex::getProgramIcon());

    DataToControls();

    Centre();
    return TRUE;
}
void SplitTransactionDialog::OnButtonEditClick( wxCommandEvent& /*event*/ )
{
    EditEntry(selectedIndex_);
    DataToControls();
}