commit-gnue
[Top][All Lists]
Advanced

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

gnue designer/src/DataSourceEditor.py forms/src...


From: Jason Cater
Subject: gnue designer/src/DataSourceEditor.py forms/src...
Date: Wed, 16 Jan 2002 00:33:29 -0500

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/01/16 00:33:29

Modified files:
        designer/src   : DataSourceEditor.py 
        forms/src      : UIwxpython.py 

Log message:
        synching machines

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/DataSourceEditor.py.diff?cvsroot=OldCVS&tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/UIwxpython.py.diff?cvsroot=OldCVS&tr1=1.125&tr2=1.126&r1=text&r2=text

Patches:
Index: gnue/designer/src/DataSourceEditor.py
diff -c gnue/designer/src/DataSourceEditor.py:1.3 
gnue/designer/src/DataSourceEditor.py:1.4
*** gnue/designer/src/DataSourceEditor.py:1.3   Tue Jan 15 18:12:56 2002
--- gnue/designer/src/DataSourceEditor.py       Wed Jan 16 00:33:28 2002
***************
*** 27,44 ****
  # NOTES:
  #
  
! import sys, os, cPickle
  from wxPython.wx import *
  from gnue.common import GDebug, GConfig, GDataSource
  import RuntimeSettings
- import Incubator
  
  class DataSourceEditor(wxPanel):
    def __init__(self, parentWindow, instance, rootObject):
      wxPanel.__init__(self,parentWindow,-1)
      self.instance = instance
      self.rootObject = instance.rootObject
-     self.connections = self.instance._app.connections
      self.runtime_section = "DataSourceEditor"
  
      self.toolBar = ToolBar(self, parentWindow)
--- 27,42 ----
  # NOTES:
  #
  
! import sys, os
  from wxPython.wx import *
  from gnue.common import GDebug, GConfig, GDataSource
  import RuntimeSettings
  
  class DataSourceEditor(wxPanel):
    def __init__(self, parentWindow, instance, rootObject):
      wxPanel.__init__(self,parentWindow,-1)
      self.instance = instance
      self.rootObject = instance.rootObject
      self.runtime_section = "DataSourceEditor"
  
      self.toolBar = ToolBar(self, parentWindow)
***************
*** 46,53 ****
      self.splitter = wxSplitterWindow(self, -1, style=wxSP_3D)
  
      self.list = wxListCtrl(self.splitter, -1, pos=wxPoint(0,0),
!              style=wxLC_REPORT|wxLC_EDIT_LABELS|
!                    wxLC_HRULES|wxLC_VRULES|wxLC_SINGLE_SEL)
  
      self.list.InsertColumn(0,'Name')
      self.list.InsertColumn(1,'Source')
--- 44,50 ----
      self.splitter = wxSplitterWindow(self, -1, style=wxSP_3D)
  
      self.list = wxListCtrl(self.splitter, -1, pos=wxPoint(0,0),
!              style=wxLC_REPORT|wxLC_EDIT_LABELS|wxLC_HRULES|wxLC_VRULES)
  
      self.list.InsertColumn(0,'Name')
      self.list.InsertColumn(1,'Source')
***************
*** 57,103 ****
  
      self.properties = wxPanel(self.notebook, -1)
      self.fields = wxPanel(self.notebook, -1)
-     self.schemas = SchemaViewer(self, self.notebook)
  
      self.notebook.AddPage(self.properties, 'Properties')
      self.notebook.AddPage(self.fields, 'References')
-     self.notebook.AddPage(self.schemas, 'Schema')
  
      self.splitter.SplitHorizontally(self.list, self.notebook,200)
  
-     EVT_SIZE(self, self.OnSize)
  
!     self.datasourceMap = {}
!     self.datasources = []
  
!     self.current = None
  
      instance.rootObject.walk (self.initialInventory)
      instance.rootObject.walk (self.inventoryObject)
  
      self.splitter.SetSize(self.GetSize())
  
-     EVT_LIST_ITEM_SELECTED(self, self.list.GetId(), self.OnDSSelected)
-     self.onSetCurrentObject(self.current, "")
- 
      self.finalized = 0
      RuntimeSettings.registerRuntimeSettingHandler(self.instance, self)
  
  
    def initialInventory(self, object):
      if isinstance(object, GDataSource.GDataSource):
!       self.datasourceMap[string.lower(object.name)] = object
!       self.datasourceMap[id(object)] = object
!       self.datasources.append(object)
!       if self.current is None:
!         self.current = object
  
  
    def inventoryObject(self, object):
      if isinstance(object, GDataSource.GDataSource):
        if hasattr(object,'master') and len(object.master):
          try:
!           object.__master = self.datasourceMap[string.lower(object.master)]
          except KeyError:
            # TODO: Something better than this
            print "DataSource %s references non-existent master %s" % \
--- 54,89 ----
  
      self.properties = wxPanel(self.notebook, -1)
      self.fields = wxPanel(self.notebook, -1)
  
      self.notebook.AddPage(self.properties, 'Properties')
      self.notebook.AddPage(self.fields, 'References')
  
      self.splitter.SplitHorizontally(self.list, self.notebook,200)
  
  
!     EVT_SIZE(self, self.OnSize)
  
!     self.datasources = {}
  
      instance.rootObject.walk (self.initialInventory)
      instance.rootObject.walk (self.inventoryObject)
  
      self.splitter.SetSize(self.GetSize())
  
      self.finalized = 0
      RuntimeSettings.registerRuntimeSettingHandler(self.instance, self)
  
  
    def initialInventory(self, object):
      if isinstance(object, GDataSource.GDataSource):
!       self.datasources[string.lower(object.name)] = object
  
  
    def inventoryObject(self, object):
      if isinstance(object, GDataSource.GDataSource):
        if hasattr(object,'master') and len(object.master):
          try:
!           object.__master = self.datasources[string.lower(object.master)]
          except KeyError:
            # TODO: Something better than this
            print "DataSource %s references non-existent master %s" % \
***************
*** 108,113 ****
--- 94,100 ----
        # TODO: Implement sorting?
        index = self.list.GetItemCount()
        self.list.InsertStringItem(index, object.name)
+ #      self.list.SetStringItem(index, 0, object.name)
        self.list.SetStringItem(index, 1,
               hasattr(object,'table') and object.table or '')
        self.list.SetStringItem(index, 2,
***************
*** 125,141 ****
      if object == None:
        return
  
!     if handler != __name__:
!       if isinstance(object, GDataSource.GDataSource):
! 
!         self.current = object
!         self.list.SetItemState ( object.__listIndex,
!                                  wxLIST_STATE_SELECTED,
!                                  wxLIST_STATE_SELECTED)
  
!         self.list.EnsureVisible(object.__listIndex)
! 
!     self.schemas.onSetCurrentObject(object, handler)
  
  
    def onCreateObject (self, object, handler):
--- 112,122 ----
      if object == None:
        return
  
!     if hasattr(object, '_widgetHandler'):
!       self.propBar.setCurrentObject(object)
  
!     if handler != __name__:
!       pass
  
  
    def onCreateObject (self, object, handler):
***************
*** 155,161 ****
      if handler != __name__:
  
        if isinstance(object, GDataSource.GDataSource):
!         # TODO: Maintain self.datasourceMap
  
  
          index = object.__listIndex
--- 136,142 ----
      if handler != __name__:
  
        if isinstance(object, GDataSource.GDataSource):
!         # TODO: Maintain self.datasources
  
  
          index = object.__listIndex
***************
*** 170,193 ****
    def onDeleteObject (self, object, handler):
      if object == None:
        return
! 
!     if isinstance(object, GDataSource.GDataSource):
! 
!       index = object.__listIndex
! 
!       i = j = 0
!       for datasource in self.datasources:
!         if datasource == object: j = i
!         if datasource.__listIndex > index:
!           datasource.__listIndex -= 1
!           i += 1
! 
! 
!       self.datasources.pop(j)
!       self.list.DeleteItem(index)
! 
!       del self.datasourceMap[string.lower(object.name)]
!       del self.datasourceMap[id(object)]
  
  
    def OnSize(self, event):
--- 151,159 ----
    def onDeleteObject (self, object, handler):
      if object == None:
        return
!     if handler != __name__:
!       if isinstance(object, GDataSource.GDataSource):
!         del self.datasources[string.lower(object.name)]
  
  
    def OnSize(self, event):
***************
*** 219,232 ****
          RuntimeSettings.getint(
             self.runtime_section, "col%s" % i, -2))
  
-     for i in range(3):  # Should be the number of columns in the list
-       self.schemas.list.SetColumnWidth(i,
-         RuntimeSettings.getint(
-            self.runtime_section, "schemaCol%s" % i, -2))
- 
-     self.list.Refresh()
-     self.Refresh()
- 
  
    def saveRuntimeSettings(self):
      sash = self.GetPositionTuple()
--- 185,190 ----
***************
*** 236,274 ****
                'visibletab': self.notebook.GetSelection()
               }
  
-     # Save the top-level list column sizes
      for i in range(3):  # Should be the number of columns in the list
        settings["col%s" % i] = self.list.GetColumnWidth(i)
  
-     # Save the schema viewer column sizes
-     for i in range(SCH_COLUMNS):
-       settings["schemaCol%s" % i] = self.schemas.list.GetColumnWidth(i)
- 
      return ( self.runtime_section,
               settings )
  
  
-   # A Datasource was selected in the menu
-   def OnDSSelected(self, event):
-     self.current = self.datasourceMap[event.GetData()]
-     self.instance.onSetCurrentObject(self.current, __name__)
- 
- 
-   def OnAddDSSelected(self, event):
- 
-     attributes = {}
-     if self.current is not None:
-       attributes['database'] = \
-           hasattr(self.current,'database') and self.current.database or ''
- 
-     Incubator.createObject(self.instance, self.rootObject, 'datasource',
-                            parent=self.rootObject, attributes=attributes)
- 
- 
-   def OnDeleteDSSelected(self, event):
- 
-     if self.current is not None:
-       self.instance.onDeleteObject(self.current, __name__)
  
  
  
--- 194,206 ----
***************
*** 279,414 ****
      self.editor = editor
      parent.SetToolBar(self)
  
!     self.addButtonId = wxNewId()
!     self.deleteButtonId = wxNewId()
! 
!     self.AddSimpleTool(self.addButtonId,
          wxImage(os.environ['INSTALL_PREFIX']+'/'+GConfig.get('tb_insert'),
                  wxBITMAP_TYPE_PNG).ConvertToBitmap(),
          "Create Data Source",
!         "Create a new data source")
  
!     self.AddSimpleTool(self.deleteButtonId,
          wxImage(os.environ['INSTALL_PREFIX']+'/'+GConfig.get('tb_delete'),
                  wxBITMAP_TYPE_PNG).ConvertToBitmap(),
          "Delete Data Source",
!         "Delete the currently selected data source")
! 
!     EVT_TOOL(self, self.addButtonId, editor.OnAddDSSelected)
!     EVT_TOOL(self, self.deleteButtonId, editor.OnDeleteDSSelected)
! 
! 
!     self.dblinks = []
! 
! 
! 
! SCH_FIELD = 0
! SCH_TYPE = 1
! SCH_SIZE = 2
! SCH_NATIVE = 3
! SCH_REQ = 4
! SCH_COLUMNS = SCH_REQ + 1
! 
! 
! class SchemaViewer(wxPanel):
!   def __init__(self, editor, parentWindow):
!     wxPanel.__init__(self, parentWindow, -1)
!     self.editor = editor
! 
!     self.list = wxListCtrl(self, -1, pos=wxPoint(0,0),
!              style=wxLC_REPORT|wxLC_HRULES|wxLC_VRULES)
! 
!     self.list.InsertColumn(SCH_FIELD, 'Field')
!     self.list.InsertColumn(SCH_TYPE,  'Base Type')
!     self.list.InsertColumn(SCH_SIZE,  'Size', wxLIST_FORMAT_RIGHT)
!     self.list.InsertColumn(SCH_NATIVE,'Native Type')
!     self.list.InsertColumn(SCH_REQ,   'Required')
! 
!     self.schemaMap = []
! 
!     EVT_SIZE(self, self.OnSize)
!     EVT_LIST_BEGIN_DRAG(self, self.list.GetId(), self.OnBeginDrag)
! 
! 
!   def fillList(self):
! 
!    try:
!     conn = self.editor.current.database
! 
!     # TODO: This is very, very temporary...
!     # TODO: Designer shouldn't care about gconnection's internal
!     # TODO: attributes.  AS SOON AS common goes to 0.3.0, create
!     # TODO: an isConnectionActive(conn_name) method in GConnections
!     # TODO: and reuse here.
! 
!     if not self.editor.connections._openConnections.has_key(conn) and \
!        not int(GConfig.get("AutoConnect","0")):
! 
!       # TODO: Some other form of feedback
!       if not hasattr(self.editor,'_schemaMessageDisplayed'):
!         print "You are not logged in to %s... not retrieving schema" % (conn)
!         self.editor._schemaMessageDisplayed = 1
! 
!       return
! 
!     # TODO: Much error catching... any DB errors should be
!     # TODO: trapped so the designing session can continue,
!     # TODO: albeit without schema support.
! 
!     dataObject = self.editor.connections.getDataObject(conn, "object")
! 
!     self.editor.connections.requestConnection(dataObject, conn)
! 
!     schema = dataObject.getSchemaByName(self.editor.current.table)
! 
!     index = 0
!     self.list.DeleteAllItems()
!     if schema:
!       for field in schema.getChildSchema(schema):
!         self.list.InsertStringItem(index, field.name)
!         self.list.SetStringItem(index, SCH_TYPE,
!            string.upper(field.datatype[0]) + field.datatype[1:])
!         self.list.SetStringItem(index, SCH_NATIVE,
!            hasattr(field, 'nativetype') and field.nativetype or '(unknown)')
!         self.list.SetStringItem(index, SCH_REQ,
!            field.required and "Yes" or "No")
!         self.list.SetStringItem(index, SCH_SIZE,
!            hasattr(field, 'length') and ("%s"%field.length) or '-')
!         self.list.SetItemData(index, index)
!         self.schemaMap.append(field)
!         index += 1
! 
!    except:
!      # TODO: actually filter connection errors
!      pass
! 
! 
!   def onSetCurrentObject(self, object, controller):
!     if isinstance(object, GDataSource.GDataSource):
!       self.current = object
!       self.fillList()
! 
!   def OnSize(self, event):
!     self.list.SetSize(self.GetSize())
! 
! 
!   def OnBeginDrag(self, event):
! 
!     object = self.schemaMap[event.GetData()]
! 
!     data = { "Type" : "entry",
!              "Attributes": {
!                "datasource": self.current.name,
!                "name": "fld%s__%s" % (self.current.name,
!                        string.lower(object.name))
!              }
!            }
  
-     do = wxCustomDataObject(wxCustomDataFormat("GNUeDesVisualElement"))
-     do.SetData(cPickle.dumps(data,1))
  
  
-     dropSource = wxDropSource(self)
-     dropSource.SetData(do)
-     result = dropSource.DoDragDrop(false)
  
--- 211,228 ----
      self.editor = editor
      parent.SetToolBar(self)
  
!     self.AddSimpleTool(203,
          wxImage(os.environ['INSTALL_PREFIX']+'/'+GConfig.get('tb_insert'),
                  wxBITMAP_TYPE_PNG).ConvertToBitmap(),
          "Create Data Source",
!         "Create Data Source")
  
!     self.AddSimpleTool(203,
          wxImage(os.environ['INSTALL_PREFIX']+'/'+GConfig.get('tb_delete'),
                  wxBITMAP_TYPE_PNG).ConvertToBitmap(),
          "Delete Data Source",
!         "Delete Data Source")
  
  
  
  
Index: gnue/forms/src/UIwxpython.py
diff -c gnue/forms/src/UIwxpython.py:1.125 gnue/forms/src/UIwxpython.py:1.126
*** gnue/forms/src/UIwxpython.py:1.125  Tue Jan 15 23:39:50 2002
--- gnue/forms/src/UIwxpython.py        Wed Jan 16 00:33:29 2002
***************
*** 487,493 ****
      if dlg.ShowModal() == wxID_OK:
        self.dispatchEvent(GFEvent('requestRECORDNUMBER', dlg.GetValue()))
        dlg.Destroy()
!                       
  
    #
    # closeTrap
--- 487,493 ----
      if dlg.ShowModal() == wxID_OK:
        self.dispatchEvent(GFEvent('requestRECORDNUMBER', dlg.GetValue()))
        dlg.Destroy()
! 
  
    #
    # closeTrap
***************
*** 504,513 ****
        self.dispatchEvent(GFEvent('requestEXIT'))
      else:
        object.Destroy()
!       
    #
-   # uiEventTrap 
-   # 
    # traps most data entry related wxPython events and converts them to 
GFForms UI requests
    # really need to be recoded to something more friendly - maybe multiple 
event handlers
    #
--- 504,513 ----
        self.dispatchEvent(GFEvent('requestEXIT'))
      else:
        object.Destroy()
! 
!   #
!   # uiEventTrap
    #
    # traps most data entry related wxPython events and converts them to 
GFForms UI requests
    # really need to be recoded to something more friendly - maybe multiple 
event handlers
    #
***************
*** 516,522 ****
      #
      # KeyBoard Events
      #
!     if event.GetEventType() == wxEVT_CHAR:
        if event.ShiftDown() == TRUE and event.KeyCode() == WXK_TAB:
          action = GFEvent('requestPREVENTRY')
        else:
--- 516,522 ----
      #
      # KeyBoard Events
      #
!     if event.GetEventType() in (wxEVT_CHAR,wxEVT_KEY_UP):
        if event.ShiftDown() == TRUE and event.KeyCode() == WXK_TAB:
          action = GFEvent('requestPREVENTRY')
        else:
***************
*** 534,545 ****
            elif event.KeyCode() == WXK_F2:
              self.promptForRecordNumber()
  
!             
      #
      # Mouse Events
      #
      elif event.GetEventType() == wxEVT_LEFT_DOWN:
!       # hack for swig shortcomming 
        eo = event.GetEventObject()
        object = wxPyTypeCast(eo, 'wxWindow')
  
--- 534,545 ----
            elif event.KeyCode() == WXK_F2:
              self.promptForRecordNumber()
  
! 
      #
      # Mouse Events
      #
      elif event.GetEventType() == wxEVT_LEFT_DOWN:
!       # hack for swig shortcomming
        eo = event.GetEventObject()
        object = wxPyTypeCast(eo, 'wxWindow')
  
***************
*** 550,566 ****
              self.dispatchEvent(GFEvent('requestFOCUS',key))
              self.dispatchEvent(GFEvent('requestJUMPRECORD',count - 
key._visibleIndex))
              break
!             
      #
!     # ra3vat CheckBox Events 
      #
      elif event.GetEventType() == wxEVT_COMMAND_CHECKBOX_CLICKED:
!       # hack for swig shortcomming 
        eo = event.GetEventObject()
! # CheckBox does not work if uncomment this instead of next line (ra3vat)      
 
  ##      object = wxPyTypeCast(eo, 'wxWindow')
        object = wxPyTypeCast(eo, 'wxCheckBox')
!       
        for key in self._formToUI.keys():
          for count in range(len(self._formToUI[key][0])):
            if self._formToUI[key][0][count].GetId() == object.GetId():
--- 550,566 ----
              self.dispatchEvent(GFEvent('requestFOCUS',key))
              self.dispatchEvent(GFEvent('requestJUMPRECORD',count - 
key._visibleIndex))
              break
! 
      #
!     # ra3vat CheckBox Events
      #
      elif event.GetEventType() == wxEVT_COMMAND_CHECKBOX_CLICKED:
!       # hack for swig shortcomming
        eo = event.GetEventObject()
! # CheckBox does not work if uncomment this instead of next line (ra3vat)
  ##      object = wxPyTypeCast(eo, 'wxWindow')
        object = wxPyTypeCast(eo, 'wxCheckBox')
! 
        for key in self._formToUI.keys():
          for count in range(len(self._formToUI[key][0])):
            if self._formToUI[key][0][count].GetId() == object.GetId():
***************
*** 580,587 ****
        # if it will allow me proper focus control w/
        # comboxes
        #
!       
!       # hack for swig shortcomming 
        eo = event.GetEventObject()
        object = wxPyTypeCast(eo, 'wxWindow')
  
--- 580,587 ----
        # if it will allow me proper focus control w/
        # comboxes
        #
! 
!       # hack for swig shortcomming
        eo = event.GetEventObject()
        object = wxPyTypeCast(eo, 'wxWindow')
  
***************
*** 592,598 ****
              self.dispatchEvent(GFEvent('requestFOCUS',key))
              self.dispatchEvent(GFEvent('requestJUMPRECORD',count - 
key._visibleIndex))
              break
!             
        for key in self._formToUI.keys():
          for count in range(len(self._formToUI[key][0])):
            if self._formToUI[key][0][count].GetId() == object.GetId():
--- 592,598 ----
              self.dispatchEvent(GFEvent('requestFOCUS',key))
              self.dispatchEvent(GFEvent('requestJUMPRECORD',count - 
key._visibleIndex))
              break
! 
        for key in self._formToUI.keys():
          for count in range(len(self._formToUI[key][0])):
            if self._formToUI[key][0][count].GetId() == object.GetId():
***************
*** 603,609 ****
        # slightly altered event to call immediate
        #
              # Move to proper object
!             self.dispatchEvent(GFEvent('requestFOCUS',key))     
        #
        # End duplicate of mouse handling code
        #
--- 603,609 ----
        # slightly altered event to call immediate
        #
              # Move to proper object
!             self.dispatchEvent(GFEvent('requestFOCUS',key))
        #
        # End duplicate of mouse handling code
        #
***************
*** 636,656 ****
          action = GFEvent('requestPAGE',event.GetSelection())
        else:
          _LOOPTRAP = 0
!                                            
      #
      # Unhandled events
      #
      else:
        # Need to probably log this somewhere in debug mode
        pass
!       
      if action != None:
        self.dispatchEvent(action)
  
  
!   # Called whenever forms goes into a "wait" state in which user cannot 
    # interact with interface (e.g., while waiting for a query or a commit)
!   def beginWait (self, event): 
      wxBeginBusyCursor()
  
    # Called whenever forms leaves a "wait" state 
--- 636,656 ----
          action = GFEvent('requestPAGE',event.GetSelection())
        else:
          _LOOPTRAP = 0
! 
      #
      # Unhandled events
      #
      else:
        # Need to probably log this somewhere in debug mode
        pass
! 
      if action != None:
        self.dispatchEvent(action)
  
  
!   # Called whenever forms goes into a "wait" state in which user cannot
    # interact with interface (e.g., while waiting for a query or a commit)
!   def beginWait (self, event):
      wxBeginBusyCursor()
  
    # Called whenever forms leaves a "wait" state 
***************
*** 821,826 ****
--- 821,827 ----
        newWidget.SetValue("")
  
        if initialize:
+         EVT_KEY_UP (newWidget, interface.uiEventTrap)
          EVT_CHAR(newWidget, interface.uiEventTrap)
          EVT_COMBOBOX(newWidget, newWidget.GetId(), interface.uiEventTrap)
      elif style == 'label':



reply via email to

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