From: <ste...@us...> - 2013-03-27 12:42:59
|
Revision: 3632 http://sourceforge.net/p/moneymanagerex/code/3632 Author: stef145g Date: 2013-03-27 12:42:55 +0000 (Wed, 27 Mar 2013) Log Message: ----------- Addition of Duplicate command for Assets, and fix asset icons Modified Paths: -------------- trunk/mmex/src/assetspanel.cpp trunk/mmex/src/assetspanel.h Modified: trunk/mmex/src/assetspanel.cpp =================================================================== --- trunk/mmex/src/assetspanel.cpp 2013-03-27 12:31:42 UTC (rev 3631) +++ trunk/mmex/src/assetspanel.cpp 2013-03-27 12:42:55 UTC (rev 3632) @@ -46,6 +46,7 @@ EVT_MENU(MENU_TREEPOPUP_NEW, mmAssetsListCtrl::OnNewAsset) EVT_MENU(MENU_TREEPOPUP_EDIT, mmAssetsListCtrl::OnEditAsset) EVT_MENU(MENU_TREEPOPUP_DELETE, mmAssetsListCtrl::OnDeleteAsset) + EVT_MENU(MENU_ON_DUPLICATE_TRANSACTION, mmAssetsListCtrl::OnDuplicateAsset) EVT_LIST_KEY_DOWN(wxID_ANY, mmAssetsListCtrl::OnListKeyDown) END_EVENT_TABLE() @@ -81,6 +82,8 @@ wxMenu menu; menu.Append(MENU_TREEPOPUP_NEW, _("&New Asset")); menu.AppendSeparator(); + menu.Append(MENU_ON_DUPLICATE_TRANSACTION, _("D&uplicate Asset")); + menu.AppendSeparator(); menu.Append(MENU_TREEPOPUP_EDIT, _("&Edit Asset")); menu.Append(MENU_TREEPOPUP_DELETE, _("&Delete Asset")); PopupMenu(&menu, event.GetPoint()); @@ -109,11 +112,11 @@ size_t size = sizeof(ASSET_TYPE_DEF)/sizeof(wxString); for(size_t i = 0; i < size; ++i) { - if (ASSET_TYPE_DEF[i] == OnGetItemText(item, COL_TYPE)) + if (ASSET_TYPE_DEF[i] == cp_->AssetList().entrylist_[item]->type_) image_id = i; } - return item; + return image_id; } wxListItemAttr* mmAssetsListCtrl::OnGetItemAttr(long item) const @@ -191,15 +194,45 @@ AddPendingEvent(evt); } +void mmAssetsListCtrl::OnDuplicateAsset(wxCommandEvent& /*event*/) +{ + if (selectedIndex_ < 0) return; + + int original_index = selectedIndex_; + + // Duplicate the asset entry + TAssetEntry* pNewEntry = new TAssetEntry(cp_->AssetList().entrylist_[selectedIndex_].get()); + int new_asset_id = cp_->AssetList().AddEntry(pNewEntry); + // Locate new entry in the visual list. + cp_->AssetList().GetEntryPtr(new_asset_id); + selectedIndex_ = cp_->AssetList().GetCurrentIndex(); + + if (! EditAsset(pNewEntry)) + { + // remove the duplicate asset canceled by user. + cp_->AssetList().DeleteEntry(new_asset_id); + selectedIndex_ = original_index; + cp_->updateExtraAssetData(selectedIndex_); + } +} + void mmAssetsListCtrl::OnListItemActivated(wxListEvent& /*event*/) { - //selectedIndex_ = event.GetIndex(); - mmAssetDialog dlg(this, cp_->core_, cp_, cp_->AssetList().entrylist_[selectedIndex_].get(), true); + EditAsset(cp_->AssetList().entrylist_[selectedIndex_].get()); +} +bool mmAssetsListCtrl::EditAsset(TAssetEntry* pEntry) +{ + mmAssetDialog dlg(this, cp_->core_, cp_, pEntry, true); + bool edit = true; if (dlg.ShowModal() == wxID_OK) + { doRefreshItems(dlg.GetAssetID()); + cp_->updateExtraAssetData(selectedIndex_); + } + else edit = false; - cp_->updateExtraAssetData(selectedIndex_); + return edit; } void mmAssetsListCtrl::OnColClick(wxListEvent& event) @@ -300,29 +333,24 @@ /* ---------------------- */ wxSplitterWindow* itemSplitterWindow10 = new wxSplitterWindow( this, wxID_STATIC, - wxDefaultPosition, wxSize(200, 200), wxSP_3DBORDER|wxSP_3DSASH|wxNO_BORDER ); + wxDefaultPosition, wxSize(200, 200), wxSP_3DBORDER|wxSP_3DSASH|wxNO_BORDER); + m_listCtrlAssets = new mmAssetsListCtrl( this, itemSplitterWindow10, + IDC_PANEL_STOCKS_LISTCTRL, wxDefaultPosition, wxDefaultSize, + wxLC_REPORT | wxLC_HRULES | wxLC_VRULES | wxLC_VIRTUAL | wxLC_SINGLE_SEL); + wxSize imageSize(16, 16); m_imageList.reset(new wxImageList(imageSize.GetWidth(), imageSize.GetHeight())); - m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); - //TODO: Provide more icons - //m_imageList->Add(wxBitmap(wxImage(car_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(uparrow_xpm).Scale(16, 16))); - m_imageList->Add(wxBitmap(wxImage(downarrow_xpm).Scale(16, 16))); + //TODO: Provide better icons + m_imageList->Add(wxBitmap(wxImage(house_xpm).Scale(16, 16))); // Property + m_imageList->Add(wxBitmap(wxImage(car_xpm).Scale(16, 16))); // Automobile + m_imageList->Add(wxBitmap(wxImage(clock_xpm).Scale(16, 16))); // Household Object + m_imageList->Add(wxBitmap(wxImage(art_xpm).Scale(16, 16))); // Art + m_imageList->Add(wxBitmap(wxImage(rubik_cube_xpm).Scale(16, 16))); // Jewellery + m_imageList->Add(wxBitmap(wxImage(money_dollar_xpm).Scale(16, 16))); // Cash + m_imageList->Add(wxBitmap(wxImage(assets_xpm).Scale(16, 16))); // Other - m_listCtrlAssets = new mmAssetsListCtrl( this, itemSplitterWindow10, - IDC_PANEL_STOCKS_LISTCTRL, wxDefaultPosition, wxDefaultSize, - wxLC_REPORT | wxLC_HRULES | wxLC_VRULES | wxLC_VIRTUAL | wxLC_SINGLE_SEL ); - - //m_imageList.get()->Add(wxBitmap(assets_xpm)); m_listCtrlAssets->SetImageList(m_imageList.get(), wxIMAGE_LIST_SMALL); - m_listCtrlAssets->InsertColumn(COL_NAME, _("Name")); wxListItem itemCol; @@ -457,6 +485,21 @@ return wxGetEmptyString(); } +void mmAssetsPanel::SetFilter(wxString filter) +{ + filter_ = filter; +} + +int mmAssetsPanel::GetListCtrlWidth(int id) +{ + return m_listCtrlAssets->GetColumnWidth(id); +} + +void mmAssetsPanel::SetListCtrlColumn(int m_selected_col, wxListItem item) +{ + m_listCtrlAssets->SetColumn(m_selected_col, item); +} + void mmAssetsPanel::updateExtraAssetData(int selIndex) { wxStaticText* st = (wxStaticText*)FindWindow(IDC_PANEL_ASSET_STATIC_DETAILS); Modified: trunk/mmex/src/assetspanel.h =================================================================== --- trunk/mmex/src/assetspanel.h 2013-03-27 12:31:42 UTC (rev 3631) +++ trunk/mmex/src/assetspanel.h 2013-03-27 12:42:55 UTC (rev 3632) @@ -36,6 +36,8 @@ void OnNewAsset(wxCommandEvent& event); void OnEditAsset(wxCommandEvent& event); void OnDeleteAsset(wxCommandEvent& event); + void OnDuplicateAsset(wxCommandEvent& event); + void InitVariables(); void doRefreshItems(int trx_id = -1); @@ -59,6 +61,7 @@ void OnListItemDeselected(wxListEvent& event); void OnColClick(wxListEvent& event); void OnItemResize(wxListEvent& event); + bool EditAsset(TAssetEntry* pEntry); }; class mmAssetsPanel : public mmPanelBase @@ -71,10 +74,10 @@ void updateExtraAssetData(int selIndex); int initVirtualListControl(int trx_id = -1, int col = 0, bool asc = true); wxString getItem(long item, long column); - void SetFilter(wxString filter) {filter_=filter; } - int GetListCtrlWidth(int id) {return m_listCtrlAssets->GetColumnWidth(id);} - void SetListCtrlColumn(int m_selected_col, wxListItem item) - {m_listCtrlAssets->SetColumn(m_selected_col, item);} + void SetFilter(wxString filter); + int GetListCtrlWidth(int id); + void SetListCtrlColumn(int m_selected_col, wxListItem item); + TAssetList& AssetList() { return asset_list_; } private: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |