本文整理汇总了Python中pyjamas.ui.VerticalPanel.VerticalPanel.setWidth方法的典型用法代码示例。如果您正苦于以下问题:Python VerticalPanel.setWidth方法的具体用法?Python VerticalPanel.setWidth怎么用?Python VerticalPanel.setWidth使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyjamas.ui.VerticalPanel.VerticalPanel
的用法示例。
在下文中一共展示了VerticalPanel.setWidth方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def __init__(self):
SimplePanel.__init__(self)
panel = VerticalPanel()
panel.setBorderWidth(1)
panel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER)
panel.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE)
part1 = Label("Part 1")
part2 = Label("Part 2")
part3 = Label("Part 3")
part4 = Label("Part 4")
panel.add(part1)
panel.add(part2)
panel.add(part3)
panel.add(part4)
panel.setCellHeight(part1, "10%")
panel.setCellHeight(part2, "70%")
panel.setCellHeight(part3, "10%")
panel.setCellHeight(part4, "10%")
panel.setCellHorizontalAlignment(part3, HasAlignment.ALIGN_RIGHT)
panel.setWidth("50%")
panel.setHeight("300px")
self.add(panel)
示例2: onModuleLoad
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def onModuleLoad(self):
self.curInfo=''
self.curSink=None
self.description=HTML()
self.sink_list=SinkList()
self.panel=DockPanel()
self.loadSinks()
self.sinkContainer = DockPanel()
self.sinkContainer.setStyleName("ks-Sink")
vp=VerticalPanel()
vp.setWidth("100%")
vp.add(self.description)
vp.add(self.sinkContainer)
self.description.setStyleName("ks-Info")
self.panel.add(self.sink_list, DockPanel.WEST)
self.panel.add(vp, DockPanel.CENTER)
self.panel.setCellVerticalAlignment(self.sink_list, HasAlignment.ALIGN_TOP)
self.panel.setCellWidth(vp, "100%")
History.addHistoryListener(self)
RootPanel().add(self.panel)
RootPanel().add(Logger())
#Show the initial screen.
initToken = History.getToken()
if len(initToken):
self.onHistoryChanged(initToken)
else:
self.showInfo()
示例3: __init__
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def __init__(self, theorem, **kwargs):
DialogWindow.__init__(self, modal=True, close=True)
self.theorem=theorem
v = VerticalPanel()
v.setWidth(300)
# v.setHeight(500)
self.setText("save")
self.setPopupPosition(100, 100)
self.setStyleAttribute("background-color", "#ffffff")
self.setStyleAttribute("color", "red")
self.setStyleAttribute("border-width", "5px")
self.setStyleAttribute("border-style", "solid")
self.im=Image()
self.im.setUrl(latex_to_url(self.theorem.formula.to_latex()))
v.add(self.im)
h=HorizontalPanel()
self.radio=RadioButton("group1", "Existing folder:")
h.add(self.radio)
self.list = ListBox()
self.list.setVisibleItemCount(1)
for f in Theorem.get_all_folders():
self.list.addItem(f)
h.add(self.list)
v.add(h)
h=HorizontalPanel()
h.add(RadioButton("group1", "New folder:"))
self.radio.setChecked(True)
self.textbox=TextBox()
h.add(self.textbox)
v.add(h)
v.add(Button("Done",self.done_click))
self.add(v)
示例4: __init__
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def __init__(self):
Sink.__init__(self)
self.curImage=0
self.image=Image()
self.loadingImage = Image(self.baseURL() + "images/blanksearching.gif")
self.nextButton = Image(self.baseURL() + "rembrandt/forward.gif")
self.prevButton = Image(self.baseURL() + "rembrandt/back.gif")
self.sImages=["rembrandt/JohannesElison.jpg", "rembrandt/LaMarcheNocturne.jpg", "rembrandt/SelfPortrait1628.jpg", "rembrandt/SelfPortrait1640.jpg", "rembrandt/TheArtistInHisStudio.jpg", "rembrandt/TheReturnOfTheProdigalSon.jpg"]
for i in range(len(self.sImages)):
self.sImages[i]=self.baseURL() + self.sImages[i]
self.image.addLoadListener(self)
self.prevButton.addClickListener(self)
self.nextButton.addClickListener(self)
topPanel = DockPanel()
topPanel.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE)
topPanel.add(self.prevButton, DockPanel.WEST)
topPanel.add(self.nextButton, DockPanel.EAST)
topPanel.add(self.loadingImage, DockPanel.CENTER)
panel = VerticalPanel()
panel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER)
panel.add(HTML("<h2>A Bit of Rembrandt</h2>", True))
panel.add(topPanel)
panel.add(self.image)
panel.setWidth("100%")
self.initWidget(panel)
self.image.setStyleName("ks-images-Image")
self.nextButton.setStyleName("ks-images-Button")
self.prevButton.setStyleName("ks-images-Button")
self.loadImage(0)
示例5: loadChapters
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def loadChapters(self):
self.curInfo = ''
self.curSink = None
self.description = HTML()
self.sink_list = SinkList()
self.panel = DockPanel()
self.loadSinks()
self.sinkContainer = DockPanel()
self.sinkContainer.setStyleName("ks-Sink")
#self.nf = NamedFrame("section")
#self.nf.setWidth("100%")
#self.nf.setHeight("10000")
height = Window.getClientHeight()
self.sp = ScrollPanel(self.sinkContainer)
#self.sp = VerticalSplitPanel()
self.sp.setWidth("100%")
self.sp.setHeight("%dpx" % (height-110))
#self.sp.setTopWidget(self.sinkContainer)
#self.sp.setBottomWidget(self.nf)
#self.sp.setSplitPosition(10000) # deliberately high - max out.
vp = VerticalPanel()
vp.setWidth("100%")
vp.setHeight("100%")
vp.add(self.description)
vp.add(self.sp)
self.description.setStyleName("ks-Intro")
self.panel.add(self.sink_list, DockPanel.WEST)
self.panel.add(vp, DockPanel.CENTER)
self.panel.setCellVerticalAlignment(self.sink_list,
HasAlignment.ALIGN_TOP)
self.panel.setCellWidth(vp, "100%")
self.panel.setCellHeight(vp, "100%")
Window.addWindowResizeListener(self)
History.addHistoryListener(self)
RootPanel().add(self.panel)
示例6: __init__
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def __init__(self, editor):
PopupPanel.__init__(self, glass=True)
self.m_origAnchorStart = None
self.m_origAnchorEnd = None
self.m_origTargetText = ""
self.m_editor = editor
vpanel = VerticalPanel()
vpanel.setWidth("350px")
self.m_webPageText = TextBox()
self.m_webPageText.setText("http:#")
self.m_webPageText.setWidth("320px")
vpanel.add(self.m_webPageText)
lbl = Label("Display:")
self.m_targetText = TextBox()
self.m_targetText.setWidth("100%")
lpanel = HorizontalPanel()
lpanel.add(lbl)
lpanel.add(self.m_targetText)
vpanel.add(lpanel)
self.m_fillOutCB = CheckBox("Change entire link")
self.m_fillOutCB.setVisible(False)
self.m_fillOutCB.addClickListener(self)
vpanel.add(self.m_fillOutCB)
self.m_okBut = Button("Ok", self)
self.m_okBut.addStyleName("float-left")
self.m_cancelBut = Button("Cancel", self)
self.m_cancelBut.addStyleName("float-left")
hpanel = HorizontalPanel()
hpanel.add(self.m_okBut)
hpanel.add(self.m_cancelBut)
vpanel.add(hpanel)
self.add(vpanel)
self.setStyleName("gwt-DialogBox")
示例7: UsersTab
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
class UsersTab(RPCBase):
def __init__(self,app):
global gw
self.app=app
self.vpanel = VerticalPanel()
self.vpanel.setWidth("100%")
self.table = FlexTable()
self.table.setHTML(0, 0, "<b>ID</b>")
self.table.setHTML(0, 1, "<b>Handle</b>")
self.table.setHTML(0, 2, "<b>Name</b>")
self.vpanel.add(self.table)
if self.app.admin:
self.btn = Button("Create User",self.createUser)
self.vpanel.add(self.btn)
self.cnt = 1
gw.listUsers(self)
def reload(self):
global gw
gw.listUsers(self)
def createUser(self,_):
UserTab(self.app, -1)
def userLambda(self,uid):
return lambda: UserTab(self.app, uid)
def getRoot(self):
return self.vpanel
def onRemoteResponse(self, response, request_info):
while self.cnt > 1:
self.cnt -= 1
self.table.removeRow(self.cnt)
for line in response:
l=Hyperlink(line[0])
l.addClickListener(self.userLambda(line[0]));
self.table.setWidget(self.cnt, 0, l)
l=Hyperlink(line[1])
l.addClickListener(self.userLambda(line[0]));
self.table.setWidget(self.cnt, 1, l)
l=Hyperlink(line[2])
l.addClickListener(self.userLambda(line[0]));
self.table.setWidget(self.cnt, 2, l)
self.cnt += 1
示例8: closeTab
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
class App:
def closeTab(self, x):
Window.alert("close " + x);
def logininit(self, uid, admin):
self.uid = uid
self.admin = admin
self.submitTab = SubmitTab(self)
self.problemsTab = ProblemsTab(self)
self.statusTab = StatusTab(self)
self.usersTab = UsersTab(self)
self.tabs.add(self.problemsTab.getRoot(), "Problems")
self.tabs.selectTab(0)
self.tabs.add(self.submitTab.getRoot(), "Submit")
self.tabs.add(self.statusTab.getRoot(), "Status")
self.tabs.add(self.usersTab.getRoot(), "Users")
self.vpanel.add(self.tabs)
self.vpanel.add( Button("Logout", self.logout) )
def __init__(self):
global app
app = self
self.vpanel = VerticalPanel()
self.vpanel.setWidth("100%")
self.tabs = MyTabPanel()
RootPanel().add(self.vpanel)
self.tabs.setWidth("100%")
self.cookie = getCookie('cookie')
ld = LoginDialgoBox(self)
ld.login()
def showProblemDetails(self, pid):
pass
def showUserInfo(self,uid):
pass
def logout(self, _):
global gw
gw.logout(self.cookie)
self.cookie = None
setCookie('cookie','',24*60*60)
Window.getLocation().reload()
示例9: ProblemsTab
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
class ProblemsTab(RPCBase):
def __init__(self,app):
global gw
self.app=app
self.vpanel = VerticalPanel()
self.vpanel.setWidth("100%")
self.table = FlexTable()
self.table.setHTML(0, 0, "<b>ID</b>")
self.table.setHTML(0, 1, "<b>Name</b>")
self.table.setHTML(0, 2, "<b>Submitted By</b>")
self.vpanel.add(self.table)
if self.app.admin:
self.btn = Button("Upload new problem",self.uploadProblem)
self.vpanel.add(self.btn)
self.cnt = 1
gw.listProblems(self)
def problemLambda(self, pid):
return lambda: ProblemTab(self.app, pid)
def userLambda(self,uid):
return lambda: UserTab(self.app, uid)
def uploadProblem(self,_=None):
UploadProblemTab(self.app)
def getRoot(self):
return self.vpanel
def onRemoteResponse(self, response, request_info):
for line in response:
l=Hyperlink(line[1])
l.addClickListener(self.problemLambda(line[1]));
self.table.setWidget(self.cnt, 0, l)
l=Hyperlink(line[0])
l.addClickListener(self.problemLambda(line[1]));
self.table.setWidget(self.cnt, 1, l)
l=Hyperlink(line[3])
l.addClickListener(self.userLambda(line[2]));
self.table.setWidget(self.cnt, 2, l)
self.app.submitTab.problem.insertItem(line[0]+" ("+line[1]+")",line[1],-1)
self.cnt += 1
示例10: onModuleLoad
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def onModuleLoad(self):
self.curInfo=''
self.curSink=None
self.description=HTML()
self.sink_list=SinkList()
self.panel=DockPanel()
self.b=Button("load", self)
self.sinkContainer = DockPanel()
self.sinkContainer.setStyleName("ks-Sink")
height = Window.getClientHeight()
self.sp = ScrollPanel(self.sinkContainer)
self.sp.setWidth("100%")
self.sp.setHeight("%dpx" % (height-110))
vp=VerticalPanel()
vp.setWidth("100%")
vp.setHeight("100%")
vp.add(self.description)
vp.add(self.sp)
self.description.setStyleName("ks-Intro")
self.panel.add(self.sink_list, DockPanel.WEST)
self.panel.add(vp, DockPanel.CENTER)
self.panel.setCellVerticalAlignment(self.sink_list, HasAlignment.ALIGN_TOP)
self.panel.setCellWidth(vp, "100%")
self.panel.setCellHeight(vp, "100%")
Window.addWindowResizeListener(self)
History.addHistoryListener(self)
RootPanel().add(self.panel)
#RootPanel().add(self.b)
self.loadSinks()
示例11: __init__
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
def __init__(self):
Composite.__init__(self)
panel = VerticalPanel()
headerPanel = VerticalPanel()
self.subject = HTML()
self.sender = HTML()
self.recipient = HTML()
self.body = HTML()
self.scroller = ScrollPanel(self.body)
self.body.setWordWrap(True)
headerPanel.add(self.subject)
headerPanel.add(self.sender)
headerPanel.add(self.recipient)
headerPanel.setWidth("100%")
innerPanel = DockPanel()
innerPanel.add(headerPanel, DockPanel.NORTH)
innerPanel.add(self.scroller, DockPanel.CENTER)
innerPanel.setCellHeight(self.scroller, "100%")
panel.add(innerPanel)
innerPanel.setSize("100%", "100%")
self.scroller.setSize("100%", "100%")
self.initWidget(panel)
self.setStyleName("mail-Detail")
headerPanel.setStyleName("mail-DetailHeader")
innerPanel.setStyleName("mail-DetailInner")
self.subject.setStyleName("mail-DetailSubject")
self.sender.setStyleName("mail-DetailSender")
self.recipient.setStyleName("mail-DetailRecipient")
self.body.setStyleName("mail-DetailBody")
Logger("Mail detail", " ")
示例12: Button
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
resdict = resgen_core.processconf(inputArea.getText())
hData = resgen_core.processhorz(resdict, hTemplate, footdict)
outputArea.setText(hData)
if __name__ == '__main__':
b = Button("Convert", convert)
p = HorizontalPanel()
p.add(inputArea)
p.add(outputArea)
q = VerticalPanel()
q.setStyleName("panel")
q.add(b)
q.add(p)
q.setHeight("100%")
q.setWidth("100%")
p.setHeight("80%")
p.setWidth("100%")
inputArea.setHeight("100%")
inputArea.setWidth("100%")
outputArea.setHeight("100%")
outputArea.setWidth("100%")
inputArea.setText(confDefault)
RootPanel().add(q)
示例13: Trees
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
class Trees(Sink):
pathdict = {}
reduceFiles = None
def __init__(self, parent = None):
Sink.__init__(self, parent)
self.reduceFiles = []
if True:
HTTPRequest().asyncGet("datadir.xml",
DirDictLoader(self),
)
dock = DockPanel(HorizontalAlignment=HasAlignment.ALIGN_LEFT,
Spacing=10,
Size=("100%","100%"))
self.dock = dock
self.fProto = []
self.fTree = Tree()
self.prPanel = VerticalPanel(Size=("50%", ""))
self.treePanel = HorizontalPanel(Size=("50%", "100%"))
self.treePanel.add(self.fTree)
dock.add(self.treePanel, DockPanel.WEST)
self.treePanel.setBorderWidth(1)
self.treePanel.setWidth("100%")
self.prPanel.setBorderWidth(1)
self.prPanel.setWidth("100%")
# prepare panel
self.prepareReduce = HTML("<tt> .. none yet .. </tt>", True, )
self.recipeList = ListBox()
self.recipeList.addChangeListener(getattr(self, "onRecipeSelected"))
self.recipeList.addItem("None")
HTTPRequest().asyncGet("recipes.xml",
RecipeListLoader(self))
#EO prepare panel
self.reduceCLPanel = DockPanel(Spacing = 5)
self.reduceCLPanel.add(HTML("<i>Reduce Command Line</i>:"), DockPanel.NORTH)
self.reduceCLPanel.add(self.prepareReduce, DockPanel.NORTH)
self.reduceFilesPanel = DockPanel(Spacing = 5)
self.reduceFilesPanel.add(HTML("<b>Datasets</b>:"), DockPanel.WEST)
self.reduceFiles = ListBox()
self.reduceFiles.setVisibleItemCount(5)
self.reduceFilesPanel.add(self.reduceFiles, DockPanel.WEST)
self.clearReduceFilesButton = Button("<b>Clear List</b>", listener = getattr(self, "onClearReduceFiles"))
self.reduceFilesPanel.add(self.clearReduceFilesButton, DockPanel.SOUTH)
self.recipeListPanel = DockPanel(Spacing = 5)
self.recipeListPanel.add(HTML("<b>Recipes List</b>:"),DockPanel.WEST)
self.recipeListPanel.add(self.recipeList, DockPanel.WEST)
self.runReduceButton = Button("<b>RUN REDUCE</b>", listener = getattr(self, "onRunReduce"))
self.adInfo = HTML("file info...")
# major sub panels
self.prPanel.add(self.reduceCLPanel)
self.prPanel.add(self.reduceFilesPanel)
self.prPanel.add(self.recipeListPanel)
self.prPanel.add(self.runReduceButton)
self.prPanel.add(self.adInfo)
dock.add(self.prPanel,DockPanel.EAST)
dock.setCellWidth(self.treePanel, "50%")
dock.setCellWidth(self.prPanel, "50%")
for i in range(len(self.fProto)):
self.createItem(self.fProto[i])
self.fTree.addItem(self.fProto[i].item)
self.fTree.addTreeListener(self)
self.initWidget(self.dock)
if False: #self.parent.filexml != None:
DirDictLoader(self).onCompletion(self.parent.filexml)
def onTreeItemSelected(self, item):
pathdict = self.pathdict
tfile = item.getText()
#check if already in
for i in range(0, self.reduceFiles.getItemCount()):
fname = self.reduceFiles.getItemText(i)
if fname == tfile:
return
self.reduceFiles.addItem(tfile)
self.updateReduceCL()
filename = tfile
if filename in pathdict:
if pathdict[filename]["filetype"] == "fileEntry":
HTTPRequest().asyncGet("adinfo?filename=%s" % self.pathdict[item.getText()]["path"],
ADInfoLoader(self),
)
else:
self.adInfo.setHTML("""
<b style="font-size:200%%">%s</b>""" % pathdict[filename]["filetype"])
#.........这里部分代码省略.........
示例14: StatusTab
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
class StatusTab(RPCBase):
def __init__(self,app):
self.app=app
self.vpanel = VerticalPanel()
self.vpanel.setWidth("100%")
self.table = FlexTable()
self.vpanel.add(self.table)
btn = Button('Update',self.update)
self.vpanel.add(btn)
self.id2row = {}
self.table.setHTML(0, 0, "<b>Time</b>")
self.table.setHTML(0, 1, "<b>Problem</b>")
self.table.setHTML(0, 2, "<b>User</b>")
self.table.setHTML(0, 3, "<b>Status</b>")
self.cnt=1
self.time=None
#self.update()
Timer(4000,self)
def onTimer(self, x):
#self.update()
Timer(4000,self)
def update(self,_=None):
global gw
gw.listSubmissions(self.time, self)
def problemLambda(self, pid):
return lambda: ProblemTab(self.app, pid)
def userLambda(self,uid):
return lambda: UserTab(self.app, uid)
def submissionLambda(self,sid):
return lambda: SubmissionTab(self.app, sid)
def onRemoteResponse(self, response, request_info):
#0 (x.id,
#1 x.problem.name,
#2 x.problem_id,
#3 x.submitter.handle,
#4 x.submitter_id,
#5 status(x.code),
#6 x.judgeTime,
#7 x.submitTime )
if response:
for line in response:
if line[0] in self.id2row:
idx =self.cnt- self.id2row[line[0]]
#alert(self.id2row[line[0]] + " " + idx + " " + self.cnt);
#return
else:
idx = 1
self.table.insertRow(1)
self.id2row[line[0]] = self.cnt
self.cnt += 1
#Hyperlink
self.table.setText(idx, 0, line[7])
pl=Hyperlink(line[1])
pl.addClickListener(self.problemLambda(line[2]));
self.table.setWidget(idx, 1, pl)
ul=Hyperlink(line[3])
ul.addClickListener(self.userLambda(line[4]) );
self.table.setWidget(idx, 2, ul)
sl=Hyperlink(line[5])
sl.addClickListener(self.submissionLambda(line[0]))
self.table.setWidget(idx, 3, sl)
if line[6] != 'None': self.time = max(self.time, line[6], line[7])
else: self.time = max(self.time, line[7])
def getRoot(self):
return self.vpanel
示例15: ReducePanelIFACE
# 需要导入模块: from pyjamas.ui.VerticalPanel import VerticalPanel [as 别名]
# 或者: from pyjamas.ui.VerticalPanel.VerticalPanel import setWidth [as 别名]
class ReducePanelIFACE(PanelIFACE):
def __init__(self, parent = None):
PanelIFACE.__init__(self, parent)
self.panel = VerticalPanel()
self.panel.setBorderWidth(1)
self.panel.setWidth("100%")
# prepare panel
self.prepareReduce = HTML("<tt> .. none yet .. </tt>", True, )
self.recipeList = ListBox()
self.recipeList.addChangeListener(getattr(self, "onRecipeSelected"))
self.recipeList.addItem("None")
HTTPRequest().asyncGet("recipes.xml",
RecipeListLoader(self))
#EO prepare panel
self.reduceCLPanel = DockPanel(Spacing = 5)
self.reduceCLPanel.add(HTML("<i>Reduce Command Line</i>:"), DockPanel.NORTH)
self.reduceCLPanel.add(self.prepareReduce, DockPanel.NORTH)
self.reduceFilesPanel = DockPanel(Spacing = 5)
self.reduceFilesPanel.add(HTML("<b>Datasets</b>:"), DockPanel.WEST)
self.reduceFiles = ListBox()
self.reduceFiles.setVisibleItemCount(5)
self.reduceFilesPanel.add(self.reduceFiles, DockPanel.WEST)
self.clearReduceFilesButton = Button("<b>Clear List</b>", listener = getattr(self, "onClearReduceFiles"))
self.reduceFilesPanel.add(self.clearReduceFilesButton, DockPanel.SOUTH)
self.recipeListPanel = DockPanel(Spacing = 5)
self.recipeListPanel.add(HTML("<b>Recipes List</b>:"),DockPanel.WEST)
self.recipeListPanel.add(self.recipeList, DockPanel.WEST)
self.runReduceButton = Button("<b>RUN REDUCE</b>", listener = getattr(self, "onRunReduce"))
self.adInfo = HTML("file info...")
# major sub panels
self.panel.add(self.reduceCLPanel)
self.panel.add(self.reduceFilesPanel)
self.panel.add(self.recipeListPanel)
self.panel.add(self.runReduceButton)
self.panel.add(self.adInfo)
def onRecipeSelected(self, event):
self.updateReduceCL()
def onClearReduceFiles(self, event):
self.reduceFiles.clear()
self.adInfo.setHTML("file info...")
self.updateReduceCL()
def updateReduceCL(self):
recipe = self.recipeList.getItemText(self.recipeList.getSelectedIndex())
if recipe=="None":
rstr = ""
else:
rstr = "-r "+recipe
rfiles = []
for i in range(0, self.reduceFiles.getItemCount()):
fname = self.reduceFiles.getItemText(i)
rfiles.append(fname)
filesstr = " ".join(rfiles)
self.prepareReduce.setHTML('<b>reduce</b> %(recipe)s %(files)s' %
{ "recipe":rstr,
"files":filesstr})
def onRunReduce(self):
recipe = self.recipeList.getItemText(self.recipeList.getSelectedIndex())
if recipe=="None":
rstr = ""
else:
rstr = "p=-r"+recipe
rfiles = []
for i in range(0, self.reduceFiles.getItemCount()):
fname = self.reduceFiles.getItemText(i)
rfiles.append(quote(self.pathdict[fname]["path"]))
filesstr = "&p=".join(rfiles)
cl = "/runreduce?%s&p=%s" % (rstr, filesstr)
# @@TEST
# cl = "/recipes.xml"
if False:
msg = repr(self.parent)+repr(dir(self.parent))
JS("alert(msg)")
if hasattr(self.parent, "roFrame"):
self.parent.roFrame.setUrl(cl)
self.parent.tabPanel.selectTab(self.parent.tabIFACEdict["rogui"])
else:
JS("window.open(cl)")
def onTreeItemSelected(self, item):
pathdict = self.pathdict
tfile = item.getText()
#check if already in
#.........这里部分代码省略.........