commit-gnue
[Top][All Lists]
Advanced

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

gnue/designer src/TemplateChooser.py templates/...


From: Jason Cater
Subject: gnue/designer src/TemplateChooser.py templates/...
Date: Sun, 07 Oct 2001 15:07:24 -0400

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    01/10/07 15:07:24

Modified files:
        designer/src   : TemplateChooser.py 
        designer/templates: __init__.py 
        designer/templates/forms: __init__.py 
        designer/templates/reports: __init__.py 

Log message:
        Wizard dialog now runs the selected wizard; templates are automatically 
detected (it's no longer necessary to add your template to the list in 
__init__.py)

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/TemplateChooser.py.diff?cvsroot=OldCVS&tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/templates/__init__.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/templates/forms/__init__.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/templates/reports/__init__.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: gnue/designer/src/TemplateChooser.py
diff -u gnue/designer/src/TemplateChooser.py:1.7 
gnue/designer/src/TemplateChooser.py:1.8
--- gnue/designer/src/TemplateChooser.py:1.7    Tue Sep 18 17:16:57 2001
+++ gnue/designer/src/TemplateChooser.py        Sun Oct  7 15:07:24 2001
@@ -29,7 +29,7 @@
 from wxPython.wx import *
 from gnue.common import GDebug
 from gnue.designer import TemplateBase
-from gnue.designer.templates import GetAvailablePackages
+from gnue.designer.templates import GetAvailablePackages, GetAvailableTemplates
 import TemplateBase
 
 class TemplateChooser:
@@ -64,8 +64,7 @@
     self.chooseButton.SetPosition( (x - dx, y) )
 
 
-
-    EVT_BUTTON(self.chooser,self.chooseButton.GetId(), self.OnSelect)
+    EVT_BUTTON(self.chooser,self.chooseButton.GetId(), self.OnSelected)
     EVT_BUTTON(self.chooser,self.cancelButton.GetId(), self.OnCancel)
 
     EVT_CLOSE(self.chooser, self.OnCancel)
@@ -96,6 +95,8 @@
 #          self.panel.GetBackgroundColour().Blue() + 32) )
 
     GDebug.printMesg(2,"Packages=%s" % self.packages)
+    lookupIndex = 0
+    self.lookup = {}
     for package in self.packages:
       page = wxPanel(self.notebook, -1, wxPoint(0,0), \
                      self.notebook.GetClientSize())
@@ -108,43 +109,58 @@
       ctrl.InsertColumn(3, "Author", format=wxLIST_FORMAT_LEFT, width=-1)
       ctrl.InsertColumn(4, "Version", format=wxLIST_FORMAT_LEFT, width=-1)
 
+      EVT_LIST_ITEM_SELECTED(self.chooser, ctrl.GetId(), self.OnSelect)
+
       self.notebook.AddPage(page, package.PACKAGE)
+
+      i = 0
+      for template in GetAvailableTemplates(package):
+        ctrl.InsertStringItem(i, template['Name'])
+        if template.has_key('Description'):
+          ctrl.SetStringItem(i, 1, template['Description'])
+        else:
+          ctrl.SetStringItem(i, 1, 'Unknown')
+
+        if template['Product'] == TemplateBase.TEMPLATE:
+          ctrl.SetStringItem(i, 2, 'Template')
+        elif template['Product'] == TemplateBase.WIZARD:
+          ctrl.SetStringItem(i, 2, 'Wizard')
+
+        if template.has_key('Author'):
+          ctrl.SetStringItem(i, 3, template['Author'])
+        else:
+          ctrl.SetStringItem(i, 3, 'Unknown')
+
+        if template.has_key('Version'):
+          ctrl.SetStringItem(i, 4, template['Version'])
+        else:
+          ctrl.SetStringItem(i, 4, 'Unknown')
+        ctrl.SetItemData(i, lookupIndex)
+
+        self.lookup[lookupIndex] = template
 
-      for template in package.GetAvailableTemplates():
-        ctrl.InsertStringItem(0, template['Name'])
-        if template.has_key('Description'): 
-          ctrl.SetStringItem(0, 1, template['Description'])
-        else: 
-          ctrl.SetStringItem(0, 1, 'Unknown')
-
-        if template['Product'] == TemplateBase.TEMPLATE: 
-          ctrl.SetStringItem(0, 2, 'Template')
-        elif template['Product'] == TemplateBase.WIZARD: 
-          ctrl.SetStringItem(0, 2, 'Wizard')
-
-        if template.has_key('Author'): 
-          ctrl.SetStringItem(0, 3, template['Author'])
-        else: 
-          ctrl.SetStringItem(0, 3, 'Unknown')
-
-        if template.has_key('Version'): 
-          ctrl.SetStringItem(0, 4, template['Version'])
-        else: 
-          ctrl.SetStringItem(0, 4, 'Unknown')
+        i += 1
+        lookupIndex += 1
 
 
+    self.selection = 0
     completed = self.chooser.ShowModal()
-    self.chooser.Destroy()
+    results = None
 
     if completed:
-      from gnue.designer.templates.forms import Simple
-      return Simple.TemplateInformation
-    else:
-      return None
+      results = self.lookup[self.selection]
 
+    self.chooser.Destroy()
+    return results
 
+  # When user highlights a wizard from the list...
   def OnSelect(self, event):
+    self.selection = event.GetData()
+
+  # When user clicks the "Select" button...
+  def OnSelected(self, event):
     self.chooser.EndModal(1)
 
+  # When user clicks the "Cancel" button...
   def OnCancel(self, event):
     self.chooser.EndModal(0)
Index: gnue/designer/templates/__init__.py
diff -u gnue/designer/templates/__init__.py:1.2 
gnue/designer/templates/__init__.py:1.3
--- gnue/designer/templates/__init__.py:1.2     Sun Sep 16 19:43:53 2001
+++ gnue/designer/templates/__init__.py Sun Oct  7 15:07:24 2001
@@ -27,7 +27,49 @@
 # NOTES:
 #
 
-# TODO: Can we automatically find all the packages?
+import os, string, dircache
+
+#################################################################
+#
+# Returns a list of <modules> containing templates.
+# To get the wizards available in a template, call
+# GetAvailableTemplates(<module>)
+#
+#################################################################
+
 def GetAvailablePackages():
-  import forms, reports
-  return [forms, reports]
+  packages = []
+  basedir = os.path.dirname(__file__)
+  for dir in dircache.listdir(basedir):
+    if os.path.isdir(os.path.join(basedir, dir)):
+      try:
+        packages.append(__import__('gnue/designer/templates/%s' %dir))
+      except ImportError:
+        pass
+  return packages
+
+
+#################################################################
+#
+# Return a list of the TemplateInformation dictionaries for all
+# available templates in the specified <module> (package).
+#
+#################################################################
+
+def GetAvailableTemplates(package):
+  templates = []
+  basedir = os.path.dirname(package.__file__)
+  processed = []  # Base file names processed (e.g., base of Simply.py*
+                  # is Simple) This will keep us from importing Simple
+                  # three times if Simple.py, Simple.pyc, and Simple.lib
+                  # all exist.
+  for dir in dircache.listdir(basedir):
+    base = string.split(dir,'.')[0]
+    if not dir[0] in ('.','_') and not base in processed:
+      processed.append(base)
+      try:
+        templates.append(__import__(
+           '%s/%s' % (package.__name__,base)).TemplateInformation)
+      except ImportError:
+        pass
+  return templates
Index: gnue/designer/templates/forms/__init__.py
diff -u gnue/designer/templates/forms/__init__.py:1.2 
gnue/designer/templates/forms/__init__.py:1.3
--- gnue/designer/templates/forms/__init__.py:1.2       Sun Sep 16 19:43:53 2001
+++ gnue/designer/templates/forms/__init__.py   Sun Oct  7 15:07:24 2001
@@ -24,11 +24,7 @@
 # DESCRIPTION:
 # Form template directory
 #
-# NOTES:
-#
 
+# Our package name
 PACKAGE = 'Forms'
 
-def GetAvailableTemplates():
-  import Simple
-  return [Simple.TemplateInformation]
Index: gnue/designer/templates/reports/__init__.py
diff -u gnue/designer/templates/reports/__init__.py:1.2 
gnue/designer/templates/reports/__init__.py:1.3
--- gnue/designer/templates/reports/__init__.py:1.2     Sun Sep 16 19:43:53 2001
+++ gnue/designer/templates/reports/__init__.py Sun Oct  7 15:07:24 2001
@@ -24,10 +24,7 @@
 # DESCRIPTION:
 # Report template directory
 #
-# NOTES:
-#
 
+# Our package name
 PACKAGE = 'Reports'
 
-def GetAvailableTemplates():
-  return []



reply via email to

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