void MyMusicTreeModel::Delete( const wxDataViewItem &item ) { MyMusicTreeModelNode *node = (MyMusicTreeModelNode*) item.GetID(); if (!node) // happens if item.IsOk()==false return; wxDataViewItem parent( node->GetParent() ); if (!parent.IsOk()) { wxASSERT(node == m_root); // don't make the control completely empty: wxLogError( "Cannot remove the root item!" ); return; } // is the node one of those we keep stored in special pointers? if (node == m_pop) m_pop = NULL; else if (node == m_classical) m_classical = NULL; else if (node == m_ninth) m_ninth = NULL; // first remove the node from the parent's array of children; // NOTE: MyMusicTreeModelNodePtrArray is only an array of _pointers_ // thus removing the node from it doesn't result in freeing it node->GetParent()->GetChildren().Remove( node ); // free the node delete node; // notify control ItemDeleted( parent, item ); }
wxRect wxDataViewCtrl::GetItemRect(wxDataViewItem const& item, wxDataViewColumn const* columnPtr) const { if (item.IsOk() && (columnPtr != NULL)) return GetDataViewPeer()->GetRectangle(item,columnPtr); else return wxRect(); }
unsigned int MyMusicTreeModel::GetChildren( const wxDataViewItem &parent, wxDataViewItemArray &array ) const { MyMusicTreeModelNode *node = (MyMusicTreeModelNode*) parent.GetID(); if (!node) { array.Add( wxDataViewItem( (void*) m_root ) ); return 1; } if (node == m_classical) { MyMusicTreeModel *model = (MyMusicTreeModel*)(const MyMusicTreeModel*) this; model->m_classicalMusicIsKnownToControl = true; } if (node->GetChildCount() == 0) { return 0; } unsigned int count = node->GetChildren().GetCount(); for (unsigned int pos = 0; pos < count; pos++) { MyMusicTreeModelNode *child = node->GetChildren().Item( pos ); array.Add( wxDataViewItem( (void*) child ) ); } return count; }
void LLDBBreakpointModel::SetClientObject(const wxDataViewItem& item, wxClientData *data) { LLDBBreakpointModel_Item* node = reinterpret_cast<LLDBBreakpointModel_Item*>(item.GetID()); if ( node ) { node->SetClientObject(data); } }
void SettersGettersModel::SetClientObject(const wxDataViewItem& item, wxClientData *data) { SettersGettersModel_Item* node = reinterpret_cast<SettersGettersModel_Item*>(item.GetID()); if ( node ) { node->SetClientObject(data); } }
void wxDataViewCtrl::EnsureVisible(wxDataViewItem const& item, wxDataViewColumn const* columnPtr) { if (item.IsOk()) { ExpandAncestors(item); // make sure that the item exists in the control GetDataViewPeer()->EnsureVisible(item,columnPtr); } }
void wxDataViewCtrl::Select(wxDataViewItem const& item) { if (item.IsOk()) { ExpandAncestors(item); // make sure that the item exists in the control GetDataViewPeer()->Select(item); } }
wxString MyMusicTreeModel::GetArtist( const wxDataViewItem &item ) const { MyMusicTreeModelNode *node = (MyMusicTreeModelNode*) item.GetID(); if (!node) // happens if item.IsOk()==false return wxEmptyString; return node->m_artist; }
int MyMusicTreeModel::GetYear( const wxDataViewItem &item ) const { MyMusicTreeModelNode *node = (MyMusicTreeModelNode*) item.GetID(); if (!node) // happens if item.IsOk()==false return 2000; return node->m_year; }
bool vvStampsModel::IsContainer( const wxDataViewItem& cItem ) const { // only the invisible root is a container // none of our actual nodes are hierarchical return !cItem.IsOk(); }
void TreeListModel::UpdateItem(const wxDataViewItem& item, const wxVector<wxVariant>& data) { TreeListModel_Item* node = reinterpret_cast<TreeListModel_Item*>(item.GetID()); if ( node ) { node->SetData( data ); ItemChanged( item ); } }
void Delete(wxDataViewItem const& item) { for (std::list<HotkeyModelCombo>::iterator it = children.begin(); it != children.end(); ++it) { if (&*it == item.GetID()) { model->ItemDeleted(wxDataViewItem(this), wxDataViewItem((void*)&*it)); children.erase(it); return; } } }
void Delete(wxDataViewItem const& item) { for (auto it = children.begin(); it != children.end(); ++it) { if (&*it == item.GetID()) { model->ItemDeleted(wxDataViewItem(this), wxDataViewItem((void*)&*it)); children.erase(it); return; } } }
unsigned int DIALOG_LIB_EDIT_PIN_TABLE::DataViewModel::GetChildren( const wxDataViewItem& aItem, wxDataViewItemArray& aItems ) const { if( !aItem.IsOk() ) { for( std::map<wxString, Group>::iterator i = m_Groups.begin(); i != m_Groups.end(); ++i ) if( i->second.GetCount() > 1 ) aItems.push_back( wxDataViewItem( &i->second ) ); for( std::list<Pin>::iterator i = m_Pins.begin(); i != m_Pins.end(); ++i ) if( !i->GetParent().IsOk() ) aItems.push_back( wxDataViewItem( &*i ) ); return aItems.size(); } else return reinterpret_cast<Item const*>( aItem.GetID() )->GetChildren( aItems ); }
wxDataViewItem ProjectViewModel::GetParent( const wxDataViewItem& item ) const { if ( !item.IsOk() ) { return wxDataViewItem( 0 ); } ProjectViewModelNode *node = static_cast< ProjectViewModelNode* >( item.GetID() ); if ( !node || node == m_RootNode.Ptr() || !node->GetParent() || node->GetParent() == m_RootNode.Ptr() ) { return wxDataViewItem( 0 ); } return wxDataViewItem( (void*) node->GetParent() ); }
void DownloadDataViewModel::GetValue(wxVariant& variant, const wxDataViewItem& item, unsigned int column) const { DownloadInfo * downloadInfo = static_cast<DownloadInfo*>(item.GetID()); wxASSERT(downloadInfo != nullptr); /* In case if wxGTK will try to render invalid item */ if (downloadInfo == nullptr || ContainsItem(*downloadInfo) == false) { variant = wxVariant(wxEmptyString); return; } const int MB = 1024 * 1024; switch(column) { case NAME: variant = wxVariant(downloadInfo->GetName()); break; case STATUS: if (downloadInfo->IsFinished()) { variant = wxVariant(wxString(_("complete"))); } else { variant = wxVariant(wxString(_("downloading"))); } break; case P_COMPLETE: variant = wxVariant(wxString::Format(wxT("%i%%"), downloadInfo->GetProgressPercent())); break; case SPEED: //TODO: implement variant = wxVariant(wxEmptyString); break; case ETA: //TODO: implement variant = wxVariant(wxEmptyString); break; case FILESIZE: variant = wxVariant(downloadInfo->GetSize() > 0 ? wxString::Format(wxT("%i"), downloadInfo->GetSize() / MB) : wxString(_T("0"))); break; case DEFAULT_COLUMN: //Do nothing break; default: wxASSERT(false); break; } }
void HotkeyDataViewModel::Delete(wxDataViewItem const& item) { if (!item.IsOk() || IsContainer(item)) return; static_cast<HotkeyModelCategory*>(GetParent(item).GetID())->Delete(item); if (!has_pending_changes) { has_pending_changes = true; parent->AddPendingChange(std::bind(&HotkeyDataViewModel::Apply, this)); } }
bool wxOSXDataViewModelNotifier::ItemAdded(wxDataViewItem const& parent, wxDataViewItem const& item) { bool noFailureFlag; wxCHECK_MSG(item.IsOk(),false,"Added item is invalid."); noFailureFlag = m_DataViewCtrlPtr->GetDataViewPeer()->Add(parent,item); AdjustRowHeight(item); return noFailureFlag; }
void DownloadDataViewModel::GetValue(wxVariant& variant, const wxDataViewItem& item, unsigned int column) const { DownloadInfo * downloadInfo = static_cast<DownloadInfo*>(item.GetID()); wxASSERT(downloadInfo != nullptr); const int MB = 1024 * 1024; switch(column) { case NAME: variant = wxVariant(downloadInfo->GetName()); break; case STATUS: if (downloadInfo->IsFinished()) { variant = wxVariant(wxString(_("complete"))); } else { variant = wxVariant(wxString(_("downloading"))); } break; case P_COMPLETE: if (downloadInfo->GetSize() < 1) { /* Prevent from division by zero */ variant = wxVariant(wxString(_T("Indeterminate"))); } else { variant = wxVariant(wxString::Format(wxT("%i%%"), downloadInfo->GetProgressPercent())); } break; case SPEED: //TODO: implement variant = wxVariant(wxEmptyString); break; case ETA: //TODO: implement variant = wxVariant(wxEmptyString); break; case FILESIZE: variant = wxVariant(downloadInfo->GetSize() > 0 ? wxString::Format(wxT("%i"), downloadInfo->GetSize() / MB) : wxString(_T("0"))); break; case DEFAULT_COLUMN: //Do nothing break; default: wxASSERT(false); break; } }
bool CScoptViewResultsModel::HasChildren(const wxDataViewItem& item) const { if ( !item.IsOk() ) return false; CScoptViewResultsModel_Item* node = reinterpret_cast<CScoptViewResultsModel_Item*>(item.GetID()); if ( !node ) { return false; } return !node->GetChildren().empty(); }
bool MemCheckDVCErrorsModel::HasChildren(const wxDataViewItem& item) const { if ( !item.IsOk() ) return false; MemCheckDVCErrorsModel_Item* node = reinterpret_cast<MemCheckDVCErrorsModel_Item*>(item.GetID()); if ( !node ) { return false; } return !node->GetChildren().empty(); }
wxVector<wxVariant> MemCheckDVCErrorsModel::GetItemColumnsData(const wxDataViewItem& item) const { if ( !item.IsOk() ) return wxVector<wxVariant>(); MemCheckDVCErrorsModel_Item* node = reinterpret_cast<MemCheckDVCErrorsModel_Item*>(item.GetID()); if ( !node ) { return wxVector<wxVariant>(); } return node->GetData(); }
wxVector<wxVariant> CScoptViewResultsModel::GetItemColumnsData(const wxDataViewItem& item) const { if ( !item.IsOk() ) return wxVector<wxVariant>(); CScoptViewResultsModel_Item* node = reinterpret_cast<CScoptViewResultsModel_Item*>(item.GetID()); if ( !node ) { return wxVector<wxVariant>(); } return node->GetData(); }
wxDataViewItem ProjectViewModel::GetParent(const wxDataViewItem& item) const { Reflect::DocumentElement* node = static_cast< Reflect::DocumentElement* >( item.GetID() ); if ( node ) { return node->GetParent(); } return NULL; }
bool ArtifactViewModel::IsContainer(const wxDataViewItem &item) const { if (!item) { // Root has children return true; } // Artifacts may have children const auto& artifact = *reinterpret_cast<Artifact*>(item.GetID()); return !artifact.GetInfusedArtifacts().empty(); }
bool ProjectViewModel::IsDropPossible( const wxDataViewItem& item ) { ProjectViewModelNode *node = static_cast< ProjectViewModelNode* >( item.GetID() ); if ( !node ) { return true; } return false; }
virtual void GetValue(wxVariant &variant, const wxDataViewItem &item, unsigned int col) const { ReplayProvider* provider = (ReplayProvider*)item.GetID(); wxDataViewIconText iconText; iconText.SetText(provider->GetDescription()); // TODO: scale icon size iconText.SetIcon(wxArtProvider::GetIcon(wxART_FOLDER, wxART_LIST, wxSize(16, 16))); variant << iconText; }
bool ProjectViewModel::IsContainer(const wxDataViewItem& item) const { Reflect::DocumentElement* node = static_cast< Reflect::DocumentElement* >( item.GetID() ); if ( node ) { return node->HasType( Reflect::GetType< ProjectFolder >() ) || node->HasType( Reflect::GetType< Project >() ); } return false; }
void ProjectViewModel::GetValue(wxVariant& value, const wxDataViewItem& item, unsigned int column) const { Reflect::DocumentElement* node = static_cast< Reflect::DocumentElement* >( item.GetID() ); if ( node ) { ProjectFile* file = Reflect::ObjectCast<ProjectFile>( node ); if ( file ) { switch ( column ) { case 0: value = file->Path().Get().c_str(); break; case 1: break; } } else { ProjectFolder* folder = Reflect::ObjectCast<ProjectFolder>( node ); if ( folder ) { switch ( column ) { case 0: value = folder->Name().Get(); break; case 1: break; } } else { Project* project = Reflect::ObjectCast<Project>( node ); if ( project ) { switch ( column ) { case 0: value = project->Path().Get().c_str(); break; case 1: break; } } } } } }
int DIALOG_LIB_EDIT_PIN_TABLE::DataViewModel::Compare( const wxDataViewItem& aItem1, const wxDataViewItem& aItem2, unsigned int aCol, bool aAscending ) const { wxVariant var1; GetValue( var1, aItem1, aCol ); wxString str1 = var1.GetString(); wxVariant var2; GetValue( var2, aItem2, aCol ); wxString str2 = var2.GetString(); int res = ComparePinNames( str1, str2 ); if( res == 0 ) res = ( aItem1.GetID() < aItem2.GetID() ) ? -1 : 1; return res * ( aAscending ? 1 : -1 ); }