class HelpAboutDlg(DialogBox): def __init__(self, left = 50, top = 50): try: DialogBox.__init__(self, modal = False) self.setPopupPosition(left, top) self.dockPanel = DockPanel() self.dockPanel.setSpacing(4) self.setText("About") msg = HTML("""\ This is an example application, which uses PureMVC<br/> <br/> """, True) self.dockPanel.add(msg, DockPanel.CENTER) self.closeBtn = Button("Close", self) self.dockPanel.add(self.closeBtn, DockPanel.SOUTH) self.setWidget(self.dockPanel) except: raise def onClick(self, sender): self.hide()
def onModuleLoad(self): dock = DockPanel(Width="100%") self.header = HTML(Width="100%", Height="220px") self.footer = HTML(Width="100%") self.sidebar = HTML(Width="200px", Height="100%", StyleName="sidebar") self.fTabs = DecoratedTabPanel(Size=("100%", "100%"), StyleName="tabs") #dp = DecoratorTitledPanel("Tabs", "bluetitle", "bluetitleicon", # ["bluetop", "bluetop2", "bluemiddle", "bluebottom"]) #dp.add(self.fTabs) dock.add(self.header, DockPanel.NORTH) dock.add(self.footer, DockPanel.SOUTH) dock.add(self.sidebar, DockPanel.EAST) dock.add(self.fTabs, DockPanel.CENTER) dock.setCellVerticalAlignment(self.fTabs, HasAlignment.ALIGN_TOP) #dock.setCellHorizontalAlignment(self.fTabs, HasAlignment.ALIGN_CENTER) dock.setCellWidth(self.header, "100%") dock.setCellHeight(self.header, "220px") dock.setCellWidth(self.footer, "100%") dock.setCellWidth(self.sidebar, "200px") RootPanel().add(dock) self.dock = dock self.loadPageList() Window.addWindowResizeListener(self) DeferredCommand.add(self)
class WebApp: def onModuleLoad(self): self.remote = DataService() #Show the initial screen. initToken = History.getToken() if initToken and len(initToken): if initToken == 'admin': RootPanel().add(WebPageEdit(self)) return else: initToken = 'index' self.dock = DockPanel() self.dock.setWidth("100%") self.pages = {} self.current_page = None RootPanel().add(self.dock) History.addHistoryListener(self) self.onHistoryChanged(initToken) def createPage(self, ref, html, title): htp = HTMLLinkPanel(html) htp.replaceLinks() htp.setWidth("100%") self.pages[ref] = htp def onHistoryChanged(self, token): #log.writebr("onHistoryChanged %s" % token) if self.pages.has_key(token): self.setPage(token) return self.remote.getPageByName(token, self) def setPage(self, ref): htp = self.pages[ref] if htp == self.current_page: return Window.setTitle(htp.title) if self.current_page: self.dock.remove(self.current_page) self.dock.add(htp, DockPanel.CENTER) self.current_page = htp def onRemoteResponse(self, response, request_info): if (request_info.method == 'getPageByName' or request_info.method == 'getPage'): item = response[0] html = item['fields']['text'] token = item['fields']['name'] self.createPage(token, html, token) self.setPage(token) def onRemoteError(self, code, message, request_info): RootPanel().add( HTML("Server Error or Invalid Response: ERROR " + str(code) + " - " + str(message)))
class HelpAboutDlg(DialogBox): def __init__(self, left=50, top=50): try: DialogBox.__init__(self, modal=False) self.setPopupPosition(left, top) self.dockPanel = DockPanel() self.dockPanel.setSpacing(4) self.setText("About") msg = HTML( """\ This is an example application, which uses PureMVC<br/> <br/> """, True) self.dockPanel.add(msg, DockPanel.CENTER) self.closeBtn = Button("Close", self) self.dockPanel.add(self.closeBtn, DockPanel.SOUTH) self.setWidget(self.dockPanel) except: raise def onClick(self, sender): self.hide()
class DockPanelTest(UnitTest1): def testDockAdd(self): self.d = DockPanel() RootPanel('tests').add(self.d) self.write_test_output('adddockpanel') if not RootPanel('tests').remove(self.d): self.fail("DockPanel added but apparently not owned by RootPanel()") self.write_test_output('removedockpanel') def testDockAddCentre(self): self.d = DockPanel() RootPanel('tests').add(self.d) l = Label("Hello World (label)", StyleName='teststyle') self.d.add(l, DockPanel.CENTER) self.write_test_output('addcentrelabel') self.d.remove(l) self.write_test_output('removecentrelabel') l2 = Label("Hello World 2 (label)", StyleName='teststyle') self.d.add(l2, DockPanel.CENTER) self.write_test_output('addcentrelabel2') if not RootPanel('tests').remove(self.d): self.fail("DockPanel added but apparently not owned by RootPanel()") self.write_test_output('removedock')
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)
class DisplayPanel(Composite): def __init__(self, owner): Composite.__init__(self) self.owner = owner self.bar = DockPanel() self.timer_msg = HTML(" timer: ") self.timer = TimeDisplay() self.timer_panel = HorizontalPanel() self.timer_panel.add(self.timer_msg) self.timer_panel.add(self.timer) self.counter_msg = HTML(" total moves: ") self.counter = HTML("0") self.counter_panel = HorizontalPanel() self.counter_panel.add(self.counter_msg) self.counter_panel.add(self.counter) self.initWidget(self.bar) self.bar.add(self.timer_panel, DockPanel.WEST) self.bar.add(self.counter_panel, DockPanel.EAST) self.setStyleName("Puzzle-DisplayPanel") def incrCount(self): count = self.counter.getText() count = int(count) + 1 self.counter.setText(count) def reset(self): self.timer.setDisplay(0, 0, 0) self.counter.setText("0")
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") self.sp = ScrollPanel(self.sinkContainer) #self.sp = VerticalSplitPanel() self.sp.setWidth("100%") self.sp.setHeight("100%") #self.sp.setTopWidget(self.sinkContainer) #self.sp.setBottomWidget(self.nf) #self.sp.setSplitPosition(10000) # deliberately high - max out. vp = VerticalPanel() vp.setWidth("99%") vp.setHeight("100%") vp.add(self.description) vp.add(self.sp) authors = [("2008, 2009", "Kenneth Casson Leighton", "*****@*****.**")] for years, name, email in authors: authors_html = \ '© %s <a href="mailto:%s">%s</a><br />' %\ (years, email, name) authors_panel = HTML() authors_panel.setStyleName("ks-Authors") authors_panel.setHTML(authors_html[:-6]) left_panel = DockPanel(Height="100%") left_panel.add(self.sink_list, DockPanel.NORTH) left_panel.add(authors_panel, DockPanel.SOUTH) self.description.setStyleName("ks-Intro") self.panel.add(left_panel, 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) self.onWindowResized(Window.getClientWidth(), Window.getClientHeight())
class DockPanelTest(UnitTest1): def testDockAdd(self): self.d = DockPanel() RootPanel('tests').add(self.d) self.write_test_output('adddockpanel') if not RootPanel('tests').remove(self.d): self.fail( "DockPanel added but apparently not owned by RootPanel()") self.write_test_output('removedockpanel') def testDockAddCentre(self): self.d = DockPanel() RootPanel('tests').add(self.d) l = Label("Hello World (label)", StyleName='teststyle') self.d.add(l, DockPanel.CENTER) self.write_test_output('addcentrelabel') self.d.remove(l) self.write_test_output('removecentrelabel') l2 = Label("Hello World 2 (label)", StyleName='teststyle') self.d.add(l2, DockPanel.CENTER) self.write_test_output('addcentrelabel2') if not RootPanel('tests').remove(self.d): self.fail( "DockPanel added but apparently not owned by RootPanel()") self.write_test_output('removedock')
class WebApp: def onModuleLoad(self): self.remote = DataService() #Show the initial screen. initToken = History.getToken() if initToken and len(initToken): if initToken == 'admin': RootPanel().add(WebPageEdit(self)) return else: initToken = 'index' self.dock = DockPanel() self.dock.setWidth("100%") self.pages = {} self.current_page = None RootPanel().add(self.dock) History.addHistoryListener(self) self.onHistoryChanged(initToken) def createPage(self, ref, html, title): htp = HTMLLinkPanel(html) htp.replaceLinks() htp.setWidth("100%") self.pages[ref] = htp def onHistoryChanged(self, token): #log.debug("onHistoryChanged %s" % token) if self.pages.has_key(token): self.setPage(token) return self.remote.getPageByName(token, self) def setPage(self, ref): htp = self.pages[ref] if htp == self.current_page: return Window.setTitle(htp.title) if self.current_page: self.dock.remove(self.current_page) self.dock.add(htp, DockPanel.CENTER) self.current_page = htp def onRemoteResponse(self, response, request_info): if (request_info.method == 'getPageByName' or request_info.method == 'getPage'): item = response[0] html = item['fields']['text'] token = item['fields']['name'] self.createPage(token, html, token) self.setPage(token) def onRemoteError(self, code, message, request_info): RootPanel().add(HTML("Server Error or Invalid Response: ERROR " + str(code) + " - " + str(message)))
def __init__(self, operations,after,type='rel'): DialogWindow.__init__(self, modal=True, close=True) self.formula = Formula([]) self.after=after left = 100 top = 100 self.ops_with_buttons = [{"op": op, "button": Button(op.name, self)} for op in operations if op.available] dock = DockPanel() dock.setSpacing(3) for owb in self.ops_with_buttons: dock.add(owb['button'], DockPanel.NORTH) dock.setWidth("300") self.image = Image(latex_to_url(self.formula.fill_with_placeholders().to_latex())) dock.add(self.image, DockPanel.EAST) dock.setCellHorizontalAlignment(self.image, HasAlignment.ALIGN_TOP) self.doneButton=Button("Done",self) self.doneButton.setEnabled(False) dock.add(self.doneButton,DockPanel.SOUTH) dock.add(HTML(""),DockPanel.CENTER) self.setText("opkop") self.setPopupPosition(left, top) self.setStyleAttribute("background-color", "#ffffff") self.setStyleAttribute("color", "blue") self.setStyleAttribute("border-width", "5px") self.setStyleAttribute("border-style", "solid") self.setWidget(dock)
def __init__(self, sink): SimplePanel.__init__(self) self.sink = sink self.caption = HTML() self.child = None self.showing = False self.dragging = False self.dragStartX = 0 self.dragStartY = 0 self.panel = FlexTable() self.collapse = Image("./images/cancel.png") self.collapse.addClickListener(self) dock = DockPanel() dock.setSpacing(0) dock.add(self.collapse, DockPanel.EAST) dock.add(self.caption, DockPanel.WEST) dock.setCellHorizontalAlignment(self.collapse, HasAlignment.ALIGN_RIGHT) dock.setCellVerticalAlignment(self.collapse, HasAlignment.ALIGN_TOP) dock.setCellHorizontalAlignment(self.caption, HasAlignment.ALIGN_LEFT) dock.setCellWidth(self.caption, "100%") dock.setWidth("100%") dock.setHeight("100%") self.panel.setWidget(0, 0, dock) self.panel.setHeight("100%") self.panel.setWidth("100%") self.panel.setBorderWidth(0) self.panel.setCellPadding(0) self.panel.setCellSpacing(0) self.panel.getCellFormatter().setHeight(1, 0, "100%") self.panel.getCellFormatter().setWidth(1, 0, "100%") self.panel.getCellFormatter().setAlignment( 1, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP) SimplePanel.setWidget(self, self.panel) self.setStyleName("gwt-DialogBox") self.caption.setStyleName("Caption") self.collapse.setStyleName("Close") dock.setStyleName("Header") #self.caption.addMouseListener(self) self.collapsed = False self.collapsed_width = "15px" self.uncollapsed_width = "100%"
class DynaTableWidget(Composite): def __init__(self, provider, columns, columnStyles, rowCount): Composite.__init__(self) self.acceptor = RowDataAcceptorImpl(self) self.outer = DockPanel() self.startRow = 0 self.grid = Grid() self.navbar = NavBar(self) self.provider = provider self.initWidget(self.outer) self.grid.setStyleName("table") self.outer.add(self.navbar, DockPanel.NORTH) self.outer.add(self.grid, DockPanel.CENTER) self.initTable(columns, columnStyles, rowCount) self.setStyleName("DynaTable-DynaTableWidget") def initTable(self, columns, columnStyles, rowCount): self.grid.resize(rowCount + 1, len(columns)) for i in range(len(columns)): self.grid.setText(0, i, columns[i]) if columnStyles: self.grid.cellFormatter.setStyleName( 0, i, columnStyles[i] + "header") def setStatusText(self, text): self.navbar.status.setText(text) def clearStatusText(self, text): self.navbar.status.setHTML(" ") def refresh(self): self.navbar.gotoFirst.setEnabled(False) self.navbar.gotoPrev.setEnabled(False) self.navbar.gotoNext.setEnabled(False) self.setStatusText("Please wait...") self.provider.updateRowData(self.startRow, self.grid.getRowCount() - 1, self.acceptor) def setRowCount(self, rows): self.grid.resizeRows(rows) def getDataRowCount(self): return self.grid.getRowCount() - 1
def __init__(self, sink): SimplePanel.__init__(self) self.sink = sink self.caption = HTML() self.child = None self.showing = False self.dragging = False self.dragStartX = 0 self.dragStartY = 0 self.panel = FlexTable() self.collapse = Image("./images/cancel.png") self.collapse.addClickListener(self) dock = DockPanel() dock.setSpacing(0) dock.add(self.collapse, DockPanel.EAST) dock.add(self.caption, DockPanel.WEST) dock.setCellHorizontalAlignment(self.collapse, HasAlignment.ALIGN_RIGHT) dock.setCellVerticalAlignment(self.collapse, HasAlignment.ALIGN_TOP) dock.setCellHorizontalAlignment(self.caption, HasAlignment.ALIGN_LEFT) dock.setCellWidth(self.caption, "100%") dock.setWidth("100%") dock.setHeight("100%") self.panel.setWidget(0, 0, dock) self.panel.setHeight("100%") self.panel.setWidth("100%") self.panel.setBorderWidth(0) self.panel.setCellPadding(0) self.panel.setCellSpacing(0) self.panel.getCellFormatter().setHeight(1, 0, "100%") self.panel.getCellFormatter().setWidth(1, 0, "100%") self.panel.getCellFormatter().setAlignment(1, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP) SimplePanel.setWidget(self, self.panel) self.setStyleName("gwt-DialogBox") self.caption.setStyleName("Caption") self.collapse.setStyleName("Close") dock.setStyleName("Header") #self.caption.addMouseListener(self) self.collapsed = False self.collapsed_width = "15px" self.uncollapsed_width = "100%"
class DynaTableWidget(Composite): def __init__(self, provider, columns, columnStyles, rowCount): Composite.__init__(self) self.acceptor = RowDataAcceptorImpl(self) self.outer = DockPanel() self.startRow = 0 self.grid = Grid() self.navbar = NavBar(self) self.provider = provider self.initWidget(self.outer) self.grid.setStyleName("table") self.outer.add(self.navbar, DockPanel.NORTH) self.outer.add(self.grid, DockPanel.CENTER) self.initTable(columns, columnStyles, rowCount) self.setStyleName("DynaTable-DynaTableWidget") def initTable(self, columns, columnStyles, rowCount): self.grid.resize(rowCount + 1, len(columns)) for i in range(len(columns)): self.grid.setText(0, i, columns[i]) if columnStyles: self.grid.cellFormatter.setStyleName(0, i, columnStyles[i] + "header") def setStatusText(self, text): self.navbar.status.setText(text) def clearStatusText(self, text): self.navbar.status.setHTML(" ") def refresh(self): self.navbar.gotoFirst.setEnabled(False) self.navbar.gotoPrev.setEnabled(False) self.navbar.gotoNext.setEnabled(False) self.setStatusText("Please wait...") self.provider.updateRowData(self.startRow, self.grid.getRowCount() - 1, self.acceptor) def setRowCount(self, rows): self.grid.resizeRows(rows) def getDataRowCount(self): return self.grid.getRowCount() - 1
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.treePanel = ScrollPanel() self.treePanel.setSize("100%", str( int( Window.getClientHeight()*.75 ) )+"px") Window.addWindowResizeListener(self) self.treePanel.add(self.fTree) dock.add(self.treePanel, DockPanel.WEST) #self.treePanel.setBorderWidth(1) #self.treePanel.setWidth("100%") prPanel = self.createRightPanel() dock.add(prPanel,DockPanel.EAST) dock.setCellWidth(self.treePanel, "50%") dock.setCellWidth(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 __init__(self, name, html): DialogBox.__init__(self) self.setText(name) closeButton = Button("Close", self) htp = HTMLPanel(html) self.sp = ScrollPanel(htp) dock = DockPanel() dock.setSpacing(4) dock.add(closeButton, DockPanel.SOUTH) dock.add(self.sp, DockPanel.CENTER) dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(self.sp, "100%") dock.setWidth("100%") self.setWidget(dock)
def __init__(self, identifier, autoHide=None, modal=False, rootpanel=None): PopupPanel.__init__(self, autoHide, modal, rootpanel) self.identifier = identifier self.caption = HTML() self.child = None self.showing = False self.dragging = False self.dragStartX = 0 self.dragStartY = 0 self.panel = FlexTable() self.closeButton = Image('cancel.png') self.closeButton.addClickListener(self) dock = DockPanel() dock.setSpacing(0) dock.add(self.closeButton, DockPanel.EAST) dock.add(self.caption, DockPanel.WEST) dock.setCellHorizontalAlignment(self.closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellHorizontalAlignment(self.caption, HasAlignment.ALIGN_LEFT) dock.setCellWidth(self.caption, '100%') dock.setWidth('100%') self.panel.setWidget(0, 0, dock) self.panel.setHeight('100%') self.panel.setBorderWidth(0) self.panel.setCellPadding(0) self.panel.setCellSpacing(0) self.panel.getCellFormatter().setHeight(1, 0, '100%') self.panel.getCellFormatter().setWidth(1, 0, '100%') #self.panel.getCellFormatter().setAlignment(1, 0, # HasHorizontalAlignment.ALIGN_CENTER, # HasVerticalAlignment.ALIGN_MIDDLE) PopupPanel.setWidget(self, self.panel) self.setStyleName('gwt-DialogBox') self.caption.setStyleName('Caption') self.closeButton.setStyleName('Close') dock.setStyleName('Header') self.caption.addMouseListener(self)
class NavBar(Composite): def __init__(self, owner): Composite.__init__(self) self.owner = owner self.bar = DockPanel() self.gotoFirst = Button("<<", self) self.gotoNext = Button(">", self) self.gotoPrev = Button("<", self) self.status = HTML() self.initWidget(self.bar) self.bar.setStyleName("navbar") self.status.setStyleName("status") buttons = HorizontalPanel() buttons.add(self.gotoFirst) buttons.add(self.gotoPrev) buttons.add(self.gotoNext) self.bar.add(buttons, DockPanel.EAST) self.bar.setCellHorizontalAlignment(buttons, HasAlignment.ALIGN_RIGHT) self.bar.add(self.status, DockPanel.CENTER) self.bar.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE) self.bar.setCellHorizontalAlignment(self.status, HasAlignment.ALIGN_RIGHT) self.bar.setCellVerticalAlignment(self.status, HasAlignment.ALIGN_MIDDLE) self.bar.setCellWidth(self.status, "100%") self.gotoPrev.setEnabled(False) self.gotoFirst.setEnabled(False) def onClick(self, sender): if sender == self.gotoNext: self.owner.startRow += self.owner.getDataRowCount() self.owner.refresh() elif sender == self.gotoPrev: self.owner.startRow -= self.owner.getDataRowCount() if self.owner.startRow < 0: self.owner.startRow = 0 self.owner.refresh() elif sender == self.gotoFirst: self.owner.startRow = 0 self.owner.refresh()
def __init__(self): Composite.__init__(self) panel = DockPanel(HorizontalAlignment=HasAlignment.ALIGN_CENTER, VerticalAlignment=HasAlignment.ALIGN_MIDDLE) panel.setWidth("100%") vp = VerticalPanel() grid = FlexTable(CellPadding=4, CellSpacing=4) hp = HorizontalPanel() handle_n = NextHandle(self) handle_f = FinishHandle(self) handle_c = ClearHandle(self) self.next = Button("Next", handle_n, StyleName='button') self.finish = Button("Finish!", handle_f, StyleName='button') self.clear = Button("Clear", handle_c, StyleName='button') hp.add(self.clear) hp.add(self.finish) hp.add(self.next) hp.setWidth("70%") vp.add(Label("Content-Based Image Retrieval Using OPF", StyleName='label')) vp.add(grid) vp.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT) vp.add(hp) cols = 4 for i in range(100): im = Image('images/cbir/%d.jpg' % random.randint(0, 1000), Size=("200px", "150px"), StyleName='image-cool') grid.setWidget(int(i/cols), i%cols, im) panel.add(vp, DockPanel.CENTER) self.initWidget(panel) self.status = Label() vp.add(self.status)
class PopupFrame(DialogBoxModal): def __init__(self, identifier, title, iframe): if modal_popups.has_key(identifier): return modal_popups[identifier] = self DialogBoxModal.__init__(self, identifier) self.setText(title) self.iframe = iframe #closeButton = Button("Close", self) #msg = HTML("<center>IFRAME:</center>", True) self.iframe.setStyleName("gwt-DialogFrame") self.dock = DockPanel() self.dock.setSpacing(4) #dock.add(closeButton, DockPanel.SOUTH) #dock.add(msg, DockPanel.NORTH) self.dock.add(self.iframe, DockPanel.CENTER) #dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) self.dock.setCellWidth(self.iframe, "100%") self.dock.setWidth("100%") #self.iframe.setWidth("320px") #self.iframe.setHeight("200px") self.setWidget(self.dock) def setUrl(self, url): self.iframe.setUrl(url) def onClick(self, sender): self.hide() def set_width(self, width): self.iframe.setWidth("%dpx" % width) def set_height(self, height): self.iframe.setHeight("%dpx" % height)
def __init__(self, identifier, autoHide=None, modal=False, rootpanel=None): PopupPanel.__init__(self, autoHide, modal, rootpanel) self.identifier = identifier self.caption = HTML() self.child = None self.showing = False self.dragging = False self.dragStartX = 0 self.dragStartY = 0 self.panel = FlexTable() self.closeButton = Image("images/cancel.png") self.closeButton.addClickListener(self) dock = DockPanel() dock.setSpacing(0) dock.add(self.closeButton, DockPanel.EAST) dock.add(self.caption, DockPanel.WEST) dock.setCellHorizontalAlignment(self.closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellHorizontalAlignment(self.caption, HasAlignment.ALIGN_LEFT) dock.setCellWidth(self.caption, "100%") dock.setWidth("100%") self.panel.setWidget(0, 0, dock) self.panel.setHeight("100%") self.panel.setBorderWidth(0) self.panel.setCellPadding(0) self.panel.setCellSpacing(0) self.panel.getCellFormatter().setHeight(1, 0, "100%") self.panel.getCellFormatter().setWidth(1, 0, "100%") #self.panel.getCellFormatter().setAlignment(1, 0, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_MIDDLE) PopupPanel.setWidget(self, self.panel) self.setStyleName("gwt-DialogBox") self.caption.setStyleName("Caption") self.closeButton.setStyleName("Close") dock.setStyleName("Header") self.caption.addMouseListener(self)
def __init__(self, baseURL): DialogWindow.__init__( self, modal=False, minimize=True, maximize=True, close=True, ) closeButton = Button("Close", self) imgname = self.images.pop(0) self.images.append(imgname) self.setText("Sample DialogWindow with embedded image") img = Image("%srembrandt/%s" % (baseURL, imgname)) msg = HTML( "<center>This is an example of a standard dialog box component.<br> You can put pretty much anything you like into it,<br>such as the following image '%s':</center>" % imgname, True) dock = DockPanel() dock.setSpacing(4) dock.add(closeButton, DockPanel.SOUTH) dock.add(msg, DockPanel.NORTH) dock.add(img, DockPanel.CENTER) dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(img, "100%") dock.setWidth("100%") self.setWidget(dock)
def __init__(self, baseURL): DialogBox.__init__(self, glass=True) self.setText("Sample DialogBox with embedded Frame") iframe = Frame(baseURL + "rembrandt/LaMarcheNocturne.html") closeButton = Button("Close", self) msg = HTML( "<center>This is an example of a standard dialog box component.<br> You can put pretty much anything you like into it,<br>such as the following IFRAME:</center>", True) dock = DockPanel() dock.setSpacing(4) dock.add(closeButton, DockPanel.SOUTH) dock.add(msg, DockPanel.NORTH) dock.add(iframe, DockPanel.CENTER) dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(iframe, "100%") dock.setWidth("100%") iframe.setWidth("36em") iframe.setHeight("20em") self.setWidget(dock) # Work around for IE/MSHTML Issue 511 self.initURL = iframe.getUrl() self.iframe = iframe
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)
def __init__(self, app): self.app = app DialogWindow.__init__( self, modal=False, minimize=True, maximize=True, close=True, ) self.closeButton = Button("Close", self) self.saveButton = Button("Save", self) self.setText("Sample DialogWindow with embedded image") self.msg = HTML("", True) global _editor_id _editor_id += 1 editor_id = "editor%d" % _editor_id #self.ht = HTML("", ID=editor_id) self.txt = TextArea(Text="", VisibleLines=30, CharacterWidth=80, ID=editor_id) dock = DockPanel() dock.setSpacing(4) hp = HorizontalPanel(Spacing="5") hp.add(self.saveButton) hp.add(self.closeButton) dock.add(hp, DockPanel.SOUTH) dock.add(self.msg, DockPanel.NORTH) dock.add(self.txt, DockPanel.CENTER) dock.setCellHorizontalAlignment(hp, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(self.txt, "100%") dock.setWidth("100%") self.setWidget(dock) self.editor_id = editor_id self.editor_created = False
def __init__(self, baseURL): DialogBox.__init__(self, glass=True) self.setText("Sample DialogBox with embedded Frame") iframe = Frame(baseURL + "rembrandt/LaMarcheNocturne.html") closeButton = Button("Close", self) msg = HTML("<center>This is an example of a standard dialog box component.<br> You can put pretty much anything you like into it,<br>such as the following IFRAME:</center>", True) dock = DockPanel() dock.setSpacing(4) dock.add(closeButton, DockPanel.SOUTH) dock.add(msg, DockPanel.NORTH) dock.add(iframe, DockPanel.CENTER) dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(iframe, "100%") dock.setWidth("100%") iframe.setWidth("36em") iframe.setHeight("20em") self.setWidget(dock) # Work around for IE/MSHTML Issue 511 self.initURL = iframe.getUrl() self.iframe = iframe
class HelpContentsDlg(DialogBox): def __init__(self, left = 50, top = 50): try: DialogBox.__init__(self, modal = False) self.setPopupPosition(left, top) self.dockPanel = DockPanel() self.dockPanel.setSpacing(4) self.setText("Help Contents") self.setWidth('80%') msg = HTML("""\ <h2>Introduction</h2> This application can be used to maintain a timesheet. <p/> On startup, it tries to open the last opened timesheet. <p/> There are two modes: Edit and Summary (see menu). In edit mode the user can enter/modify his timescheet. There's some inteligence built in. The 'From' is filled in automatically when the previous line has a 'To'. The 'To' can be filled in as time span, or as end-time. The 'Project' is mandatory (as the 'From' and 'To' are). The user can walk around with the cursor keys. <h2>Opening and saving sheets</h2> The sheet can be loaded and saved from a local file. There might be some issues with Firefox, which might refuse access to the document in an iframe. <br/> """, True) self.dockPanel.add(msg, DockPanel.CENTER) self.closeBtn = Button("Close", self) self.dockPanel.add(self.closeBtn, DockPanel.SOUTH) self.setWidget(self.dockPanel) except: raise def onClick(self, sender): self.hide()
class HelpContentsDlg(DialogBox): def __init__(self, left=50, top=50): try: DialogBox.__init__(self, modal=False) self.setPopupPosition(left, top) self.dockPanel = DockPanel() self.dockPanel.setSpacing(4) self.setText("Help Contents") self.setWidth('80%') msg = HTML( """\ <h2>Introduction</h2> This application can be used to maintain a timesheet. <p/> On startup, it tries to open the last opened timesheet. <p/> There are two modes: Edit and Summary (see menu). In edit mode the user can enter/modify his timescheet. There's some inteligence built in. The 'From' is filled in automatically when the previous line has a 'To'. The 'To' can be filled in as time span, or as end-time. The 'Project' is mandatory (as the 'From' and 'To' are). The user can walk around with the cursor keys. <h2>Opening and saving sheets</h2> The sheet can be loaded and saved from a local file. There might be some issues with Firefox, which might refuse access to the document in an iframe. <br/> """, True) self.dockPanel.add(msg, DockPanel.CENTER) self.closeBtn = Button("Close", self) self.dockPanel.add(self.closeBtn, DockPanel.SOUTH) self.setWidget(self.dockPanel) except: raise def onClick(self, sender): self.hide()
class gmTopLevelLayer: def onModuleLoad(self): GMWevents.init_events() GMWevents.events.addLoginListener(self) # want to receive onLogin self.TEXT_ERROR = "Server Error" self.loginpanel = cLoginPanel() # fires logged out on UI load self.afterloginpanel = cMainPanel() self.maindisplay = DockPanel( HorizontalAlignment=HasAlignment.ALIGN_CENTER, VerticalAlignment=HasAlignment.ALIGN_MIDDLE, BorderWidth=1, Padding=8, Width="100%") RootPanel().add(self.maindisplay) def onLogin(self, sender, username, logged_in): if logged_in: self.logged_in(username) else: self.logged_out() def logged_out(self): self.login_username = None self.loginpanel.setStatus("") # reset status display if self.maindisplay.center is not None: self.maindisplay.remove(self.afterloginpanel.getPanel()) self.maindisplay.add(self.loginpanel.getPanel(), DockPanel.CENTER) def logged_in(self, username): self.login_username = username if self.maindisplay.center is not None: self.maindisplay.remove(self.loginpanel.getPanel()) self.maindisplay.add(self.afterloginpanel.getPanel(), DockPanel.CENTER)
def __init__(self): SimplePanel.__init__(self) panel = DockPanel(BorderWidth=1, Padding=8, HorizontalAlignment=HasAlignment.ALIGN_CENTER, VerticalAlignment=HasAlignment.ALIGN_MIDDLE) north = Label("North") west = Label("West") center = Label("Center") east = Label("East") south = Label("South") panel.add(north, DockPanel.NORTH) panel.add(west, DockPanel.WEST) panel.add(center, DockPanel.CENTER) panel.add(east, DockPanel.EAST) panel.add(south, DockPanel.SOUTH) panel.setCellHeight(center, "200px") panel.setCellWidth(center, "400px") self.add(panel)
class LoginWindow (DialogBox, ZillaWindow): def __init__ (self, **kwargs): ZillaWindow.__init__(self, kwargs) DialogBox.__init__(self, kwargs) self.dockPanel = DockPanel() self.dockPanel.setSpacing(4) self.setText ("Logowanie") hpanel1 = HorizontalPanel() login = TextBox() login.setText("Login") #hpanel1.add(login) passwd = TextBox() passwd.setText("Hasło") self.dockPanel.add(login, DockPanel.NORTH) self.dockPanel.add(passwd, DockPanel.NORTH) #hpanel1.add(passwd) #self.add(hpanel1) self.add(login) self.add(passwd) def login(self): return True def join_game (self): return True def quit (self): return True
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", " ")
class LoginWindow(DialogBox, ZillaWindow): def __init__(self, **kwargs): ZillaWindow.__init__(self, kwargs) DialogBox.__init__(self, kwargs) self.dockPanel = DockPanel() self.dockPanel.setSpacing(4) self.setText("Logowanie") hpanel1 = HorizontalPanel() login = TextBox() login.setText("Login") #hpanel1.add(login) passwd = TextBox() passwd.setText("Hasło") self.dockPanel.add(login, DockPanel.NORTH) self.dockPanel.add(passwd, DockPanel.NORTH) #hpanel1.add(passwd) #self.add(hpanel1) self.add(login) self.add(passwd) def login(self): return True def join_game(self): return True def quit(self): return True
def onModuleLoad(self): self.singleton = self topPanel = TopPanel() rightPanel = VerticalPanel() self.mailDetail = MailDetail() self.shortcuts = Shortcuts() topPanel.setWidth("100%") # MailList uses Mail.get() in its constructor, so initialize it after # 'singleton'. mailList = MailList(self.singleton) mailList.setWidth("100%") # Create the right panel, containing the email list & details. rightPanel.add(mailList) rightPanel.add(self.mailDetail) mailList.setWidth("100%") self.mailDetail.setWidth("100%") # Create a dock panel that will contain the menu bar at the top, # the shortcuts to the left, and the mail list & details taking the rest. outer = DockPanel() outer.add(topPanel, DockPanel.NORTH) outer.add(self.shortcuts, DockPanel.WEST) outer.add(rightPanel, DockPanel.CENTER) outer.setWidth("100%") outer.setSpacing(4) outer.setCellWidth(rightPanel, "100%") # Hook the window resize event, so that we can adjust the UI. #FIXME need implementation # Window.addWindowResizeListener(this) Window.addWindowResizeListener(self) # Get rid of scrollbars, and clear out the window's built-in margin, # because we want to take advantage of the entire client area. Window.enableScrolling(False) Window.setMargin("0px") # Finally, add the outer panel to the RootPanel, so that it will be # displayed. #RootPanel.get().add(outer) # FIXME get# RootPanel().add(outer) RootPanel().add(Logger()) # Call the window resized handler to get the initial sizes setup. Doing # this in a deferred command causes it to occur after all widgets' sizes # have been computed by the browser. DeferredCommand.add(self)
class AppFrame(object): userForm = None userList = None rolePanel = None def __init__(self): self.panel = DockPanel() self.userList = UserList(self) self.userForm = UserForm(self) self.rolePanel = RolePanel(self) self.panel.add(self.userList, DockPanel.NORTH) self.panel.add(self.userForm, DockPanel.WEST) self.panel.add(self.rolePanel, DockPanel.EAST) RootPanel().add(self.panel) self.Show() def Show(self): pass
def __init__(self, url): DialogBox.__init__(self) self.setText("Upload Files") iframe = Frame(url) closeButton = Button("Close", self) msg = HTML("<center>Upload files, here. Please avoid spaces in file names.<br />(rename the file before uploading)</center>", True) dock = DockPanel() dock.setSpacing(4) dock.add(closeButton, DockPanel.SOUTH) dock.add(msg, DockPanel.NORTH) dock.add(iframe, DockPanel.CENTER) dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(iframe, "100%") dock.setWidth("100%") iframe.setWidth("800px") iframe.setHeight("600px") self.setWidget(dock)
def __init__(self, baseURL): DialogWindow.__init__( self, modal=False, minimize=True, maximize=True, close=True, ) closeButton = Button("Close", self) imgname = self.images.pop(0) self.images.append(imgname) self.setText("Sample DialogWindow with embedded image") img = Image("%srembrandt/%s" % (baseURL, imgname)) msg = HTML("<center>This is an example of a standard dialog box component.<br> You can put pretty much anything you like into it,<br>such as the following image '%s':</center>" % imgname, True) dock = DockPanel() dock.setSpacing(4) dock.add(closeButton, DockPanel.SOUTH) dock.add(msg, DockPanel.NORTH) dock.add(img, DockPanel.CENTER) dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(img, "100%") dock.setWidth("100%") self.setWidget(dock)
def __init__(self, url): DialogBox.__init__(self) self.setText("Upload Files") iframe = Frame(url) closeButton = Button("Close", self) msg = HTML( "<center>Upload files, here. Please avoid spaces in file names.<br />(rename the file before uploading)</center>", True) dock = DockPanel() dock.setSpacing(4) dock.add(closeButton, DockPanel.SOUTH) dock.add(msg, DockPanel.NORTH) dock.add(iframe, DockPanel.CENTER) dock.setCellHorizontalAlignment(closeButton, HasAlignment.ALIGN_RIGHT) dock.setCellWidth(iframe, "100%") dock.setWidth("100%") iframe.setWidth("800px") iframe.setHeight("600px") self.setWidget(dock)
def __init__(self): DialogBox.__init__(self) # Use this opportunity to set the dialog's caption. self.setText("About the Mail Sample") # Create a DockPanel to contain the 'about' label and the 'OK' button. outer = DockPanel() outer.setSpacing(4) outer.add(Image(AboutDialog.LOGO_IMAGE), DockPanel.WEST) # Create the 'OK' button, along with a listener that hides the dialog # when the button is clicked. Adding it to the 'south' position within # the dock causes it to be placed at the bottom. buttonPanel = HorizontalPanel() buttonPanel.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT) buttonPanel.add(Button("Close", self)) outer.add(buttonPanel, DockPanel.SOUTH) # Create the 'about' label. Placing it in the 'rest' position within the # dock causes it to take up any remaining space after the 'OK' button # has been laid out. textplain = "This sample application demonstrates the construction " textplain += "of a complex user interface using pyjamas' built-in widgets. Have a look " textplain += "at the code to see how easy it is to build your own apps!" text = HTML(textplain) text.setStyleName("mail-AboutText") outer.add(text, DockPanel.CENTER) # Add a bit of spacing and margin to the dock to keep the components from # being placed too closely together. outer.setSpacing(8) self.setWidget(outer)
class Bookreader: def onHistoryChanged(self, token): info = self.sink_list.find(token) if info: self.show(info, False) else: self.showInfo() def onModuleLoad(self): section = Window.getLocation().getSearchVar("section") if not section: self.loadChapters() else: loadSection(section) 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") self.sp = ScrollPanel(self.sinkContainer) #self.sp = VerticalSplitPanel() self.sp.setWidth("100%") self.sp.setHeight("100%") #self.sp.setTopWidget(self.sinkContainer) #self.sp.setBottomWidget(self.nf) #self.sp.setSplitPosition(10000) # deliberately high - max out. vp = VerticalPanel() vp.setWidth("99%") vp.setHeight("100%") vp.add(self.description) vp.add(self.sp) authors = [("2008, 2009", "Kenneth Casson Leighton", "*****@*****.**")] for years, name, email in authors: authors_html = \ '© %s <a href="mailto:%s">%s</a><br />' %\ (years, email, name) authors_panel = HTML() authors_panel.setStyleName("ks-Authors") authors_panel.setHTML(authors_html[:-6]) left_panel = DockPanel(Height="100%") left_panel.add(self.sink_list, DockPanel.NORTH) left_panel.add(authors_panel, DockPanel.SOUTH) self.description.setStyleName("ks-Intro") self.panel.add(left_panel, 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) self.onWindowResized(Window.getClientWidth(), Window.getClientHeight()) def onWindowResized(self, width, height): self.panel.setWidth(width - 20) self.sink_list.resize(width - 20, height - 130) self.sp.setHeight("%dpx" % (height - 130)) def show(self, info, affectHistory): if info == self.curInfo: return self.curInfo = info #Logger.write("showing " + info.getName()) if self.curSink is not None: self.curSink.onHide() #Logger.write("removing " + self.curSink) self.sinkContainer.remove(self.curSink) self.curSink = info.getInstance() self.sink_list.setSinkSelection(info.getName()) self.sink_list.sp.setScrollPosition(0) self.sink_list.sp.setHorizontalScrollPosition(0) self.description.setHTML(info.getDescription()) if (affectHistory): History().newItem(info.getName()) self.sinkContainer.add(self.curSink, DockPanel.CENTER) self.sinkContainer.setCellWidth(self.curSink, "100%") self.sinkContainer.setCellHeight(self.curSink, "100%") self.sinkContainer.setCellVerticalAlignment(self.curSink, HasAlignment.ALIGN_TOP) self.curSink.onShow() def loadSinks(self): HTTPRequest().asyncGet("contents.txt", ChapterListLoader(self)) def setChapters(self, chapters): for l in chapters: name = l[0] desc = l[1] self.sink_list.addSink(Chapter.init(name, desc)) #Show the initial screen. initToken = History.getToken() if len(initToken): self.onHistoryChanged(initToken) else: self.showInfo() def showInfo(self): self.show(self.sink_list.sinks[0], False)
def indent(contents, all=None, left=None, right=None, top=None, bottom=None, hIndent=None, vIndent=None): """ Add a wrapper around the given contents to indent it. The parameters are as follows: 'contents' The contents to indent. This should be a widget or a panel. 'all' The indent to use for all four sides. This is the first argument, allowing you to call indent(c, 20) to indent the contents on all sides by the same amount. 'left' The left indent to use. 'right' The right indent to use. 'top' The top indent to use. 'bottom' The bottom indent to use. 'hIndent' The indent to use for the left and right sides. 'vIndent' The indent to use for the top and bottom. The contents will be wrapped in a panel which include whitespace on each side of the panel as specified. Upon completion, we return a Panel object contained the wrapped-up contents. """ if all is not None: left = all right = all top = all bottom = all if hIndent is not None: left = hIndent right = hIndent if vIndent is not None: top = vIndent bottom = vIndent wrapper = DockPanel() wrapper.setSpacing(0) wrapper.add(contents, DockPanel.CENTER) if left > 0: padding = Whitespace(width=left) wrapper.add(padding, DockPanel.WEST) if top > 0: padding = Whitespace(height=top) wrapper.add(padding, DockPanel.NORTH) if right > 0: padding = Whitespace(width=right) wrapper.add(padding, DockPanel.EAST) if bottom > 0: padding = Whitespace(height=bottom) wrapper.add(padding, DockPanel.SOUTH) return wrapper
class MLAlgorithms: def onHistoryChanged(self, token): log.writebr("onHistoryChanged: %s" % token) info = self.Algorithm_list.find(token) if info is not None: self.show(info, False) else: self.showInfo() def onModuleLoad(self): self.curInfo = '' self.curAlgorithm = None self.description = HTML() self.Algorithm_list = AlgorithmList() self.panel = DockPanel() self.loadAlgorithms() self.AlgorithmContainer = DockPanel() self.AlgorithmContainer.setStyleName("ks-Algorithm") vp = VerticalPanel() vp.setWidth("100%") vp.add(self.description) vp.add(self.AlgorithmContainer) self.description.setStyleName("ks-Info") self.panel.add(self.Algorithm_list, DockPanel.WEST) self.panel.add(vp, DockPanel.CENTER) self.panel.setCellVerticalAlignment(self.Algorithm_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() def show(self, info, affectHistory): if info == self.curInfo: return self.curInfo = info log.writebr("showing " + info.getName()) if self.curAlgorithm is not None: log.writebr("removing " + str(self.curAlgorithm)) self.curAlgorithm.onHide() self.AlgorithmContainer.remove(self.curAlgorithm) self.curAlgorithm = info.getInstance() self.Algorithm_list.setAlgorithmSelection(info.getName()) self.description.setHTML(info.getDescription()) if (affectHistory): History.newItem(info.getName()) self.AlgorithmContainer.add(self.curAlgorithm, DockPanel.CENTER) self.AlgorithmContainer.setCellWidth(self.curAlgorithm, "100%") self.AlgorithmContainer.setCellHeight(self.curAlgorithm, "100%") self.AlgorithmContainer.setCellVerticalAlignment( self.curAlgorithm, HasAlignment.ALIGN_TOP) self.curAlgorithm.onShow() def loadAlgorithms(self): self.Algorithm_list.addAlgorithm(Info.init()) self.Algorithm_list.addAlgorithm(kMeans.init()) def showInfo(self): self.show(self.Algorithm_list.find("Info"), False)
def __init__(self): Algorithm.__init__(self) self.MLAlgorithmService = MLAlgorithmService(self) self.image = Image(self.baseURL() + "services/kMeansPictures/lenna.png", Width="320px", Height="360px") self.resultImage = Image("", Width="320px", Height="360px") self.loadingImage = Image(self.baseURL() + "images/blanksearching.gif") self.calculateButton = Button("RUN", self.onButtonClick) self.log = Button("SHOW LOG", self.openLogFile) self.log.setEnabled(False) self.image.addLoadListener(self) topPanel = DockPanel() topPanel.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE) topPanel.add(self.calculateButton, DockPanel.WEST) topPanel.add(self.loadingImage, DockPanel.CENTER) topPanel.add(self.log, DockPanel.EAST) panel = DockPanel() panel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER) panel.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE) #panel.add(HTML("<h2>Image compression</h2>", True)) panel.add(topPanel, DockPanel.NORTH) panel.add(self.image, DockPanel.WEST) panel.add(self.resultImage, DockPanel.EAST) panel.setWidth("100%") self.initWidget(panel) self.image.setStyleName("ks-images-Image") self.calculateButton.setStyleName("ks-images-Button") self.loadImage("picturem.png")
class AddonsGallery: def onHistoryChanged(self, token): info = self.sink_list.find(token) if info: self.show(info, False) else: self.showIntro() 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) initToken = History.getToken() if len(initToken): self.onHistoryChanged(initToken) else: self.showIntro() def show(self, info, affectHistory=None): if info == self.curInfo: return self.curInfo = info if self.curSink <> None: self.curSink.onHide() self.sinkContainer.remove(self.curSink) self.curSink = info.getInstance() self.sink_list.setSinkSelection(info.getName()) self.description.setHTML(info.getDescription()) if (affectHistory): History.newItem(info.getName()) self.sinkContainer.add(self.curSink, DockPanel.CENTER) self.sinkContainer.setCellWidth(self.curSink, "100%") self.sinkContainer.setCellHeight(self.curSink, "100%") self.sinkContainer.setCellVerticalAlignment(self.curSink, HasAlignment.ALIGN_TOP) self.curSink.onShow() def loadSinks(self): self.sink_list.addSink(IntroTab.init()) self.sink_list.addSink(TooltipTab.init()) self.sink_list.addSink(AutoCompleteTab.init()) self.sink_list.addSink(CanvasTab.init()) def showIntro(self): self.show(self.sink_list.find("Intro"))
class FileOpenDlg(DialogBox): files = None def __init__(self, left = 50, top = 50, fileLocation = None): global has_getAsText try: DialogBox.__init__(self, modal = False) self.filename = None self.data = None self.setPopupPosition(left, top) self.dockPanel = DockPanel() self.dockPanel.setSpacing(4) self.setText("File Open") if not fileLocation is None: msg = HTML("Loading file...", True) self.dockPanel.add(msg, DockPanel.NORTH) location = fileLocation if fileLocation.find("://") < 0: base = Window.getLocation().getHref() if base.find('/') >= 0: sep = '/' else: sep = '\\' base = sep.join(base.split(sep)[:-1]) + sep location = base + fileLocation self.iframe = Frame(location) self.dockPanel.add(self.iframe, DockPanel.CENTER) else: msg = HTML("Choose a file", True) self.browseFile = FileUpload() elem = self.browseFile.getElement() if False and has_getAsText and hasattr(elem, 'files'): self.iframe = None self.files = elem.files self.dockPanel.add(self.browseFile, DockPanel.CENTER) else: self.browseFile = None self.files = None base = '' + doc().location if base.find('/') >= 0: sep = '/' else: sep = '\\' if not base.lower()[:5] == "file:": base = "file:///C:/" msg = HTML("You'll have to place the application on a local file system, otherwise the browser forbids access.", True) else: base = sep.join(base.split(sep)[:-1]) + sep self.iframe = Frame(base) self.dockPanel.add(self.iframe, DockPanel.CENTER) self.dockPanel.add(msg, DockPanel.NORTH) if self.iframe: self.iframe.setWidth("36em") hpanel = HorizontalPanel() self.openBtn = Button("Open", self.onClickOpen) hpanel.add(self.openBtn) self.cancelBtn = Button("Cancel", self.onClickCancel) hpanel.add(self.cancelBtn) self.dockPanel.add(hpanel, DockPanel.SOUTH) self.setWidget(self.dockPanel) except: raise def onClickCancel(self, sender): self.hide() def onClickOpen(self, sender): global has_getAsText data = None filename = None if self.files: if self.files.length == 0: return if self.files.length > 1: alert("Cannot open more than one file") return file = self.files.item(0) filename = file.fileName try: data = file.getAsText("") except AttributeError, e: has_getAsText = False alert("Sorry. cannot retrieve file in this browser.\nTry again.") else:
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") self.sp = ScrollPanel(self.sinkContainer) #self.sp = VerticalSplitPanel() self.sp.setWidth("100%") self.sp.setHeight("100%") #self.sp.setTopWidget(self.sinkContainer) #self.sp.setBottomWidget(self.nf) #self.sp.setSplitPosition(10000) # deliberately high - max out. vp = VerticalPanel() vp.setWidth("99%") vp.setHeight("100%") vp.add(self.description) vp.add(self.sp) authors = [ ("2008, 2009", "Kenneth Casson Leighton", "*****@*****.**") ] for years, name, email in authors: authors_html = \ '© %s <a href="mailto:%s">%s</a><br />' %\ (years, email, name) authors_panel = HTML() authors_panel.setStyleName("ks-Authors") authors_panel.setHTML(authors_html[:-6]) left_panel = DockPanel(Height="100%") left_panel.add(self.sink_list, DockPanel.NORTH) left_panel.add(authors_panel, DockPanel.SOUTH) self.description.setStyleName("ks-Intro") self.panel.add(left_panel, 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) self.onWindowResized(Window.getClientWidth(), Window.getClientHeight())
def onModuleLoad(self): loggedInUser = getCookie("LoggedInUser") loggedInUserJsonData = json.loads(loggedInUser) self.username = loggedInUserJsonData["username"] self.remote_py = MyBlogService() dockPanel = DockPanel(BorderWidth=0, Padding=0, HorizontalAlignment=HasAlignment.ALIGN_CENTER, VerticalAlignment=HasAlignment.ALIGN_MIDDLE) dockPanel.setSize('100%', '100%') headerDockPanel = DockPanel( BorderWidth=0, Padding=0, HorizontalAlignment=HasAlignment.ALIGN_LEFT, VerticalAlignment=HasAlignment.ALIGN_CENTER) headerDockPanel.setStyleName('header') headerDockPanel.setWidth('100%') dockPanel.add(headerDockPanel, DockPanel.NORTH) dockPanel.setCellHeight(headerDockPanel, '60px') self.siteImage = Image("/images/Testware_logo.png") self.siteImage.setStyleName('logo-image') headerDockPanel.add(self.siteImage, DockPanel.WEST) headerDockPanel.setCellWidth(self.siteImage, '30%') self.pageTitle = Label('New Blog') self.pageTitle.setStyleName('center-header') headerDockPanel.add(self.pageTitle, DockPanel.CENTER) headerDockPanel.setCellWidth(self.pageTitle, '40%') rightHeaderPanel = VerticalPanel(StyleName='right-header') headerDockPanel.add(rightHeaderPanel, DockPanel.EAST) headerDockPanel.setCellWidth(rightHeaderPanel, '30%') welcomeNoteLabel = Label('Hi %s %s!' % (loggedInUserJsonData["first_name"], loggedInUserJsonData["last_name"])) rightHeaderPanel.add(welcomeNoteLabel) logoutAnchor = Anchor(Widget=HTML('Logout'), Href='/', Title='Logout') logoutAnchor.setStyleName('logout') rightHeaderPanel.add(logoutAnchor) panel = HorizontalPanel(StyleName="header2") dockPanel.add(panel, DockPanel.NORTH) dockPanel.setCellHeight(panel, '50px') self.blogTitle = TextBox() self.blogTitle.setStyleName('blog-title') self.blogTitle.setPlaceholder("Blog Title") panel.add(self.blogTitle) self.blogContent = TextArea() self.blogContent.setStyleName('blog-content') dockPanel.add(self.blogContent, DockPanel.CENTER) createBlogButton = Button("Create Blog", self) createBlogButton.setStyleName('btn') panel.add(createBlogButton) RootPanel().add(dockPanel)
class RichTextEditor(Composite): def run(self): try: self.getSelection() rng = Selection.getRange() if (self.m_timerRange is None) or (not self.m_timerRange.equals(rng)): self.onSelectionChange(rng) self.m_timerRange = rng except: GWT.log("Error in timer selection", ex) def __init__(self): Composite.__init__(self) self.m_isInText = False self.m_lastText = "" self.trigger = False self.m_lastRange = None # Timer for trying real time selection change stuff self.m_timerRange = None self.m_selTimer = Timer() self.m_mainPanel = DockPanel() self.m_toolbarPanel = HorizontalPanel() self.m_toolbarPanel.setWidth("100%") self.m_toolbarPanel.setHeight("25px") self.m_toolbarPanel.setBorderWidth(1) self.m_toolbarPanel.addStyleName("timeline-RichTextToolbar") self.m_textW = RichTextArea() self.m_textW.addClickListener(self) self.m_textW.addKeyboardListener(self) self.m_textW.addFocusListener(self) self.m_textW.addMouseListener(self) # According to gwt doc, these do need to be set because this is a frame self.m_textW.setHeight("100%") self.m_textW.setWidth("100%") # Add buttons self.m_formatter = self.getFormatter() self.m_boldW = self.addToggleButton(self.m_toolbarPanel, Icons.bold_icon, "Bold") self.m_italicW = self.addToggleButton(self.m_toolbarPanel, Icons.italics_icon, "Italic") self.m_underlineW = self.addToggleButton(self.m_toolbarPanel, Icons.underline_icon, "Underline") self.m_subscriptW = self.addToggleButton(self.m_toolbarPanel, Icons.subscript_icon, "Subscript") self.m_superscriptW = self.addToggleButton(self.m_toolbarPanel, Icons.superscript_icon, "Superscript") self.m_strikethroughW = self.addToggleButton(self.m_toolbarPanel, Icons.strikethrough_icon, "Strikethrough") self.m_indentW = self.addPushButton(self.m_toolbarPanel, Icons.indentmore_icon, "Indent Right") self.m_outdentW = self.addPushButton(self.m_toolbarPanel, Icons.indentless_icon, "Indent Left") self.m_justifyLeftW = self.addPushButton(self.m_toolbarPanel, Icons.justifyleft_icon, "Justify Left") self.m_justifyCenterW = self.addPushButton(self.m_toolbarPanel, Icons.justifycenter_icon, "Justify Center") self.m_justifyRightW = self.addPushButton(self.m_toolbarPanel, Icons.justifyright_icon, "Justify Right") self.m_hrW = self.addPushButton(self.m_toolbarPanel, Icons.horizontalrule_icon, "Horizontal Rule") self.m_olW = self.addPushButton(self.m_toolbarPanel, Icons.numberedlist_icon, "Numbered List") self.m_ulW = self.addPushButton(self.m_toolbarPanel, Icons.list_icon, "List") self.m_newLinkW = self.addPushButton(self.m_toolbarPanel, Icons.link_icon, "Link Document") self.m_removeFormatW = self.addPushButton(self.m_toolbarPanel, Icons.noformat_icon, "No Format") self.m_mainPanel.add(self.m_toolbarPanel, DockPanel.NORTH) self.m_mainPanel.add(self.m_textW, DockPanel.CENTER) self.initWidget(self.m_mainPanel) self.sinkEvents(Event.ONCLICK) def getFormatter(self): return self.m_textW.getExtendedFormatter() def getRichTextArea(self): return self.m_textW def addPushButton(self, panel, imagep, tip): img = Image(imagep) img.setWidth("20px") img.setHeight("20px") pb = PushButton(img) self.addAnyButton(panel, pb, tip) return pb def addToggleButton(self, panel, imagep, tip): img = Image(imagep) img.setWidth("20px") img.setHeight("20px") tb = ToggleButton(img) self.addAnyButton(panel, tb, tip) return tb def addAnyButton(self, panel, button, tip): button.addStyleName("richText-button") button.setTitle(tip) button.setWidth(BUTTON_WIDTH) button.setHeight("100%") panel.add(button) panel.setCellWidth(button, BUTTON_WIDTH) button.addClickListener(self) def onClick(self, sender): if sender == self.m_boldW: self.m_formatter.toggleBold() elif sender == self.m_italicW: self.m_formatter.toggleItalic() elif sender == self.m_underlineW: self.m_formatter.toggleUnderline() elif sender == self.m_subscriptW: self.m_formatter.toggleSubscript() elif sender == self.m_superscriptW: self.m_formatter.toggleSuperscript() elif sender == self.m_strikethroughW: self.m_formatter.toggleStrikethrough() elif sender == self.m_indentW: self.m_formatter.rightIndent() elif sender == self.m_outdentW: self.m_formatter.leftIndent() elif sender == self.m_justifyLeftW: self.m_formatter.setJustification(RichTextArea.Justification.LEFT) elif sender == self.m_justifyCenterW: self.m_formatter.setJustification( RichTextArea.Justification.CENTER) elif sender == self.m_justifyRightW: self.m_formatter.setJustification(RichTextArea.Justification.RIGHT) elif sender == self.m_hrW: self.m_formatter.insertHorizontalRule() elif sender == self.m_olW: self.m_formatter.insertOrderedList() elif sender == self.m_ulW: self.m_formatter.insertUnorderedList() elif sender == self.m_removeFormatW: self.m_formatter.removeFormat() elif sender == self.m_newLinkW: EventLinkPopup.open(self) elif sender == self.m_textW: self.updateStatus() self.checkForChange() def onKeyDown(self, sender, keycode, modifiers): pass def onKeyUp(self, sender, keycode, modifiers): if sender == self.m_textW: self.updateStatus() self.checkForChange() def onMouseLeave(self, event): pass def onMouseEnter(self, event): pass def onMouseUp(self, event, x, y): pass def onMouseMove(self, event, x, y): pass def onMouseDown(self, event, x, y): self.trigger = True def onFocus(self, event): pass def onLostFocus(self, event): self.checkForChange() def onMouseOut(self, event): if self.m_isInText and self.isOnTextBorder(event): self.m_isInText = False self.captureSelection() self.endSelTimer() def onMouseOver(self, event): if not self.m_isInText: self.m_isInText = True self.m_textW.setFocus(True) self.m_lastRange = None self.startSelTimer() """* * This captures the selection when the mouse leaves the RTE, because in IE * the selection indicating the cursor position is lost once another widget * gains focus. Could be implemented for IE only. """ def captureSelection(self): try: self.getSelection() self.m_lastRange = Selection.getRange() except: GWT.log("Error capturing selection for IE", ex) # Gets run every time the selection is changed def onSelectionChange(self, sel): pass def isOnTextBorder(self, event): sender = event.getSource() twX = self.m_textW.getAbsoluteLeft() twY = self.m_textW.getAbsoluteTop() x = event.getClientX() - twX y = event.getClientY() - twY width = self.m_textW.getOffsetWidth() height = self.m_textW.getOffsetHeight() return ((sender == self.m_textW) and ((x <= 0) or (x >= width) or (y <= 0) or (y >= height))) def startSelTimer(self): self.m_selTimer.scheduleRepeating(250) def endSelTimer(self): self.m_selTimer.cancel() def getRange(self): if self.m_lastRange is None: self.getSelection() return Selection.getRange() else: return self.m_lastRange def getSelection(self): res = None try: window = self.getWindow() Selection.getSelection(window) except: print "Error getting the selection" traceback.print_exc() def getWindow(self, iFrame=None): if iFrame is None: iFrame = self.m_textW.getElement() iFrameWin = iFrame.contentWindow or iFrame.contentDocument if not iFrameWin.document: iFrameWin = iFrameWin.parentNode # FBJS version of parentNode #print "getWindow", iFrameWin, dir(iFrameWin) return iFrameWin def getDocument(self): return Selection.getDocument(self.getWindow()) def setHtml(self, text): self.m_textW.setHTML(text) self.m_lastText = text def getHtml(self): return self.m_textW.getHTML() def checkForChange(self): text = self.m_textW.getHTML() if text != self.m_lastText: nEvt = doc().createEvent("HTMLEvents") nEvt.initEvent("change", False, True) self.getElement().dispatchEvent(nEvt) self.m_lastText = text # Update edit buttons based on current cursor location def updateStatus(self): if self.m_formatter is None: return self.m_boldW.setDown(self.m_formatter.isBold()) self.m_italicW.setDown(self.m_formatter.isItalic()) self.m_underlineW.setDown(self.m_formatter.isUnderlined()) self.m_subscriptW.setDown(self.m_formatter.isSubscript()) self.m_superscriptW.setDown(self.m_formatter.isSuperscript()) self.m_strikethroughW.setDown(self.m_formatter.isStrikethrough()) def addChangeHandler(self, handler): return addDomHandler(handler, ChangeEvent.getType())