Пример #1
0
    def _apply(self):
        formatter = self.m_editor.getFormatter()

        link = self.m_webPageText.getText().strip()
        if not link:
            return False

        print self.m_origAnchorStart, self.m_origAnchorEnd

        if (self.m_origAnchorStart is not None)  and  self.m_fillOutCB.getValue():
            # Expand selection to these bounds
            self.m_range.setRange(self.m_origAnchorStart, self.m_origAnchorEnd)

        # Ensure the selection hasn't changed, or at least changes to the
        # expanded bounds we want
        Selection.setRange(self.m_range)

        targetText = self.m_targetText.getText()

        if self.m_range.isCursor():
            # Insert into a single cursor location
            newEle = DOM.createAnchor()
            newEle.href = link
            newEle.innerText = targetText

            sp = self.m_range.getStartPoint()
            startNode = sp.getTextNode()
            offset = sp.getOffset()
            print "sp", sp, startNode, offset
            parentEle = startNode.parentElement
            text = startNode.data

            if offset == 0:
                parentEle.insertBefore(newEle, startNode)

            else:
                if offset < len(text):
                    # Split this in two and insert the node between
                    startNode.splitText(offset)

                DOM.insertAfter(startNode, newEle)

            Selection.setRange(Range(newEle))

        elif targetText != self.m_origTargetText:
            # Replace whatever was selected with this text
            ele = self.m_range.surroundContents()
            newEle = DOM.createAnchor()
            newEle.href = link
            newEle.innerText = targetText
            ele.parentElement.replaceChild(newEle, ele)

            Selection.setRange(Range(newEle))
        else:
            formatter.createLink(link)


        return True
Пример #2
0
    def selectNodes(self, startNode, startOffset, endNode=None, endOffset=None):

        startText = self.findNodeByNumber(startNode)
        if endNode is not None:
            endText = self.findNodeByNumber(endNode)
        else:
            endText = startText
            endOffset = startOffset

        rng = Range(RangeEndPoint(startText, startOffset),
                    RangeEndPoint(endText, endOffset))

        self.getSelection()
        Selection.setRange(rng)

        self.refresh()