Skip to content

Commit d0d1698

Browse files
committed
Merge remote-tracking branch 'anntzer/up' into qt6-integration
Re-integrating changes from <#62> Thank you, @anntzer!
2 parents bd2bb6c + d309d51 commit d0d1698

File tree

4 files changed

+49
-49
lines changed

4 files changed

+49
-49
lines changed

README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Dependencies:
1919
* Matplotlib 3.5+
2020
* NumPy 1.22+
2121
* SciPy 1.8+
22+
* one of PyQt6, PySide6
2223

2324
License:
2425
MIT, see `LICENSE <LICENSE>`__ for details.

viscm/bezierbuilder/__init__.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
from viscm.bezierbuilder.curve import curve_method
3333
from viscm.minimvc import Trigger
3434

35+
Qt = QtCore.Qt
36+
3537

3638
class ControlPointModel:
3739
def __init__(self, xp, yp, fixed=None):
@@ -104,12 +106,14 @@ def on_button_press(self, event):
104106
if event.inaxes != self.ax:
105107
return
106108
res, ind = self.control_polygon.contains(event)
107-
if res and modkey == QtCore.Qt.NoModifier:
109+
if res and modkey == Qt.KeyboardModifier.NoModifier:
108110
self._index = ind["ind"][0]
109-
if res and (modkey == QtCore.Qt.ControlModifier or self.mode == "remove"):
111+
if res and (
112+
modkey == Qt.KeyboardModifier.ControlModifier or self.mode == "remove"
113+
):
110114
# Control-click deletes
111115
self.control_point_model.remove_point(ind["ind"][0])
112-
if modkey == QtCore.Qt.ShiftModifier or self.mode == "add":
116+
if modkey == Qt.KeyboardModifier.ShiftModifier or self.mode == "add":
113117
# Adding a new point. Find the two closest points and insert it in
114118
# between them.
115119
total_squared_dists = []

viscm/cli.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def cli():
111111

112112
signal.signal(signal.SIGINT, signal.SIG_DFL)
113113

114-
app.exec_()
114+
app.exec()
115115

116116

117117
def _make_window(
@@ -145,7 +145,7 @@ def _make_window(
145145
v.figure.savefig(str(save))
146146
elif action == "edit":
147147
if not cm.can_edit:
148-
sys.exit("Sorry, I don't know how to edit the specified colormap")
148+
raise RuntimeError("Sorry, I don't know how to edit the specified colormap")
149149

150150
v = gui.viscm_editor(
151151
figure=fig,
@@ -164,7 +164,8 @@ def _make_window(
164164
sys.exit()
165165

166166
figure_canvas.setSizePolicy(
167-
gui.QtWidgets.QSizePolicy.Expanding, gui.QtWidgets.QSizePolicy.Expanding
167+
gui.QtWidgets.QSizePolicy.Policy.Expanding,
168+
gui.QtWidgets.QSizePolicy.Policy.Expanding,
168169
)
169170
figure_canvas.updateGeometry()
170171

viscm/gui.py

Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# matplotlib.rcParams['backend'] = "QT4AGG"
1616
# Do this first before any other matplotlib imports, to force matplotlib to
1717
# use a Qt backend
18-
from matplotlib.backends.qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName
18+
from matplotlib.backends.qt_compat import QtCore, QtGui, QtWidgets
1919

2020
try:
2121
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas
@@ -40,6 +40,9 @@
4040

4141
from .minimvc import Trigger
4242

43+
Qt = QtCore.Qt
44+
45+
4346
# The correct L_A value for the standard sRGB viewing conditions is:
4447
# (64 / np.pi) / 5
4548
# Due to an error in our color conversion code, the matplotlib colormaps were
@@ -1075,18 +1078,16 @@ def about():
10751078
class ViewerWindow(QtWidgets.QMainWindow):
10761079
def __init__(self, figurecanvas, viscm, cmapname, parent=None):
10771080
QtWidgets.QMainWindow.__init__(self, parent)
1078-
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
1081+
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
10791082
self.main_widget = QtWidgets.QWidget(self)
10801083
self.cmapname = cmapname
10811084

10821085
file_menu = QtWidgets.QMenu("&File", self)
1083-
file_menu.addAction("&Save", self.save, QtCore.Qt.CTRL + QtCore.Qt.Key_S)
1084-
file_menu.addAction("&Quit", self.fileQuit, QtCore.Qt.CTRL + QtCore.Qt.Key_Q)
1086+
file_menu.addAction("&Save", self.save).setShortcut("Ctrl+S")
1087+
file_menu.addAction("&Quit", self.fileQuit).setShortcut("Ctrl+Q")
10851088

10861089
options_menu = QtWidgets.QMenu("&Options", self)
1087-
options_menu.addAction(
1088-
"&Toggle Gamut", self.toggle_gamut, QtCore.Qt.CTRL + QtCore.Qt.Key_G
1089-
)
1090+
options_menu.addAction("&Toggle Gamut", self.toggle_gamut).setShortcut("Ctrl+G")
10901091

10911092
help_menu = QtWidgets.QMenu("&Help", self)
10921093
help_menu.addAction("&About", about)
@@ -1116,7 +1117,8 @@ def closeEvent(self, ce):
11161117
self.fileQuit()
11171118

11181119
def save(self):
1119-
fileName, _ = _getSaveFileName(
1120+
fileName, _ = QtWidgets.QFileDialog.getSaveFileName(
1121+
self,
11201122
caption="Save file",
11211123
directory=self.cmapname + ".png",
11221124
filter="Image Files (*.png *.jpg *.bmp)",
@@ -1128,18 +1130,16 @@ def save(self):
11281130
class EditorWindow(QtWidgets.QMainWindow):
11291131
def __init__(self, figurecanvas, viscm_editor, parent=None):
11301132
QtWidgets.QMainWindow.__init__(self, parent)
1131-
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
1133+
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
11321134
self.viscm_editor = viscm_editor
11331135

11341136
file_menu = QtWidgets.QMenu("&File", self)
1135-
file_menu.addAction("&Save", self.save, QtCore.Qt.CTRL + QtCore.Qt.Key_S)
1137+
file_menu.addAction("&Save", self.save).setShortcut("Ctrl+S")
11361138
file_menu.addAction("&Export .py", self.export)
1137-
file_menu.addAction("&Quit", self.fileQuit, QtCore.Qt.CTRL + QtCore.Qt.Key_Q)
1139+
file_menu.addAction("&Quit", self.fileQuit).setShortcut("Ctrl+Q")
11381140

11391141
options_menu = QtWidgets.QMenu("&Options", self)
1140-
options_menu.addAction(
1141-
"&Load in Viewer", self.loadviewer, QtCore.Qt.CTRL + QtCore.Qt.Key_V
1142-
)
1142+
options_menu.addAction("&Load in Viewer", self.loadviewer).setShortcut("Ctrl+V")
11431143

11441144
help_menu = QtWidgets.QMenu("&Help", self)
11451145
help_menu.addAction("&About", about)
@@ -1151,21 +1151,21 @@ def __init__(self, figurecanvas, viscm_editor, parent=None):
11511151

11521152
self.main_widget = QtWidgets.QWidget(self)
11531153

1154-
self.max_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
1154+
self.max_slider = QtWidgets.QSlider(Qt.Orientation.Horizontal)
11551155
self.max_slider.setMinimum(0)
11561156
self.max_slider.setMaximum(100)
11571157
self.max_slider.setValue(int(viscm_editor.max_Jp))
1158-
self.max_slider.setTickPosition(QtWidgets.QSlider.TicksBelow)
1158+
self.max_slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksBelow)
11591159
self.max_slider.setTickInterval(10)
11601160
self.max_slider.valueChanged.connect(self.updatejp)
11611161
self.max_slider_num = QtWidgets.QLabel(str(viscm_editor.max_Jp))
11621162
self.max_slider_num.setFixedWidth(30)
11631163

1164-
self.min_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
1164+
self.min_slider = QtWidgets.QSlider(Qt.Orientation.Horizontal)
11651165
self.min_slider.setMinimum(0)
11661166
self.min_slider.setMaximum(100)
11671167
self.min_slider.setValue(int(viscm_editor.min_Jp))
1168-
self.min_slider.setTickPosition(QtWidgets.QSlider.TicksBelow)
1168+
self.min_slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksBelow)
11691169
self.min_slider.setTickInterval(10)
11701170
self.min_slider.valueChanged.connect(self.updatejp)
11711171
self.min_slider_num = QtWidgets.QLabel(str(viscm_editor.min_Jp))
@@ -1189,7 +1189,7 @@ def __init__(self, figurecanvas, viscm_editor, parent=None):
11891189
mainlayout.addLayout(min_slider_layout)
11901190

11911191
if viscm_editor.cmtype == "diverging":
1192-
smoothness_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
1192+
smoothness_slider = QtWidgets.QSlider(Qt.Horizontal)
11931193
# We want the slider to vary filter_k exponentially between 5 and
11941194
# 1000. So it should go from [log10(5), log10(1000)]
11951195
# which is about [0.699, 3.0]
@@ -1206,7 +1206,7 @@ def __init__(self, figurecanvas, viscm_editor, parent=None):
12061206
metrics = QtGui.QFontMetrics(smoothness_slider_num.font())
12071207
max_width = metrics.width("1000.00")
12081208
smoothness_slider_num.setFixedWidth(max_width)
1209-
smoothness_slider_num.setAlignment(QtCore.Qt.AlignRight)
1209+
smoothness_slider_num.setAlignment(Qt.AlignRight)
12101210
self.smoothness_slider_num = smoothness_slider_num
12111211

12121212
smoothness_slider_layout = QtWidgets.QHBoxLayout()
@@ -1221,41 +1221,32 @@ def __init__(self, figurecanvas, viscm_editor, parent=None):
12211221
self.update_smoothness_slider
12221222
)
12231223

1224-
self.moveAction = QtWidgets.QAction("Drag points", self)
1224+
self.toolbar = self.addToolBar("Tools")
1225+
self.moveAction = self.toolbar.addAction("Drag points")
12251226
self.moveAction.triggered.connect(self.set_move_mode)
12261227
self.moveAction.setCheckable(True)
1227-
1228-
self.addAction = QtWidgets.QAction("Add points", self)
1228+
self.addAction = self.toolbar.addAction("Add points")
12291229
self.addAction.triggered.connect(self.set_add_mode)
12301230
self.addAction.setCheckable(True)
1231-
1232-
self.removeAction = QtWidgets.QAction("Remove points", self)
1231+
self.removeAction = self.toolbar.addAction("Remove points")
12331232
self.removeAction.triggered.connect(self.set_remove_mode)
12341233
self.removeAction.setCheckable(True)
12351234

1236-
self.swapAction = QtWidgets.QAction("Flip brightness", self)
1235+
self.toolbar.addSeparator()
1236+
self.swapAction = self.toolbar.addAction("Flip brightness")
12371237
self.swapAction.triggered.connect(self.swapjp)
1238-
renameAction = QtWidgets.QAction("Rename colormap", self)
1239-
renameAction.triggered.connect(self.rename)
1240-
1241-
saveAction = QtWidgets.QAction("Save", self)
1242-
saveAction.triggered.connect(self.save)
12431238

1244-
self.toolbar = self.addToolBar("Tools")
1245-
self.toolbar.addAction(self.moveAction)
1246-
self.toolbar.addAction(self.addAction)
1247-
self.toolbar.addAction(self.removeAction)
12481239
self.toolbar.addSeparator()
1249-
self.toolbar.addAction(self.swapAction)
1250-
self.toolbar.addSeparator()
1251-
self.toolbar.addAction(renameAction)
1252-
self.toolbar.addAction(saveAction)
1240+
renameAction = self.toolbar.addAction("Rename colormap")
1241+
renameAction.triggered.connect(self.rename)
1242+
saveAction = self.toolbar.addAction("Save")
1243+
saveAction.triggered.connect(self.save)
12531244

12541245
self.moveAction.setChecked(True)
12551246

12561247
self.main_widget.setFocus()
12571248
figurecanvas.setFocus()
1258-
figurecanvas.setFocusPolicy(QtCore.Qt.StrongFocus)
1249+
figurecanvas.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
12591250
self.setCentralWidget(self.main_widget)
12601251

12611252
def rename(self):
@@ -1304,7 +1295,8 @@ def set_remove_mode(self):
13041295
self.viscm_editor.bezier_builder.mode = "remove"
13051296

13061297
def export(self):
1307-
fileName, _ = _getSaveFileName(
1298+
fileName, _ = QtWidgets.QFileDialog.getSaveFileName(
1299+
self,
13081300
caption="Export file",
13091301
directory=self.viscm_editor.name + ".py",
13101302
filter=".py (*.py)",
@@ -1319,7 +1311,8 @@ def closeEvent(self, ce):
13191311
self.fileQuit()
13201312

13211313
def save(self):
1322-
fileName, _ = _getSaveFileName(
1314+
fileName, _ = QtWidgets.QFileDialog.getSaveFileName(
1315+
self,
13231316
caption="Save file",
13241317
directory=self.viscm_editor.name + ".jscm",
13251318
filter="JSCM Files (*.jscm)",
@@ -1334,7 +1327,8 @@ def loadviewer(self):
13341327
v = viscm(cm, name=self.viscm_editor.name, figure=newfig)
13351328

13361329
newcanvas.setSizePolicy(
1337-
QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding
1330+
QtWidgets.QSizePolicy.Policy.Expanding,
1331+
QtWidgets.QSizePolicy.Policy.Expanding,
13381332
)
13391333
newcanvas.updateGeometry()
13401334

0 commit comments

Comments
 (0)