def __init__(self, app): super(FeatureGrid, self).__init__() self._app = app self._grid = CssLayout() self.setSizeFull() self.setScrollable(True) self.setContent(self._grid) self.setStyleName(Reindeer.PANEL_LIGHT) self._grid.setStyleName('grid')
def __init__(self): super(DragDropHtml5FromDesktopExample, self).__init__() self.addComponent( Label('Drag text from desktop application or ' 'image files from the ' + 'file system to the drop box ' 'below (dragging files requires HTML5 capable browser ' 'like FF 3.6, Safari or Chrome)')) dropPane = CssLayout() dropPane.setWidth('200px') dropPane.setHeight('200px') dropPane.addStyleName('image-drop-pane') dropBox = ImageDropBox(dropPane, self) dropBox.setSizeUndefined() panel = Panel(dropBox) panel.setSizeUndefined() panel.addStyleName('no-vertical-drag-hints') panel.addStyleName('no-horizontal-drag-hints') self.addComponent(panel) self._progress = ProgressIndicator() self._progress.setIndeterminate(True) self._progress.setVisible(False) self.addComponent(self._progress)
def __init__(self): super(DragDropHtml5FromDesktopExample, self).__init__() self.addComponent(Label('Drag text from desktop application or ' 'image files from the ' + 'file system to the drop box ' 'below (dragging files requires HTML5 capable browser ' 'like FF 3.6, Safari or Chrome)')) dropPane = CssLayout() dropPane.setWidth('200px') dropPane.setHeight('200px') dropPane.addStyleName('image-drop-pane') dropBox = ImageDropBox(dropPane, self) dropBox.setSizeUndefined() panel = Panel(dropBox) panel.setSizeUndefined() panel.addStyleName('no-vertical-drag-hints') panel.addStyleName('no-horizontal-drag-hints') self.addComponent(panel) self._progress = ProgressIndicator() self._progress.setIndeterminate(True) self._progress.setVisible(False) self.addComponent(self._progress)
def setFeatureContainer(self, c): self._grid.removeAllComponents() features = c.getItemIds() rootSet = CssLayout() rootTitle = None highlightRow = CssLayout() highlightRow.setStyleName('highlight-row') sampleCount = 0 for f in features: if isinstance(f, FeatureSet): if c.isRoot(f): if rootTitle is not None: rootTitle.setValue(('<em>' + str(sampleCount) + ' samples</em>' + rootTitle.getValue())) sampleCount = 0 desc = f.getDescription() try: idx = desc.index(".") except ValueError: idx = -1 rootTitle = Label("<h2>" + f.getName() + "</h2><span>" + desc[:idx + 1] + "</span>", Label.CONTENT_XHTML) rootTitle.setSizeUndefined() if f.getRelatedFeatures() is not None: rootTitle.setValue('<em>' + len(f.getRelatedFeatures()) + ' samples</em>' + rootTitle.getValue()) rootSet = CssLayout() rootSet.setStyleName('root') rootTitle.setStyleName('root-section') self._grid.addComponent(rootTitle) self._grid.addComponent(rootSet) else: sampleCount += 1 resId = '75-' + f.getIconName() res = self._app.getSampleIcon(resId) if rootSet.getParent() is None: # This sample is directly inside a non root feature # set, we present these with higher priority if rootTitle is None: parent = self._app._allFeatures.getParent(f) rootTitle = Label("<h2>" + parent.getName() + "</h2>", Label.CONTENT_XHTML) rootTitle.setStyleName('root-section highlights-title') rootTitle.setSizeUndefined() self._grid.addComponent(rootTitle) if parent.getDescription() is not None: desc = Label(parent.getDescription(), Label.CONTENT_XHTML) desc.setStyleName('highlights-description') desc.setSizeUndefined() self._grid.addComponent(desc) # Two samples per row if sampleCount % 2 == 1: highlightRow = CssLayout() highlightRow.setStyleName('highlight-row') self._grid.addComponent(highlightRow) l = CssLayout() l.setStyleName('highlight') er = ExternalResource('#' + f.getFragmentName()) sample = ActiveLink(f.getName(), er) sample.setIcon(res) # if f.getSinceVersion().isNew(): # sample.addStyleName('new') l.addComponent(sample) if (f.getDescription() is not None and f.getDescription() != ''): d = f.getDescription() desc = Label(d[:d.index(".") + 1], Label.CONTENT_XHTML) desc.setSizeUndefined() l.addComponent(desc) highlightRow.addComponent(l) else: sample = ActiveLink(f.getName(), ExternalResource('#' + f.getFragmentName())) sample.setStyleName(BaseTheme.BUTTON_LINK) sample.addStyleName('screenshot') if (f.getDescription() is not None and f.getDescription() != ''): desc = f.getDescription() try: idx = desc.index('.') except ValueError: idx = -1 sample.setDescription(desc[:idx + 1]) # if f.getSinceVersion().isNew(): # sample.addStyleName('new') sample.setIcon(res) rootSet.addComponent(sample) if rootTitle is not None: rootTitle.setValue('<em>' + str(sampleCount) + ' samples</em>' + rootTitle.getValue())
def __init__(self, app): super(SamplerWindow, self).__init__() self._app = app self._currentList = FeatureGrid(self._app) self._featureView = FeatureView() self._currentFeature = ObjectProperty(None, Feature) self._mainSplit = None self._navigationTree = None # self._webAnalytics = GoogleAnalytics('UA-658457-6', 'none') # "backbutton" self._uriFragmentUtility = UriFragmentUtility() # breadcrumbs self._breadcrumbs = BreadCrumbs(self) self._previousSample = None self._nextSample = None self._search = None self.theme = None # Main top/expanded-bottom layout mainExpand = VerticalLayout() self.setContent(mainExpand) self.setSizeFull() mainExpand.setSizeFull() self.setCaption(self._TITLE) self.setTheme(self._app._currentApplicationTheme) # topbar (navigation) nav = HorizontalLayout() mainExpand.addComponent(nav) nav.setHeight('44px') nav.setWidth('100%') nav.setStyleName('topbar') nav.setSpacing(True) nav.setMargin(False, True, False, False) # Upper left logo logo = self.createLogo() nav.addComponent(logo) nav.setComponentAlignment(logo, Alignment.MIDDLE_LEFT) # Breadcrumbs nav.addComponent(self._breadcrumbs) nav.setExpandRatio(self._breadcrumbs, 1) nav.setComponentAlignment(self._breadcrumbs, Alignment.MIDDLE_LEFT) # invisible analytics -component # nav.addComponent(self._webAnalytics) # "backbutton" nav.addComponent(self._uriFragmentUtility) self._uriFragmentUtility.addListener(UriListener(self), IFragmentChangedListener) # Main left/right split; hidden menu tree self._mainSplit = HorizontalSplitPanel() self._mainSplit.setSizeFull() self._mainSplit.setStyleName('main-split') mainExpand.addComponent(self._mainSplit) mainExpand.setExpandRatio(self._mainSplit, 1) # Select theme themeSelect = self.createThemeSelect() nav.addComponent(themeSelect) nav.setComponentAlignment(themeSelect, Alignment.MIDDLE_LEFT) # Layouts for top area buttons quicknav = HorizontalLayout() arrows = HorizontalLayout() nav.addComponent(quicknav) nav.addComponent(arrows) nav.setComponentAlignment(quicknav, Alignment.MIDDLE_LEFT) nav.setComponentAlignment(arrows, Alignment.MIDDLE_LEFT) quicknav.setStyleName('segment') arrows.setStyleName('segment') # Previous sample self._previousSample = self.createPrevButton() arrows.addComponent(self._previousSample) # Next sample self._nextSample = self.createNextButton() arrows.addComponent(self._nextSample) # "Search" combobox searchComponent = self.createSearch() quicknav.addComponent(searchComponent) # Menu tree, initially shown menuLayout = CssLayout() allSamples = ActiveLink('All Samples', ExternalResource('#')) menuLayout.addComponent(allSamples) self._navigationTree = self.createMenuTree() menuLayout.addComponent(self._navigationTree) self._mainSplit.setFirstComponent(menuLayout) # Show / hide tree treeSwitch = self.createTreeSwitch() quicknav.addComponent(treeSwitch) self.addListener(WindowCloseListener(self, self._app), window.ICloseListener) self.updateFeatureList(self._currentList)
def setFeatureContainer(self, c): self._grid.removeAllComponents() features = c.getItemIds() rootSet = CssLayout() rootTitle = None highlightRow = CssLayout() highlightRow.setStyleName('highlight-row') sampleCount = 0 for f in features: if isinstance(f, FeatureSet): if c.isRoot(f): if rootTitle is not None: rootTitle.setValue( ('<em>' + str(sampleCount) + ' samples</em>' + rootTitle.getValue())) sampleCount = 0 desc = f.getDescription() try: idx = desc.index(".") except ValueError: idx = -1 rootTitle = Label( "<h2>" + f.getName() + "</h2><span>" + desc[:idx + 1] + "</span>", Label.CONTENT_XHTML) rootTitle.setSizeUndefined() if f.getRelatedFeatures() is not None: rootTitle.setValue('<em>' + len(f.getRelatedFeatures()) + ' samples</em>' + rootTitle.getValue()) rootSet = CssLayout() rootSet.setStyleName('root') rootTitle.setStyleName('root-section') self._grid.addComponent(rootTitle) self._grid.addComponent(rootSet) else: sampleCount += 1 resId = '75-' + f.getIconName() res = self._app.getSampleIcon(resId) if rootSet.getParent() is None: # This sample is directly inside a non root feature # set, we present these with higher priority if rootTitle is None: parent = self._app._allFeatures.getParent(f) rootTitle = Label("<h2>" + parent.getName() + "</h2>", Label.CONTENT_XHTML) rootTitle.setStyleName('root-section highlights-title') rootTitle.setSizeUndefined() self._grid.addComponent(rootTitle) if parent.getDescription() is not None: desc = Label(parent.getDescription(), Label.CONTENT_XHTML) desc.setStyleName('highlights-description') desc.setSizeUndefined() self._grid.addComponent(desc) # Two samples per row if sampleCount % 2 == 1: highlightRow = CssLayout() highlightRow.setStyleName('highlight-row') self._grid.addComponent(highlightRow) l = CssLayout() l.setStyleName('highlight') er = ExternalResource('#' + f.getFragmentName()) sample = ActiveLink(f.getName(), er) sample.setIcon(res) # if f.getSinceVersion().isNew(): # sample.addStyleName('new') l.addComponent(sample) if (f.getDescription() is not None and f.getDescription() != ''): d = f.getDescription() desc = Label(d[:d.index(".") + 1], Label.CONTENT_XHTML) desc.setSizeUndefined() l.addComponent(desc) highlightRow.addComponent(l) else: sample = ActiveLink( f.getName(), ExternalResource('#' + f.getFragmentName())) sample.setStyleName(BaseTheme.BUTTON_LINK) sample.addStyleName('screenshot') if (f.getDescription() is not None and f.getDescription() != ''): desc = f.getDescription() try: idx = desc.index('.') except ValueError: idx = -1 sample.setDescription(desc[:idx + 1]) # if f.getSinceVersion().isNew(): # sample.addStyleName('new') sample.setIcon(res) rootSet.addComponent(sample) if rootTitle is not None: rootTitle.setValue('<em>' + str(sampleCount) + ' samples</em>' + rootTitle.getValue())