[GRASS-SVN] r57434 - in grass/trunk/gui/wxpython: core lmgr mapdisp vnet
svn_grass at osgeo.org
svn_grass at osgeo.org
Thu Aug 8 03:10:15 PDT 2013
Author: wenzeslaus
Date: 2013-08-08 03:10:14 -0700 (Thu, 08 Aug 2013)
New Revision: 57434
Modified:
grass/trunk/gui/wxpython/core/giface.py
grass/trunk/gui/wxpython/lmgr/giface.py
grass/trunk/gui/wxpython/mapdisp/main.py
grass/trunk/gui/wxpython/vnet/vnet_core.py
Log:
wxGUI/giface: using giface in vnet and thus extending giface
Modified: grass/trunk/gui/wxpython/core/giface.py
===================================================================
--- grass/trunk/gui/wxpython/core/giface.py 2013-08-07 22:50:17 UTC (rev 57433)
+++ grass/trunk/gui/wxpython/core/giface.py 2013-08-08 10:10:14 UTC (rev 57434)
@@ -36,6 +36,7 @@
Current implementations only provides all attributes of existing layer
as used in lmgr.
"""
+ pass
class LayerList(object):
@@ -71,7 +72,26 @@
"""
raise NotImplementedError()
+ def GetLayersByName(self, name):
+ """!Returns list of layers with a given name.
+ @param name fully qualified map name
+
+ @todo if common usage is just to check the presence of layer,
+ intoroduce a new method ContainsLayerByName(name)
+ """
+ raise NotImplementedError()
+
+ def GetLayerByData(self, key, value):
+ """!Returns layer with specified.
+
+ @note Returns only one layer. This might change.
+
+ @warning Avoid using this method, it might be removed in the future.
+ """
+ raise NotImplementedError()
+
+
class GrassInterface:
"""!GrassInterface provides the functionality which should be available
to every GUI component.
Modified: grass/trunk/gui/wxpython/lmgr/giface.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/giface.py 2013-08-07 22:50:17 UTC (rev 57433)
+++ grass/trunk/gui/wxpython/lmgr/giface.py 2013-08-08 10:10:14 UTC (rev 57434)
@@ -33,7 +33,7 @@
def __dir__(self):
return self._pydata[0].keys()
- def __repr__(self):
+ def __str__(self):
return self.maplayer.name
@@ -94,9 +94,35 @@
self._tree.AddLayer(ltype=ltype, lname=name, lchecked=checked,
lopacity=opacity, lcmd=cmd)
+ def GetLayersByName(self, name):
+ items = self._tree.FindItemByData(key='name', value=name)
+ if items is None:
+ return []
+ else:
+ layers = []
+ for item in items:
+ layer = Layer(self._tree.GetPyData(item))
+ layers.append(layer)
+ return layers
+ def GetLayerByData(self, key, value):
+ """!Returns layer with specified.
+
+ Returns only one layer.
+ Avoid using this method, it might be removed in the future.
+ """
+ if key == 'name':
+ print "giface.GetLayerByData(): Do not with use key='name',"
+ " use GetLayersByName instead."
+ item = self._tree.FindItemByData(key=key, value=value)
+ if item is None:
+ return None
+ else:
+ return Layer(self._tree.GetPyData(item))
+
+
class LayerManagerGrassInterface(object):
- """!@implements GrassInterface"""
+ """!@implements core::giface::GrassInterface"""
def __init__(self, lmgr):
"""!Costructor is specific to the current implementation.
@@ -160,6 +186,8 @@
class LayerManagerGrassInterfaceForMapDisplay(object):
"""!Provides reference only to the given layer list (according to tree),
not to the current.
+
+ @implements core::giface::GrassInterface
"""
def __init__(self, giface, tree):
"""!
Modified: grass/trunk/gui/wxpython/mapdisp/main.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/main.py 2013-08-07 22:50:17 UTC (rev 57433)
+++ grass/trunk/gui/wxpython/mapdisp/main.py 2013-08-08 10:10:14 UTC (rev 57434)
@@ -223,11 +223,13 @@
del os.environ["GRASS_RENDER_IMMEDIATE"]
RunCommand('g.gisenv',
- set = 'MONITOR=%s' % currMon)
-
+ set='MONITOR=%s' % currMon)
+
return layer
+
class Layer(object):
+ """!@implements core::giface::Layer"""
def __init__(self, maplayer):
self._maplayer = maplayer
@@ -243,19 +245,15 @@
#elif name == 'ctrl':
elif name == 'label':
return self._maplayer.GetName()
- #elif name == 'maplayer' : None,
#elif name == 'propwin':
class LayerList(object):
def __init__(self, map, giface):
+ """!@implements core::giface::LayerList"""
self._map = map
self._giface = giface
-# def __iter__(self):
-# for in :
-# yield
-
def GetSelectedLayers(self, checkedOnly=True):
# hidden and selected vs checked and selected
items = self._map.GetListOfLayers()
@@ -285,7 +283,7 @@
@param opacity layer opacity level
@param cmd command (given as a list)
"""
- self._map.AddLayer(ltype="vector", command=cmd,
+ self._map.AddLayer(ltype=ltype, command=cmd,
name=name, active=True,
opacity=opacity, render=True,
pos=-1)
@@ -294,7 +292,28 @@
# alternative is some observer list)
self._giface.updateMap.emit(render=True, renderVector=True)
+ def GetLayersByName(self, name):
+ items = self._map.GetListOfLayers()
+ layers = []
+ for item in items:
+ if item.GetName() == name:
+ layer = Layer(item)
+ layers.append(layer)
+ return layers
+ def GetLayerByData(self, key, value):
+ # TODO: implementation was not tested
+ items = self._map.GetListOfLayers()
+ for item in items:
+ layer = Layer(item)
+ try:
+ if getattr(layer, key) == value:
+ return layer
+ except AttributeError:
+ pass
+ return None
+
+
class DMonGrassInterface(StandaloneGrassInterface):
"""!@implements GrassInterface"""
def __init__(self, mapframe):
Modified: grass/trunk/gui/wxpython/vnet/vnet_core.py
===================================================================
--- grass/trunk/gui/wxpython/vnet/vnet_core.py 2013-08-07 22:50:17 UTC (rev 57433)
+++ grass/trunk/gui/wxpython/vnet/vnet_core.py 2013-08-08 10:10:14 UTC (rev 57434)
@@ -349,29 +349,16 @@
overwrite = True,
vect = [self.results["vect_map"].GetVectMapName(), mapName])
- # TODO: this is a workaround: usage of parent
- # use giface/LayerList instead (needs to be extended first, please do,
- # don't forget on abstract giface in core/giface.py and dmon's giface)
- tree = None
- try:
- # map display (MapFrame) should still have tree
- tree = self.mapWin.parent.tree
- except:
- pass
-
- if tree is None:
- return
-
- if tree.FindItemByData(key='name', value=mapName) is None:
+ if len(self.giface.GetLayerList().GetLayersByName(mapName)) == 0:
# TODO: get rid of insert
cmd, cmd_colors = self.vnet_data.GetLayerStyle()
cmd.insert(0, 'd.vect')
cmd.append('map=%s' % mapName)
- tree.AddLayer(ltype = "vector",
- lname = mapName,
- lcmd = cmd,
- lchecked = True)
+ self.giface.GetLayerList().AddLayer(ltype="vector",
+ name=mapName,
+ cmd=cmd,
+ checked=True)
if cmd_colors:
layerStyleVnetColors = utils.CmdToTuple(cmd_colors)
More information about the grass-commit
mailing list