Skip to content

Commit f1ad833

Browse files
committed
Qt6 fixes for DocumentEditor
1 parent cc6e2fb commit f1ad833

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,10 +19,10 @@
1919
from contextlib import contextmanager
2020
from functools import partial
2121

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

182192
for command in commands.commands():
183193
if command.description() == 'Move selected lines up one line':
184194
command.setKey(
185-
Qt.KeyboardModifier.ControlModifier
186-
| Qt.KeyboardModifier.ShiftModifier
187-
| Qt.Key.Key_Up
195+
to_int(
196+
Qt.KeyboardModifier.ControlModifier
197+
| Qt.KeyboardModifier.ShiftModifier
198+
| Qt.Key.Key_Up
199+
)
188200
)
189201
if command.description() == 'Move selected lines down one line':
190202
command.setKey(
191-
Qt.KeyboardModifier.ControlModifier
192-
| Qt.KeyboardModifier.ShiftModifier
193-
| Qt.Key.Key_Down
203+
to_int(
204+
Qt.KeyboardModifier.ControlModifier
205+
| Qt.KeyboardModifier.ShiftModifier
206+
| Qt.Key.Key_Down
207+
)
194208
)
195209
if command.description() == 'Duplicate selection':
196210
command.setKey(
197-
Qt.KeyboardModifier.ControlModifier
198-
| Qt.KeyboardModifier.ShiftModifier
199-
| Qt.Key.Key_D
211+
to_int(
212+
Qt.KeyboardModifier.ControlModifier
213+
| Qt.KeyboardModifier.ShiftModifier
214+
| Qt.Key.Key_D
215+
)
200216
)
201217
if command.description() == 'Cut current line':
202218
command.setKey(0)
203219

204220
# Add QShortcuts
205221
self.uiShowAutoCompleteSCT = QShortcut(
206-
Qt.Modifier.CTRL | Qt.Key.Key_Space,
222+
QKeySequence(Qt.Modifier.CTRL | Qt.Key.Key_Space),
207223
self,
208224
context=Qt.ShortcutContext.WidgetShortcut,
209225
)
@@ -885,13 +901,18 @@ def initSettings(self, first_time=False):
885901

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

888-
# set autocompletion settings
904+
# set auto-completion settings
889905
self.setAutoCompletionSource(QsciScintilla.AutoCompletionSource.AcsAll)
890906
self.setAutoCompletionThreshold(3)
891907

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

896917
def markerNext(self):
897918
line, index = self.getCursorPosition()
@@ -1105,7 +1126,7 @@ def saveAs(self, filename='', setFilename=True):
11051126
if not filename:
11061127
newFile = True
11071128
filename = self.filename()
1108-
filename, extFilter = QtCompat.QFileDialog.getSaveFileName(
1129+
filename, extFilter = Qt_py.QtCompat.QFileDialog.getSaveFileName(
11091130
self.window(), 'Save File as...', filename
11101131
)
11111132

0 commit comments

Comments
 (0)