KDevelop API Documentation

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.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:24 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003