Skip to content

Commit 784642e

Browse files
committed
Refactor color button
1 parent 033869e commit 784642e

File tree

3 files changed

+50
-46
lines changed

3 files changed

+50
-46
lines changed

src/ImageEditor.py

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@
7777
from OpenNumismat import HOME_PATH, IMAGE_PATH
7878
from OpenNumismat.Tools import TemporaryDir
7979
from OpenNumismat.Tools.DialogDecorators import storeDlgSizeDecorator, storeDlgPositionDecorator
80-
from OpenNumismat.Tools.Gui import getSaveFileName, Splitter
80+
from OpenNumismat.Tools.Gui import getSaveFileName, Splitter, ColorButton
8181
from OpenNumismat.Tools.misc import readImageFilters, saveImageFilters
8282
from OpenNumismat import version
8383

8484
PORTABLE = version.Portable
8585
except ModuleNotFoundError:
8686
from Tools import TemporaryDir
8787
from Tools.DialogDecorators import storeDlgSizeDecorator, storeDlgPositionDecorator
88-
from Tools.Gui import getSaveFileName, Splitter
88+
from Tools.Gui import getSaveFileName, Splitter, ColorButton
8989
from Tools.misc import readImageFilters, saveImageFilters
9090

9191
HOME_PATH = '.'
@@ -1110,12 +1110,8 @@ def __init__(self, parent=None):
11101110
QSizePolicy.Fixed)
11111111
self.main_layout.addRow(self.tr("Backround remover AI model"), self.modelSelector)
11121112

1113-
self.window_color = settings.value('image_viewer/window_color', QColor(Qt.white), type=QColor)
1114-
self.windowColorButton = QPushButton(self)
1115-
self.windowColorButton.setSizePolicy(QSizePolicy.Fixed,
1116-
QSizePolicy.Fixed)
1117-
self.updateWindowColorButton(self.window_color)
1118-
self.windowColorButton.clicked.connect(self.windowColorButtonClicked)
1113+
color = settings.value('image_viewer/window_color', QColor(Qt.white), type=QColor)
1114+
self.windowColorButton = ColorButton(color, self)
11191115
self.main_layout.addRow(self.tr("Window backgroud color"), self.windowColorButton)
11201116

11211117
buttonBox = QDialogButtonBox(Qt.Horizontal)
@@ -1130,23 +1126,11 @@ def __init__(self, parent=None):
11301126

11311127
self.setLayout(layout)
11321128

1133-
def windowColorButtonClicked(self):
1134-
dlg = QColorDialog(self.window_color, self)
1135-
if dlg.exec() == QDialog.Accepted:
1136-
self.window_color = dlg.currentColor()
1137-
self.updateWindowColorButton(self.window_color)
1138-
1139-
def updateWindowColorButton(self, color):
1140-
pixmap = QPixmap(16, 16)
1141-
pixmap.fill(color)
1142-
icon = QIcon(pixmap)
1143-
self.windowColorButton.setIcon(icon)
1144-
11451129
def save(self):
11461130
settings = QSettings()
11471131

11481132
settings.setValue('image_viewer/ai_model', self.modelSelector.currentText())
1149-
settings.setValue('image_viewer/window_color', self.window_color)
1133+
settings.setValue('image_viewer/window_color', self.windowColorButton.color())
11501134

11511135
self.accept()
11521136

@@ -1405,7 +1389,7 @@ def showScrollPanel(self, status):
14051389
def settings(self):
14061390
dlg = SettingsDialog(self)
14071391
if dlg.exec() == QDialog.Accepted:
1408-
color = dlg.window_color
1392+
color = dlg.windowColorButton.color()
14091393
self.viewer.setBackgroundBrush(QBrush(color))
14101394

14111395
def hasImage(self):

src/ImageEditorWindow.py

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from PySide6.QtCore import QSettings, QFileInfo, Qt, QStandardPaths, QDir
2-
from PySide6.QtGui import QIcon, QAction, QBrush, QColor, QImage, QPixmap
3-
from PySide6.QtWidgets import QApplication, QStyle, QMessageBox, QColorDialog, QDialog, QFileDialog, QPushButton, QSizePolicy, QHBoxLayout, QGroupBox, QRadioButton
2+
from PySide6.QtGui import QIcon, QAction, QBrush, QColor, QImage
3+
from PySide6.QtWidgets import QApplication, QStyle, QMessageBox, QDialog, QFileDialog, QHBoxLayout, QGroupBox, QRadioButton
44

55
from ImageEditor import ImageEditorDialog, SettingsDialog
66
from ImageProxy import ImageProxy
77
from ImageScrollLabel import ImageScrollLabel
8-
from Tools.Gui import getSaveFileName
8+
from Tools.Gui import getSaveFileName, ColorButton
99
from Tools.misc import saveImageFilters
1010

1111
IMAGE_PATH = QStandardPaths.standardLocations(QStandardPaths.PicturesLocation)[0]
@@ -18,12 +18,8 @@ def __init__(self, parent=None):
1818

1919
settings = QSettings()
2020

21-
self.transparentColorButton = QPushButton(self)
22-
self.transparentColorButton.setSizePolicy(QSizePolicy.Fixed,
23-
QSizePolicy.Fixed)
24-
self.transparent_color = settings.value('mainwindow/transparent_color', QColor(Qt.white), type=QColor)
25-
self.updateTransparentColorButton(self.transparent_color)
26-
self.transparentColorButton.clicked.connect(self.transparentColorButtonClicked)
21+
color = settings.value('mainwindow/transparent_color', QColor(Qt.white), type=QColor)
22+
self.transparentColorButton = ColorButton(color, self)
2723

2824
self.transparentRadio = QRadioButton(self.tr("Transparent"))
2925
self.transparentRadio.toggled.connect(self.transparentRadioToggled)
@@ -50,23 +46,11 @@ def __init__(self, parent=None):
5046
def transparentRadioToggled(self, checked):
5147
self.transparentColorButton.setDisabled(checked)
5248

53-
def transparentColorButtonClicked(self):
54-
dlg = QColorDialog(self.transparent_color, self)
55-
if dlg.exec() == QDialog.Accepted:
56-
self.transparent_color = dlg.currentColor()
57-
self.updateTransparentColorButton(self.transparent_color)
58-
59-
def updateTransparentColorButton(self, color):
60-
pixmap = QPixmap(16, 16)
61-
pixmap.fill(color)
62-
icon = QIcon(pixmap)
63-
self.transparentColorButton.setIcon(icon)
64-
6549
def save(self):
6650
settings = QSettings()
6751

6852
settings.setValue('mainwindow/transparent_store', self.transparentRadio.isChecked())
69-
settings.setValue('mainwindow/transparent_color', self.transparent_color)
53+
settings.setValue('mainwindow/transparent_color', self.transparentColorButton.color())
7054

7155
super().save()
7256

@@ -201,7 +185,7 @@ def saveAs(self):
201185
def settings(self):
202186
dlg = WindowSettingsDialog(self)
203187
if dlg.exec() == QDialog.Accepted:
204-
color = dlg.window_color
188+
color = dlg.windowColorButton.color()
205189
self.viewer.setBackgroundBrush(QBrush(color))
206190

207191
def _updateEditActions(self):

src/Tools/Gui.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
import os
22

33
from PySide6.QtCore import Qt, QSettings
4-
from PySide6.QtWidgets import QFileDialog, QApplication, QSplitter
4+
from PySide6.QtGui import QIcon, QPixmap
5+
from PySide6.QtWidgets import (
6+
QApplication,
7+
QColorDialog,
8+
QDialog,
9+
QFileDialog,
10+
QPushButton,
11+
QSizePolicy,
12+
QSplitter,
13+
)
514

615

716
class Splitter(QSplitter):
@@ -28,6 +37,33 @@ def showEvent(self, _e):
2837
self.splitterMoved.connect(self.splitterPosChanged)
2938

3039

40+
class ColorButton(QPushButton):
41+
42+
def __init__(self, color, parent=None):
43+
super().__init__(parent)
44+
45+
self._color = color
46+
47+
self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
48+
self.updateColorButton(self._color)
49+
self.clicked.connect(self.colorButtonClicked)
50+
51+
def color(self):
52+
return self._color
53+
54+
def colorButtonClicked(self):
55+
dlg = QColorDialog(self._color, self)
56+
if dlg.exec() == QDialog.Accepted:
57+
self._color = dlg.currentColor()
58+
self.updateColorButton(self._color)
59+
60+
def updateColorButton(self, color):
61+
pixmap = QPixmap(16, 16)
62+
pixmap.fill(color)
63+
icon = QIcon(pixmap)
64+
self.setIcon(icon)
65+
66+
3167
def getSaveFileName(parent, name, filename, dir_, filters):
3268
settings = QSettings()
3369

0 commit comments

Comments
 (0)