commit-gnue
[Top][All Lists]
Advanced

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

gnue common/doc/RPC-grpc-file.dtd common/script...


From: Jason Cater
Subject: gnue common/doc/RPC-grpc-file.dtd common/script...
Date: Sun, 30 Jun 2002 20:30:50 -0400

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/06/30 20:30:50

Modified files:
        common/doc     : RPC-grpc-file.dtd 
        common/scripts : gnuedtd 
        common/src     : GConditions.py GMenu.py 
        forms/doc      : gnue-forms.dtd 
        forms/src      : GFParser.py 
Added files:
        designer/src/schema/parser: gnue-schema.dtd 
        navigator/doc  : gnue-navigator.dtd 
        reports/doc    : gnue-reports.dtd 

Log message:
        Reworked support for gnuedtd... created base tool's DTD's as an example

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/doc/RPC-grpc-file.dtd.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/scripts/gnuedtd.diff?cvsroot=OldCVS&tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/GConditions.py.diff?cvsroot=OldCVS&tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/GMenu.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/schema/parser/gnue-schema.dtd?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/doc/gnue-forms.dtd.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFParser.py.diff?cvsroot=OldCVS&tr1=1.66&tr2=1.67&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/navigator/doc/gnue-navigator.dtd?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/reports/doc/gnue-reports.dtd?cvsroot=OldCVS&rev=1.1

Patches:
Index: gnue/common/doc/RPC-grpc-file.dtd
diff -c gnue/common/doc/RPC-grpc-file.dtd:1.1 
gnue/common/doc/RPC-grpc-file.dtd:1.2
*** gnue/common/doc/RPC-grpc-file.dtd:1.1       Wed May  1 20:39:23 2002
--- gnue/common/doc/RPC-grpc-file.dtd   Sun Jun 30 20:30:50 2002
***************
*** 1,23 ****
! <!-- GNURPC DTD (Version 0.0001) -->
  
  <!--
!      Copyright 2001 Free Software Foundation
!     
       This file is part of GNU Enterprise.
!     
!      GNU Enterprise is free software; you can redistribute it 
!      and/or modify it under the terms of the GNU General Public 
!      License as published by the Free Software Foundation; either 
       version 2, or (at your option) any later version.
!     
!      GNU Enterprise is distributed in the hope that it will be 
!      useful, but WITHOUT ANY WARRANTY; without even the implied 
!      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
       PURPOSE. See the GNU General Public License for more details.
!     
!      You should have received a copy of the GNU General Public 
!      License along with program; see the file COPYING. If not, 
!      write to the Free Software Foundation, Inc., 59 Temple Place 
       - Suite 330, Boston, MA 02111-1307, USA.
  -->
  
--- 1,23 ----
! <!-- GNURPC DTD (Version 0.4.0a) -->
  
  <!--
!      Copyright 2001-2002 Free Software Foundation
! 
       This file is part of GNU Enterprise.
! 
!      GNU Enterprise is free software; you can redistribute it
!      and/or modify it under the terms of the GNU General Public
!      License as published by the Free Software Foundation; either
       version 2, or (at your option) any later version.
! 
!      GNU Enterprise is distributed in the hope that it will be
!      useful, but WITHOUT ANY WARRANTY; without even the implied
!      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE. See the GNU General Public License for more details.
! 
!      You should have received a copy of the GNU General Public
!      License along with program; see the file COPYING. If not,
!      write to the Free Software Foundation, Inc., 59 Temple Place
       - Suite 330, Boston, MA 02111-1307, USA.
  -->
  
***************
*** 26,41 ****
  <!ENTITY gt "&#62;">
  <!ENTITY amp "&#38;#38;">
  
! <!-- +---------------------------------------------------+ --> 
  <!-- | Datatype entities to make DTD more human readable | -->
  <!-- +---------------------------------------------------+ -->
  
! <!ENTITY % text "CDATA">
  
! <!ENTITY % boolean "(%true;) #IMPLIED">
! <!ENTITY % true "">
  
! <!ENTITY % name "NMTOKEN">
  <!-- [A-Za-z]([A-Z][a-z][0-9][#$_-])* -->
  
  
--- 26,42 ----
  <!ENTITY gt "&#62;">
  <!ENTITY amp "&#38;#38;">
  
! <!-- +---------------------------------------------------+ -->
  <!-- | Datatype entities to make DTD more human readable | -->
  <!-- +---------------------------------------------------+ -->
  
! <!ENTITY text "CDATA">
  
! <!ENTITY boolean "(%true;|%false;) #IMPLIED">
! <!ENTITY true "Y">
! <!ENTITY false "N">
  
! <!ENTITY name "NMTOKEN">
  <!-- [A-Za-z]([A-Z][a-z][0-9][#$_-])* -->
  
  
***************
*** 93,97 ****
  
  
  <!-- This DTD was created by gnuedtd
!      Updated: 2002-05-02 02:32:27   -->
  
--- 94,98 ----
  
  
  <!-- This DTD was created by gnuedtd
!      Updated: 2002-06-30 19:14:39   -->
  
Index: gnue/common/scripts/gnuedtd
diff -c gnue/common/scripts/gnuedtd:1.3 gnue/common/scripts/gnuedtd:1.4
*** gnue/common/scripts/gnuedtd:1.3     Wed May  1 20:37:36 2002
--- gnue/common/scripts/gnuedtd Sun Jun 30 20:30:50 2002
***************
*** 1,30 ****
! #!python 
  #
  # This file is part of GNU Enterprise.
  #
! # GNU Enterprise is free software; you can redistribute it 
! # and/or modify it under the terms of the GNU General Public 
! # License as published by the Free Software Foundation; either 
  # version 2, or (at your option) any later version.
  #
! # GNU Enterprise is distributed in the hope that it will be 
! # useful, but WITHOUT ANY WARRANTY; without even the implied 
! # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  # PURPOSE. See the GNU General Public License for more details.
  #
! # You should have received a copy of the GNU General Public 
! # License along with program; see the file COPYING. If not, 
! # write to the Free Software Foundation, Inc., 59 Temple Place 
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2001 Free Software Foundation
  #
  #
  # FILE:
  # gnuedtd
  #
  # DESCRIPTION:
! # This script generates a DTD for the client apps based on 
  # their GParser markup
  #
  # NOTES:
--- 1,30 ----
! #!/bin/env python
  #
  # This file is part of GNU Enterprise.
  #
! # GNU Enterprise is free software; you can redistribute it
! # and/or modify it under the terms of the GNU General Public
! # License as published by the Free Software Foundation; either
  # version 2, or (at your option) any later version.
  #
! # GNU Enterprise is distributed in the hope that it will be
! # useful, but WITHOUT ANY WARRANTY; without even the implied
! # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  # PURPOSE. See the GNU General Public License for more details.
  #
! # You should have received a copy of the GNU General Public
! # License along with program; see the file COPYING. If not,
! # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2001-2002 Free Software Foundation
  #
  #
  # FILE:
  # gnuedtd
  #
  # DESCRIPTION:
! # This script generates a DTD for the client apps based on
  # their GParser markup
  #
  # NOTES:
***************
*** 33,64 ****
  import sys, string, time
  from gnue.common import GParser, GTypecast
  
  class GenerateDTD:
!   def __init__ (self, tool, dest=sys.__stdout__): 
  
!     if tool == 'reports': 
        from gnue.reports import GRParser, VERSION, PACKAGE
        xmlElements = GRParser.getXMLelements()
        topLevelElement = 'report'
        name = PACKAGE
        version = VERSION
  
!     elif tool == 'forms': 
        from gnue.forms import GFParser, VERSION, PACKAGE
        xmlElements = GFParser.getXMLelements()
        topLevelElement = 'form'
        name = PACKAGE
        version = VERSION
  
!     elif tool == 'gnurpc': 
        from gnue.common.commdrivers._parser import Parser
        xmlElements = Parser.getXMLelements()
        topLevelElement = 'gnurpc'
        name = 'GNURPC'
!       version = '0.0001'
  
!     else: 
!       print "\nSyntax: gnuedtd <forms|reports|gnurpc>\n"
        sys.exit()
  
      self.parentMappings = {}
--- 33,82 ----
  import sys, string, time
  from gnue.common import GParser, GTypecast
  
+ # This is simply to initialize gettext support :(
+ from gnue.common import GBaseApp
+ 
  class GenerateDTD:
!   def __init__ (self, tool, dest=sys.__stdout__):
  
!     if tool == 'reports':
        from gnue.reports import GRParser, VERSION, PACKAGE
        xmlElements = GRParser.getXMLelements()
        topLevelElement = 'report'
        name = PACKAGE
        version = VERSION
  
!     elif tool == 'forms':
        from gnue.forms import GFParser, VERSION, PACKAGE
        xmlElements = GFParser.getXMLelements()
        topLevelElement = 'form'
        name = PACKAGE
        version = VERSION
  
!     elif tool == 'navigator':
!       from gnue.navigator import GNParser, VERSION, PACKAGE
!       xmlElements = GNParser.getXMLelements()
!       topLevelElement = 'processes'
!       name = PACKAGE
!       version = VERSION
! 
!     elif tool == 'schema':
!       from gnue.designer.schema.parser import GSParser
!       from gnue.designer import VERSION, PACKAGE
!       xmlElements = GSParser.getXMLelements()
!       topLevelElement = 'schema'
!       name = 'GNUe Schema'
!       version = VERSION
! 
!     elif tool == 'gnurpc':
        from gnue.common.commdrivers._parser import Parser
        xmlElements = Parser.getXMLelements()
        topLevelElement = 'gnurpc'
        name = 'GNURPC'
!       from gnue.common import VERSION as version
  
!     else:
!       print "\nSyntax: gnuedtd <forms|reports|schema|navigator|gnurpc> 
[outfile.dtd]\n"
        sys.exit()
  
      self.parentMappings = {}
***************
*** 79,85 ****
               xmlElements[element]['UsableBySiblings']
  
        # Find out what Typecasts are being used
!       if xmlElements[element].has_key('Attributes'): 
          for att in xmlElements[element]['Attributes'].keys():
            self.typecasts[xmlElements[element]['Attributes'][att]['Typecast']] 
\
                        = 'CDATA'
--- 97,103 ----
               xmlElements[element]['UsableBySiblings']
  
        # Find out what Typecasts are being used
!       if xmlElements[element].has_key('Attributes'):
          for att in xmlElements[element]['Attributes'].keys():
            self.typecasts[xmlElements[element]['Attributes'][att]['Typecast']] 
\
                        = 'CDATA'
***************
*** 88,110 ****
  
      dest.write ("""
  <!--
!      Copyright 2001 Free Software Foundation
!     
       This file is part of GNU Enterprise.
!     
!      GNU Enterprise is free software; you can redistribute it 
!      and/or modify it under the terms of the GNU General Public 
!      License as published by the Free Software Foundation; either 
       version 2, or (at your option) any later version.
!     
!      GNU Enterprise is distributed in the hope that it will be 
!      useful, but WITHOUT ANY WARRANTY; without even the implied 
!      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
       PURPOSE. See the GNU General Public License for more details.
!     
!      You should have received a copy of the GNU General Public 
!      License along with program; see the file COPYING. If not, 
!      write to the Free Software Foundation, Inc., 59 Temple Place 
       - Suite 330, Boston, MA 02111-1307, USA.
  -->
  
--- 106,128 ----
  
      dest.write ("""
  <!--
!      Copyright 2001-2002 Free Software Foundation
! 
       This file is part of GNU Enterprise.
! 
!      GNU Enterprise is free software; you can redistribute it
!      and/or modify it under the terms of the GNU General Public
!      License as published by the Free Software Foundation; either
       version 2, or (at your option) any later version.
! 
!      GNU Enterprise is distributed in the hope that it will be
!      useful, but WITHOUT ANY WARRANTY; without even the implied
!      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE. See the GNU General Public License for more details.
! 
!      You should have received a copy of the GNU General Public
!      License along with program; see the file COPYING. If not,
!      write to the Free Software Foundation, Inc., 59 Temple Place
       - Suite 330, Boston, MA 02111-1307, USA.
  -->
  
***************
*** 113,155 ****
  <!ENTITY gt "&#62;">
  <!ENTITY amp "&#38;#38;">
  
! <!-- +---------------------------------------------------+ --> 
  <!-- | Datatype entities to make DTD more human readable | -->
  <!-- +---------------------------------------------------+ -->
  
  """)
!     if self.typecasts.has_key (GTypecast.text):  
        self.typecasts[GTypecast.text] = '%text;'
!       dest.write('<!ENTITY % text "CDATA">\n\n') 
  
      if self.typecasts.has_key (GTypecast.boolean):
        self.typecasts[GTypecast.boolean] = '%boolean;'
!       dest.write('<!ENTITY % boolean "(%true;) #IMPLIED">\n' 
!                  '<!ENTITY % true "">\n\n') 
  
      if self.typecasts.has_key (GTypecast.number):
        self.typecasts[GTypecast.number] = '%number;'
!       dest.write('<!ENTITY % number "NMTOKEN">\n' 
                   '<!-- [-]?[0-9]+([.][0-9]+)? -->\n\n')
  
      if self.typecasts.has_key (GTypecast.whole):
        self.typecasts[GTypecast.whole] = '%whole;'
!       dest.write('<!ENTITY % whole "NMTOKEN">\n'
                   '<!-- [0-9]+ -->\n\n')
  
      if self.typecasts.has_key (GTypecast.integer):
        self.typecasts[GTypecast.integer] = '%integer;'
!       dest.write('<!ENTITY % integer "NMTOKEN">\n'
                   '<!-- [-]?[0-9]+ -->\n\n')
  
      if self.typecasts.has_key (GTypecast.name):
        self.typecasts[GTypecast.name] = '%name;'
!       dest.write('<!ENTITY % name "NMTOKEN">\n'
                   '<!-- [A-Za-z]([A-Z][a-z][0-9][#$_-])* -->\n\n')
  
      if self.typecasts.has_key (GTypecast.names):
        self.typecasts[GTypecast.names] = '%names;'
!       dest.write('<!ENTITY & names "CDATA">\n'
                   '<!-- (%name;)(,[ ]*(%name;))* -->\n\n')
   
      dest.write('\n')
--- 131,174 ----
  <!ENTITY gt "&#62;">
  <!ENTITY amp "&#38;#38;">
  
! <!-- +---------------------------------------------------+ -->
  <!-- | Datatype entities to make DTD more human readable | -->
  <!-- +---------------------------------------------------+ -->
  
  """)
!     if self.typecasts.has_key (GTypecast.text):
        self.typecasts[GTypecast.text] = '%text;'
!       dest.write('<!ENTITY text "CDATA">\n\n')
  
      if self.typecasts.has_key (GTypecast.boolean):
        self.typecasts[GTypecast.boolean] = '%boolean;'
!       dest.write('<!ENTITY boolean "(%true;|%false;) #IMPLIED">\n'
!                  '<!ENTITY true "Y">\n'
!                  '<!ENTITY false "N">\n\n')
  
      if self.typecasts.has_key (GTypecast.number):
        self.typecasts[GTypecast.number] = '%number;'
!       dest.write('<!ENTITY number "NMTOKEN">\n'
                   '<!-- [-]?[0-9]+([.][0-9]+)? -->\n\n')
  
      if self.typecasts.has_key (GTypecast.whole):
        self.typecasts[GTypecast.whole] = '%whole;'
!       dest.write('<!ENTITY whole "NMTOKEN">\n'
                   '<!-- [0-9]+ -->\n\n')
  
      if self.typecasts.has_key (GTypecast.integer):
        self.typecasts[GTypecast.integer] = '%integer;'
!       dest.write('<!ENTITY integer "NMTOKEN">\n'
                   '<!-- [-]?[0-9]+ -->\n\n')
  
      if self.typecasts.has_key (GTypecast.name):
        self.typecasts[GTypecast.name] = '%name;'
!       dest.write('<!ENTITY name "NMTOKEN">\n'
                   '<!-- [A-Za-z]([A-Z][a-z][0-9][#$_-])* -->\n\n')
  
      if self.typecasts.has_key (GTypecast.names):
        self.typecasts[GTypecast.names] = '%names;'
!       dest.write('<!ENTITY names "CDATA">\n'
                   '<!-- (%name;)(,[ ]*(%name;))* -->\n\n')
   
      dest.write('\n')
***************
*** 157,185 ****
      self.elementStack = [['Top level element',topLevelElement]]
  
      while len(self.elementStack) and \
!               (self.elementStack!=[['Child elements of service']]): 
        i = 1
!       #print "first loop: %s, %s " % \
!       #      (len(self.elementStack),self.elementStack)
  
        ## remove allready processed tags
!       while i < len(self.elementStack[0]):        
!         if self.processedTags.has_key(self.elementStack[0][i]): 
            self.elementStack[0].pop(i)
!         else: 
!           i = i + 1
  
!       if len (self.elementStack[0]) > 1: 
          elements = self.elementStack[0][1:]
          elements.sort()
          dest.write('\n<!-- +-' + '-' * (len(self.elementStack[0][0])) + '-+ 
-->\n')
          dest.write('<!-- | %s | -->\n' % self.elementStack[0][0])
          dest.write('<!-- +-' + '-' * (len(self.elementStack[0][0])) + '-+ 
-->\n')
!         for element in elements: 
            self.handleElement(element)
          self.elementStack.pop(0)
! #      else:
! #        self.elementStack.pop(0)
  
  
      dest.write ("\n<!-- This DTD was created by gnuedtd\n"
--- 176,205 ----
      self.elementStack = [['Top level element',topLevelElement]]
  
      while len(self.elementStack) and \
!               (self.elementStack!=[['Child elements of service']]):
        i = 1
!       ##print "first loop: %s, %s " % \
!       ##      (len(self.elementStack),self.elementStack)
  
        ## remove allready processed tags
!       while i < len(self.elementStack[0]):
!         if self.processedTags.has_key(self.elementStack[0][i]):
!           ## print "Popping already used tag %s" % self.elementStack[0][i]
            self.elementStack[0].pop(i)
!         else:
!           i += 1
  
!       if len (self.elementStack[0]) > 1:
          elements = self.elementStack[0][1:]
          elements.sort()
          dest.write('\n<!-- +-' + '-' * (len(self.elementStack[0][0])) + '-+ 
-->\n')
          dest.write('<!-- | %s | -->\n' % self.elementStack[0][0])
          dest.write('<!-- +-' + '-' * (len(self.elementStack[0][0])) + '-+ 
-->\n')
!         for element in elements:
            self.handleElement(element)
          self.elementStack.pop(0)
!       else:
!         self.elementStack.pop(0)
  
  
      dest.write ("\n<!-- This DTD was created by gnuedtd\n"
***************
*** 236,245 ****
     # for i in self.xmlElements.keys():
      #  print "element: %s" % i
  
!     if self.default(self.xmlElements[element],'Deprecated',0): 
!       self.dest.write(self.wrap(17, 
!          '<!-- DEPRECATED: Use of the %s element has been deprecated -->' % \
!              (element),0))
  
      if self.parentMappings.has_key(element): 
        es = self.parentMappings[element].keys()
--- 256,271 ----
     # for i in self.xmlElements.keys():
      #  print "element: %s" % i
  
!     deprecated = self.default(self.xmlElements[element],'Deprecated',0)
!     if deprecated:
!       if type(deprecated) != type(""):
!         deprecated = ""
!       else:
!         deprecated = "[%s] " % deprecated
! 
!       self.dest.write(self.wrap(17,
!          '<!-- DEPRECATED: Use of the <%s> element has been deprecated %s-->' 
% \
!              (element, deprecated),0))
  
      if self.parentMappings.has_key(element): 
        es = self.parentMappings[element].keys()
***************
*** 251,258 ****
   
  
      descr = self.default(self.xmlElements[element],'Description','')
!     if len(descr): 
!       self.dest.write(self.wrap(5, 
          '<!-- %s -->' % (description), 0))
  
      elemdef = "<!ELEMENT %s" % element
--- 277,284 ----
   
  
      descr = self.default(self.xmlElements[element],'Description','')
!     if len(descr):
!       self.dest.write(self.wrap(5,
          '<!-- %s -->' % (description), 0))
  
      elemdef = "<!ELEMENT %s" % element
***************
*** 321,386 ****
  
          attdef = "<!ATTLIST %s %s " % (element, att)
  
!         if self.default(self.xmlElements[element]['Attributes'][att],
!                            'Deprecated',0): 
!           self.dest.write(self.wrap(17, 
!             '  <!-- DEPRECATED: The %s attribute of %s ' 
!             'has been deprecated -->' % (att, element),0))
  
  
          descr = self.default(self.xmlElements[element]['Attributes'][att],
                           'Description','')
!         if len(descr): 
!           self.dest.write(self.wrap(7, 
!             '  <!-- %s -->' % (description), 0))
  
          datatype = self.default(
               self.xmlElements[element]['Attributes'][att],
               'Typecast',GParser.char)
  
!         if datatype == int: 
!           tokentype = "%number;" 
          else:
            tokentype = "NMTOKEN"
  
          # handle bool attributes specially
!         if datatype == GParser.bool: 
            self.dest.write(self.wrap(len(attdef),attdef +'%boolean;>',0))
  
!         elif set != None: 
            set = set.keys()
            set.sort()
!           if len(set) == 1: 
              indent = len(attdef)
              attdef = attdef + '%s #FIXED "%s">' \
                  % (self.typecasts[datatype], set[0])
!           else: 
              attdef = attdef + "("
              indent = len(attdef)
              attdef = attdef + "%s)" % string.join(set, ' | ')
!             if dflt != None and len(dflt): 
                attdef = attdef + ' "%s">' % dflt
!             else: 
                attdef = attdef + ' #IMPLIED>'
            self.dest.write(self.wrap(indent, attdef, 0))
  
!         elif refs != None: 
            indent = len(attdef)
!           if req: 
              attdef = attdef + ' IDREF #REQUIRED>'
!           else: 
              attdef = attdef + ' IDREF #IMPLIED>'
!           self.dest.write(self.wrap(indent, attdef, 0))          
  
!         elif unq: 
            indent = len(attdef)
!           if req: 
              attdef = attdef + ' ID #REQUIRED>'
!           else: 
              attdef = attdef + ' ID #IMPLIED>'
            self.dest.write(self.wrap(indent, attdef, 0))
  
!         elif dflt != None: 
            indent = len(attdef)
            attdef = attdef + ' %s #DEFAULT "%s">' \
                % (self.typecasts[datatype], dflt) 
--- 347,418 ----
  
          attdef = "<!ATTLIST %s %s " % (element, att)
  
!         deprecated = 
self.default(self.xmlElements[element]['Attributes'][att],
!                            'Deprecated',0)
!         if deprecated:
!           if type(deprecated) != type(""):
!             deprecated = ""
!           else:
!             deprecated = "\n[%s] " % deprecated
! 
!           self.dest.write(self.wrap(17,
!             '  <!-- DEPRECATED: The "%s" attribute of "%s" '
!             'has been deprecated %s-->' % (att, element, deprecated),0))
  
  
          descr = self.default(self.xmlElements[element]['Attributes'][att],
                           'Description','')
!         if len(descr):
!           self.dest.write(self.wrap(7,
!             '  <!-- %s: %s -->' % (att, descr), 0))
  
          datatype = self.default(
               self.xmlElements[element]['Attributes'][att],
               'Typecast',GParser.char)
  
!         if datatype == int:
!           tokentype = "%number;"
          else:
            tokentype = "NMTOKEN"
  
          # handle bool attributes specially
!         if datatype == GTypecast.boolean:
            self.dest.write(self.wrap(len(attdef),attdef +'%boolean;>',0))
  
!         elif set != None:
            set = set.keys()
            set.sort()
!           if len(set) == 1:
              indent = len(attdef)
              attdef = attdef + '%s #FIXED "%s">' \
                  % (self.typecasts[datatype], set[0])
!           else:
              attdef = attdef + "("
              indent = len(attdef)
              attdef = attdef + "%s)" % string.join(set, ' | ')
!             if dflt != None and len(dflt):
                attdef = attdef + ' "%s">' % dflt
!             else:
                attdef = attdef + ' #IMPLIED>'
            self.dest.write(self.wrap(indent, attdef, 0))
  
!         elif refs != None:
            indent = len(attdef)
!           if req:
              attdef = attdef + ' IDREF #REQUIRED>'
!           else:
              attdef = attdef + ' IDREF #IMPLIED>'
!           self.dest.write(self.wrap(indent, attdef, 0))
  
!         elif unq:
            indent = len(attdef)
!           if req:
              attdef = attdef + ' ID #REQUIRED>'
!           else:
              attdef = attdef + ' ID #IMPLIED>'
            self.dest.write(self.wrap(indent, attdef, 0))
  
!         elif dflt != None:
            indent = len(attdef)
            attdef = attdef + ' %s #DEFAULT "%s">' \
                % (self.typecasts[datatype], dflt) 
***************
*** 399,405 ****
      
      self.dest.write ("\n")
  
! if len(sys.argv) > 1: 
!   GenerateDTD(sys.argv[1])
! else: 
    GenerateDTD(None)
--- 431,442 ----
      
      self.dest.write ("\n")
  
! if len(sys.argv) > 1:
!   try:
!     dest = open(sys.argv[2],'w')
!   except IndexError:
!     dest = sys.stdout
!   GenerateDTD(sys.argv[1], dest)
!   dest.close()
! else:
    GenerateDTD(None)
Index: gnue/common/src/GConditions.py
diff -c gnue/common/src/GConditions.py:1.16 gnue/common/src/GConditions.py:1.17
*** gnue/common/src/GConditions.py:1.16 Wed Jun  5 15:15:58 2002
--- gnue/common/src/GConditions.py      Sun Jun 30 20:30:50 2002
***************
*** 324,331 ****
              'name':     {
                 'Required': 1,
                 'Typecast': GTypecast.name } },
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'cparam':       {
           'BaseClass': GCParam,
           'Attributes': {
--- 324,331 ----
              'name':     {
                 'Required': 1,
                 'Typecast': GTypecast.name } },
!          'ParentTags':  ('eq','ne','lt','le','gt','ge','add','sub','mul',
!                          'div','like','notlike','between','notbetween') },
        'cparam':       {
           'BaseClass': GCParam,
           'Attributes': {
***************
*** 333,348 ****
                 'Required': 1,
                 'Unique':   1,
                 'Typecast': GTypecast.name } },
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'cconst':       {
           'BaseClass': GCConst,
           'Attributes': {
              'value':     {
                 'Required': 1,
                 'Typecast': GTypecast.text } },
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'and':       {
           'BaseClass': GCand,
           'ParentTags':  ('condition','and','or','not','negate') },
--- 333,364 ----
                 'Required': 1,
                 'Unique':   1,
                 'Typecast': GTypecast.name } },
!          'ParentTags':  ('eq','ne','lt','le','gt','ge','add','sub','mul',
!                          'div','like','notlike','between','notbetween') },
        'cconst':       {
           'BaseClass': GCConst,
           'Attributes': {
              'value':     {
                 'Required': 1,
                 'Typecast': GTypecast.text } },
!          'ParentTags':  ('eq','ne','lt','le','gt','ge','add','sub','mul',
!                          'div','like','notlike','between','notbetween') },
!       'add':       {
!          'BaseClass': GCadd,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge','add','sub','mul',
!                          'div','like','notlike','between','notbetween') },
!       'sub':       {
!          'BaseClass': GCsub,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge','add','sub','mul',
!                          'div','like','notlike','between','notbetween') },
!       'mul':       {
!          'BaseClass': GCmul,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge','add','sub','mul',
!                          'div','like','notlike','between','notbetween') },
!       'div':       {
!          'BaseClass': GCdiv,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge','add','sub','mul',
!                          'div','like','notlike','between','notbetween') },
        'and':       {
           'BaseClass': GCand,
           'ParentTags':  ('condition','and','or','not','negate') },
***************
*** 357,400 ****
           'ParentTags':  ('condition','and','or','not','negate') },
        'eq':       {
           'BaseClass': GCeq,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'ne':       {
           'BaseClass': GCne,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'gt':       {
           'BaseClass': GCgt,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'ge':       {
           'BaseClass': GCge,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'lt':       {
           'BaseClass': GClt,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'le':       {
           'BaseClass': GCle,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'like':       {
           'BaseClass': GClike,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'notlike':       {
           'BaseClass': GCnotlike,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'between':       {
           'BaseClass': GCbetween,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') },
        'notbetween':       {
           'BaseClass': GCnotbetween,
!          'ParentTags':  ('eq','ne','lt','le','gt','ge',
!                          'like','notlike','between','notbetween') } }
  
    for alteration in updates.keys():
      xmlElements[alteration].update(updates[alteration])
--- 373,406 ----
           'ParentTags':  ('condition','and','or','not','negate') },
        'eq':       {
           'BaseClass': GCeq,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'ne':       {
           'BaseClass': GCne,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'gt':       {
           'BaseClass': GCgt,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'ge':       {
           'BaseClass': GCge,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'lt':       {
           'BaseClass': GClt,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'le':       {
           'BaseClass': GCle,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'like':       {
           'BaseClass': GClike,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'notlike':       {
           'BaseClass': GCnotlike,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'between':       {
           'BaseClass': GCbetween,
!          'ParentTags':  ('condition','and','or','not','negate') },
        'notbetween':       {
           'BaseClass': GCnotbetween,
!          'ParentTags':  ('condition','and','or','not','negate') }}
  
    for alteration in updates.keys():
      xmlElements[alteration].update(updates[alteration])
Index: gnue/common/src/GMenu.py
diff -c gnue/common/src/GMenu.py:1.2 gnue/common/src/GMenu.py:1.3
*** gnue/common/src/GMenu.py:1.2        Sun Feb 17 01:08:46 2002
--- gnue/common/src/GMenu.py    Sun Jun 30 20:30:50 2002
***************
*** 16,22 ****
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2000, 2001, 2002 Free Software Foundation
  #
  # FILE:
  # GMenu.py
--- 16,22 ----
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2000-2002 Free Software Foundation
  #
  # FILE:
  # GMenu.py
***************
*** 70,76 ****
  
    def fireMenuItem(self):
      print "You're fired!"
!     
  ######
  #
  # Used by client GParsers to automatically pull supported xml tags
--- 70,76 ----
  
    def fireMenuItem(self):
      print "You're fired!"
! 
  ######
  #
  # Used by client GParsers to automatically pull supported xml tags
***************
*** 108,117 ****
                 'Typecast': GTypecast.text },
              'enabled': {
                 'Typecast': GTypecast.boolean,
!                'Default': 0 },
!          'ParentTags': None },
!          }
!       }
  
    for alteration in updates.keys():
      xmlElements[alteration].update(updates[alteration])
--- 108,116 ----
                 'Typecast': GTypecast.text },
              'enabled': {
                 'Typecast': GTypecast.boolean,
!                'Default': 0 } },
!          'ParentTags': None ,
!       }}
  
    for alteration in updates.keys():
      xmlElements[alteration].update(updates[alteration])
Index: gnue/forms/doc/gnue-forms.dtd
diff -c gnue/forms/doc/gnue-forms.dtd:1.2 gnue/forms/doc/gnue-forms.dtd:1.3
*** gnue/forms/doc/gnue-forms.dtd:1.2   Wed Jul  4 20:40:53 2001
--- gnue/forms/doc/gnue-forms.dtd       Sun Jun 30 20:30:50 2002
***************
*** 1,23 ****
! <!-- GNUe Forms DTD (Version pre0.1.0) -->
  
  <!--
!      Copyright 2001 Free Software Foundation
!     
       This file is part of GNU Enterprise.
!     
!      GNU Enterprise is free software; you can redistribute it 
!      and/or modify it under the terms of the GNU General Public 
!      License as published by the Free Software Foundation; either 
       version 2, or (at your option) any later version.
!     
!      GNU Enterprise is distributed in the hope that it will be 
!      useful, but WITHOUT ANY WARRANTY; without even the implied 
!      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
       PURPOSE. See the GNU General Public License for more details.
!     
!      You should have received a copy of the GNU General Public 
!      License along with program; see the file COPYING. If not, 
!      write to the Free Software Foundation, Inc., 59 Temple Place 
       - Suite 330, Boston, MA 02111-1307, USA.
  -->
  
--- 1,23 ----
! <!-- GNUe Forms DTD (Version 0.4.0a) -->
  
  <!--
!      Copyright 2001-2002 Free Software Foundation
! 
       This file is part of GNU Enterprise.
! 
!      GNU Enterprise is free software; you can redistribute it
!      and/or modify it under the terms of the GNU General Public
!      License as published by the Free Software Foundation; either
       version 2, or (at your option) any later version.
! 
!      GNU Enterprise is distributed in the hope that it will be
!      useful, but WITHOUT ANY WARRANTY; without even the implied
!      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE. See the GNU General Public License for more details.
! 
!      You should have received a copy of the GNU General Public
!      License along with program; see the file COPYING. If not,
!      write to the Free Software Foundation, Inc., 59 Temple Place
       - Suite 330, Boston, MA 02111-1307, USA.
  -->
  
***************
*** 26,44 ****
  <!ENTITY gt "&#62;">
  <!ENTITY amp "&#38;#38;">
  
! <!-- +---------------------------------------------------+ --> 
  <!-- | Datatype entities to make DTD more human readable | -->
  <!-- +---------------------------------------------------+ -->
  
! <!ENTITY % text "CDATA">
  
! <!ENTITY % boolean "(%true;) #IMPLIED">
! <!ENTITY % true "">
  
! <!ENTITY % whole "NMTOKEN">
  <!-- [0-9]+ -->
  
! <!ENTITY % name "NMTOKEN">
  <!-- [A-Za-z]([A-Z][a-z][0-9][#$_-])* -->
  
  
--- 26,45 ----
  <!ENTITY gt "&#62;">
  <!ENTITY amp "&#38;#38;">
  
! <!-- +---------------------------------------------------+ -->
  <!-- | Datatype entities to make DTD more human readable | -->
  <!-- +---------------------------------------------------+ -->
  
! <!ENTITY text "CDATA">
  
! <!ENTITY boolean "(%true;|%false;) #IMPLIED">
! <!ENTITY true "Y">
! <!ENTITY false "N">
  
! <!ENTITY whole "NMTOKEN">
  <!-- [0-9]+ -->
  
! <!ENTITY name "NMTOKEN">
  <!-- [A-Za-z]([A-Z][a-z][0-9][#$_-])* -->
  
  
***************
*** 47,53 ****
  <!-- | Top level element | -->
  <!-- +-------------------+ -->
  <!ELEMENT form (database*, datasource*, import*, import-datasource*, 
!                 import-page*, import-trigger*, options?, page+, trigger*)>
  <!ATTLIST form height %whole; #DEFAULT "12">
  <!ATTLIST form readonly %boolean;>
  <!ATTLIST form tabbed (bottom | left | right | top) #IMPLIED>
--- 48,55 ----
  <!-- | Top level element | -->
  <!-- +-------------------+ -->
  <!ELEMENT form (database*, datasource*, import*, import-datasource*, 
!                 import-page*, import-trigger*, menu*, options?, page+, 
!                 trigger*)>
  <!ATTLIST form height %whole; #DEFAULT "12">
  <!ATTLIST form readonly %boolean;>
  <!ATTLIST form tabbed (bottom | left | right | top) #IMPLIED>
***************
*** 58,73 ****
  <!-- +------------------------+ -->
  <!-- | Child elements of form | -->
  <!-- +------------------------+ -->
! <!-- DEPRECATED: Use of the database element has been deprecated -->
  <!ELEMENT database EMPTY>
  <!ATTLIST database name ID #REQUIRED>
- <!ATTLIST database dbname %text; #REQUIRED>
- <!ATTLIST database host %text; #REQUIRED>
  <!ATTLIST database provider %name; #REQUIRED>
  
! <!ELEMENT datasource EMPTY>
  <!ATTLIST datasource name ID #REQUIRED>
! <!ATTLIST datasource cache %whole; #IMPLIED>
  <!ATTLIST datasource database %name; #IMPLIED>
  <!ATTLIST datasource detaillink %text; #IMPLIED>
  <!ATTLIST datasource master %name; #IMPLIED>
--- 60,78 ----
  <!-- +------------------------+ -->
  <!-- | Child elements of form | -->
  <!-- +------------------------+ -->
! <!-- DEPRECATED: Use of the <database> element has been deprecated [Use the 
!                  external connections file format.] -->
  <!ELEMENT database EMPTY>
  <!ATTLIST database name ID #REQUIRED>
  <!ATTLIST database provider %name; #REQUIRED>
+ <!ATTLIST database comment %text; #IMPLIED>
+ <!ATTLIST database dbname %text; #IMPLIED>
+ <!ATTLIST database host %text; #IMPLIED>
+ <!ATTLIST database service %text; #IMPLIED>
  
! <!ELEMENT datasource (conditions?)>
  <!ATTLIST datasource name ID #REQUIRED>
! <!ATTLIST datasource cache %whole; #DEFAULT "5">
  <!ATTLIST datasource database %name; #IMPLIED>
  <!ATTLIST datasource detaillink %text; #IMPLIED>
  <!ATTLIST datasource master %name; #IMPLIED>
***************
*** 86,92 ****
  <!ELEMENT import-datasource EMPTY>
  <!ATTLIST import-datasource name ID #REQUIRED>
  <!ATTLIST import-datasource library %name; #REQUIRED>
! <!ATTLIST import-datasource cache %whole; #IMPLIED>
  <!ATTLIST import-datasource database %name; #IMPLIED>
  <!ATTLIST import-datasource detaillink %text; #IMPLIED>
  <!ATTLIST import-datasource master %name; #IMPLIED>
--- 91,97 ----
  <!ELEMENT import-datasource EMPTY>
  <!ATTLIST import-datasource name ID #REQUIRED>
  <!ATTLIST import-datasource library %name; #REQUIRED>
! <!ATTLIST import-datasource cache %whole; #DEFAULT "5">
  <!ATTLIST import-datasource database %name; #IMPLIED>
  <!ATTLIST import-datasource detaillink %text; #IMPLIED>
  <!ATTLIST import-datasource master %name; #IMPLIED>
***************
*** 102,113 ****
  
  <!ELEMENT import-trigger EMPTY>
  <!ATTLIST import-trigger library %name; #REQUIRED>
! <!-- DEPRECATED: The id attribute of import-trigger has been deprecated -->
  <!ATTLIST import-trigger id %name; #IMPLIED>
  <!ATTLIST import-trigger language %name; #FIXED "python">
  <!ATTLIST import-trigger name ID #IMPLIED>
  <!ATTLIST import-trigger src IDREF #IMPLIED>
! <!ATTLIST import-trigger type %name; #IMPLIED>
  
  <!ELEMENT options (author?, description?, name?, option*, tip?, title?, 
                     version?, width?)>
--- 107,129 ----
  
  <!ELEMENT import-trigger EMPTY>
  <!ATTLIST import-trigger library %name; #REQUIRED>
! <!-- DEPRECATED: The "id" attribute of "import-trigger" has been deprecated 
!                  [Use name="..." instead.] -->
  <!ATTLIST import-trigger id %name; #IMPLIED>
  <!ATTLIST import-trigger language %name; #FIXED "python">
  <!ATTLIST import-trigger name ID #IMPLIED>
  <!ATTLIST import-trigger src IDREF #IMPLIED>
! <!ATTLIST import-trigger type CDATA #IMPLIED>
! 
! <!ELEMENT menu EMPTY>
! <!ATTLIST menu name ID #REQUIRED>
! <!ATTLIST menu enabled %boolean;>
! <!ATTLIST menu event %text; #IMPLIED>
! <!ATTLIST menu label %name; #IMPLIED>
! <!ATTLIST menu leader %text; #IMPLIED>
! <!ATTLIST menu location %text; #IMPLIED>
! <!ATTLIST menu trigger %name; #IMPLIED>
! <!ATTLIST menu type %name; #IMPLIED>
  
  <!ELEMENT options (author?, description?, name?, option*, tip?, title?, 
                     version?, width?)>
***************
*** 117,128 ****
  <!ATTLIST page name ID #IMPLIED>
  
  <!ELEMENT trigger EMPTY>
! <!-- DEPRECATED: The id attribute of trigger has been deprecated -->
  <!ATTLIST trigger id %name; #IMPLIED>
  <!ATTLIST trigger language %name; #FIXED "python">
  <!ATTLIST trigger name ID #IMPLIED>
  <!ATTLIST trigger src IDREF #IMPLIED>
! <!ATTLIST trigger type %name; #IMPLIED>
  
  
  <!-- +---------------------------+ -->
--- 133,151 ----
  <!ATTLIST page name ID #IMPLIED>
  
  <!ELEMENT trigger EMPTY>
! <!-- DEPRECATED: The "id" attribute of "trigger" has been deprecated [Use 
!                  name="..." instead.] -->
  <!ATTLIST trigger id %name; #IMPLIED>
  <!ATTLIST trigger language %name; #FIXED "python">
  <!ATTLIST trigger name ID #IMPLIED>
  <!ATTLIST trigger src IDREF #IMPLIED>
! <!ATTLIST trigger type CDATA #IMPLIED>
! 
! 
! <!-- +------------------------------+ -->
! <!-- | Child elements of datasource | -->
! <!-- +------------------------------+ -->
! <!ELEMENT conditions (condition*)>
  
  
  <!-- +---------------------------+ -->
***************
*** 148,154 ****
  <!ATTLIST tip name %name; #FIXED "tip">
  <!ATTLIST tip value %text; #IMPLIED>
  
! <!-- DEPRECATED: Use of the title element has been deprecated -->
  <!ELEMENT title EMPTY>
  <!ATTLIST title name %name; #FIXED "title">
  <!ATTLIST title value %text; #IMPLIED>
--- 171,178 ----
  <!ATTLIST tip name %name; #FIXED "tip">
  <!ATTLIST tip value %text; #IMPLIED>
  
! <!-- DEPRECATED: Use of the <title> element has been deprecated [Use the 
!                  <form> attribute "title" instead.] -->
  <!ELEMENT title EMPTY>
  <!ATTLIST title name %name; #FIXED "title">
  <!ATTLIST title value %text; #IMPLIED>
***************
*** 157,163 ****
  <!ATTLIST version name %name; #FIXED "version">
  <!ATTLIST version value %text; #IMPLIED>
  
! <!-- DEPRECATED: Use of the width element has been deprecated -->
  <!ELEMENT width EMPTY>
  <!ATTLIST width name %name; #FIXED "width">
  <!ATTLIST width value %text; #IMPLIED>
--- 181,188 ----
  <!ATTLIST version name %name; #FIXED "version">
  <!ATTLIST version value %text; #IMPLIED>
  
! <!-- DEPRECATED: Use of the <width> element has been deprecated [Use the 
!                  <form> attribute "width" instead.] -->
  <!ELEMENT width EMPTY>
  <!ATTLIST width name %name; #FIXED "width">
  <!ATTLIST width value %text; #IMPLIED>
***************
*** 170,179 ****
                   scrollbar*)>
  <!ATTLIST block name ID #REQUIRED>
  <!ATTLIST block datasource IDREF #IMPLIED>
! <!ATTLIST block detail IDREF #IMPLIED>
! <!ATTLIST block master IDREF #IMPLIED>
  <!ATTLIST block rowSpacer %whole; #IMPLIED>
! <!ATTLIST block rows %whole; #DEFAULT "1">
  <!ATTLIST block transparentBlock %boolean;>
  
  <!ELEMENT box EMPTY>
--- 195,204 ----
                   scrollbar*)>
  <!ATTLIST block name ID #REQUIRED>
  <!ATTLIST block datasource IDREF #IMPLIED>
! <!ATTLIST block restrictDelete %boolean;>
! <!ATTLIST block restrictInsert %boolean;>
  <!ATTLIST block rowSpacer %whole; #IMPLIED>
! <!ATTLIST block rows %whole; #IMPLIED>
  <!ATTLIST block transparentBlock %boolean;>
  
  <!ELEMENT box EMPTY>
***************
*** 197,206 ****
  <!ATTLIST import-block name ID #REQUIRED>
  <!ATTLIST import-block library %name; #REQUIRED>
  <!ATTLIST import-block datasource IDREF #IMPLIED>
! <!ATTLIST import-block detail IDREF #IMPLIED>
! <!ATTLIST import-block master IDREF #IMPLIED>
  <!ATTLIST import-block rowSpacer %whole; #IMPLIED>
! <!ATTLIST import-block rows %whole; #DEFAULT "1">
  <!ATTLIST import-block transparentBlock %boolean;>
  
  <!ELEMENT import-button EMPTY>
--- 222,231 ----
  <!ATTLIST import-block name ID #REQUIRED>
  <!ATTLIST import-block library %name; #REQUIRED>
  <!ATTLIST import-block datasource IDREF #IMPLIED>
! <!ATTLIST import-block restrictDelete %boolean;>
! <!ATTLIST import-block restrictInsert %boolean;>
  <!ATTLIST import-block rowSpacer %whole; #IMPLIED>
! <!ATTLIST import-block rows %whole; #IMPLIED>
  <!ATTLIST import-block transparentBlock %boolean;>
  
  <!ELEMENT import-button EMPTY>
***************
*** 219,224 ****
--- 244,251 ----
  <!ATTLIST label y %whole; #REQUIRED>
  <!ATTLIST label alignment (center | left | right) "left">
  <!ATTLIST label name ID #IMPLIED>
+ <!ATTLIST label rowSpacer %whole; #IMPLIED>
+ <!ATTLIST label rows %whole; #IMPLIED>
  <!ATTLIST label width %whole; #IMPLIED>
  
  <!ELEMENT scrollbar EMPTY>
***************
*** 228,233 ****
--- 255,267 ----
  <!ATTLIST scrollbar y %whole; #REQUIRED>
  
  
+ <!-- +------------------------------+ -->
+ <!-- | Child elements of conditions | -->
+ <!-- +------------------------------+ -->
+ <!ELEMENT condition (and*, between*, eq*, ge*, gt*, le*, like*, lt*, ne*, 
+                      negate*, not*, notbetween*, notlike*, or*)>
+ 
+ 
  <!-- +-------------------------+ -->
  <!-- | Child elements of block | -->
  <!-- +-------------------------+ -->
***************
*** 235,257 ****
  <!ATTLIST entry name ID #REQUIRED>
  <!ATTLIST entry x %whole; #REQUIRED>
  <!ATTLIST entry y %whole; #REQUIRED>
  <!ATTLIST entry default %text; #IMPLIED>
  <!ATTLIST entry field %name; #IMPLIED>
  <!ATTLIST entry foreign_key %name; #IMPLIED>
  <!ATTLIST entry foreign_key_description %text; #IMPLIED>
  <!ATTLIST entry height %whole; #DEFAULT "1">
  <!ATTLIST entry hidden %boolean;>
  <!ATTLIST entry lowercase %boolean;>
  <!ATTLIST entry max_length %whole; #IMPLIED>
  <!ATTLIST entry numeric %boolean;>
  <!ATTLIST entry queryDefault %text; #IMPLIED>
  <!ATTLIST entry readonly %boolean;>
  <!ATTLIST entry sloppyQuery %text; #IMPLIED>
  <!ATTLIST entry style (checkbox | default | dropdown) "default">
  <!ATTLIST entry uppercase %boolean;>
  <!ATTLIST entry value %text; #IMPLIED>
! <!-- DEPRECATED: The visibleCount attribute of entry has been deprecated -->
! <!ATTLIST entry visibleCount %whole; #DEFAULT "1">
  <!ATTLIST entry width %whole; #IMPLIED>
  
  <!ELEMENT import-entry EMPTY>
--- 269,323 ----
  <!ATTLIST entry name ID #REQUIRED>
  <!ATTLIST entry x %whole; #REQUIRED>
  <!ATTLIST entry y %whole; #REQUIRED>
+ <!ATTLIST entry case (lower | mixed | upper) "mixed">
  <!ATTLIST entry default %text; #IMPLIED>
+ <!ATTLIST entry displaymask %text; #IMPLIED>
+ <!-- editOnNull: Only allow this object to be edited if it is currently 
empty. 
+        -->
+ <!ATTLIST entry editOnNull %boolean;>
  <!ATTLIST entry field %name; #IMPLIED>
+ <!ATTLIST entry fk_description %name; #IMPLIED>
+ <!ATTLIST entry fk_key %name; #IMPLIED>
+ <!ATTLIST entry fk_source %name; #IMPLIED>
+ <!-- DEPRECATED: The "foreign_key" attribute of "entry" has been deprecated 
+                  [Use fk_source="..." and fk_key="..." instead.] -->
  <!ATTLIST entry foreign_key %name; #IMPLIED>
+ <!-- DEPRECATED: The "foreign_key_description" attribute of "entry" has been 
+                  deprecated [Use fk_description="..." instead.] -->
  <!ATTLIST entry foreign_key_description %text; #IMPLIED>
+ <!ATTLIST entry formatmask %text; #IMPLIED>
  <!ATTLIST entry height %whole; #DEFAULT "1">
  <!ATTLIST entry hidden %boolean;>
+ <!ATTLIST entry ignoreCaseOnQuery %boolean;>
+ <!ATTLIST entry inputmask %text; #IMPLIED>
+ <!-- DEPRECATED: The "lowercase" attribute of "entry" has been deprecated 
[Use 
+                  case="lower" instead.] -->
  <!ATTLIST entry lowercase %boolean;>
  <!ATTLIST entry max_length %whole; #IMPLIED>
+ <!-- no_ltrim: Suppress trimming of extraneous space at beginning of user 
+        input. -->
+ <!ATTLIST entry no_ltrim %boolean;>
+ <!-- no_rtrim: Suppress trimming of extraneous space at end of user input. -->
+ <!ATTLIST entry no_rtrim %boolean;>
+ <!-- DEPRECATED: The "numeric" attribute of "entry" has been deprecated [Use 
+                  typecast="number" instead] -->
  <!ATTLIST entry numeric %boolean;>
  <!ATTLIST entry queryDefault %text; #IMPLIED>
  <!ATTLIST entry readonly %boolean;>
+ <!-- required: This object cannot have an empty value prior to a commit. -->
+ <!ATTLIST entry required %boolean;>
+ <!ATTLIST entry rowSpacer %whole; #IMPLIED>
+ <!ATTLIST entry rows %whole; #IMPLIED>
  <!ATTLIST entry sloppyQuery %text; #IMPLIED>
  <!ATTLIST entry style (checkbox | default | dropdown) "default">
+ <!ATTLIST entry typecast (date | number | text) "text">
+ <!-- DEPRECATED: The "uppercase" attribute of "entry" has been deprecated 
[Use 
+                  case="upper" instead.] -->
  <!ATTLIST entry uppercase %boolean;>
  <!ATTLIST entry value %text; #IMPLIED>
! <!-- DEPRECATED: The "visibleCount" attribute of "entry" has been deprecated 
!                  [Use the <block> "rows" attribute instead.] -->
! <!ATTLIST entry visibleCount %whole; #IMPLIED>
  <!ATTLIST entry width %whole; #IMPLIED>
  
  <!ELEMENT import-entry EMPTY>
***************
*** 259,285 ****
  <!ATTLIST import-entry library %name; #REQUIRED>
  <!ATTLIST import-entry x %whole; #REQUIRED>
  <!ATTLIST import-entry y %whole; #REQUIRED>
  <!ATTLIST import-entry default %text; #IMPLIED>
  <!ATTLIST import-entry field %name; #IMPLIED>
  <!ATTLIST import-entry foreign_key %name; #IMPLIED>
  <!ATTLIST import-entry foreign_key_description %text; #IMPLIED>
  <!ATTLIST import-entry height %whole; #DEFAULT "1">
  <!ATTLIST import-entry hidden %boolean;>
  <!ATTLIST import-entry lowercase %boolean;>
  <!ATTLIST import-entry max_length %whole; #IMPLIED>
  <!ATTLIST import-entry numeric %boolean;>
  <!ATTLIST import-entry queryDefault %text; #IMPLIED>
  <!ATTLIST import-entry readonly %boolean;>
  <!ATTLIST import-entry sloppyQuery %text; #IMPLIED>
  <!ATTLIST import-entry style (checkbox | default | dropdown) "default">
  <!ATTLIST import-entry uppercase %boolean;>
  <!ATTLIST import-entry value %text; #IMPLIED>
! <!-- DEPRECATED: The visibleCount attribute of import-entry has been 
!                  deprecated -->
! <!ATTLIST import-entry visibleCount %whole; #DEFAULT "1">
  <!ATTLIST import-entry width %whole; #IMPLIED>
  
  
  <!-- This DTD was created by gnuedtd
!      Updated: 2001-07-04 17:44:06   -->
  
--- 325,440 ----
  <!ATTLIST import-entry library %name; #REQUIRED>
  <!ATTLIST import-entry x %whole; #REQUIRED>
  <!ATTLIST import-entry y %whole; #REQUIRED>
+ <!ATTLIST import-entry case (lower | mixed | upper) "mixed">
  <!ATTLIST import-entry default %text; #IMPLIED>
+ <!ATTLIST import-entry displaymask %text; #IMPLIED>
+ <!-- editOnNull: Only allow this object to be edited if it is currently 
empty. 
+        -->
+ <!ATTLIST import-entry editOnNull %boolean;>
  <!ATTLIST import-entry field %name; #IMPLIED>
+ <!ATTLIST import-entry fk_description %name; #IMPLIED>
+ <!ATTLIST import-entry fk_key %name; #IMPLIED>
+ <!ATTLIST import-entry fk_source %name; #IMPLIED>
+ <!-- DEPRECATED: The "foreign_key" attribute of "import-entry" has been 
+                  deprecated [Use fk_source="..." and fk_key="..." instead.] 
+                  -->
  <!ATTLIST import-entry foreign_key %name; #IMPLIED>
+ <!-- DEPRECATED: The "foreign_key_description" attribute of "import-entry" 
has 
+                  been deprecated [Use fk_description="..." instead.] -->
  <!ATTLIST import-entry foreign_key_description %text; #IMPLIED>
+ <!ATTLIST import-entry formatmask %text; #IMPLIED>
  <!ATTLIST import-entry height %whole; #DEFAULT "1">
  <!ATTLIST import-entry hidden %boolean;>
+ <!ATTLIST import-entry ignoreCaseOnQuery %boolean;>
+ <!ATTLIST import-entry inputmask %text; #IMPLIED>
+ <!-- DEPRECATED: The "lowercase" attribute of "import-entry" has been 
+                  deprecated [Use case="lower" instead.] -->
  <!ATTLIST import-entry lowercase %boolean;>
  <!ATTLIST import-entry max_length %whole; #IMPLIED>
+ <!-- no_ltrim: Suppress trimming of extraneous space at beginning of user 
+        input. -->
+ <!ATTLIST import-entry no_ltrim %boolean;>
+ <!-- no_rtrim: Suppress trimming of extraneous space at end of user input. -->
+ <!ATTLIST import-entry no_rtrim %boolean;>
+ <!-- DEPRECATED: The "numeric" attribute of "import-entry" has been 
deprecated 
+                  [Use typecast="number" instead] -->
  <!ATTLIST import-entry numeric %boolean;>
  <!ATTLIST import-entry queryDefault %text; #IMPLIED>
  <!ATTLIST import-entry readonly %boolean;>
+ <!-- required: This object cannot have an empty value prior to a commit. -->
+ <!ATTLIST import-entry required %boolean;>
+ <!ATTLIST import-entry rowSpacer %whole; #IMPLIED>
+ <!ATTLIST import-entry rows %whole; #IMPLIED>
  <!ATTLIST import-entry sloppyQuery %text; #IMPLIED>
  <!ATTLIST import-entry style (checkbox | default | dropdown) "default">
+ <!ATTLIST import-entry typecast (date | number | text) "text">
+ <!-- DEPRECATED: The "uppercase" attribute of "import-entry" has been 
+                  deprecated [Use case="upper" instead.] -->
  <!ATTLIST import-entry uppercase %boolean;>
  <!ATTLIST import-entry value %text; #IMPLIED>
! <!-- DEPRECATED: The "visibleCount" attribute of "import-entry" has been 
!                  deprecated [Use the <block> "rows" attribute instead.] -->
! <!ATTLIST import-entry visibleCount %whole; #IMPLIED>
  <!ATTLIST import-entry width %whole; #IMPLIED>
  
  
+ <!-- +-----------------------------+ -->
+ <!-- | Child elements of condition | -->
+ <!-- +-----------------------------+ -->
+ <!ELEMENT and (and*, between*, condition*, eq*, ge*, gt*, le*, like*, lt*, 
+                ne*, negate*, not*, notbetween*, notlike*, or*)>
+ 
+ <!ELEMENT between (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT eq (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT ge (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT gt (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT le (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT like (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT lt (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT ne (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT negate (and*, between*, condition*, eq*, ge*, gt*, le*, like*, lt*, 
+                   ne*, negate*, not*, notbetween*, notlike*, or*)>
+ 
+ <!ELEMENT not (and*, between*, condition*, eq*, ge*, gt*, le*, like*, lt*, 
+                ne*, negate*, not*, notbetween*, notlike*, or*)>
+ 
+ <!ELEMENT notbetween (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT notlike (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT or (and*, between*, condition*, eq*, ge*, gt*, le*, like*, lt*, 
ne*, 
+               negate*, not*, notbetween*, notlike*, or*)>
+ 
+ 
+ <!-- +---------------------------+ -->
+ <!-- | Child elements of between | -->
+ <!-- +---------------------------+ -->
+ <!ELEMENT add (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT cconst EMPTY>
+ <!ATTLIST cconst value %text; #REQUIRED>
+ 
+ <!ELEMENT cfield EMPTY>
+ <!ATTLIST cfield name %name; #REQUIRED>
+ 
+ <!ELEMENT cparam EMPTY>
+ <!ATTLIST cparam name ID #REQUIRED>
+ 
+ <!ELEMENT div (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT mul (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ <!ELEMENT sub (add*, cconst*, cfield*, cparam*, div*, mul*, sub*)>
+ 
+ 
  <!-- This DTD was created by gnuedtd
!      Updated: 2002-06-30 19:11:53   -->
  
Index: gnue/forms/src/GFParser.py
diff -c gnue/forms/src/GFParser.py:1.66 gnue/forms/src/GFParser.py:1.67
*** gnue/forms/src/GFParser.py:1.66     Mon Jun 17 20:57:34 2002
--- gnue/forms/src/GFParser.py  Sun Jun 30 20:30:50 2002
***************
*** 1,6 ****
  #
- # Copyright 2000, 2001 Free Software Foundation
- #
  # This file is part of GNU Enterprise.
  #
  # GNU Enterprise is free software; you can redistribute it
--- 1,4 ----
***************
*** 18,23 ****
--- 16,23 ----
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
+ # Copyright 2000-2002 Free Software Foundation
+ #
  # FILE:
  # GFParser.py
  #
***************
*** 49,55 ****
  #######################################################
  # This method loads a form from an XML file and returns
  # a GFForm object.  If initialize is 1 (default), then
! # the form is initialized and ready to go. 
  #
  # (initialize=0 is currently not used -- will probably
  #  be used in the Forms Designer package where we will
--- 49,55 ----
  #######################################################
  # This method loads a form from an XML file and returns
  # a GFForm object.  If initialize is 1 (default), then
! # the form is initialized and ready to go.
  #
  # (initialize=0 is currently not used -- will probably
  #  be used in the Forms Designer package where we will
***************
*** 226,232 ****
                 'Typecast': GTypecast.whole }, 
              'visibleCount':{
                 'Typecast': GTypecast.whole, 
!                'Deprecated': 'Use the block "rows" attribute instead.' }, 
              'rows': {
                 'Typecast': GTypecast.whole},
              'rowSpacer': {
--- 226,232 ----
                 'Typecast': GTypecast.whole }, 
              'visibleCount':{
                 'Typecast': GTypecast.whole, 
!                'Deprecated': 'Use the <block> "rows" attribute instead.' },
              'rows': {
                 'Typecast': GTypecast.whole},
              'rowSpacer': {
***************
*** 275,294 ****
                    'number': {}, 
                    'date': {} }, 
                 'Default': 'text'}, 
!             'formatmask': { 
!                'Typecast': GTypecast.text }, 
!             'inputmask': { 
!                'Typecast': GTypecast.text }, 
!             'displaymask': { 
!                'Typecast': GTypecast.text }, 
              'value': {
                 'Typecast': GTypecast.text },
              'foreign_key': {
                 'Typecast': GTypecast.name,
!                'Deprecated': 'Use fk_source and fk_key instead.' },
              'foreign_key_description': {
                 'Typecast': GTypecast.text,
!                'Deprecated': 'Use fk_description instead.' },
              'fk_source': {
                 'Typecast': GTypecast.name },
              'fk_key': {
--- 275,294 ----
                    'number': {}, 
                    'date': {} }, 
                 'Default': 'text'}, 
!             'formatmask': {
!                'Typecast': GTypecast.text },
!             'inputmask': {
!                'Typecast': GTypecast.text },
!             'displaymask': {
!                'Typecast': GTypecast.text },
              'value': {
                 'Typecast': GTypecast.text },
              'foreign_key': {
                 'Typecast': GTypecast.name,
!                'Deprecated': 'Use fk_source="..." and fk_key="..." instead.' 
},
              'foreign_key_description': {
                 'Typecast': GTypecast.text,
!                'Deprecated': 'Use fk_description="..." instead.' },
              'fk_source': {
                 'Typecast': GTypecast.name },
              'fk_key': {
***************
*** 397,403 ****
                 'Unique': 1,
                 'Typecast': GTypecast.name },
              'id': {
!                'Deprecated': 'Use name instead.',   # DEPRECATED: Use name 
instead
                 'Typecast': GTypecast.name },
              'type': {
                 'Typecast': GTypecast.uppername },
--- 397,403 ----
                 'Unique': 1,
                 'Typecast': GTypecast.name },
              'id': {
!                'Deprecated': 'Use name="..." instead.',   # DEPRECATED: Use 
name instead
                 'Typecast': GTypecast.name },
              'type': {
                 'Typecast': GTypecast.uppername },
***************
*** 562,569 ****
      # Add menu elements
      #
      xmlElements.update(
!         GMenu.getXMLelements()
!         )
  
      #
      # Add importable elements
--- 562,572 ----
      # Add menu elements
      #
      xmlElements.update(
!         GMenu.getXMLelements(
!                 updates={'menu': {
!                    ##'BaseClass': GFObjects.GFMenu,
!                    'ParentTags': ('form',) },
!                  }))
  
      #
      # Add importable elements



reply via email to

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