New multi line editor

Supports zooming in and out with ctrl+scroll.

It is a bit hacky, since I use sed in make to make it work, but
whatever.
This commit is contained in:
Salvo 'LtWorf' Tomaselli 2016-05-25 12:08:59 +02:00
parent 790766827e
commit 2955afe45e
2 changed files with 45 additions and 0 deletions

View File

@ -5,6 +5,8 @@ pyqt:
pyuic5 relational_gui/maingui.ui > relational_gui/maingui.py
pyuic5 relational_gui/rel_edit.ui > relational_gui/rel_edit.py
pyrcc5 relational_gui/resources.qrc > relational_gui/resources.py
sed -i 's/QtWidgets.QPlainTextEdit/editor.Editor/g' relational_gui/maingui.py
echo 'from . import editor' >> relational_gui/maingui.py
dist: clean
rm -rf /tmp/relational/

43
relational_gui/editor.py Normal file
View File

@ -0,0 +1,43 @@
# Relational
# Copyright (C) 2016 Salvo "LtWorf" Tomaselli
#
# Relational is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# author Salvo "LtWorf" Tomaselli <tiposchi@tiscali.it>
#
# This module provides a classes to represent relations and to perform
# relational operations on them.
from PyQt5.QtWidgets import QPlainTextEdit
from PyQt5.QtCore import Qt
class Editor(QPlainTextEdit):
def __init__(self, *args, **kwargs):
super(Editor, self).__init__(*args, **kwargs)
def wheelEvent(self, event):
if event.modifiers() & Qt.ControlModifier:
event.accept()
self.zoom(1 if event.angleDelta().y()>0 else -1)
else:
super(Editor, self).wheelEvent(event)
def zoom(self, incr):
font = self.font()
point_size = font.pointSize()
point_size += incr
font.setPointSize(point_size)
self.setFont(font)