Changes between Version 3 and Version 4 of wxGUIDevelopment/Refactoring/wxGUIAPIproposal


Ignore:
Timestamp:
Mar 28, 2013, 11:08:09 PM (11 years ago)
Author:
rashadkm
Comment:

adding new classes

Legend:

Unmodified
Added
Removed
Modified
  • wxGUIDevelopment/Refactoring/wxGUIAPIproposal

    v3 v4  
    4949# more classes should be defined...
    5050}}}
     51
     52'''Proposing More classes'''
     53{{{
     54#!python
     55
     56class WxGUI:
     57  RASTER = 'raster'
     58  VECTOR = 'vector'
     59
     60class Layer(object):
     61
     62  self.ltype = None
     63  self.lname  = None
     64  self.style = None
     65
     66  def __init__():
     67    ""TBD""
     68
     69  def setName(self,n):
     70   self.lname = n
     71
     72  def setType(self,t):
     73    self.ltype = t
     74
     75  def getName(self):
     76    return lname
     77 
     78  def getType(self):
     79    return ltype
     80
     81  def setStyle(style):
     82    """
     83    (A virtual function)
     84    style object must be a new class which holds the style info such as color map for vector/raster"
     85    """
     86  def getStyle():
     87   return lstyle
     88
     89class RasterStyle; #Functionality: TBD
     90class VectorStyle; #Functionality: TBD
     91
     92class RasterLayer(Layer):
     93
     94   def getType(self):
     95      return wxGUI.RASTER
     96
     97   def getStyle(self):
     98    return stlye #instance of RasterStyle
     99
     100class VectorLayer(Layer):
     101
     102   def getType(self):
     103      return wxGUI.VECTOR   
     104
     105   def getStyle(self):
     106    return stlye #instance of VectorStyle
     107
     108
     109class LayerManager(object):
     110
     111   def addLayer(sef,layer, type):
     112      """
     113      Is specifying type is mandatory? We already have access to type = layer.ltype
     114      I mentioned here to demonstrate the idea to enum instead of hardcorded string for layer type
     115      """
     116
     117   def addRaster(self,layer):
     118       """
     119       suggest a namespace name instead of wxGUI
     120       """
     121       addLayer(layer, wxGUI.RASTER) #no more hardcorded string ex: addLayer(layer,'raster')
     122
     123   def addVector(self,layer):
     124       addLayer(layer, wxGUI.VECTOR)
     125
     126   def addOther(self,layer):
     127      """TBD"""
     128
     129
     130class LayerManagerFrame(wx.Frame, layerManager):
     131 
     132   def __init__(parent, id, title,size,pos):
     133      wx.Frame.__init__(parent,id,title,size,pos)
     134      self.lmgrObject = LayerManager(self) #creates non-gui layer manager
     135
     136  def getLayerManager(self):
     137      return self.lmgrObject
     138 
     139
     140  def addRasterLayer(self,layer):
     141   self.lmgrObject.addRasterLayer(layer)
     142   """ltreeitem can be created using a GUI class"""
     143   ltreeitem.text = layer.getName()
     144   ltreeitem.checked = True
     145   self.ltree.Append(ltreeitem)
     146
     147class GMFrame(wx.Frame):
     148    def __init__(self,id,title,size,pos):
     149        wx.Frame.__init__(id,title,size,pos)
     150
     151    def SetLayerManager(self,lmgr):
     152       if type(lmgr) == wx.Frame:
     153          self.lmgrFrame = lmgr
     154          self.lmgrAsFrame = True
     155
     156       if type(lmgr) == wx.Panel:
     157          self.lmgrFrame = lmgr
     158          self.lmgrAsFrame = False
     159
     160    def LmgrAsFrame(self):
     161       return self.lmgrAsFrame
     162}}}
     163
     164'''Simple usage of the above Pseudo code'''
     165
     166{{{
     167#!python
     168frame = new GFrame() #gui object
     169lmgr = LayerManagerFrame() #gui object panel/Frame
     170frame.SetLayerManager(lmgr)
     171rlayer = new RasterLayer() #non-gui object
     172lmgr.addRasterLayer(rlayer)
     173vlayer = new VectorLayer() #non-gui object
     174vlayer.setEditable(True)
     175lmgr.addVectorLayer(vlayer)
     176}}}
     177
     178''TBD: To Be Decided''