KDevelop API Documentation

editors/qeditor/linenumberwidget.cpp

Go to the documentation of this file.
00001 /* $Id: linenumberwidget.cpp,v 1.10 2002/12/19 22:02:39 raggi Exp $ 00002 * 00003 * Copyright (C) 2002 Roberto Raggi (roberto@kdevelop.org) 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2 of the License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; see the file COPYING. If not, write to 00017 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 * Boston, MA 02111-1307, USA. 00019 * 00020 */ 00021 00022 /********************************************************************** 00023 ** Copyright (C) 2000 Trolltech AS. All rights reserved. 00024 ** 00025 ** This file is part of Qt Designer. 00026 ** 00027 ** This file may be distributed and/or modified under the terms of the 00028 ** GNU General Public License version 2 as published by the Free Software 00029 ** Foundation and appearing in the file COPYING included in the 00030 ** packaging of this file. 00031 ** 00032 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00033 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00034 ** 00035 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 00036 ** 00037 ** Contact info@trolltech.com if any conditions of this licensing are 00038 ** not clear to you. 00039 ** 00040 **********************************************************************/ 00041 00042 #include "linenumberwidget.h" 00043 #include "qeditor.h" 00044 #include "paragdata.h" 00045 00046 #include <private/qrichtext_p.h> 00047 00048 LineNumberWidget::LineNumberWidget( QEditor* editor, QWidget* parent, const char* name ) 00049 : QWidget( parent, name, WRepaintNoErase | WStaticContents | WResizeNoErase ), 00050 m_editor( editor ) 00051 { 00052 setFixedWidth( 50 ); 00053 00054 connect( m_editor->verticalScrollBar(), SIGNAL( valueChanged( int ) ), 00055 this, SLOT( doRepaint() ) ); 00056 connect( m_editor, SIGNAL( textChanged() ), 00057 this, SLOT( doRepaint() ) ); 00058 doRepaint(); 00059 } 00060 00061 LineNumberWidget::~LineNumberWidget() 00062 { 00063 } 00064 00065 void LineNumberWidget::paintEvent( QPaintEvent* /*e*/ ) 00066 { 00067 buffer.fill(); 00068 00069 QTextParagraph *p = m_editor->document()->firstParagraph(); 00070 QPainter painter( &buffer ); 00071 int yOffset = m_editor->contentsY(); 00072 while ( p ) { 00073 if ( !p->isVisible() ) { 00074 p = p->next(); 00075 continue; 00076 } 00077 if ( p->rect().y() + p->rect().height() - yOffset < 0 ) { 00078 p = p->next(); 00079 continue; 00080 } 00081 if ( p->rect().y() - yOffset > height() ) 00082 break; 00083 //ParagData *paragData = (ParagData*)p->extraData(); 00084 00085 painter.drawText( 0, p->rect().y() - yOffset, 00086 buffer.width() - 10, p->rect().height(), 00087 AlignRight | AlignBottom, 00088 QString::number(p->paragId()+1) ); 00089 p = p->next(); 00090 } 00091 00092 painter.end(); 00093 bitBlt( this, 0, 0, &buffer ); 00094 } 00095 00096 void LineNumberWidget::resizeEvent( QResizeEvent *e ) 00097 { 00098 buffer.resize( e->size() ); 00099 QWidget::resizeEvent( e ); 00100 } 00101 00102 #include "linenumberwidget.moc"
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:38 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003