示例#1
0
    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)
示例#2
0
 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()
示例#4
0
 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')
示例#6
0
 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()
示例#8
0
 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'))
示例#9
0
 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)
示例#10
0
 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)
示例#13
0
 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
示例#14
0
 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)
示例#15
0
 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
示例#16
0
 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')
示例#17
0
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)
示例#18
0
 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')
示例#19
0
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)
示例#20
0
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)
                #&#x2639
                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()