commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/designer/src/schema Incubator.py Instance....


From: Jan Ischebeck
Subject: gnue/designer/src/schema Incubator.py Instance....
Date: Wed, 18 Dec 2002 17:49:47 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jan Ischebeck <address@hidden>  02/12/18 17:49:47

Modified files:
        designer/src/schema: Incubator.py Instance.py 
        designer/src/schema/DiaEditor: VisualEditor.py 

Log message:
        modify VisualEditor to work with new event model

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/Incubator.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/Instance.py.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/schema/DiaEditor/VisualEditor.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text

Patches:
Index: gnue/designer/src/schema/DiaEditor/VisualEditor.py
diff -c gnue/designer/src/schema/DiaEditor/VisualEditor.py:1.5 
gnue/designer/src/schema/DiaEditor/VisualEditor.py:1.6
*** gnue/designer/src/schema/DiaEditor/VisualEditor.py:1.5      Mon Nov 25 
00:41:42 2002
--- gnue/designer/src/schema/DiaEditor/VisualEditor.py  Wed Dec 18 17:49:47 2002
***************
*** 30,62 ****
  from wxPython.wx import *
  from VisualTable import *
  from gnue.common.schema.Objects import *
! from Incubator import *
! 
  
  class VisualEditor (ToolPanel):
  
    runtime_section = 'SchemaDiaEditor'
  
    def init(self):
!     self.frame = instance
!     self.panelColor = self.GetBackgroundColour()
!     self._instance = instance
!     self.rootObject = root
!     self.current = root
!     self._app = instance._app
      self.dragmode = false
      self.tables=[]
      self.hasNewObj = false
      self.rootObject.walk(self.inventoryObject)
  
      self.diagram=wxScrolledWindow(self, -1,
                                    style=wxSUNKEN_BORDER)
      self.panelheight=100
      self.panelwidth=200
      self.diagram.EnableScrolling(true, true)
      self.redrawBackground()
      #self.diagram.SetBackgroundColour(wxWHITE)
      self.calculateTablePositions()
  
      # EventAware provided by ToolPanel
      self.registerEventListeners({
--- 30,69 ----
  from wxPython.wx import *
  from VisualTable import *
  from gnue.common.schema.Objects import *
! from gnue.designer.schema.Incubator import *
! from gnue.designer.ToolPanel import *
  
  class VisualEditor (ToolPanel):
  
    runtime_section = 'SchemaDiaEditor'
  
    def init(self):
!     # basic initialisation
!     self.object = None
!     self._app = self.instance._app
! 
      self.dragmode = false
      self.tables=[]
      self.hasNewObj = false
      self.rootObject.walk(self.inventoryObject)
  
+     # Painting related stuff
      self.diagram=wxScrolledWindow(self, -1,
                                    style=wxSUNKEN_BORDER)
+     self.panelColor = self.GetBackgroundColour()
      self.panelheight=100
      self.panelwidth=200
      self.diagram.EnableScrolling(true, true)
      self.redrawBackground()
      #self.diagram.SetBackgroundColour(wxWHITE)
      self.calculateTablePositions()
+     Sizer = wxBoxSizer(wxHORIZONTAL)
+     #Sizer.Add(self.toolPalette, 0)
+     Sizer.Add(self.diagram, 1, wxEXPAND)
+ 
+     self.SetAutoLayout(true)
+     self.SetSizer(Sizer)
+ 
  
      # EventAware provided by ToolPanel
      self.registerEventListeners({
***************
*** 68,74 ****
  
  
  
! 
      EVT_PAINT(self.diagram, self.onPaintEvent)
  #    EVT_LEFT_DOWN(self.diagram, self.onLeftClickEvent)
      EVT_MOTION(self.diagram, self.onMouseEvent)
--- 75,81 ----
  
  
  
!     # WX WINDOWS Events
      EVT_PAINT(self.diagram, self.onPaintEvent)
  #    EVT_LEFT_DOWN(self.diagram, self.onLeftClickEvent)
      EVT_MOTION(self.diagram, self.onMouseEvent)
***************
*** 77,88 ****
      EVT_LEFT_DCLICK(self.diagram, self.onDoubleClickEvent)
      EVT_RIGHT_DOWN(self.diagram, self.onRightClickEvent)
  
-     Sizer = wxBoxSizer(wxHORIZONTAL)
-     #Sizer.Add(self.toolPalette, 0)
-     Sizer.Add(self.diagram, 1, wxEXPAND)
- 
-     self.SetAutoLayout(true)
-     self.SetSizer(Sizer)
  
    def calculateTablePositions(self):
        dc = wxMemoryDC()
--- 84,89 ----
***************
*** 116,126 ****
      if object._type=="GSTable":
        self.tables.append(VisualTable(object))
  
!   def onSetCurrentObject (self, object, handler):
      # mark actual object (in blue?)
!     if self.current!=object:
!       self.current=object
!       self.onPaintEvent(None)
  
    def findFreePosition(self, x,y,w,h):
      conflict=true
--- 117,138 ----
      if object._type=="GSTable":
        self.tables.append(VisualTable(object))
  
!   
!   def onSetCurrentObject (self, event):
!     object = event.object
!     handler = event.originator
!     if object == None:
!       return
!     if object != self.object:
!       self.setCurrent(object)  
! 
!   def setCurrent(self, object):
      # mark actual object (in blue?)
!     if self.object!=object:
!       self.object=object
!       dc = wxClientDC(self.diagram)
!       self.diagram.PrepareDC(dc)
!       self.drawWholeScreen(dc)
  
    def findFreePosition(self, x,y,w,h):
      conflict=true
***************
*** 149,176 ****
                                  self.panelheight / 20)     
  
  
!   def onCreateObject (self, object, handler):
!     if object._type=="GSTable":
!       self.tables.append(VisualTable(object))
!       self.hasNewObj=true
!       self.refresh()      
        return
!       vTbl=VisualTable(object)       
!       dc = wxClientDC(self.diagram)
!       self.diagram.PrepareDC(dc)  
!       (w,h)=vTbl.calculateDimensions(dc)
  
!       # position new Table
!       (x,y)=self.findFreePosition(10,10,w,h)
!       vTbl.moveTo(x,y)
        
!       self.tables.append(vTbl)
!     if object._type=="GSField":
!       self.hasNewObj=true
!       self.onModifyObject(object,None,None)
        
  
!   def onModifyObject (self, object, handler, modifications):
      self.refresh()
      return
      tbl=object.findParentOfType('GSTable')
--- 161,196 ----
                                  self.panelheight / 20)     
  
  
!   def onCreateObject (self, event):
!     object = event.object
!     handler = event.originator
!     if object == None:
        return
!     if handler != __name__:
!       try:
!         GDebug.printMesg(4,"Adding %s (%s)" % (object.name, object._type))
!       except:
!         if object._type=="GSTable":
!           self.tables.append(VisualTable(object))
!           self.hasNewObj=true
!           self.refresh()      
!           return
!           vTbl=VisualTable(object)       
!           dc = wxClientDC(self.diagram)
!           self.diagram.PrepareDC(dc)  
!           (w,h)=vTbl.calculateDimensions(dc)
  
!           # position new Table
!           (x,y)=self.findFreePosition(10,10,w,h)
!           vTbl.moveTo(x,y)
        
!           self.tables.append(vTbl)
!         if object._type=="GSField":
!           self.hasNewObj=true
!           self.onModifyObject(object,None,None)
        
  
!   def onModifyObject (self, event):
      self.refresh()
      return
      tbl=object.findParentOfType('GSTable')
***************
*** 183,189 ****
            # check if still freepos
            (x,y)=self.findFreePosition(i.xpos,i.ypos,w,h)
            i.moveTo(x,y)
!           i.drawMe(dc,self.current)
            return
  
    def refresh(self):
--- 203,209 ----
            # check if still freepos
            (x,y)=self.findFreePosition(i.xpos,i.ypos,w,h)
            i.moveTo(x,y)
!           i.drawMe(dc,self.object)
            return
  
    def refresh(self):
***************
*** 206,230 ****
            vTbl.calculateDimensions(dc)
            self.refresh()
                   
- 
-     
    def onPaintEvent(self, event, clear=false):
        if self.hasNewObj:
          self.calculateTablePositions()
          self.hasNewObj=false
        dc = wxPaintDC(self.diagram)
        self.diagram.PrepareDC(dc)
        dc.BeginDrawing()
        #dc.Blit(0,0,self.panelheight,self.panelwidth,self.imagedc,0,0)
        #dc.EndDrawing()
        #return
        #dc.BeginDrawing()
-       if clear:
-         dc.SetBackground(self.panelColor)
-         dc.Clear()
        for vTbl in self.tables:
!         vTbl.drawMe(dc,self.current) 
!           
        dc.EndDrawing()
  
    def redrawBackground(self):
--- 226,250 ----
            vTbl.calculateDimensions(dc)
            self.refresh()
                   
    def onPaintEvent(self, event, clear=false):
        if self.hasNewObj:
          self.calculateTablePositions()
          self.hasNewObj=false
        dc = wxPaintDC(self.diagram)
        self.diagram.PrepareDC(dc)
+       if clear:
+         dc.SetBackground(self.panelColor)
+         dc.Clear()
+       self.drawWholeScreen(dc)
+       
+   def drawWholeScreen(self,dc):
        dc.BeginDrawing()
        #dc.Blit(0,0,self.panelheight,self.panelwidth,self.imagedc,0,0)
        #dc.EndDrawing()
        #return
        #dc.BeginDrawing()
        for vTbl in self.tables:
!         vTbl.drawMe(dc,self.object)           
        dc.EndDrawing()
  
    def redrawBackground(self):
***************
*** 232,238 ****
      dc=wxMemoryDC()
      dc.SelectObject(btm);
      for vTbl in self.tables:
!         vTbl.drawMe(dc,self.current)
      self.imagedc=dc
  
    def calculateMousePos(self,event):
--- 252,258 ----
      dc=wxMemoryDC()
      dc.SelectObject(btm);
      for vTbl in self.tables:
!         vTbl.drawMe(dc,self.object)
      self.imagedc=dc
  
    def calculateMousePos(self,event):
***************
*** 260,266 ****
        (x,y) = self.calculateMousePos(event)   
        object=self.getObjectAt(x,y)
        if object._type!='VisualTable':
!         self._instance.onSetCurrentObject(object, __name__)
          return
        else:
          self.dragx=x-object.xpos
--- 280,287 ----
        (x,y) = self.calculateMousePos(event)   
        object=self.getObjectAt(x,y)
        if object._type!='VisualTable':
!         self.dispatchEvent('ObjectSelected', object=object,\
!                            originator=__name__)        
          return
        else:
          self.dragx=x-object.xpos
***************
*** 282,292 ****
        dc.BeginDrawing()
        dc.SetLogicalFunction(wxXOR)
        if self.spriteOn:
!         self.dragobj.drawMe(dc,self.current,true)
          
        self.dragobj.moveTo(x-self.dragx,y-self.dragy)
        self.spriteOn=true
!       self.dragobj.drawMe(dc,self.current,true)
  
  #     TODO: implement a way to move tables as a whole and not
  #     only showing the border of the window.
--- 303,313 ----
        dc.BeginDrawing()
        dc.SetLogicalFunction(wxXOR)
        if self.spriteOn:
!         self.dragobj.drawMe(dc,self.object,true,true)
          
        self.dragobj.moveTo(x-self.dragx,y-self.dragy)
        self.spriteOn=true
!       self.dragobj.drawMe(dc,self.object,true,true)
  
  #     TODO: implement a way to move tables as a whole and not
  #     only showing the border of the window.
***************
*** 319,326 ****
  
      if object._type=='VisualTable':
        object=object.instance
!       
!     self._instance.onSetCurrentObject(object, __name__)
  
      if object._type=='VisualTable' or object._type=="GSTable":
        menu.Append(popup_NEWFIELD, "Add Field")
--- 340,347 ----
  
      if object._type=='VisualTable':
        object=object.instance
! 
!     self.dispatchEvent('ObjectSelected', object=object, originator=__name__)  
  
      if object._type=='VisualTable' or object._type=="GSTable":
        menu.Append(popup_NEWFIELD, "Add Field")
***************
*** 358,372 ****
      self.diagram.PopupMenu(menu, clickPt)
      menu.Destroy()
  
    def onNewTable(self,event):
      dialog = wxTextEntryDialog(self.diagram,'Name of the new table:')
    
      if dialog.ShowModal() == wxID_OK:
        tables=self.rootObject.findChildOfType("GSTables")
        if tables==None:
!         tables = createObject(self._instance, self.rootObject, 'tables',
                                None,None,self.rootObject)
!       createObject(self._instance, self.rootObject, 'table',
                     None,None,tables,{"name":dialog.GetValue()})
               
      dialog.Destroy()
--- 379,395 ----
      self.diagram.PopupMenu(menu, clickPt)
      menu.Destroy()
  
+   # TODO: replace "createObject" by "self.instance.incubator" 
+ 
    def onNewTable(self,event):
      dialog = wxTextEntryDialog(self.diagram,'Name of the new table:')
    
      if dialog.ShowModal() == wxID_OK:
        tables=self.rootObject.findChildOfType("GSTables")
        if tables==None:
!         tables = createObject(self.instance, self.rootObject, 'tables',
                                None,None,self.rootObject)
!       createObject(self.instance, self.rootObject, 'table',
                     None,None,tables,{"name":dialog.GetValue()})
               
      dialog.Destroy()
***************
*** 375,387 ****
      dialog = wxTextEntryDialog(self.diagram,'Name of the new field:')
    
      if dialog.ShowModal() == wxID_OK:
!       fields=self.current.findChildOfType("GSFields")          
        if fields==None:
!         tbl=self.current.findChildOfType("GSTable")
!         fields=createObject(self._instance, self.rootObject,'fields',
                              None,None,tbl)
          
!       createObject(self._instance, self.rootObject, 'field',
                     None,None,fields,{"name":dialog.GetValue(),
                                       "type":"varchar",
                                       "size":20})
--- 398,410 ----
      dialog = wxTextEntryDialog(self.diagram,'Name of the new field:')
    
      if dialog.ShowModal() == wxID_OK:
!       fields=self.object.findChildOfType("GSFields")          
        if fields==None:
!         tbl=self.object.findChildOfType("GSTable")
!         fields=createObject(self.instance, self.rootObject,'fields',
                              None,None,tbl)
          
!       createObject(self.instance, self.rootObject, 'field',
                     None,None,fields,{"name":dialog.GetValue(),
                                       "type":"varchar",
                                       "size":20})
***************
*** 389,420 ****
      dialog.Destroy()
     
    def onAddIndex(self,event):
!     tbl=self.current.findParentOfType("GSTable")          
      indexes=tbl.findChildOfType("GSIndexes")          
      if indexes==None:
!       indexes = createObject(self._instance, self.rootObject, 'indexes',
                                None,None,tbl)
!     idx=createObject(self._instance, self.rootObject, 'index',
                   None,None,indexes,
!                  {"name":"%s_%s" % (tbl.name,self.current.name)})        
!     createObject(self._instance, self.rootObject, 'index',
                   None,None,idx,
!                  {"name":self.current.name})        
      self.refresh()
  
    def onAddUniqueIndex(self,event):
!     tbl=self.current.findParentOfType("GSTable")          
      indexes=tbl.findChildOfType("GSIndexes")          
      if indexes==None:
!       indexes = createObject(self._instance, self.rootObject, 'indexes',
                                None,None,tbl)
!     idx=createObject(self._instance, self.rootObject, 'index',
                   None,None,indexes,
!                  {"name":"%s_%s" % (tbl.name,self.current.name),
                    "unique":"Y"})        
!     createObject(self._instance, self.rootObject, 'index',
                   None,None,idx,
!                  {"name":self.current.name})        
      self.refresh()
  
  
--- 412,443 ----
      dialog.Destroy()
     
    def onAddIndex(self,event):
!     tbl=self.object.findParentOfType("GSTable")          
      indexes=tbl.findChildOfType("GSIndexes")          
      if indexes==None:
!       indexes = createObject(self.instance, self.rootObject, 'indexes',
                                None,None,tbl)
!     idx=createObject(self.instance, self.rootObject, 'index',
                   None,None,indexes,
!                  {"name":"%s_%s" % (tbl.name,self.object.name)})        
!     createObject(self.instance, self.rootObject, 'index',
                   None,None,idx,
!                  {"name":self.object.name})        
      self.refresh()
  
    def onAddUniqueIndex(self,event):
!     tbl=self.object.findParentOfType("GSTable")          
      indexes=tbl.findChildOfType("GSIndexes")          
      if indexes==None:
!       indexes = createObject(self.instance, self.rootObject, 'indexes',
                                None,None,tbl)
!     idx=createObject(self.instance, self.rootObject, 'index',
                   None,None,indexes,
!                  {"name":"%s_%s" % (tbl.name,self.object.name),
                    "unique":"Y"})        
!     createObject(self.instance, self.rootObject, 'index',
                   None,None,idx,
!                  {"name":self.object.name})        
      self.refresh()
  
  
***************
*** 423,435 ****
  
    def onRename(self,event):
      dialog = wxTextEntryDialog(self.diagram,'New Name')
!     if hasattr(self.current,'name'):
!       dialog.SetValue(self.current.name)
        
      if dialog.ShowModal() == wxID_OK:
!       self.current.name=dialog.GetValue()
!       self._instance.onModifyObject(self.current,"schema",
!                                     [('name',self.current.name)])
        self.refresh()
  
      dialog.Destroy()
--- 446,458 ----
  
    def onRename(self,event):
      dialog = wxTextEntryDialog(self.diagram,'New Name')
!     if hasattr(self.object,'name'):
!       dialog.SetValue(self.object.name)
        
      if dialog.ShowModal() == wxID_OK:
!       self.object.name=dialog.GetValue()
!       self.instance.onModifyObject(self.object,"schema",
!                                     [('name',self.object.name)])
        self.refresh()
  
      dialog.Destroy()
***************
*** 442,448 ****
      pass
    
    def onDelete(self,event):
!     deleteObject(self._instance, self.rootObject, self.current, firstRun=1)
  
  
    def onLeftClickEvent(self,event):    
--- 465,471 ----
      pass
    
    def onDelete(self,event):
!     deleteObject(self.instance, self.rootObject, self.object, firstRun=1)
  
  
    def onLeftClickEvent(self,event):    
***************
*** 450,461 ****
      for vTbl in self.tables:
        object=vTbl.getObjectAt(x,y)
        if object != None:
!         self._instance.onSetCurrentObject(object, __name__)
!         return
  
    def onDoubleClickEvent(self,event):    
      (x,y) = self.calculateMousePos(event)   
      object=self.getObjectAt(x,y)
      if object != None and object._type!='VisualTable': 
!       # begin to edit this object
!       self._instance.onSetCurrentObject(object, __name__)
--- 473,485 ----
      for vTbl in self.tables:
        object=vTbl.getObjectAt(x,y)
        if object != None:
!         self.dispatchEvent('ObjectSelected', object=object, 
originator=__name__)
! 
  
    def onDoubleClickEvent(self,event):    
      (x,y) = self.calculateMousePos(event)   
      object=self.getObjectAt(x,y)
      if object != None and object._type!='VisualTable': 
!       # begin to edit this object    
!       self.dispatchEvent('ObjectSelected', object=object, originator=__name__)
!       # TODO: add edit functions here
Index: gnue/designer/src/schema/Incubator.py
diff -c gnue/designer/src/schema/Incubator.py:1.4 
gnue/designer/src/schema/Incubator.py:1.5
*** gnue/designer/src/schema/Incubator.py:1.4   Mon Nov 25 00:41:42 2002
--- gnue/designer/src/schema/Incubator.py       Wed Dec 18 17:49:47 2002
***************
*** 73,80 ****
    o.name = name
    instance.nameMappings[o.name] = o
    o._buildObject()
!   instance.dispatchEvent(events.Event('ObjectCreated',object=o, 
originator=__name__))
!   instance.dispatchEvent(events.Event('ObjectSelected',object=object, 
originator=__name__))
    return o
  
  
--- 73,80 ----
    o.name = name
    instance.nameMappings[o.name] = o
    o._buildObject()
!   instance.dispatchEvent('ObjectCreated',object=o, originator=__name__)
!   instance.dispatchEvent('ObjectSelected',object=object, originator=__name__)
    return o
  
  
Index: gnue/designer/src/schema/Instance.py
diff -c gnue/designer/src/schema/Instance.py:1.13 
gnue/designer/src/schema/Instance.py:1.14
*** gnue/designer/src/schema/Instance.py:1.13   Sun Dec 15 17:22:41 2002
--- gnue/designer/src/schema/Instance.py        Wed Dec 18 17:49:47 2002
***************
*** 36,46 ****
  # Tool support...
  from LayoutEditor import LayoutEditor
  from TreeView import TreeView
! from TableEditor import TableEditor
  from gnue.designer.PropertyEditor import PropertyEditor
  from gnue.designer.DataSourceEditor import DataSourceEditor
  from gnue.designer.SchemaViewer import SchemaViewer
! ##from gnue.designer.schema.VisualEditor import VisualEditor
  
  
  
--- 36,46 ----
  # Tool support...
  from LayoutEditor import LayoutEditor
  from TreeView import TreeView
! # from TableEditor import TableEditor
  from gnue.designer.PropertyEditor import PropertyEditor
  from gnue.designer.DataSourceEditor import DataSourceEditor
  from gnue.designer.SchemaViewer import SchemaViewer
! from gnue.designer.schema.DiaEditor.VisualEditor import VisualEditor
  
  
  
***************
*** 83,90 ****
      self.addTool(_('treeEditor'), _('Object Navigator'), TreeView)
      self.addTool(_('propertyEditor'), _('Property Inspector'), PropertyEditor)
      self.addTool(_('schemaViewer'), _('Schema Navigator'), SchemaViewer)
!     self.addTool(_('tableEditor'), _('Table/Field Editor'), TableEditor)
! #    self.addTool(_('visualEditor'), _('Visual Editor'), VisualEditor)
  
    def createWizards(self):
      self.loadWizards(wizards)
--- 83,90 ----
      self.addTool(_('treeEditor'), _('Object Navigator'), TreeView)
      self.addTool(_('propertyEditor'), _('Property Inspector'), PropertyEditor)
      self.addTool(_('schemaViewer'), _('Schema Navigator'), SchemaViewer)
! #    self.addTool(_('tableEditor'), _('Table/Field Editor'), TableEditor)
!     self.addTool(_('visualEditor'), _('Visual Editor'), VisualEditor)
  
    def createWizards(self):
      self.loadWizards(wizards)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]