//--------------------------------------------------------- void CWKSP_Map_Control::On_Drag_End(wxTreeEvent &event) { if( event.GetItem().IsOk() && (((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_Layer || ((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_Graticule || ((CWKSP_Base_Item *)GetItemData(m_draggedItem))->Get_Type() == WKSP_ITEM_Map_BaseMap ) ) { CWKSP_Map *pDst_Map, *pSrc_Map; CWKSP_Base_Item *pSrc, *pDst, *pCpy; pDst = (CWKSP_Base_Item *)GetItemData(event.GetItem()); pSrc = (CWKSP_Base_Item *)GetItemData(m_draggedItem); pSrc_Map = (CWKSP_Map *)pSrc->Get_Manager(); switch( pDst->Get_Type() ) { default: pDst_Map = NULL; break; case WKSP_ITEM_Map: pDst_Map = (CWKSP_Map *)pDst; pDst = NULL; break; case WKSP_ITEM_Map_Layer: case WKSP_ITEM_Map_Graticule: case WKSP_ITEM_Map_BaseMap: pDst_Map = (CWKSP_Map *)pDst->Get_Manager(); break; } if( pDst_Map ) { Freeze(); if( pDst_Map == pSrc_Map ) { pDst_Map->Move_To(pSrc, pDst); pDst_Map->View_Refresh(false); } else if( (pCpy = pDst_Map->Add_Copy(pSrc)) != NULL ) { pDst_Map->Move_To(pCpy, pDst); if( pCpy && !wxGetKeyState(WXK_CONTROL) ) { Del_Item(pSrc_Map, pSrc); } pDst_Map->View_Refresh(false); } Thaw(); } } m_draggedItem = (wxTreeItemId)0l; }
//--------------------------------------------------------- void CWKSP_Tool_Library::_Del_Tools(void) { for(int i=Get_Count()-1; i>=0; i--) { CWKSP_Tool *pItem = Get_Tool(i); Del_Item(pItem); // Get_Control()->Delete(pItem->GetId()); // delete(pItem); } }
//--------------------------------------------------------- void CWKSP_Tool_Library::Update(void) { int i; for(i=Get_Count()-1; i>=0; i--) // first remove tools that are not available anymore { CWKSP_Tool *pItem = Get_Tool(i); if( !m_pLibrary->Get_Tool(pItem->Get_Tool()->Get_Name()) ) { Del_Item(pItem); Get_Control()->Delete(pItem->GetId()); } } for(i=0; i<m_pLibrary->Get_Count(); i++) // then add tools that are not yet present in the list { CSG_Tool *pTool = m_pLibrary->Get_Tool(i); if( pTool != NULL && pTool != TLB_INTERFACE_SKIP_TOOL ) { for(int j=0; j<Get_Count() && pTool; j++) { if( pTool == Get_Tool(j)->Get_Tool() ) { Get_Control()->SetItemText(Get_Tool(j)->GetId(), Get_Tool(j)->Get_Name()); // just in case name has changed pTool = NULL; } } if( pTool ) { CWKSP_Tool *pItem = new CWKSP_Tool(pTool, m_pLibrary->Get_Menu().w_str()); Add_Item(pItem); g_pTool_Ctrl->Add_Tool(GetId(), pItem); } } } Get_Control()->SortChildren(GetId()); }
//--------------------------------------------------------- bool CWKSP_Base_Manager::Del_Item(int iItem) { return( Del_Item(Get_Item(iItem)) ); }