Пример #1
0
    def replaceLinks(self, tagname="a", use_page_href=True, ajaxify=False):
        """ replaces <tag href="#pagename">sometext</tag> with:
            Hyperlink("sometext", "pagename").  Hyperlinks use
            the History module so the notification will come
            in on an onHistoryChanged.
        """
        self._clear_hyperlinks()
        tags = self.findTags(tagname)
        pageloc = Window.getLocation()
        pagehref = pageloc.getPageHref()
        for el in tags:
            href = el.href
            l = href.split("#")
            if len(l) != 2:
                continue
            if use_page_href and not l[0].startswith(pagehref):
                continue
            token = l[1]
            if not token:
                continue
            html = DOM.getInnerHTML(el)
            parent = DOM.getParent(el)
            index = DOM.getChildIndex(parent, el)
            if ajaxify:
                token = '!%s' % token
            hl = Hyperlink(TargetHistoryToken=token,
                           HTML=html,
                           Element=DOM.createSpan())
            DOM.insertChild(parent, hl.getElement(), index)
            parent.removeChild(el)

            self.children.insert(index, hl)
            hl.setParent(self)
            self.hyperlinks.append(hl)
Пример #2
0
    def onBrowserEvent(self, event):
        if DOM.eventGetType(event) == "click":
            td = self.getEventTargetCell(event)
            if td is None:
                return

            tr = DOM.getParent(td)
            body = DOM.getParent(tr)
            row = DOM.getChildIndex(body, tr)
            column = DOM.getChildIndex(tr, td)

            for listener in self.tableListeners:
                if hasattr(listener, 'onCellClicked'):
                    listener.onCellClicked(self, row, column)
                else:
                    listener(self)
Пример #3
0
    def onBrowserEvent(self, event):
        if DOM.eventGetType(event) == "click":
            td = self.getEventTargetCell(event)
            if td is None:
                return

            tr = DOM.getParent(td)
            body = DOM.getParent(tr)
            row = DOM.getChildIndex(body, tr)
            column = DOM.getChildIndex(tr, td)

            for listener in self.tableListeners:
                if hasattr(listener, 'onCellClicked'):
                    listener.onCellClicked(self, row, column)
                else:
                    listener(self)
Пример #4
0
 def replaceLinks(self, tagname="a"):
     """ replaces <tag href="#pagename">sometext</tag> with:
         Hyperlink("sometext", "pagename")
     """
     tags = self.findTags(tagname)
     pageloc = Window.getLocation()
     pagehref = pageloc.getPageHref()
     for el in tags:
         href = el.href
         l = href.split("#")
         if len(l) != 2:
             continue
         if l[0] != pagehref:
             continue
         token = l[1]
         if not token:
             continue
         html = DOM.getInnerHTML(el)
         parent = DOM.getParent(el)
         index = DOM.getChildIndex(parent, el)
         hl = Hyperlink(TargetHistoryToken=token,
                        HTML=html,
                        Element=DOM.createSpan())
         DOM.insertChild(parent, hl.getElement(), index)
         self.children.insert(index, hl)
         parent.removeChild(el)
Пример #5
0
def insertChildBefore(new_elem, elem):
    """
    Inserts an element "new_elem" before the element "elem".
    """
    parent = DOM.getParent(elem)
    id = DOM.getChildIndex(parent, elem)
    DOM.insertChild(parent, new_elem, id)
Пример #6
0
    def onBrowserEvent(self, event):
        DOM.eventPreventDefault(event)
        if not self.game.started:
            return
        td = self.getEventTargetCell(event)
        if not td:
            return
        tr = DOM.getParent(td)
        table = DOM.getParent(tr)
        row = DOM.getChildIndex(table, tr)
        column = DOM.getChildIndex(tr, td)
        target_cell = self.getCell(row, column)

        type = DOM.eventGetType(event)
        event_mapper = {'click': 'onClick',
                        'contextmenu': 'onRightClick',
                        'mousedown': 'onMouseDown',
                        'mouseup': 'onMouseUp',
                        'mouseout': 'onMouseLeave'}
        event_handler = event_mapper.get(type)
        if event_handler:
            getattr(self, event_handler)(target_cell)
Пример #7
0
 def onBrowserEvent(self, event):
     DOM.eventPreventDefault(event)
     if not self.game.started:
         return
     td = self.getEventTargetCell(event)
     if not td:
         return
     tr = DOM.getParent(td)
     table = DOM.getParent(tr)
     row = DOM.getChildIndex(table, tr)
     column = DOM.getChildIndex(tr, td)
     target_cell = self.getCell(row, column)
     
     type = DOM.eventGetType(event)
     event_mapper = {'click': 'onClick',
                     'contextmenu': 'onRightClick',
                     'mousedown': 'onMouseDown',
                     'mouseup': 'onMouseUp',
                     'mouseout': 'onMouseLeave'}
     event_handler = event_mapper.get(type)
     if event_handler:
         getattr(self, event_handler)(target_cell)
Пример #8
0
    def _onBrowserEvent(self, event, event_type):

        td = self.getEventTargetCell(event)
        if td is None:
            return
        tr = DOM.getParent(td)
        body = DOM.getParent(tr)
        row = DOM.getChildIndex(body, tr)
        column = DOM.getChildIndex(tr, td)

        if event_type == 'dblclick':
            lists = self.dbltableListeners
        else:
            lists = self.tableListeners

        for listener in lists:
            if event_type == 'click' and \
               hasattr(listener, 'onCellClicked'):
                listener.onCellClicked(self, row, column)
            elif event_type == 'dblclick' and \
               hasattr(listener, 'onCellDoubleClicked'):
                listener.onCellDoubleClicked(self, row, column)
            else:
                listener(self)
Пример #9
0
def getPrevSibling(elem):
    parent = DOM.getParent(elem)
    elem_index = DOM.getChildIndex(parent, elem)
    children = list(DOM.iterChildren(parent))
    return children[elem_index - 1]