def UpdateSettings(self): """Update digitizer settings .. todo:: Needs refactoring """ self._giface.workspaceChanged.emit() # symbology for key, (enabled, color) in six.iteritems(self.symbology): if enabled: UserSettings.Set( group="vdigit", key="symbol", subkey=[key, "enabled"], value=enabled.IsChecked(), ) UserSettings.Set( group="vdigit", key="symbol", subkey=[key, "color"], value=tuple(color.GetColour()), ) else: UserSettings.Set( group="vdigit", key="symbol", subkey=[key, "color"], value=tuple(color.GetColour()), ) # display UserSettings.Set( group="vdigit", key="lineWidth", subkey="value", value=int(self.lineWidthValue.GetValue()), ) # snapping UserSettings.Set( group="vdigit", key="snapping", subkey="value", value=self.snappingValue.GetValue(), ) UserSettings.Set( group="vdigit", key="snapping", subkey="unit", value=self.snappingUnit.GetSelection(), ) UserSettings.Set( group="vdigit", key="snapToVertex", subkey="enabled", value=self.snapVertex.IsChecked(), ) # digitize new feature UserSettings.Set( group="vdigit", key="addRecord", subkey="enabled", value=self.addRecord.IsChecked(), ) UserSettings.Set( group="vdigit", key="layer", subkey="value", value=int(self.layer.GetValue()), ) UserSettings.Set( group="vdigit", key="category", subkey="value", value=int(self.category.GetValue()), ) UserSettings.Set( group="vdigit", key="categoryMode", subkey="selection", value=self.categoryMode.GetSelection(), ) # delete existing feature UserSettings.Set( group="vdigit", key="delRecord", subkey="enabled", value=self.deleteRecord.IsChecked(), ) # geometry attributes (workspace) mapLayer = self.parent.toolbars["vdigit"].GetLayer() tree = self._giface.GetLayerTree() if tree: item = tree.FindItemByData("maplayer", mapLayer) else: item = None for key, val in six.iteritems(self.geomAttrb): checked = self.FindWindowById(val["check"]).IsChecked() column = self.FindWindowById(val["column"]).GetValue() unitsIdx = self.FindWindowById(val["units"]).GetSelection() if item and not tree.GetLayerInfo(item, key="vdigit"): tree.SetLayerInfo(item, key="vdigit", value={"geomAttr": dict()}) if checked: # enable if key == "area": type = key else: type = "length" unitsKey = Units.GetUnitsKey(type, unitsIdx) tree.GetLayerInfo(item, key="vdigit")["geomAttr"][key] = { "column": column, "units": unitsKey, } else: if (item and tree.GetLayerInfo(item, key="vdigit") and key in tree.GetLayerInfo(item, key="vdigit")["geomAttr"]): del tree.GetLayerInfo(item, key="vdigit")["geomAttr"][key] # query tool if self.queryLength.GetValue(): UserSettings.Set(group="vdigit", key="query", subkey="selection", value=0) else: UserSettings.Set(group="vdigit", key="query", subkey="type", value=1) UserSettings.Set(group="vdigit", key="query", subkey="box", value=self.queryBox.IsChecked()) UserSettings.Set( group="vdigit", key="queryLength", subkey="than-selection", value=self.queryLengthSL.GetSelection(), ) UserSettings.Set( group="vdigit", key="queryLength", subkey="thresh", value=self.queryLengthValue.GetValue(), ) UserSettings.Set( group="vdigit", key="queryDangle", subkey="than-selection", value=self.queryDangleSL.GetSelection(), ) UserSettings.Set( group="vdigit", key="queryDangle", subkey="thresh", value=int(self.queryDangleValue.GetValue()), ) # select features for feature in ("point", "line", "centroid", "boundary"): UserSettings.Set( group="vdigit", key="selectType", subkey=[feature, "enabled"], value=self.FindWindowById( self.selectFeature[feature]).IsChecked(), ) UserSettings.Set( group="vdigit", key="selectThresh", subkey="value", value=int(self.selectThreshValue.GetValue()), ) UserSettings.Set( group="vdigit", key="checkForDupl", subkey="enabled", value=self.checkForDupl.IsChecked(), ) UserSettings.Set( group="vdigit", key="selectInside", subkey="enabled", value=self.selectIn.IsChecked(), ) # on-exit UserSettings.Set( group="vdigit", key="saveOnExit", subkey="enabled", value=self.save.IsChecked(), ) # break lines UserSettings.Set( group="vdigit", key="breakLines", subkey="enabled", value=self.intersect.IsChecked(), ) # close boundary UserSettings.Set( group="vdigit", key="closeBoundary", subkey="enabled", value=self.closeBoundary.IsChecked(), ) self.digit.UpdateSettings() # redraw map if auto-rendering is enabled if self.parent.IsAutoRendered(): self.parent.OnRender(None)
def UpdateSettings(self): """Update digitizer settings .. todo:: Needs refactoring """ # TODO: it seems that it needs to be replaced by signal # but if it makes sense generally for wxGUI it can be added to giface if self.parent.GetLayerManager(): self.parent.GetLayerManager().WorkspaceChanged( ) # geometry attributes # symbology for key, (enabled, color) in self.symbology.iteritems(): if enabled: UserSettings.Set(group='vdigit', key='symbol', subkey=[key, 'enabled'], value=enabled.IsChecked()) UserSettings.Set(group='vdigit', key='symbol', subkey=[key, 'color'], value=tuple(color.GetColour())) else: UserSettings.Set(group='vdigit', key='symbol', subkey=[key, 'color'], value=tuple(color.GetColour())) # display UserSettings.Set(group='vdigit', key="lineWidth", subkey='value', value=int(self.lineWidthValue.GetValue())) # snapping UserSettings.Set(group='vdigit', key="snapping", subkey='value', value=int(self.snappingValue.GetValue())) UserSettings.Set(group='vdigit', key="snapping", subkey='units', value=self.snappingUnit.GetStringSelection()) UserSettings.Set(group='vdigit', key="snapToVertex", subkey='enabled', value=self.snapVertex.IsChecked()) # digitize new feature UserSettings.Set(group='vdigit', key="addRecord", subkey='enabled', value=self.addRecord.IsChecked()) UserSettings.Set(group='vdigit', key="layer", subkey='value', value=int(self.layer.GetValue())) UserSettings.Set(group='vdigit', key="category", subkey='value', value=int(self.category.GetValue())) UserSettings.Set(group='vdigit', key="categoryMode", subkey='selection', value=self.categoryMode.GetSelection()) # delete existing feature UserSettings.Set(group='vdigit', key="delRecord", subkey='enabled', value=self.deleteRecord.IsChecked()) # geometry attributes (workspace) mapLayer = self.parent.toolbars['vdigit'].GetLayer() tree = self._giface.GetLayerTree() if tree: item = tree.FindItemByData('maplayer', mapLayer) else: item = None for key, val in self.geomAttrb.iteritems(): checked = self.FindWindowById(val['check']).IsChecked() column = self.FindWindowById(val['column']).GetValue() unitsIdx = self.FindWindowById(val['units']).GetSelection() if item and not tree.GetLayerInfo(item, key='vdigit'): tree.SetLayerInfo(item, key='vdigit', value={'geomAttr': dict()}) if checked: # enable if key == 'area': type = key else: type = 'length' unitsKey = Units.GetUnitsKey(type, unitsIdx) tree.GetLayerInfo(item, key='vdigit')['geomAttr'][key] = { 'column': column, 'units': unitsKey } else: if item and tree.GetLayerInfo(item, key = 'vdigit') and \ key in tree.GetLayerInfo(item, key = 'vdigit')['geomAttr']: del tree.GetLayerInfo(item, key='vdigit')['geomAttr'][key] # query tool if self.queryLength.GetValue(): UserSettings.Set(group='vdigit', key="query", subkey='selection', value=0) else: UserSettings.Set(group='vdigit', key="query", subkey='type', value=1) UserSettings.Set(group='vdigit', key="query", subkey='box', value=self.queryBox.IsChecked()) UserSettings.Set(group='vdigit', key="queryLength", subkey='than-selection', value=self.queryLengthSL.GetSelection()) UserSettings.Set(group='vdigit', key="queryLength", subkey='thresh', value=int(self.queryLengthValue.GetValue())) UserSettings.Set(group='vdigit', key="queryDangle", subkey='than-selection', value=self.queryDangleSL.GetSelection()) UserSettings.Set(group='vdigit', key="queryDangle", subkey='thresh', value=int(self.queryDangleValue.GetValue())) # select features for feature in ('point', 'line', 'centroid', 'boundary'): UserSettings.Set(group='vdigit', key='selectType', subkey=[feature, 'enabled'], value=self.FindWindowById( self.selectFeature[feature]).IsChecked()) UserSettings.Set(group='vdigit', key="selectThresh", subkey='value', value=int(self.selectThreshValue.GetValue())) UserSettings.Set(group='vdigit', key="checkForDupl", subkey='enabled', value=self.checkForDupl.IsChecked()) UserSettings.Set(group='vdigit', key="selectInside", subkey='enabled', value=self.selectIn.IsChecked()) # on-exit UserSettings.Set(group='vdigit', key="saveOnExit", subkey='enabled', value=self.save.IsChecked()) # break lines UserSettings.Set(group='vdigit', key="breakLines", subkey='enabled', value=self.intersect.IsChecked()) # close boundary UserSettings.Set(group='vdigit', key="closeBoundary", subkey='enabled', value=self.closeBoundary.IsChecked()) self.digit.UpdateSettings() # redraw map if auto-rendering is enabled if self.parent.IsAutoRendered(): self.parent.OnRender(None)