[Top][All Lists]
[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
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/designer src/GFDesigner.py src/LayoutEdito...,
Jason Cater <=