Source code for openalea.oalab.editor.line_number

# -*- python -*-
#
#       OpenAlea.OALab: Multi-Paradigm GUI
#
#        http://qt.developpez.com/doc/4.7/widgets-codeeditor/
#
#       Copyright 2013 INRIA - CIRAD - INRA
#
#       File author(s): Julien Coste <julien.coste@inria.fr>
#
#       File contributor(s):
#
#       Distributed under the Cecill-C License.
#       See accompanying file LICENSE.txt or copy at
#           http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
#       OpenAlea WebSite : http://openalea.gforge.inria.fr
#
###############################################################################
__revision__ = ""

from openalea.vpltk.qt import QtCore, QtGui


[docs]class Margin(QtGui.QWidget): # Come from LPy def __init__(self, parent, editor): QtGui.QWidget.__init__(self, parent) self.editor = editor self.showLines = True
[docs] def paintEvent(self, paintEvent): if self.showLines: maxheight = self.editor.viewport().height() maxline = self.editor.document().blockCount() painter = QtGui.QPainter(self) painter.setPen(QtGui.QPen(QtGui.QColor(100, 100, 100))) h = 0 line = -1 while h < maxheight and line < maxline: cursor = self.editor.cursorForPosition(QtCore.QPoint(1, h)) nline = cursor.blockNumber() + 1 rect = self.editor.cursorRect(cursor) if nline > line: line = nline painter.drawText(0, rect.top() + 2, 40, rect.height() + 2, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop, str(line)) h = rect.top() + rect.height() + 1 painter.end()
[docs] def mousePressEvent(self, event): line = self.editor.cursorForPosition(event.pos()).blockNumber() self.emit(QtCore.SIGNAL("lineClicked(int)"), line + 1)