commit-gnue
[Top][All Lists]
Advanced

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

gnue/designer src/GFDesigner.py src/LayoutEdito...


From: Jason Cater
Subject: gnue/designer src/GFDesigner.py src/LayoutEdito...
Date: Mon, 25 Jun 2001 21:49:20 -0700

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    01/06/25 21:49:19

Modified files:
        designer/src   : GFDesigner.py LayoutEditor.py MenuBar.py 
                         RuntimeSettings.py TemplateBase.py 
        designer/templates/forms: Simple.py 
Added files:
        designer/src   : TemplateParser.py 

Log message:
        Beginnings of a template/wizard system

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/TemplateParser.py?cvsroot=OldCVS&rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/GFDesigner.py.diff?cvsroot=OldCVS&tr1=1.12&tr2=1.13&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/LayoutEditor.py.diff?cvsroot=OldCVS&tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/MenuBar.py.diff?cvsroot=OldCVS&tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/RuntimeSettings.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/TemplateBase.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/templates/forms/Simple.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: gnue/designer/src/GFDesigner.py
diff -u gnue/designer/src/GFDesigner.py:1.12 
gnue/designer/src/GFDesigner.py:1.13
--- gnue/designer/src/GFDesigner.py:1.12        Mon Jun 25 09:41:17 2001
+++ gnue/designer/src/GFDesigner.py     Mon Jun 25 21:49:19 2001
@@ -31,6 +31,7 @@
 from gnue.common.GClientApp import GClientApp
 from gnue.forms import GFForm, GFInstance, GFParser, GFObjects, GFTrigger, 
GFLibrary, UIwxpython
 from Instance import *
+import TemplateParser
 
 
 TITLE = "GNU Enterprise Designer"
@@ -76,6 +77,16 @@
 
   def OnNew(self, event): 
     GFDInstance(self, None)
+ 
+  def OnWizard(self, event): 
+    from gnue.designer.templates.forms import Simple
+
+    instance = GFDInstance(self, None)
+    instance._form = GFForm.GFForm(app=instance)
+
+    if not TemplateParser.TemplateParser(instance, instance._form, 
+          instance, Simple.TemplateInformation).run():
+      instance.Close()
  
   def OnOpen(self, event): 
 
Index: gnue/designer/src/LayoutEditor.py
diff -u gnue/designer/src/LayoutEditor.py:1.9 
gnue/designer/src/LayoutEditor.py:1.10
--- gnue/designer/src/LayoutEditor.py:1.9       Mon Jun 25 09:12:47 2001
+++ gnue/designer/src/LayoutEditor.py   Mon Jun 25 21:49:19 2001
@@ -638,6 +638,8 @@
 
     EVT_SPINCTRL(self, self.xEditor.GetId(), self.OnXUpdated)
     EVT_SPINCTRL(self, self.yEditor.GetId(), self.OnYUpdated)
+    EVT_SPINCTRL(self, self.wEditor.GetId(), self.OnWidthUpdated)
+    EVT_SPINCTRL(self, self.hEditor.GetId(), self.OnHeightUpdated)
     
 
   def OnNameUpdated(self, event): 
Index: gnue/designer/src/MenuBar.py
diff -u gnue/designer/src/MenuBar.py:1.6 gnue/designer/src/MenuBar.py:1.7
--- gnue/designer/src/MenuBar.py:1.6    Wed Jun 20 15:31:55 2001
+++ gnue/designer/src/MenuBar.py        Mon Jun 25 21:49:19 2001
@@ -32,6 +32,7 @@
 import Incubator
 
 ID_NEW = wxNewId()
+ID_NEWWZD = wxNewId()
 ID_OPEN = wxNewId()
 ID_SAVE = wxNewId()
 ID_SAVE_AS = wxNewId()
@@ -51,7 +52,8 @@
      self._frame = frame
 
      self._file = wxMenu()
-     self._file.Append(ID_NEW, "&New", "Create a new form")
+     self._file.Append(ID_NEW, "&New Form", "Create a new form")
+     self._file.Append(ID_NEWWZD, "&New Form from Wizard", "Create a new form 
from a wizard")
      self._file.Append(ID_OPEN, "&Open...", "Open an existing form")
      self._file.Append(ID_SAVE, "&Save", "Save the current form")
      self._file.Append(ID_SAVE_AS, "Save &As...", "Save the current form under 
a new name")
@@ -60,6 +62,7 @@
      self._file.AppendSeparator()
      self._file.Append(ID_EXIT, "E&xit", "Exit GNUe Forms Designer")
      EVT_MENU (frame, ID_NEW, frame._app.OnNew)
+     EVT_MENU (frame, ID_NEWWZD, frame._app.OnWizard)
      EVT_MENU (frame, ID_OPEN, frame._app.OnOpen)
      EVT_MENU (frame, ID_SAVE, frame.OnSave)
      EVT_MENU (frame, ID_SAVE_AS, frame.OnSaveAs)
Index: gnue/designer/src/RuntimeSettings.py
diff -u gnue/designer/src/RuntimeSettings.py:1.2 
gnue/designer/src/RuntimeSettings.py:1.3
--- gnue/designer/src/RuntimeSettings.py:1.2    Fri Jun 22 06:16:35 2001
+++ gnue/designer/src/RuntimeSettings.py        Mon Jun 25 21:49:19 2001
@@ -36,7 +36,13 @@
   except: 
     pass
 else: 
+
+  # TODO: Using os.path.expanduser does not work under 
+  # TODO: Windows?? Therefore, saving RuntimeSettings 
+  # TODO: currently isn't working for windows.
+
   location = os.path.expanduser ('~/gnue-des.ini')
+
 
 try: 
   config = ConfigParser.ConfigParser()
Index: gnue/designer/src/TemplateBase.py
diff -u gnue/designer/src/TemplateBase.py:1.1 
gnue/designer/src/TemplateBase.py:1.2
--- gnue/designer/src/TemplateBase.py:1.1       Sun Jun 24 19:59:30 2001
+++ gnue/designer/src/TemplateBase.py   Mon Jun 25 21:49:19 2001
@@ -28,10 +28,10 @@
 #
 # Guidelines for writing templates: 
 #   Never, ever, EVER overwrite the __init__ method. 
-#   However, you should ALWAYS overwrite the Start method
-#   which is called when your template should do its trick.
-#   Anything normally occurring in an __init__ can occur 
-#   at the beginning of Start. 
+#   However, you can overwrite the Start method which
+#   is called when your template should do its trick.
+#   Anything normally occurring in an __init__ can 
+#   occur at the beginning of Start. 
 #
 #   You can be guaranteed to have an empty <form|report> 
 #   object passed to the Start method.  If you successfully
@@ -40,34 +40,135 @@
 #   returned, Designer assumed that the passed <Form|Report>
 #   object now contains a valid object. 
 #
+# NOTE: It is VERY important that in any reference to a 
+#   "<insert type here> wizard", the word "wizard" must be
+#   in lower case, as many "Xyz Wizards" (proper name) have 
+#   been trademarked. (No, I'm not kidding :)
 
+from gnue.common import GParser
+from gnue.forms import GFParser
 
 #
+# These Identify the types of templates. A template
+# should identify itself as one of the following in
+# the TemplateInformation hash's "Behavior" attribute: 
+#
+
+TEMPLATE=0     # This is a template that does not prompt
+                # for user input.  Designer only calls 
+                # the Start() and GetFinal() methods. 
+
+WIZARD=1        # This is a template that prompts the 
+                # user for input in a wizard fashion. 
+                # Designer calls Start(), then calls 
+                # GetStep() to get a step. After a user
+                # clicks next, Designer calls ValidateStep()
+                # and if this returns true, calls GetStep()
+                # if there are more steps to complete, 
+                # or, if no more steps, calls GetFinal().
+
+
+#
 # This is a base template class.  No templates should 
 # directly inherit this class, but one of the decendent
 # classes (i.e., FormTemplate, ReportTemplate, etc)
 #
 class TemplateBase: 
 
+  ##########################################
+  # 
+  #  The following few methods should be 
+  #  subclassed by the template developer.
+
+  # The first step in our wizard
+  FIRST_STEP = '0'
+
   def Start(self, object): 
     return 0
   
-  #
-  #  Prompt the user for 
-  #
-  def GetSourceObject(self): 
+  # Verify contents of current step
+  # Return None if no problems, otherwise
+  # return a tuple of error message strings
+  def ValidateStep(self, stepCode): 
     return None
+
 
-  #
-  #
-  #
-  def GetSourceColumns(self): 
+  # Get a step
+  def GetStep(self, stepCode):
     return None
-    
+
+
+  # We have all the data, so generate our object
+  def GetFinal(self): 
+    return 1
     
+
+  ##########################################
+  # 
+  #  The following methods are convenience  
+  #  methods.
+  
+
+  def AddElement(self, tag, parent, attributes={}): 
+    pass
+
+
+  ##########################################
+  # 
+  #  The following methods are of no concern  
+  #  to the wizard/template developer and 
+  #  may/will be changed later on.
+
+  # Um, well eventually there might be...    
+
+
+###########################################################
+#
+# Base class for a form template
+#    
+###########################################################
 class FormTemplate(TemplateBase): 
 
+  # Initialize user code
   def Start(self, form): 
-    return 0
+    pass
 
 
+###########################################################
+#
+# Base class for a form template
+#    
+###########################################################
+class WizardPage: 
+
+  _ELEMENTS = GFParser.getXMLelements()  
+
+  def __init__(self, variables): 
+    self.variables = variables
+
+
+boolean = GParser.bool
+char = GParser.char
+
+
+class WizardItem:
+  pass
+
+class WizardText (WizardItem): 
+  def __init__(self, text):
+    self.text = text
+
+class WizardInput (WizardItem): 
+  def __init__(self, label, typecast=char, 
+               set=None, size=10, lowerbound=None, upperbound=None, 
+               forceupper=0, forcelower=0, required=0):
+
+    self.label = label
+    self.typecast = typecast
+    self.set = set
+    self.size = size
+    self.lowerbound = lowerbound
+    self.upperbound = upperbound
+    self.forceupper = forceuppper
+    self.forcelower = forcelower
+    required = required
Index: gnue/designer/templates/forms/Simple.py
diff -u gnue/designer/templates/forms/Simple.py:1.1 
gnue/designer/templates/forms/Simple.py:1.2
--- gnue/designer/templates/forms/Simple.py:1.1 Sun Jun 24 12:33:30 2001
+++ gnue/designer/templates/forms/Simple.py     Mon Jun 25 21:49:19 2001
@@ -28,18 +28,64 @@
 #
 
 
-from gnue.designer.TemplateBase import FormTemplate
+from gnue.designer.TemplateBase import *
 
-TemplateInformation = { 
-    'BaseClass' : SimpleFormTemplate, 
-    'Name' : 'Simple Entry Form (Single Source)',
-    'Description' : 'Creates a simple single-source entry table.', 
-    'Version' : '0.0.1', 
-} 
+# NOTE: It is VERY important that in any references to a 
+#    "<insert type here> wizard", the word "wizard" must be
+#    in lower case, as many "Xyz Wizards" have been 
+#    trademarked. (No, I'm not kidding :)
+
     
 class SimpleFormTemplate(FormTemplate): 
 
+  # The first step in our wizard
+  FIRST_STEP = '0'
+
+  # Stores all the variables
+  # entered by the wizard user.
+  variables = {}
+
+  # Initialize 
   def Start(self, form): 
-    return 0
+    self.form = form
+
+
+  # Initialize 
+  def GetStep(self, stepCode):
+    return self.pages[stepCode]
 
+
+  # We have all the data, so generate our form
+  # This is called 
+  def GetFinal(self): 
+    return 1
+    
+
+  pages = { '0':  # Step #1 / Get Title, et al
+               { 'title': 'Basic Form Information', 
+                 'content': (), #formTemplateGetBasicInfo(variables),
+                 'prev': None, 
+                 'next': '1' },
+            '1':  # Step #2 / Get Base Table
+               { 'title': 'Select Base Table/Source', 
+                 'content': (), #formTemplateGetSource(variables,multple=0), 
+                 'prev': '0', 
+                 'next': '2' }, 
+            '2':  # Step #3 / Get Columns to Include
+               { 'title': 'Basic Form Information', 
+                 'prev': '1', 
+                 'content': (), 
+                 'next': None } }
+  
+
+#
+# Basic information about this template
+#
+TemplateInformation = { 
+    'BaseClass' : SimpleFormTemplate, 
+    'Name' : 'Simple form wizard',
+    'Description' : 'Creates a simple single-source entry table.', 
+    'Version' : '0.0.1', 
+    'Behavior': WIZARD
+} 
 



reply via email to

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