commit-gnue
[Top][All Lists]
Advanced

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

gnue/gnuef/src GFForm.py GFLibrary.py GFParser.py


From: Jason Cater
Subject: gnue/gnuef/src GFForm.py GFLibrary.py GFParser.py
Date: Mon, 18 Jun 2001 03:02:23 -0700

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    01/06/18 03:02:23

Modified files:
        gnuef/src      : GFForm.py GFLibrary.py GFParser.py 

Log message:
        Cleaned up a nasty recursive import problem with GFParser

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/src/GFForm.py.diff?cvsroot=OldCVS&tr1=1.101&tr2=1.102&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/src/GFLibrary.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/src/GFParser.py.diff?cvsroot=OldCVS&tr1=1.31&tr2=1.32&r1=text&r2=text

Patches:
Index: gnue/gnuef/src/GFForm.py
diff -u gnue/gnuef/src/GFForm.py:1.101 gnue/gnuef/src/GFForm.py:1.102
--- gnue/gnuef/src/GFForm.py:1.101      Mon Jun 11 19:22:16 2001
+++ gnue/gnuef/src/GFForm.py    Mon Jun 18 03:02:23 2001
@@ -37,10 +37,10 @@
 
 from GFObjects import *
 from GFEvent import *
-from GFParser import *
 from GFError import DBError
 from GFTriggerError import *
 from GFLibrary import * 
+import GFLibrary
 import GFParser
 import GFTrigger
 
Index: gnue/gnuef/src/GFLibrary.py
diff -u gnue/gnuef/src/GFLibrary.py:1.1 gnue/gnuef/src/GFLibrary.py:1.2
--- gnue/gnuef/src/GFLibrary.py:1.1     Thu Jun  7 09:58:15 2001
+++ gnue/gnuef/src/GFLibrary.py Mon Jun 18 03:02:23 2001
@@ -48,6 +48,6 @@
     if hasattr(self,'_xmltag'): 
       self._type = 'GF%s' % self._xmltag
     if not hasattr(self,'_importclass'): 
-      self._importclass = GFParser.xmlFormsHandler() \
-         .xmlElements[string.lower(self._type[9:])][0]
+      self._importclass = GFParser\
+         .getXMLelements()[string.lower(self._type[9:])][0]
 
Index: gnue/gnuef/src/GFParser.py
diff -u gnue/gnuef/src/GFParser.py:1.31 gnue/gnuef/src/GFParser.py:1.32
--- gnue/gnuef/src/GFParser.py:1.31     Sun Jun 17 19:09:44 2001
+++ gnue/gnuef/src/GFParser.py  Mon Jun 18 03:02:23 2001
@@ -30,13 +30,8 @@
 #
 
 from gnue.common.GParser import *
-from gnue.common import GDataSource
+from gnue.common import GDataSource, GParser
 
-import GFTrigger
-from GFObjects import *
-from GFForm import *
-import GFObjects
-import GFLibrary
 
 #######################################################
 # This method loads a form from an XML file and returns 
@@ -49,120 +44,153 @@
 #######################################################
 
 def loadForm(URL, app, initialize=1):
-  return loadXMLObject (URL, xmlFormsHandler, 'GFForm', 'form', 
+  return GParser.loadXMLObject (URL, xmlFormsHandler, 'GFForm', 'form', 
            initialize, attributes={"_app": app, 
                                "_connections": app.connections})  
+xmlElements = None
 
+def getXMLelements(): 
 
+  global xmlElements
 
-#######################################################
-#
-# xmlFormsHandler
-#
-# This class is called by the XML parser to
-# process the xml file. 
-#
-#######################################################
-
-class xmlFormsHandler (xmlHandler): 
-  def __init__(self): 
-
-    xmlHandler.__init__(self) 
-
     #
     # xmlElements=
-    #   {tagName: (baseClass, attributesHash, normalizeWhitespace?)}
+    #   {tagName: (baseClass, attributesHash, normalizeWhitespace?, parents)}
     #      
     # attributesHash=
     #   {attrName: (required?, uniqueID?, typecast, defaultValue)}
+    #
+    # parents=  # Used by designer to generate menus
+    #   (canParentsChildrenContainTagAlso?, Tuple of Parent Tags)
     #
-    from GFForm import *
-    self.xmlElements = { 
-      'form':       (GFForm,       { 'title':       (0, 0, char, None),
-                                     'readonly':    (0, 0, bool, 0   )}, 1),
-      'import':     (GFLibrary.GFImport,
-                                   { 'library':     (1, 0, char, None), 
-                                     'datasources': (0, 0, char, ""  ), 
-                                     'pages':       (0, 0, char, ""  ), 
-                                     'triggers':    (0, 0, char, ""  )}, 1), 
-      'database':   (GFDatabase,   { 'name':        (1, 1, char, None), 
-                                     'provider':    (1, 0, char, None), 
-                                     'dbname':      (1, 0, char, None), 
-                                     'host':        (1, 0, char, None)}, 1), 
-
-      'datasource': (GFDataSource,  GDataSource.tagAttributes          , 1),
-      'page':       (GFPage,       { 'name':        (0, 1, char, None)}, 1), 
-      'block':      (GFBlock,      { 'name':        (1, 1, char, None), 
-                                     'master':      (0, 0, char, None), 
-                                     'detail':      (0, 0, char, None), 
-                                     'rows':        (0, 0, int,  None), 
-                                     'rowSpacer':   (0, 0, int,  None),
-                                     'transparentBlock':(0, 0, bool, 0),
-                                     'datasource':  (0, 0, char, None)}, 1), 
-      'label':      (GFLabel,      { 'name':        (0, 1, char, None), 
-                                     'text':        (1, 0, char, None), 
-                                     'alignment':   (0, 0, char, None), 
-                                     'width':       (0, 0, int,  None), 
-                                     'x':           (1, 0, int,  None), 
-                                     'y':           (1, 0, int,  None)}, 1), 
-      'entry':      (GFEntry,      { 'name':        (1, 1, char, None), 
-                                     'field':       (0, 0, char, None), 
-                                     'height':      (0, 0, int,  None), 
-                                     'width':       (0, 0, int,  None), 
-                                     'max_length':  (0, 0, int,  None), 
-                                     'visibleCount':(0, 0, int,  None), 
-                                     'readonly':    (0, 0, bool, 0   ), 
-                                     'uppercase':   (0, 0, bool, 0   ), 
-                                     'lowercase':   (0, 0, bool, 0   ), 
-                                     'numeric':     (0, 0, bool, 0   ), 
-                                     'hidden':      (0, 0, bool, 0   ), 
-                                     'field':       (0, 0, char, None), 
-                                     'style':       (0, 0, char, None), 
-                                     'value':       (0, 0, char, None), 
-                                     'foreign_key': (0, 0, char, None), 
-                                     'default':     (0, 0, char, None), 
-                                     'queryDefault':(0, 0, char, None), 
-                                     'foreign_key_description': 
-                                                    (0, 0, char, None), 
-                                     'sloppyQuery': (0, 0, char, None), 
-                                     'x':           (1, 0, int,  None), 
-                                     'y':           (1, 0, int,  None)}, 1), 
-      'scrollbar':  (GFScrollBar,  { 'width':       (1, 0, int,  None), 
-                                     'height':      (1, 0, int,  None), 
-                                     'x':           (1, 0, int,  None), 
-                                     'y':           (1, 0, int,  None)}, 1), 
-      'box':        (GFBox,        { 'name':        (0, 1, char, None), 
-                                     'label':       (0, 0, char, None), 
-                                     'width':       (1, 0, int,  None), 
-                                     'height':      (1, 0, int,  None), 
-                                     'x':           (1, 0, int,  None), 
-                                     'y':           (1, 0, int,  None)}, 1), 
-      'button':     (GFButton,     { 'name':        (0, 1, char, None), 
-                                     'trigger':     (0, 0, char, None), 
-                                     'label':       (0, 0, char, None), 
-                                     'width':       (1, 0, int,  None), 
-                                     'height':      (1, 0, int,  None), 
-                                     'x':           (1, 0, int,  None), 
-                                     'y':           (1, 0, int,  None)}, 1), 
-      'trigger':    (GFTrigger.GFTrigger, 
-                                   { 'name':        (0, 1, char, None), 
-                                     'id':          (0, 0, char, None),  # 
DEPRECATED: Use name instead
-                                     'type':        (0, 0, char, None), 
-                                     'src':         (0, 0, char, None), 
-                                     'language':    (0, 0, char,'python')} ,0),
-      'options':    (GFObjects.GFOptions,    {                           }, 
1), 
-      'option':     (GFOption,     { 'name':        (1, 0, char, None)}, 1), 
-      'title':      (GFOption,     { 'name':        (0, 0, char, 'title')}, 
1), 
-      'name':       (GFOption,     { 'name':        (0, 0, char, 'name')}, 1), 
-      'height':     (GFOption,     { 'name':        (0, 0, char, 'height')}, 
1), 
-      'width':      (GFOption,     { 'name':        (0, 0, char, 'width')}, 
1), 
-      'author':     (GFOption,     { 'name':        (0, 0, char, 'author')}, 
1), 
-      'description':(GFOption,     { 'name':        (0, 0, char, 
'description')}, 1), 
-      'version':    (GFOption,     { 'name':        (0, 0, char, 'version')}, 
1), 
-      'tip':        (GFOption,     { 'name':        (0, 0, char, 'tip')}, 1), 
+  if xmlElements == None:
+    from gnue.forms import GFObjects, GFLibrary, GFTrigger, GFForm
+    xmlElements = { 
+      'form':       ( GFForm.GFForm,
+                      { 'title':       (0, 0, char, None),
+                        'readonly':    (0, 0, bool, 0   )}, 
+                      1, (0,(None))),
+      'import':     ( GFLibrary.GFImport,
+                      { 'library':     (1, 0, char, None), 
+                        'datasources': (0, 0, char, ""  ), 
+                        'pages':       (0, 0, char, ""  ), 
+                        'triggers':    (0, 0, char, ""  )}, 
+                     1, (0,('form'))),
+      'database':   ( GFObjects.GFDatabase,   
+                      { 'name':        (1, 1, char, None), 
+                        'provider':    (1, 0, char, None), 
+                        'dbname':      (1, 0, char, None), 
+                        'host':        (1, 0, char, None)}, 
+                      1, (0,('form'))),
+      'datasource': ( GFObjects.GFDataSource,  
+                      GDataSource.tagAttributes, 
+                      1, (0,('form'))),
+      'page':       ( GFObjects.GFPage,\
+                      { 'name':        (0, 1, char, None)}, 
+                      1, (0,('form'))),
+      'block':      ( GFObjects.GFBlock,      
+                      { 'name':        (1, 1, char, None), 
+                        'master':      (0, 0, char, None), 
+                        'detail':      (0, 0, char, None), 
+                        'rows':        (0, 0, int,  None), 
+                        'rowSpacer':   (0, 0, int,  None),
+                        'transparentBlock':(0, 0, bool, 0),
+                        'datasource':  (0, 0, char, None)}, 
+                     1, (0,('page'))),
+      'label':      ( GFObjects.GFLabel, 
+                      { 'name':        (0, 1, char, None), 
+                        'text':        (1, 0, char, None), 
+                        'alignment':   (0, 0, char, None), 
+                        'width':       (0, 0, int,  None), 
+                        'x':           (1, 0, int,  None), 
+                        'y':           (1, 0, int,  None)}, 
+                      1, (0,('block','page'))),
+      'entry':     ( GFObjects.GFEntry,
+                     { 'name':        (1, 1, char, None), 
+                        'field':       (0, 0, char, None), 
+                        'height':      (0, 0, int,  None), 
+                        'width':       (0, 0, int,  None), 
+                        'max_length':  (0, 0, int,  None), 
+                        'visibleCount':(0, 0, int,  None), 
+                        'readonly':    (0, 0, bool, 0   ), 
+                        'uppercase':   (0, 0, bool, 0   ), 
+                        'lowercase':   (0, 0, bool, 0   ), 
+                        'numeric':     (0, 0, bool, 0   ), 
+                        'hidden':      (0, 0, bool, 0   ), 
+                        'field':       (0, 0, char, None), 
+                        'style':       (0, 0, char, None), 
+                        'value':       (0, 0, char, None), 
+                        'foreign_key': (0, 0, char, None), 
+                        'default':     (0, 0, char, None), 
+                        'queryDefault':(0, 0, char, None), 
+                        'foreign_key_description':  (0, 0, char, None), 
+                        'sloppyQuery': (0, 0, char, None), 
+                        'x':           (1, 0, int,  None), 
+                        'y':           (1, 0, int,  None)}, 
+                     1, (0,('block'))),
+      'scrollbar':  ( GFObjects.GFScrollBar,  
+                      { 'width':       (1, 0, int,  None), 
+                        'height':      (1, 0, int,  None), 
+                        'x':           (1, 0, int,  None), 
+                        'y':           (1, 0, int,  None)}, 
+                      1, (0,('block','page'))),
+      'box':        ( GFObjects.GFBox,
+                      { 'name':        (0, 1, char, None), 
+                        'label':       (0, 0, char, None), 
+                        'width':       (1, 0, int,  None), 
+                        'height':      (1, 0, int,  None), 
+                        'x':           (1, 0, int,  None), 
+                        'y':           (1, 0, int,  None)}, 
+                      1, (0,('block','page'))),
+      'button':     ( GFObjects.GFButton,     
+                      { 'name':        (0, 1, char, None), 
+                        'trigger':     (0, 0, char, None), 
+                        'label':       (0, 0, char, None), 
+                        'width':       (1, 0, int,  None), 
+                        'height':      (1, 0, int,  None), 
+                        'x':           (1, 0, int,  None), 
+                        'y':           (1, 0, int,  None)},  
+                      1, (0,('block','page'))),
+      'trigger':    ( GFTrigger.GFTrigger, 
+                      { 'name':        (0, 1, char, None), 
+                        'id':          (0, 0, char, None),  # DEPRECATED: Use 
name instead
+                        'type':        (0, 0, char, None), 
+                        'src':         (0, 0, char, None), 
+                        'language':    (0, 0, char,'python')}, 
+                      0, (1,('form'))),
+      'options':    ( GFObjects.GFOptions,    
+                      {}, 
+                      1, (1,('form'))),
+      'option':     ( GFObjects.GFOption,
+                      { 'name':        (1, 0, char, None)},
+                      1, (0,('option'))),
+      'title':      ( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'title')},
+                      1, (0,(None))),
+      'name':       ( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'name')},
+                      1, (0,(None))),
+      'height':     ( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'height')},
+                      1, (0,(None))),
+      'width':      ( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'width')},
+                      1, (0,(None))),
+      'author':     ( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'author')},
+                      1, (0,(None))),
+      'description':( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'description')},
+                      1, (0,(None))),
+      'version':    ( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'version')},
+                      1, (0,(None))),
+      'tip':        ( GFObjects.GFOption,
+                      { 'name':        (0, 0, char, 'tip')},
+                      1, (0,('options'))), 
     }
-
-
+    
+      
     #
     # Add importable elements
     # If an object needs to be importable, 
@@ -174,16 +202,32 @@
     for key in ('datasource','page','block','trigger','button','entry'): 
       name = "import-%s" % key
       p = {}
-      for k in self.xmlElements[key][1].keys(): 
-        p[k] = self.xmlElements[key][1][k][:]
+      for k in xmlElements[key][1].keys(): 
+        p[k] = xmlElements[key][1][k][:]
       p['library'] = (1, 0, char, None)
-
-      self.xmlElements[name] = (GFLibrary.GFImportItem, p)
- 
-
+    
+      xmlElements[name] = (GFLibrary.GFImportItem, p)
+     
     #
     # Add DataSource elements
     #
-    self.xmlElements.update(GDataSource.xmlElements)
+    xmlElements.update(GDataSource.xmlElements)
+    
+  return xmlElements  
+  
+#######################################################
+#
+# xmlFormsHandler
+#
+# This class is called by the XML parser to
+# process the xml file. 
+#
+#######################################################
+
+class xmlFormsHandler (GParser.xmlHandler): 
+  def __init__(self): 
+
+    GParser.xmlHandler.__init__(self) 
 
+    self.xmlElements = getXMLelements()
 



reply via email to

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