def draw(self): if self.classIcon != "": self.icon = Element(Element=DOM.createElement("i"), StyleName=self.classIcon) self.add(self.icon) if self.rootPanel is None: self.popup = PopupPanel(autoHide=True, modal=False, rootpanel=self, StyleName='dropdown_btn') DOM.setStyleAttribute(self.popup.element, "position", "static") else: #o poup nao esta fechando! self.popup = PopupPanel(autoHide=True, modal=False, rootpanel=self.rootPanel, StyleName='dropdown_btn') self.dropdown_arrow = Element(Element=DOM.createElement('div'), StyleName='dropdown_arrow') self.title = Element(Element=DOM.createSpan(), StyleName='title') DOM.setInnerHTML(self.title.getElement(), self.text) self.add(self.title) self.add(Widget(Element=DOM.createDiv(), StyleName='r')) self.add(Widget(Element=DOM.createDiv(), StyleName='coverup')) self.popup.add(self.dropdown_arrow)
def onDragOver(self, event): target = DOM.eventGetTarget(event) t = Widget(Element=target) class_names = t.getStyleName() if class_names is not None: if 'drophere' in class_names: dt = event.dataTransfer id = Widget(Element=target).getID() drop_effect = self.data[int(id[-1])] dt.dropEffect = drop_effect DOM.eventPreventDefault(event)
def draw(self): Popup.draw(self) namePanel = HorizontalPanel() namePanel.add(Label(_('Name') + ':')) self.textBox = TextBox() self.textBox.setMaxLength(15) self.textBox.setStyleAttribute('marginLeft', 10) namePanel.add(self.textBox) self.center.add(namePanel) self.choose = ChooseTypeVarPanel() self.center.add(self.choose) self.textBox.addInputListener(self) self.message = Element(Element=DOM.createDiv()) self.message.add(Widget(Element=DOM.createDiv(), StyleName='not_image')) self.message.add( Label(text=_('Name already used'), wordWrap=False, StyleName='not_message')) self.onInput()
def onDragStart(self, event): dt = event.dataTransfer target = DOM.eventGetTarget(event) target = Widget(Element=target) id = target.getID() dt.setData("Text", "Dropped %s" % target.getID()) dt.effectAllowed = 'copy' if id == 'imgdrag1': parent = self.getParent() while not hasattr(parent, 'h2'): parent = parent.getParent() dt.setDragImage(parent.h2.getElement(), 10, 10) elif id == 'imgdrag2': dt.setDragImage(doc().getElementById('logo'), 10, 10) elif id == 'imgdrag3': # OK, it's a bit of a cheat, but the following works on current # Opera, IE, Firefox, Safari, Chrome. ctx = GWTCanvas(50, 50) self.makeCanvasImg(ctx) try: img = DOM.createImg() DOM.setAttribute(img, 'src', ctx.canvas.toDataURL()) dt.setDragImage(img, 25, 25) except: dt.setDragImage(ctx.canvas, 25, 25)
def onLoad(self): self.tabs = TabPanel(FlowTabBar()) self.tabs.getTabBar().addStyleName('shortcuts') self.tabs.getDeckPanel().addStyleName('blockDrawer') #------------------------------------------------------------------------------------------ self.input = CategoriesHardware.Input() self.tabs.add(self.input, CategoriesHardware.TabTitle(_('Input'), 'input_btn')) #------------------------------------------------------------------------------------------ self.output = CategoriesHardware.Output() self.tabs.add(self.output, CategoriesHardware.TabTitle(_('Output'), 'output_btn')) #------------------------------------------------------------------------------------------ self.tabs.selectTab(0) panel = Element(Element=DOM.createDiv(), Width='100%', Height='100%') panel.append(self.tabs) #------------------------------------------------------------------------------------------ self.trashCan = Widget(Element=DOM.createDiv(), StyleName='trashCanClose') panel.append(self.trashCan) self.add(panel) #------------------------------------------------------------------------------------------ bottom = Element(Element=DOM.createDiv(), StyleName='drawer_bottom') resize = ResizeWidget(self.parent, 200, 600) resize.addStyleName('float_right') bottom.append(resize) self.add(bottom) self.setCellHeight(bottom, '20px')
def show(self): if self.hasBackground: self.background = Widget(Element=DOM.createDiv(), StyleName='diaglog_coverup') self.background.setHeight(RootPanel().getOffsetHeight()) RootPanel().add(self.background) DialogBox.show(self)
def showInfo(self, sender): if sender.block.name in ['commandType', 'numericType', 'logicType', 'alphaNumericType']: createdBlocks[sender.block.varName].show() else: popup = Popup('<b>Ajuda</b>', None, None) popup.center.append(Widget(Element=DOM.createDiv(), StyleName=sender.classHelp)) popup.caption.setStyleAttribute('text-align', 'center') popup.show()
def draw(self): if self.classIcon != "": self.icon = Element(Element=DOM.createElement("i"), StyleName=self.classIcon) self.add(self.icon) self.title = Element(Element=DOM.createSpan(), StyleName='title') DOM.setInnerHTML(self.title.getElement(), self.text) self.add(self.title) self.add(Widget(Element=DOM.createDiv(), StyleName='r'))
def onDragOver(self, event): target = DOM.eventGetTarget(event) t = Widget(Element=target) dt = event.dataTransfer dt.dropEffect = 'copy' class_names = t.getStyleName() if class_names is not None: if 'drophere' in class_names: DOM.eventPreventDefault(event)
def onDragLeave(self, event): target = DOM.eventGetTarget(event) t = Widget(Element=target) try: class_names = t.getStyleName() except: class_names = None if class_names is not None: if 'drophere' in class_names: t.removeStyleName('dragover')
def draw(self): self.title = Element(Element=DOM.createSpan(), StyleName='title') DOM.setInnerHTML(self.title.getElement(), self.text) self.add(self.title) self.tip = PopupPanel(Element=DOM.createElement('code'), autoHide=True, modal=False, rootpanel=self) div = Element(Element=DOM.createElement('div'), StyleName='joyride-tip-guide') div.add(Widget(Element=DOM.createSpan(), StyleName='joyride-nub left')) self.tipItens = Element(Element=DOM.createElement('div'), StyleName='tip-itens') div.add(self.tipItens) self.tip.add(div)
def drawCompoundStatementBlock(s, color='orange', hasBn=True, loop=False): s.bn.addStyleName('i') s.bl.addStyleName('i') c = Element(Element=DOM.createDiv(), StyleName='c ' + color) bi = Widget(Element=DOM.createDiv(), StyleName='bi') ti = Widget(Element=DOM.createDiv(), StyleName='ti') s.code = Element(Element=DOM.createDiv(), StyleName='codeBlockContents ' + color) s.block = StatementElement(color, hasBn) s.block.addStyleName('codeBlockEnd') c.append(ti) c.append(s.code) s.block.append(bi) if loop: s.block.append(Widget(Element=DOM.createDiv(), StyleName='loop')) c.append(s.block) s.bl.append(c)
def onDragStart(self, event): target = DOM.eventGetTarget(event) dt = event.dataTransfer try: id = Widget(Element=target).getID() except: id = '' dt.setData("Text", "Dropped %s" % id) effect_allowed = self.data[int(id[-1])] dt.effectAllowed = effect_allowed
def onDragEnter(self, event): target = DOM.eventGetTarget(event) t = Widget(Element=target) try: class_names = t.getStyleName() except: class_names = None if class_names is not None: if 'drophere' in class_names: t.addStyleName('dragover') DOM.eventPreventDefault(event)
def onDrop(self, event): dt = event.dataTransfer text = dt.getData('Text') target = DOM.eventGetTarget(event) t = Widget(Element=target) class_names = t.getStyleName() DOM.eventPreventDefault(event) if class_names is not None: if 'drophere' in class_names: self.addMessage('%s onto %s' % (text, target.id)) return
def onLoad(self): self.tabs = TabPanel(FlowTabBar()) # self.tabs.getTabBar().addStyleName('shortcuts') === gwt-TabBar # self.tabs.getDeckPanel().addStyleName('blockDrawer') === gwt-TabPanelBottom{ #------------------------------------------------------------------------------------------ self.control = CategoriesBlock.Control() self.tabs.add(self.control, CategoriesBlock.TabTitle(_('Control'), 'control_btn')) #------------------------------------------------------------------------------------------ self.operators = CategoriesBlock.Operators() self.tabs.add( self.operators, CategoriesBlock.TabTitle(_('Operators'), 'operators_btn')) #------------------------------------------------------------------------------------------ self.input = CategoriesBlock.Input() self.tabs.add(self.input, CategoriesBlock.TabTitle(_('Input'), 'input_btn')) #------------------------------------------------------------------------------------------ self.output = CategoriesBlock.Output() self.tabs.add(self.output, CategoriesBlock.TabTitle(_('Output'), 'output_btn')) #------------------------------------------------------------------------------------------ self.utilities = CategoriesBlock.Setup() self.tabs.add(self.utilities, CategoriesBlock.TabTitle(_('Utilities'), 'config_btn')) #------------------------------------------------------------------------------------------ self.variables = CategoriesBlock.Variables() self.tabs.add( self.variables, CategoriesBlock.TabTitle(_('Variables'), 'variables_btn')) #------------------------------------------------------------------------------------------ self.tabs.selectTab(0) panel = Element(Element=DOM.createDiv(), Width='100%', Height='100%') panel.append(self.tabs) #------------------------------------------------------------------------------------------ self.trashCan = Widget(Element=DOM.createDiv(), StyleName='trashCanClose') panel.append(self.trashCan) self.add(panel) #------------------------------------------------------------------------------------------ bottom = Element(Element=DOM.createDiv(), StyleName='drawer_bottom') resize = ResizeWidget(self.parent, 200, 510) resize.addStyleName('float_right') bottom.append(resize) self.add(bottom) self.setCellHeight(bottom, '20px')
def drawNumberBlock(s, c, numOrStr='num'): s.addStyleName('variable ' + numOrStr + ' ' + c) tl = Widget(Element=DOM.createDiv(), StyleName='tl') t = Widget(Element=DOM.createDiv(), StyleName='t') tr = Widget(Element=DOM.createDiv(), StyleName='tr') s.l = Widget(Element=DOM.createDiv(), StyleName='l') s.r = Widget(Element=DOM.createDiv(), StyleName='r') b = Widget(Element=DOM.createDiv(), StyleName='b') br = Widget(Element=DOM.createDiv(), StyleName='br') bl = Widget(Element=DOM.createDiv(), StyleName='bl') s.append(tl) s.append(t) s.append(tr) s.append(s.l) s.append(s.r) s.append(b) s.append(br) s.append(bl)
def onDragStart(self, event): dt = event.dataTransfer target = DOM.eventGetTarget(event) target = Widget(Element=target) try: id = target.getID() except: id = '' if id == 'datadrag0': dt.setData('text/plain', 'Hello World!') elif id == 'datadrag1': logo = doc().getElementById('logo') logo_parent_element = DOM.getParent(logo) text = DOM.getInnerText(logo_parent_element) html = DOM.getInnerHTML(logo_parent_element) uri = DOM.getAttribute(logo, 'src') dt.setData('text/plain', text) dt.setData('text/html', html) dt.setData('text/uri-list', uri) elif id == 'datadrag2': dt.setData('x-star-trek/tribble', 'I am a tribble')
def drawBooleanBlock(s, c): s.addStyleName('variable bool '+c) s.tl = Widget(Element=DOM.createDiv(), StyleName='tl') t = Widget(Element=DOM.createDiv(), StyleName='t') s.tr = Widget(Element=DOM.createDiv(), StyleName='tr') b = Widget(Element=DOM.createDiv(), StyleName='b') s.br = Widget(Element=DOM.createDiv(), StyleName='br') s.bl = Widget(Element=DOM.createDiv(), StyleName='bl') s.append(s.tl) s.append(t) s.append(s.tr) s.append(b) s.append(s.br) s.append(s.bl)
def drawBooleanArgument(s): s.addStyleName('input bool') s.tl = Widget(Element=DOM.createDiv(), StyleName='tl') s.t = Widget(Element=DOM.createDiv(), StyleName='t') s.tr = Widget(Element=DOM.createDiv(), StyleName='tr') s.b = Widget(Element=DOM.createDiv(), StyleName='b') s.br = Widget(Element=DOM.createDiv(), StyleName='br') s.bl = Widget(Element=DOM.createDiv(), StyleName='bl') s.append(s.tl) s.append(s.t) s.append(s.tr) s.append(s.b) s.append(s.br) s.append(s.bl)
def drawStatementBlock(s, c, hasBn=True): s.addStyleName('statement ' + c) s.t = Widget(Element=DOM.createDiv(), StyleName='t') l = Widget(Element=DOM.createDiv(), StyleName='l') r = Widget(Element=DOM.createDiv(), StyleName='r') s.tl = Element(Element=DOM.createDiv(), StyleName='tl') s.tr = Widget(Element=DOM.createDiv(), StyleName='tr') #provisorio pra hat b = Widget(Element=DOM.createDiv(), StyleName='b') br = Widget(Element=DOM.createDiv(), StyleName='br') s.bl = Element(Element=DOM.createDiv(), StyleName='bl') s.append(s.t) s.append(l) s.append(r) s.append(s.tl) s.append(s.tr) s.append(b) s.append(br) if hasBn: s.bn = Widget(Element=DOM.createDiv(), StyleName='bn') s.append(s.bn) s.append(s.bl)
def onClick(self, sender=None, automatic=False): #self.codePanel.setText("") JS('''$doc.defaultView.editor.getSession().setValue();'''); loopBlockSet = [] rootSetupBlock = None if getWorkspace().getMainBlock() is not None: rootSetupBlock = getWorkspace().getMainBlock().getFirstBlock() if rootSetupBlock == getWorkspace().getMainBlock(): rootSetupBlock = None #for block in rootBlocks: # if block.name == 'forever': # loopBlockSet.append(block) loopBlockSet.append(getWorkspace().getMainBlock()) if len(loopBlockSet) == 0 and not automatic: self.showBlocksList() popup = Popup('<b>Bloco sempre nao encontrado!</b>', None, None) center = VerticalPanel() center.append(getattr(ArduinoBlocks, 'forever')(off=True)) popup.center.append(center) popup.center.setCellHorizontalAlignment(center, HasHorizontalAlignment.ALIGN_CENTER) popup.show() return if len(loopBlockSet) > 1 and not automatic: # deprecated popup = Popup('<b>Multiplos blocos sempre encontrados!</b>', None, None) popup.show() return for block in loopBlockSet: try: code_ = Translator().translate(block, rootSetupBlock) #self.codePanel.setText(code_) JS('''$doc.defaultView.editor.getSession().setValue(@{{code_}});'''); except SocketNullException as e1: if automatic: return; self.showBlocksList() if e1.block.blockPad.popupEditorBlock: e1.block.blockPad.popupEditorBlock.show() fakeBlock = getattr(ArduinoBlocks, e1.block.name)(off=True) #fakeBlock.holderArguments[e1.index].argument.addStyleName('error') # estava confundindo fakeBlock.holderArguments[e1.index].argument.append(Widget(Element=DOM.createDiv(), StyleName='interro')) center = VerticalPanel() center.append(fakeBlock) #☹ popup = Popup('<b>Dado ausente no bloco abaixo:</b>', None, None) popup.center.append(center) popup.center.setCellHorizontalAlignment(center, HasHorizontalAlignment.ALIGN_CENTER) popup.show() except VariableNameNullException as e2: if automatic: return; self.showBlocksList() fakeBlock = getattr(ArduinoBlocks, e2.block.name)(off=True) #fakeBlock.dropDownVarName.addStyleName('error') #fakeBlock.dropDownVarName.append(Widget(Element=DOM.createDiv(), StyleName='interro')) center = VerticalPanel() center.append(fakeBlock) popup = Popup('<b>'+e2.getError()+' abaixo:</b>', None, None) popup.center.append(center) popup.center.setCellHorizontalAlignment(center, HasHorizontalAlignment.ALIGN_CENTER) popup.show() except ComponentPinNullException as e3: if automatic: return; self.showHardwaresList() fakeBlock = getattr(ArduinoHardwares, e3.block.componetHardware)(off=True) fakeBlock.setText(e3.block.varName) center = VerticalPanel() center.append(fakeBlock) popup = Popup('<b>'+e3.getError()+' abaixo:</b>', None, None) popup.center.append(center) popup.center.setCellHorizontalAlignment(center, HasHorizontalAlignment.ALIGN_CENTER) popup.show() except ComponentBlockNotFoundException as e4:#todo: exception quando nao encontra o custom block if automatic: return; self.showHardwaresList() fakeBlock = getattr(ArduinoHardwares, e4.block.componetHardware)(off=True) fakeBlock.setText(e4.block.varName) center = VerticalPanel() center.append(fakeBlock) popup = Popup('<b>'+e4.getError()+':</b>', None, None) popup.center.append(center) popup.center.setCellHorizontalAlignment(center, HasHorizontalAlignment.ALIGN_CENTER) popup.show()