def __init__(self, parent, layerName, frame): #, log, frame ogl.ShapeCanvas.__init__(self, parent) Deca.Layer.__init__(self, Deca.world, layerName) self.log = wx.GetApp().GetLog() self.frame = frame self.Selection = [] self._scripts = {} self.last_x = self.last_y = 0 wid = 200 hei = 200 if '@view' in self.storage.graph_data.keys(): wid = self.storage.graph_data['@view'].width hei = self.storage.graph_data['@view'].height else: shi = DecaShape('@view') shi.Tag = '@view' shi.width = wid shi.height = hei shi.scale = 1.0 self.storage.graph_data['@view'] = shi sc = getattr(self.storage.graph_data['@view'], 'scale', 1.0) self.SetViewSize(wid, hei) self.SetScale(sc, sc) self.SetBackgroundColour(wx.WHITE) #"LIGHT BLUE") # self.diagram = ogl.Diagram() self.SetDiagram(self.diagram) self.diagram.SetCanvas(self) self.shapes = {} self.pen = wx.Pen(wx.BLACK) self.brush = wx.Brush(wx.BLACK) obj_len = len(self.storage.graph_data) if obj_len > 1000: wxres = wx.MessageBox(_("View contains of %i objects? It may take awhile to draw them all.\nAre you sure to draw objects?") % obj_len, _("Sampo Framework"), wx.YES_NO|wx.ICON_QUESTION) else: wxres = wx.ID_YES if wxres == wx.ID_YES: # add objects self.Freeze() self.diagram.SetQuickEditMode(True) obj_curr = 2 frame.SetStatus(_("Draw elements")) frame.SetStatusProgressRange(obj_len) self.RebuildDrawing() # for oid, shp in self.storage.graph_data.items(): # if getattr(shp, 'Tag') == 'object': # s = self.AddObjectShape(self.storage.objects[oid], shp.xpos, shp.ypos, shp) # s.SetPen(CreatePen(getattr(shp, 'pen', ()), self.pen)) # s.SetBrush(CreateBrush(getattr(shp, 'brush', ()), self.brush)) # s.SetWidth(shp.width) # s.SetHeight(shp.height) # obj_curr += 1 # frame.SetStatusProgress(obj_curr) # wx.Yield() # #add links # for oid, shp in self.storage.graph_data.items(): # if getattr(shp, 'Tag') == 'link': # lnk = self.GetLinks(lambda ln: ln.StartObject == shp.start and ln.FinishObject == shp.finish) # if len(lnk) > 0: # #lnk = lnk[0] # lnk = self.AddLinkShape(lnk[0], shp) # lnk.SetPen(CreatePen(getattr(shp, 'pen', ()), self.pen)) # lnk.SetBrush(CreateBrush(getattr(shp, 'brush', ()), self.brush)) # obj_curr += 1 # frame.SetStatusProgress(obj_curr) # wx.Yield() self.diagram.SetQuickEditMode(False) frame.SetStatus(_("Ready")) self.Thaw() # objects redraw done self.Bind(wx.EVT_MENU, self.OnScript) #self.Bind(wx.EVT_MOUSEWHEEL, self.OnWheel) wx.CallAfter(self.Update)