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)