NodeGeoTree* LocationView::GetTreeNode(const std::wstring& id) { LayerTreeControllerPtr layerTreeCtrl = App::Inst().GetLayerTreeController(); for(uint i = 0; i < layerTreeCtrl->GetNumTreeLayers(); ++i) { TreeLayerPtr treeLayer = layerTreeCtrl->GetTreeLayer(i); GeoTreeViewPtr geoTreeView = treeLayer->GetGeoTreeView(); NodeGeoTree* node = geoTreeView->GetNode(id); if(node) return node; } return NULL; }
void LocationPropertiesDlg::ApplySymbology() { LocationViewPtr locationView = m_locationLayer->GetLocationController()->GetLocationView(); // set properties based on state of controls in Symbology page Colour colour = Colour(m_colourSymbol->GetColour()); if(colour != locationView->GetColour()) { locationView->SetColour(colour); locationView->SetColourModified(true); } if(locationView->GetSize() != StringTools::ToDouble(m_txtSymbolSize->GetValue().c_str())) { locationView->SetSize(StringTools::ToDouble(m_txtSymbolSize->GetValue().c_str())); locationView->SetSizeModified(true); } VisualMarker::MARKER_SHAPE shape; if(m_cboSymbolShape->GetValue() == _T("Circle")) shape = VisualMarker::CIRCLE; else if(m_cboSymbolShape->GetValue() == _T("Circle (fast)")) shape = VisualMarker::CIRCLE_FAST; else if(m_cboSymbolShape->GetValue() == _T("Square")) shape = VisualMarker::SQUARE; else if(m_cboSymbolShape->GetValue() == _T("Triangle")) shape = VisualMarker::TRIANGLE; else if(m_cboSymbolShape->GetValue() == _T("Star")) shape = VisualMarker::STAR; else if(m_cboSymbolShape->GetValue() == _T("Plus sign")) shape = VisualMarker::PLUS_SIGN; else if(m_cboSymbolShape->GetValue() == _T("Octagon")) shape = VisualMarker::OCTAGON; else if(m_cboSymbolShape->GetValue() == _T("Diamond")) shape = VisualMarker::DIAMOND; else if(m_cboSymbolShape->GetValue() == _T("Inverted triangle")) shape = VisualMarker::INVERTED_TRIANGLE; if(locationView->GetShape() != shape) { locationView->SetShape(shape); locationView->SetShapeModified(true); } if(locationView->IsVisible() != m_chkLocationVisible->GetValue()) { //Set Visibility locationView->SetVisibility(m_chkLocationVisible->GetValue()); //Set the checkbox in the layer tree wxTreeItemId treeItem = m_locationLayer->GetWXTreeItemId(); LayerTreeViewPtr treeView = App::Inst().GetLayerTreeController()->GetTreeView(); treeView->SetChecked(treeItem, m_chkLocationVisible->GetValue()); //Redraw polygons std::vector<LocationSetLayerPtr> locationSets = App::Inst().GetLayerTreeController()->GetLocationSetLayers(); for(uint i = 0; i < locationSets.size(); i++) locationSets[i]->GetLocationPolygons()->SetPolygonsChanged(true); //Update tree LayerTreeControllerPtr layerTreeController = App::Inst().GetLayerTreeController(); for (uint i = 0; i < layerTreeController->GetNumTreeLayers(); i++) { //alexk Don't ask me why you have to do this in such a roundabout way, but otherwise Mac cries. GeoTreeViewPtr geoTree = layerTreeController->GetTreeLayer(i)->GetGeoTreeView(); std::vector<GenGIS::LocationLayerPtr, std::allocator<GenGIS::LocationLayerPtr> > temp = App::Inst().GetLayerTreeController()->GetLocationLayers(); geoTree->ProjectToActiveSet(temp); // layerTreeController->GetTreeLayer(i)->GetGeoTreeView()->ProjectToActiveSet(layerTreeController->GetLocationLayers()); } } // set label properties VisualLabelPtr label = locationView->GetLabel(); if(label->GetSize() != m_spinLabelSize->GetValue()) { label->SetSize(m_spinLabelSize->GetValue()); locationView->SetLabelSizeModified(true); } if(label->GetLabelPosition() != m_cboLabelPosition->GetValue().c_str()) { label->SetLabelPosition(m_cboLabelPosition->GetValue().c_str()); locationView->SetLabelPositionModified(true); } if(label->GetLabelStyle() != m_cboLabelStyle->GetValue().c_str()) { label->SetLabelStyle(m_cboLabelStyle->GetValue().c_str()); locationView->SetLabelStyleModified(true); } colour = Colour(m_colourLabel->GetColour()); if(label->GetColour() != colour) { label->SetColour(colour); locationView->SetLabelColourModified(true); } if(label->IsVisible() != m_chkLabelVisible->GetValue()) { label->SetVisibility(m_chkLabelVisible->GetValue()); locationView->SetLabelVisibilityModified(true); } locationView->SetLabel(label); ((GenGisFrame*)App::Inst().GetMainWindow())->FillSamplesLegend(); App::Inst().GetViewport()->Refresh(false); }