コード例 #1
0
ファイル: APoMaFoX.py プロジェクト: minhbau/PyFoam
class CaseBuilderDialog(CaseBuilderTUI):
    """A dialog for a CaswBuilder-dialog"""
    def __init__(self,fName):
        CaseBuilderTUI.__init__(self)
        
        self.desc=CaseBuilderFile(fName)

#        print "Read case description",self.desc.name()

        items=[]

        items.append(
            urwid.AttrWrap(
            urwid.Text("Builder Template: "
                       + self.desc.name()+"\n"+self.desc.description()
                       ),'banner'))
        items.append(
            urwid.AttrWrap(
            urwid.Divider("-"),'banner'))
        items.append(
            urwid.AttrWrap(
            urwid.Text("Data Template: "
                       + self.desc.templatePath()
                       ),'banner'))
        items.append(
            urwid.AttrWrap(
            urwid.Divider("="),'banner'))

        self.caseField=urwid.Edit(('banner',"Name of the generated case "))
        items.append(urwid.AttrWrap(self.caseField,'editbox'))
        
        items.append(
            urwid.AttrWrap(
            urwid.Divider("="),'banner'))

        args=self.desc.arguments()
        mLen=apply(max,map(len,args))
        aDesc=self.desc.argumentDescriptions()
        aDef=self.desc.argumentDefaults()
        self.argfields=[]

        groups=[None]+self.desc.argumentGroups()
        gDesc=self.desc.argumentGroupDescription()
        
        for g in groups:
            if g!=None:
                items.append(urwid.AttrWrap(urwid.Text("\n"+g+" - "+gDesc[g]),"group"))
            for a in self.desc.groupArguments(g):
                items.append(urwid.Text(aDesc[a]))
                fld=urwid.Edit(('banner',a+" "*(mLen+1-len(a))),edit_text=aDef[a])
                self.argfields.append(fld)
                items.append(urwid.AttrWrap(fld,'editbox'))

        items.append(
            urwid.AttrWrap(
            urwid.Divider("="),'banner'))

        self.forceCheck=urwid.CheckBox("ForceOverwrite")
        items.append(
            urwid.Columns(
            [ urwid.AttrWrap(self.forceCheck,'bgbutton') ]
            ))
        
        items.append(
            urwid.Padding(
            urwid.AttrWrap(urwid.Button("Generate Case",self.doGenerate),'bgbutton','button'),
            align='center',width=20))
        
        self.items = urwid.SimpleListWalker(items)
        self.listbox = urwid.ListBox(self.items)
        self.statusText = urwid.Text("Dummy")
        footer = urwid.AttrWrap( self.statusText, 'header' )

        self.setStatus("")
        
        top = urwid.Frame(self.listbox, footer=footer)
        self.top=urwid.AttrWrap(top,'bg')
        self.done=False
        
    def run(self):
        self.ui.run_wrapper(self.runTUI)
        return self.done
    
    def setStatus(self,text):
        self.statusText.set_text([('alert',text)," Press ESC to exit"])
        
    def doGenerate(self,button):
        self.goOn=False
        self.ui.stop()
        caseName=self.caseField.get_edit_text()
        if len(caseName)==0:
            self.setStatus("Casename empty")
            self.goOn=True
            return
        
        if path.exists(caseName):
            if not self.forceCheck.get_state():
                self.setStatus("Directory "+caseName+" already existing")
                self.goOn=True
                return
            else:
                self.setStatus("Overwriting directory "+caseName)
                shutil.rmtree(caseName)
        
        self.setStatus("Generating the case "+caseName)
        args={}
        for i,a in enumerate(self.desc.arguments()):
            args[a]=self.argfields[i].get_edit_text()
            if len(args[a])==0:
                self.setStatus("No argument "+a+" was given")
                self.goOn=True
                return

        msg=self.desc.verifyArguments(args)
        if msg:
            self.setStatus(msg)
            self.goOn=True
            return
        
        self.setStatus("With the arguments "+str(args))

        self.desc.buildCase(caseName,args)

        self.done=True
        
    def runTUI(self):
	size = self.ui.get_cols_rows()

	txt = urwid.Text(('banner', " Hello World "), align="center")
	wrap1 = urwid.AttrWrap( txt, 'streak' )
	fill = urwid.Filler( wrap1 )
	wrap2 = urwid.AttrWrap( fill, 'bg' )

        self.goOn=True
        
	while self.goOn:
            self.draw_screen(size)
            keys = self.ui.get_input()
            if "esc" in keys:
                break
            for k in keys:
                if k=="window resize":
                    size = self.ui.get_cols_rows()
                    continue
                self.top.keypress( size, k )
                                                
    def draw_screen(self,size):
        canvas = self.top.render( size, focus=True )
        self.ui.draw_screen( size, canvas )
コード例 #2
0
ファイル: APoMaFoX.py プロジェクト: minhbau/PyFoam
    def __init__(self,fName):
        CaseBuilderTUI.__init__(self)
        
        self.desc=CaseBuilderFile(fName)

#        print "Read case description",self.desc.name()

        items=[]

        items.append(
            urwid.AttrWrap(
            urwid.Text("Builder Template: "
                       + self.desc.name()+"\n"+self.desc.description()
                       ),'banner'))
        items.append(
            urwid.AttrWrap(
            urwid.Divider("-"),'banner'))
        items.append(
            urwid.AttrWrap(
            urwid.Text("Data Template: "
                       + self.desc.templatePath()
                       ),'banner'))
        items.append(
            urwid.AttrWrap(
            urwid.Divider("="),'banner'))

        self.caseField=urwid.Edit(('banner',"Name of the generated case "))
        items.append(urwid.AttrWrap(self.caseField,'editbox'))
        
        items.append(
            urwid.AttrWrap(
            urwid.Divider("="),'banner'))

        args=self.desc.arguments()
        mLen=apply(max,map(len,args))
        aDesc=self.desc.argumentDescriptions()
        aDef=self.desc.argumentDefaults()
        self.argfields=[]

        groups=[None]+self.desc.argumentGroups()
        gDesc=self.desc.argumentGroupDescription()
        
        for g in groups:
            if g!=None:
                items.append(urwid.AttrWrap(urwid.Text("\n"+g+" - "+gDesc[g]),"group"))
            for a in self.desc.groupArguments(g):
                items.append(urwid.Text(aDesc[a]))
                fld=urwid.Edit(('banner',a+" "*(mLen+1-len(a))),edit_text=aDef[a])
                self.argfields.append(fld)
                items.append(urwid.AttrWrap(fld,'editbox'))

        items.append(
            urwid.AttrWrap(
            urwid.Divider("="),'banner'))

        self.forceCheck=urwid.CheckBox("ForceOverwrite")
        items.append(
            urwid.Columns(
            [ urwid.AttrWrap(self.forceCheck,'bgbutton') ]
            ))
        
        items.append(
            urwid.Padding(
            urwid.AttrWrap(urwid.Button("Generate Case",self.doGenerate),'bgbutton','button'),
            align='center',width=20))
        
        self.items = urwid.SimpleListWalker(items)
        self.listbox = urwid.ListBox(self.items)
        self.statusText = urwid.Text("Dummy")
        footer = urwid.AttrWrap( self.statusText, 'header' )

        self.setStatus("")
        
        top = urwid.Frame(self.listbox, footer=footer)
        self.top=urwid.AttrWrap(top,'bg')
        self.done=False
コード例 #3
0
ファイル: CaseBuilder.py プロジェクト: floli/tools
    def run(self):
        if self.pathInfo():
            return
        
        if len(self.parser.getArgs())<1:
            error("No description file given")

        fName=self.searchDescriptionFile(self.parser.getArgs()[0])
        
        desc=CaseBuilderFile(fName)

        print "Read case description",desc.name()

        stopIt=False
        
        if self.opts.long:
            self.opts.short=True
            self.opts.args=True
            self.opts.bounds=True
            self.opts.help=True
            
        if self.opts.short:
            print
            print "Description:      ",desc.description()
            print "Template:         ",desc.templatePath()
            print "Initial Condition:",desc.initialDir()
            stopIt=True
            
        if self.opts.help:
            self.printTitle("Help")
            print desc.helpText()
            stopIt=True
            
        if self.opts.args:
            args=desc.arguments()
            mLen=apply(max,map(len,args))
            aDesc=desc.argumentDescriptions()
            format="%%%ds : %%s" % mLen
            
            self.printTitle("Arguments")
            for a in args:
                print format % (a,aDesc[a])
            stopIt=True

        if self.opts.bounds:
            bounds=desc.boundaries()
            mLen=apply(max,map(len,bounds))
            bDesc=desc.boundaryDescriptions()
            bPat=desc.boundaryPatternDict()
            format="%%%ds : %%s \n\tPattern: '%%s'" % mLen
            
            self.printTitle("Boundaries")
            for i,a in enumerate(bounds):
                print format % (a,bDesc[a],bPat[a])
            stopIt=True

        if stopIt:
            print
            print "Not doing anything"
            return
        
        args=desc.arguments()

        if len(self.parser.getArgs())<2:
            error("Missing a casename:",self.buildUsage(args))

        cName=self.parser.getArgs()[1]
        if len(self.parser.getArgs())!=len(args)+2:
            error("Wrong number of arguments:",self.buildUsage(args))

        aDict={}
        for i,a in enumerate(args):
            tmp=self.parser.getArgs()[2+i]
            if (tmp[0]=='"' or tmp[0]=="'") and tmp[0]==tmp[-1]:
                tmp=tmp[1:-1]
            aDict[a]=tmp

        if path.exists(cName):
            if self.opts.force:
                shutil.rmtree(cName)
            else:
                error("Case directory",cName,"already exists")
                
        print "Building case",cName

        msg=desc.verifyArguments(aDict)
        if msg:
            error("Error verifying arguments:",msg)
            
        desc.buildCase(cName,aDict)