Results 1 to 4 of 4
  1. #1
    kjiu is offline Member
    Join Date
    Oct 2009
    Posts
    8
    Rep Power
    0

    Default CodeEditor = problem

    Hello,

    I have a problem :cool: which is this:

    Java Code:
    private void setupEditor() 
        { 
            QFont font = new QFont(); 
            font.setFamily("Courier"); 
            font.setFixedPitch(true); 
            font.setPointSize(10); 
    
            textEdit = new QTextEdit(); 
            textEdit.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap); 
            textEdit.setFont(font); 
    
            new Highlighter(textEdit.document()); 
            new CodeEditor(textEdit.document()); 
    
        } 
        public class CodeEditor extends QPlainTextEdit 
        { 
            public CodeEditor(QTextDocument textDocument)
    Why the CodeEditor doesn't display ? Highlighter display and is okej

    Please help me :)

  2. #2
    r035198x is offline Senior Member
    Join Date
    Aug 2009
    Posts
    2,388
    Rep Power
    10

    Default

    Don't know the difference between Highlighter and CodeEditor so can't say why they behave differently. Did you write both classes yourself?

  3. #3
    kjiu is offline Member
    Join Date
    Oct 2009
    Posts
    8
    Rep Power
    0

    Default

    no, this is :

    Code Editor Example // QT Jambi

  4. #4
    kjiu is offline Member
    Join Date
    Oct 2009
    Posts
    8
    Rep Power
    0

    Default

    this is my CodeEditor:

    Java Code:
    private void setupEditor() 
        {
            QFont font = new QFont();
            font.setFamily("Lucida Console");
            font.setFixedPitch(true);
            font.setPointSize(10);
    
            textEdit = new QTextEdit();
            textEdit.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap);
            textEdit.setFont(font);
    
            new Highlighter(textEdit.document());
            new CodeEditor(textEdit.document()); 
            
        }
        public class CodeEditor extends QPlainTextEdit
        {
        	public CodeEditor(QTextDocument textDocument)
        //	public CodeEditor()
            {
                lineNumberArea = new LineNumberArea(this);
    
                blockCountChanged.connect(this, "updateLineNumberAreaWidth(Integer)");
                updateRequest.connect(this, "updateLineNumberArea(QRect,Integer)");
                cursorPositionChanged.connect(this, "highlightCurrentLine()");
    
                updateLineNumberAreaWidth(0);
                highlightCurrentLine();
    
            }
        	 public int lineNumberAreaWidth()
        	    {
        	        int digits = 1;
        	        int max = Math.max(1, blockCount());
        	        while (max >= 10) {
        	            max /= 10;
        	            ++digits;
        	        }
    
        	        int space = 3 + fontMetrics().width('9') * digits;
    
        	        return space;
        	    }
        	    public void updateLineNumberAreaWidth(Integer newBlockCount)
        	    {
        	        setViewportMargins(lineNumberAreaWidth(), 0, 0, 0);
        	    }
        	    public void updateLineNumberArea(QRect rect, Integer dy)
        	    {
        	        if (dy > 0)
        	            lineNumberArea.scroll(0, dy);
        	        else
        	            lineNumberArea.update(0, rect.y(), lineNumberArea.width(),
        	                                  rect.height());
    
        	        if (rect.contains(viewport().rect()))
        	            updateLineNumberAreaWidth(0);
        	    }
        	    protected void resizeEvent(QResizeEvent e)
        	    {
        	        super.resizeEvent(e);
    
        	        QRect cr = contentsRect();
        	        lineNumberArea.setGeometry(new QRect(cr.left(), cr.top(),
        	                                   lineNumberAreaWidth(), cr.height()));
        	    }
        	    private void highlightCurrentLine()
        	    {
        	        List<QTextEdit_ExtraSelection> extraSelections =
        	            new Vector<QTextEdit_ExtraSelection>();
    
        	        if (!isReadOnly()) {
        	            QTextEdit_ExtraSelection selection =
        	                new QTextEdit_ExtraSelection();
        	            
        	            QColor lineColor = QColor.yellow.lighter(160);
    
        	            QTextCharFormat format = selection.format();
        	            format.setBackground(new QBrush(lineColor));
        	            format.setProperty(QTextFormat.Property.FullWidthSelection.value(), new Boolean(true));
        	            selection.setFormat(format);
        	            QTextCursor cursor = textCursor();
        	            cursor.clearSelection();
        	            selection.setCursor(cursor);
        	            extraSelections.add(selection);
        	        }
    
        	        setExtraSelections(extraSelections);
        	    }
        	    public void lineNumberAreaPaintEvent(QPaintEvent event)
        	    {
        	        QPainter painter = new QPainter(lineNumberArea);
        	        painter.setPen(new QPen(QColor.black));
        	        painter.fillRect(event.rect(), new QBrush(QColor.lightGray));
    
        	        QTextBlock block = firstVisibleBlock();
        	        int blockNumber = block.blockNumber();
        	        int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
        	        int bottom = top + (int) blockBoundingRect(block).height();
    
        	        while (block.isValid() && top <= event.rect().bottom()) {
        	            if (block.isVisible() && bottom >= event.rect().top()) {
        	                String number = String.valueOf(blockNumber + 1);
        	                painter.drawText(0, top, lineNumberArea.width(), fontMetrics().height(),
        	                                Qt.AlignmentFlag.AlignRight.value(), number);
        	            }
    
        	            block = block.next();
        	            top = bottom;
        	            bottom = top + (int) blockBoundingRect(block).height();
        	            ++blockNumber;
        	        }
        	    } 
    
        	    private class LineNumberArea extends QWidget
        	    {
        	        public LineNumberArea(CodeEditor editor)
        	        {
        	            codeEditor = editor;
        	            setParent(codeEditor);
        	        }
        	        public QSize sizeHint()
        	        {
        	            return new QSize(codeEditor.lineNumberAreaWidth(), 0);
        	        }
        	        protected void paintEvent(QPaintEvent event)
        	        {
        	            codeEditor.lineNumberAreaPaintEvent(event);
        	        }
        	        private CodeEditor codeEditor;
        	    }
    
        	    private LineNumberArea lineNumberArea;
        }
    and the problem is there:

    new CodeEditor(textEdit.document());

    it does't appear at TextEdit

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •