[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/designer/src DataSourceEditor.py
From: |
Jason Cater |
Subject: |
gnue/designer/src DataSourceEditor.py |
Date: |
Wed, 16 Jan 2002 11:15:03 -0500 |
CVSROOT: /cvsroot/gnue
Module name: gnue
Changes by: Jason Cater <address@hidden> 02/01/16 11:15:02
Modified files:
designer/src : DataSourceEditor.py
Log message:
reverting DataSourceEditor back to working version
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/DataSourceEditor.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
Patches:
Index: gnue/designer/src/DataSourceEditor.py
diff -c gnue/designer/src/DataSourceEditor.py:1.4
gnue/designer/src/DataSourceEditor.py:1.5
*** gnue/designer/src/DataSourceEditor.py:1.4 Wed Jan 16 00:33:28 2002
--- gnue/designer/src/DataSourceEditor.py Wed Jan 16 11:15:02 2002
***************
*** 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)
--- 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)
***************
*** 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')
--- 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')
***************
*** 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" % \
--- 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" % \
***************
*** 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,
--- 108,113 ----
***************
*** 112,122 ****
if object == None:
return
- if hasattr(object, '_widgetHandler'):
- self.propBar.setCurrentObject(object)
-
if handler != __name__:
! pass
def onCreateObject (self, object, handler):
--- 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):
***************
*** 136,142 ****
if handler != __name__:
if isinstance(object, GDataSource.GDataSource):
! # TODO: Maintain self.datasources
index = object.__listIndex
--- 155,161 ----
if handler != __name__:
if isinstance(object, GDataSource.GDataSource):
! # TODO: Maintain self.datasourceMap
index = object.__listIndex
***************
*** 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):
--- 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):
***************
*** 185,190 ****
--- 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()
***************
*** 194,206 ****
--- 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__)
***************
*** 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")
--- 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)
- gnue/designer/src DataSourceEditor.py,
Jason Cater <=
- gnue/designer/src DataSourceEditor.py, Jason Cater, 2002/01/16
- gnue/designer/src DataSourceEditor.py, Jason Cater, 2002/01/16
- gnue/designer/src DataSourceEditor.py, Jason Cater, 2002/01/16
- gnue/designer/src DataSourceEditor.py, Jason Cater, 2002/01/17
- gnue/designer/src DataSourceEditor.py, Jason Cater, 2002/01/17