productwiz.py :  » Web-Server » SkunkWEB » skunkweb-3.4.4 » SkunkWeb » Services » product » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Web Server » SkunkWEB 
SkunkWEB » skunkweb 3.4.4 » SkunkWeb » Services » product » productwiz.py
# Time-stamp: <02/02/24 10:40:39 smulloni>

########################################################################
#  
#  Copyright (C) 2002 Jacob Smullyan <smulloni@smullyan.org>
#  
#      You may distribute under the terms of either the GNU General
#      Public License or the SkunkWeb License, as specified in the
#      README file.
#   
########################################################################

########################################################################
# you need Rich Salz's excellent wizard.py for this, the original
# source for which is available at:
#
# http://www.zolera.com/resources/opensrc/wizard
#
# This is coded to work with wizard 2.0.
########################################################################

from wizard import *
import Tkinter as Tk
import productmaker
import traceback
import cStringIO

class _productHelp(HelpPopup):
    def __init__(self, helpdict):
        HelpPopup.__init__(self)
        self.helpdict=helpdict
    def open(self, wizard, field):
        self.text=self.helpdict.get(field)
    def readline(self):
        if self.text:
            t=self.text
            self.text=None
            return t
    def close(self):
        pass

_productHelpDict={
    'product_name': "the name of the product you wish to create.",
    'version': 'a version number of the product, such as 1.10.2.',
    'author' : 'the authors of the product.',
    'docroot': """the directory on your machine in which the SkunkWeb
components for this product reside.""",
    'libs' : """the directory on your machine in which the python modules
    (including SkunkWeb services) for this product reside.""",
    'format' : "The desired format for this product (zip, tgz, or tar)",
    'sheet0': 'Enter the name of your new product.',
    'sheet1' : '',
    'sheet2' : ''}

class _sheetchanger:
    def __init__(self):
        self.text=''
    def goto(self, wizard, sheetnum):
        if sheetnum==2:
            
            try:
                ppath=_makeProduct(wizard.get_values())
                wizard.bBack['state']=Tk.DISABLED
                self.text="Your new product was saved as:\n\n %s" % ppath
            except:
                sio=cStringIO.StringIO()
                traceback.print_exc(file=sio)
                self.text="Sorry, an error occurred:\n%s" % sio.getvalue()
    def open(self, wizard):
        pass
    def readline(self):
        if self.text:
            t=self.text[:]
            self.text=''
            return t
    def close(self):
        pass
            
def _get_wizard(root=None):
    builder=_sheetchanger()
    sheets=[Sheet(None,
                  (EntryField('product_name',
                              'Product Name',
                              entrywidth=50,
                              validate=Nonblank('product name')),)),
            Sheet(None, (EntryField('version',
                                    'Version',
                                    entrywidth=10,
                                    validate=Nonblank('version')),
                         EntryField('author',
                                    'Authors',
                                    entrywidth=20),
                         DirField('docroot',
                                  'Document sources',
                                  validate=Nonblank('docroot')),
                         DirField('libs',
                                  'Module sources'),
                         DDField('format',
                                 'Product format',
                                 ['.zip', '.tgz', '.tar']))),
            Sheet(None, (EntryField('services',
                                    'Services',
                                    entrywidth=40),
                         EntryField('dependencies',
                                    'Dependencies',
                                    entrywidth=40))),
            DynamicSheet(None, builder)]
    w=Wizard(sheets,
             'SkunkWeb Product Wizard',
             root,
             whenvalidate=1,
             sheetchange=builder)
    #help=_productHelp(_productHelpDict))
    return w

def _popdict(d, k, lenient=0):
    if d.has_key(k):
        v=d[k]
        del d[k]
        return v
    elif lenient:
        return None
    
def _makeProduct(data):
    productName=_popdict(data, 'product_name')
    docsources=_popdict(data, 'docroot')
    libsources=_popdict(data, 'libs', 1)
    format=('zip', 'tgz', 'tar')[int(_popdict(data, 'format'))]
    productFile=_popdict(data, 'productFile', 1)
    productPath=productmaker.makeProduct(productName,
                                         docsources,
                                         libsources,
                                         data,
                                         format=format,
                                         productFile=productFile)
    
    return productPath

_skunkguin="""
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
m4Y5m7QJl7Z5m7q5mwMWAgA7
""".strip()

def main():
    title='SkunkWeb Product Wizard'
    root=Tk.Tk()
    root.title(title)
    root.iconname(title)    
    fr1=Tk.Frame(root)
    imageholder=Tk.Label(fr1)
    pi=Tk.PhotoImage(data=_skunkguin)
    imageholder['image']=pi
    imageholder.grid()
    fr1.grid(row=0, column=0)
    fr2=Tk.Frame(root)
    fr2.grid(row=0, column=1)
    w=_get_wizard(fr2)
    return w.run()

if __name__=='__main__':

    main()
             
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.