Skip to content

Commit 5f67bfa

Browse files
committed
Qt6 fixes for DocumentEditor
1 parent 9808027 commit 5f67bfa

File tree

1 file changed

+37
-16
lines changed

1 file changed

+37
-16
lines changed

preditor/scintilla/documenteditor.py

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
from contextlib import contextmanager
2020
from functools import partial
2121

22-
from Qt import QtCompat
22+
import Qt as Qt_py
2323
from Qt.QtCore import Property, QEvent, QPoint, Qt, Signal
24-
from Qt.QtGui import QColor, QFont, QFontMetrics, QIcon
24+
from Qt.QtGui import QColor, QFont, QFontMetrics, QIcon, QKeySequence
2525
from Qt.QtWidgets import (
2626
QAction,
2727
QApplication,
@@ -172,37 +172,53 @@ def __init__(self, parent, filename='', lineno=0, delayable_engine='default'):
172172
commands = self.standardCommands()
173173
# Remove the Ctrl+/ "Move left one word part" shortcut so it can be used to
174174
# comment
175+
if Qt_py.IsPyQt6:
176+
# In Qt6 enums are not longer simple ints. boundTo still requires ints
177+
def to_int(shortcut):
178+
return shortcut.toCombined()
179+
180+
else:
181+
182+
def to_int(shortcut):
183+
return shortcut
184+
175185
command = commands.boundTo(
176-
Qt.KeyboardModifier.ControlModifier | Qt.Key.Key_Slash
186+
to_int(Qt.KeyboardModifier.ControlModifier | Qt.Key.Key_Slash)
177187
)
178188
if command is not None:
179189
command.setKey(0)
180190

181191
for command in commands.commands():
182192
if command.description() == 'Move selected lines up one line':
183193
command.setKey(
184-
Qt.KeyboardModifier.ControlModifier
185-
| Qt.KeyboardModifier.ShiftModifier
186-
| Qt.Key.Key_Up
194+
to_int(
195+
Qt.KeyboardModifier.ControlModifier
196+
| Qt.KeyboardModifier.ShiftModifier
197+
| Qt.Key.Key_Up
198+
)
187199
)
188200
if command.description() == 'Move selected lines down one line':
189201
command.setKey(
190-
Qt.KeyboardModifier.ControlModifier
191-
| Qt.KeyboardModifier.ShiftModifier
192-
| Qt.Key.Key_Down
202+
to_int(
203+
Qt.KeyboardModifier.ControlModifier
204+
| Qt.KeyboardModifier.ShiftModifier
205+
| Qt.Key.Key_Down
206+
)
193207
)
194208
if command.description() == 'Duplicate selection':
195209
command.setKey(
196-
Qt.KeyboardModifier.ControlModifier
197-
| Qt.KeyboardModifier.ShiftModifier
198-
| Qt.Key.Key_D
210+
to_int(
211+
Qt.KeyboardModifier.ControlModifier
212+
| Qt.KeyboardModifier.ShiftModifier
213+
| Qt.Key.Key_D
214+
)
199215
)
200216
if command.description() == 'Cut current line':
201217
command.setKey(0)
202218

203219
# Add QShortcuts
204220
self.uiShowAutoCompleteSCT = QShortcut(
205-
Qt.Modifier.CTRL | Qt.Key.Key_Space,
221+
QKeySequence(Qt.Modifier.CTRL | Qt.Key.Key_Space),
206222
self,
207223
context=Qt.ShortcutContext.WidgetShortcut,
208224
)
@@ -884,13 +900,18 @@ def initSettings(self, first_time=False):
884900

885901
self.setEdgeMode(QsciScintilla.EdgeMode.EdgeNone)
886902

887-
# set autocompletion settings
903+
# set auto-completion settings
888904
self.setAutoCompletionSource(QsciScintilla.AutoCompletionSource.AcsAll)
889905
self.setAutoCompletionThreshold(3)
890906

891907
self.setFont(self.documentFont)
892908
self.setMarginsFont(self.marginsFont())
893-
self.setMarginWidth(0, QFontMetrics(self.marginsFont()).width('0000000') + 5)
909+
metric = QFontMetrics(self.marginsFont())
910+
if Qt_py.IsPyQt4:
911+
width = metric.width('0000000')
912+
else:
913+
width = metric.horizontalAdvance('0000000')
914+
self.setMarginWidth(0, width + 5)
894915

895916
def markerNext(self):
896917
line, index = self.getCursorPosition()
@@ -1104,7 +1125,7 @@ def saveAs(self, filename='', setFilename=True):
11041125
if not filename:
11051126
newFile = True
11061127
filename = self.filename()
1107-
filename, extFilter = QtCompat.QFileDialog.getSaveFileName(
1128+
filename, extFilter = Qt_py.QtCompat.QFileDialog.getSaveFileName(
11081129
self.window(), 'Save File as...', filename
11091130
)
11101131

0 commit comments

Comments
 (0)