mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Add preference to turn off scrollbars in viewers
Refactor preference Display page to only include PE specific preferences in the PE mode.
This commit is contained in:
parent
eab5003e61
commit
fa54e93236
@ -20,6 +20,7 @@ tr = trget("ui")
|
|||||||
class DetailsDialog(DetailsDialogBase):
|
class DetailsDialog(DetailsDialogBase):
|
||||||
def __init__(self, parent, app):
|
def __init__(self, parent, app):
|
||||||
self.vController = None
|
self.vController = None
|
||||||
|
self.app = app
|
||||||
super().__init__(parent, app)
|
super().__init__(parent, app)
|
||||||
|
|
||||||
def _setupUi(self):
|
def _setupUi(self):
|
||||||
|
@ -894,7 +894,7 @@ class ScrollAreaImageViewer(QScrollArea):
|
|||||||
self._dragConnection = None
|
self._dragConnection = None
|
||||||
self._wheelConnection = None
|
self._wheelConnection = None
|
||||||
self._instance_name = name
|
self._instance_name = name
|
||||||
self.wantScrollBars = True
|
self.prefs = parent.app.prefs
|
||||||
self.bestFit = True
|
self.bestFit = True
|
||||||
self.controller = None
|
self.controller = None
|
||||||
self.label = ScalablePixmap(self)
|
self.label = ScalablePixmap(self)
|
||||||
@ -906,11 +906,13 @@ class ScrollAreaImageViewer(QScrollArea):
|
|||||||
self.setAlignment(Qt.AlignCenter)
|
self.setAlignment(Qt.AlignCenter)
|
||||||
self._verticalScrollBar = self.verticalScrollBar()
|
self._verticalScrollBar = self.verticalScrollBar()
|
||||||
self._horizontalScrollBar = self.horizontalScrollBar()
|
self._horizontalScrollBar = self.horizontalScrollBar()
|
||||||
if self.wantScrollBars:
|
|
||||||
|
if self.prefs.details_dialog_viewers_show_scrollbars:
|
||||||
self.toggleScrollBars()
|
self.toggleScrollBars()
|
||||||
else:
|
else:
|
||||||
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
||||||
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
||||||
|
|
||||||
self.setWidget(self.label)
|
self.setWidget(self.label)
|
||||||
self.setVisible(True)
|
self.setVisible(True)
|
||||||
|
|
||||||
@ -918,7 +920,7 @@ class ScrollAreaImageViewer(QScrollArea):
|
|||||||
return f'{self._instance_name}'
|
return f'{self._instance_name}'
|
||||||
|
|
||||||
def toggleScrollBars(self, forceOn=False):
|
def toggleScrollBars(self, forceOn=False):
|
||||||
if not self.wantScrollBars:
|
if not self.prefs.details_dialog_viewers_show_scrollbars:
|
||||||
return
|
return
|
||||||
# Ensure that it's off on the first run
|
# Ensure that it's off on the first run
|
||||||
if self.horizontalScrollBarPolicy() == Qt.ScrollBarAsNeeded:
|
if self.horizontalScrollBarPolicy() == Qt.ScrollBarAsNeeded:
|
||||||
@ -1135,7 +1137,7 @@ class GraphicsViewViewer(QGraphicsView):
|
|||||||
self._dragConnection = None
|
self._dragConnection = None
|
||||||
self._wheelConnection = None
|
self._wheelConnection = None
|
||||||
self._instance_name = name
|
self._instance_name = name
|
||||||
self.wantScrollBars = True
|
self.prefs = parent.app.prefs
|
||||||
self.bestFit = True
|
self.bestFit = True
|
||||||
self.controller = None
|
self.controller = None
|
||||||
self._centerPoint = QPointF()
|
self._centerPoint = QPointF()
|
||||||
@ -1153,7 +1155,7 @@ class GraphicsViewViewer(QGraphicsView):
|
|||||||
self._verticalScrollBar = self.verticalScrollBar()
|
self._verticalScrollBar = self.verticalScrollBar()
|
||||||
self.ignore_signal = False
|
self.ignore_signal = False
|
||||||
|
|
||||||
if self.wantScrollBars:
|
if self.prefs.details_dialog_viewers_show_scrollbars:
|
||||||
self.toggleScrollBars()
|
self.toggleScrollBars()
|
||||||
else:
|
else:
|
||||||
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
||||||
@ -1189,7 +1191,7 @@ class GraphicsViewViewer(QGraphicsView):
|
|||||||
self.controller.onHScrollBarChanged, Qt.UniqueConnection)
|
self.controller.onHScrollBarChanged, Qt.UniqueConnection)
|
||||||
|
|
||||||
def toggleScrollBars(self, forceOn=False):
|
def toggleScrollBars(self, forceOn=False):
|
||||||
if not self.wantScrollBars:
|
if not self.prefs.details_dialog_viewers_show_scrollbars:
|
||||||
return
|
return
|
||||||
# Ensure that it's off on the first run
|
# Ensure that it's off on the first run
|
||||||
if self.horizontalScrollBarPolicy() == Qt.ScrollBarAsNeeded:
|
if self.horizontalScrollBarPolicy() == Qt.ScrollBarAsNeeded:
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
from PyQt5.QtWidgets import QLabel
|
from PyQt5.QtWidgets import QLabel
|
||||||
from hscommon.trans import trget
|
from hscommon.trans import trget
|
||||||
|
from hscommon.plat import ISLINUX
|
||||||
from qtlib.radio_box import RadioBox
|
from qtlib.radio_box import RadioBox
|
||||||
from core.scanner import ScanType
|
from core.scanner import ScanType
|
||||||
from core.app import AppMode
|
from core.app import AppMode
|
||||||
@ -45,6 +46,26 @@ class PreferencesDialog(PreferencesDialogBase):
|
|||||||
self.widgetsVLayout.addWidget(self.cacheTypeRadio)
|
self.widgetsVLayout.addWidget(self.cacheTypeRadio)
|
||||||
self._setupBottomPart()
|
self._setupBottomPart()
|
||||||
|
|
||||||
|
def _setupDisplayPage(self):
|
||||||
|
super()._setupDisplayPage()
|
||||||
|
self._setupAddCheckbox("details_dialog_override_theme_icons",
|
||||||
|
tr("Override theme icons in viewer toolbar"))
|
||||||
|
self.details_dialog_override_theme_icons.setToolTip(
|
||||||
|
tr("Use our own internal icons instead of those provided by the theme engine"))
|
||||||
|
# Prevent changing this on platforms where themes are unpredictable
|
||||||
|
self.details_dialog_override_theme_icons.setEnabled(False if not ISLINUX else True)
|
||||||
|
# Insert this right after the vertical title bar option
|
||||||
|
index = self.displayVLayout.indexOf(self.details_dialog_vertical_titlebar)
|
||||||
|
self.displayVLayout.insertWidget(
|
||||||
|
index + 1, self.details_dialog_override_theme_icons)
|
||||||
|
self._setupAddCheckbox("details_dialog_viewers_show_scrollbars",
|
||||||
|
tr("Show scrollbars in image viewers"))
|
||||||
|
self.details_dialog_viewers_show_scrollbars.setToolTip(
|
||||||
|
tr("When the image displayed doesn't fit the viewport, \
|
||||||
|
show scrollbars to span the view around"))
|
||||||
|
self.displayVLayout.insertWidget(
|
||||||
|
index + 2, self.details_dialog_viewers_show_scrollbars)
|
||||||
|
|
||||||
def _load(self, prefs, setchecked, section):
|
def _load(self, prefs, setchecked, section):
|
||||||
setchecked(self.matchScaledBox, prefs.match_scaled)
|
setchecked(self.matchScaledBox, prefs.match_scaled)
|
||||||
self.cacheTypeRadio.selected_index = (
|
self.cacheTypeRadio.selected_index = (
|
||||||
@ -55,9 +76,17 @@ class PreferencesDialog(PreferencesDialogBase):
|
|||||||
scan_type = prefs.get_scan_type(AppMode.Picture)
|
scan_type = prefs.get_scan_type(AppMode.Picture)
|
||||||
fuzzy_scan = scan_type == ScanType.FuzzyBlock
|
fuzzy_scan = scan_type == ScanType.FuzzyBlock
|
||||||
self.filterHardnessSlider.setEnabled(fuzzy_scan)
|
self.filterHardnessSlider.setEnabled(fuzzy_scan)
|
||||||
|
setchecked(self.details_dialog_override_theme_icons,
|
||||||
|
prefs.details_dialog_override_theme_icons)
|
||||||
|
setchecked(self.details_dialog_viewers_show_scrollbars,
|
||||||
|
prefs.details_dialog_viewers_show_scrollbars)
|
||||||
|
|
||||||
def _save(self, prefs, ischecked):
|
def _save(self, prefs, ischecked):
|
||||||
prefs.match_scaled = ischecked(self.matchScaledBox)
|
prefs.match_scaled = ischecked(self.matchScaledBox)
|
||||||
prefs.picture_cache_type = (
|
prefs.picture_cache_type = (
|
||||||
"shelve" if self.cacheTypeRadio.selected_index == 1 else "sqlite"
|
"shelve" if self.cacheTypeRadio.selected_index == 1 else "sqlite"
|
||||||
)
|
)
|
||||||
|
prefs.details_dialog_override_theme_icons =\
|
||||||
|
ischecked(self.details_dialog_override_theme_icons)
|
||||||
|
prefs.details_dialog_viewers_show_scrollbars =\
|
||||||
|
ischecked(self.details_dialog_viewers_show_scrollbars)
|
||||||
|
@ -33,22 +33,24 @@ class Preferences(PreferencesBase):
|
|||||||
self.language = trans.installed_lang
|
self.language = trans.installed_lang
|
||||||
|
|
||||||
self.tableFontSize = get("TableFontSize", self.tableFontSize)
|
self.tableFontSize = get("TableFontSize", self.tableFontSize)
|
||||||
self.reference_bold_font = get('ReferenceBoldFont', self.reference_bold_font)
|
self.reference_bold_font = get("ReferenceBoldFont", self.reference_bold_font)
|
||||||
self.details_dialog_titlebar_enabled = get('DetailsDialogTitleBarEnabled',
|
self.details_dialog_titlebar_enabled = get("DetailsDialogTitleBarEnabled",
|
||||||
self.details_dialog_titlebar_enabled)
|
self.details_dialog_titlebar_enabled)
|
||||||
self.details_dialog_vertical_titlebar = get('DetailsDialogVerticalTitleBar',
|
self.details_dialog_vertical_titlebar = get("DetailsDialogVerticalTitleBar",
|
||||||
self.details_dialog_vertical_titlebar)
|
self.details_dialog_vertical_titlebar)
|
||||||
# On Windows and MacOS, use internal icons by default
|
# On Windows and MacOS, use internal icons by default
|
||||||
self.details_dialog_override_theme_icons =\
|
self.details_dialog_override_theme_icons =\
|
||||||
get('DetailsDialogOverrideThemeIcons',
|
get("DetailsDialogOverrideThemeIcons",
|
||||||
self.details_dialog_override_theme_icons) if ISLINUX else True
|
self.details_dialog_override_theme_icons) if ISLINUX else True
|
||||||
self.details_table_delta_foreground_color =\
|
self.details_table_delta_foreground_color =\
|
||||||
get('DetailsTableDeltaForegroundColor', self.details_table_delta_foreground_color)
|
get("DetailsTableDeltaForegroundColor", self.details_table_delta_foreground_color)
|
||||||
|
self.details_dialog_viewers_show_scrollbars =\
|
||||||
|
get("DetailsDialogViewersShowScrollbars", self.details_dialog_viewers_show_scrollbars)
|
||||||
|
|
||||||
self.result_table_ref_foreground_color =\
|
self.result_table_ref_foreground_color =\
|
||||||
get('ResultTableRefForegroundColor', self.result_table_ref_foreground_color)
|
get("ResultTableRefForegroundColor", self.result_table_ref_foreground_color)
|
||||||
self.result_table_delta_foreground_color =\
|
self.result_table_delta_foreground_color =\
|
||||||
get('ResultTableDeltaForegroundColor', self.result_table_delta_foreground_color)
|
get("ResultTableDeltaForegroundColor", self.result_table_delta_foreground_color)
|
||||||
|
|
||||||
self.resultWindowIsMaximized = get(
|
self.resultWindowIsMaximized = get(
|
||||||
"ResultWindowIsMaximized", self.resultWindowIsMaximized
|
"ResultWindowIsMaximized", self.resultWindowIsMaximized
|
||||||
@ -91,6 +93,7 @@ class Preferences(PreferencesBase):
|
|||||||
self.details_table_delta_foreground_color = QColor(250, 20, 20) # red
|
self.details_table_delta_foreground_color = QColor(250, 20, 20) # red
|
||||||
# By default use internal icons on platforms other than Linux for now
|
# By default use internal icons on platforms other than Linux for now
|
||||||
self.details_dialog_override_theme_icons = False if not ISLINUX else True
|
self.details_dialog_override_theme_icons = False if not ISLINUX else True
|
||||||
|
self.details_dialog_viewers_show_scrollbars = True
|
||||||
self.result_table_ref_foreground_color = QColor(Qt.blue)
|
self.result_table_ref_foreground_color = QColor(Qt.blue)
|
||||||
self.result_table_delta_foreground_color = QColor(255, 142, 40) # orange
|
self.result_table_delta_foreground_color = QColor(255, 142, 40) # orange
|
||||||
self.resultWindowIsMaximized = False
|
self.resultWindowIsMaximized = False
|
||||||
@ -125,13 +128,14 @@ class Preferences(PreferencesBase):
|
|||||||
set_("Language", self.language)
|
set_("Language", self.language)
|
||||||
|
|
||||||
set_("TableFontSize", self.tableFontSize)
|
set_("TableFontSize", self.tableFontSize)
|
||||||
set_('ReferenceBoldFont', self.reference_bold_font)
|
set_("ReferenceBoldFont", self.reference_bold_font)
|
||||||
set_('DetailsDialogTitleBarEnabled', self.details_dialog_titlebar_enabled)
|
set_("DetailsDialogTitleBarEnabled", self.details_dialog_titlebar_enabled)
|
||||||
set_('DetailsDialogVerticalTitleBar', self.details_dialog_vertical_titlebar)
|
set_("DetailsDialogVerticalTitleBar", self.details_dialog_vertical_titlebar)
|
||||||
set_('DetailsDialogOverrideThemeIcons', self.details_dialog_override_theme_icons)
|
set_("DetailsDialogOverrideThemeIcons", self.details_dialog_override_theme_icons)
|
||||||
set_('DetailsTableDeltaForegroundColor', self.details_table_delta_foreground_color)
|
set_("DetailsDialogViewersShowScrollbars", self.details_dialog_viewers_show_scrollbars)
|
||||||
set_('ResultTableRefForegroundColor', self.result_table_ref_foreground_color)
|
set_("DetailsTableDeltaForegroundColor", self.details_table_delta_foreground_color)
|
||||||
set_('ResultTableDeltaForegroundColor', self.result_table_delta_foreground_color)
|
set_("ResultTableRefForegroundColor", self.result_table_ref_foreground_color)
|
||||||
|
set_("ResultTableDeltaForegroundColor", self.result_table_delta_foreground_color)
|
||||||
set_("ResultWindowIsMaximized", self.resultWindowIsMaximized)
|
set_("ResultWindowIsMaximized", self.resultWindowIsMaximized)
|
||||||
self.set_rect("ResultWindowRect", self.resultWindowRect)
|
self.set_rect("ResultWindowRect", self.resultWindowRect)
|
||||||
self.set_rect("DirectoriesWindowRect", self.directoriesWindowRect)
|
self.set_rect("DirectoriesWindowRect", self.directoriesWindowRect)
|
||||||
|
@ -127,7 +127,6 @@ class PreferencesDialogBase(QDialog):
|
|||||||
|
|
||||||
def _setupBottomPart(self):
|
def _setupBottomPart(self):
|
||||||
# The bottom part of the pref panel is always the same in all editions.
|
# The bottom part of the pref panel is always the same in all editions.
|
||||||
self._setupDisplayPage()
|
|
||||||
self.copyMoveLabel = QLabel(self)
|
self.copyMoveLabel = QLabel(self)
|
||||||
self.copyMoveLabel.setText(tr("Copy and Move:"))
|
self.copyMoveLabel.setText(tr("Copy and Move:"))
|
||||||
self.widgetsVLayout.addWidget(self.copyMoveLabel)
|
self.widgetsVLayout.addWidget(self.copyMoveLabel)
|
||||||
@ -185,24 +184,21 @@ class PreferencesDialogBase(QDialog):
|
|||||||
self.details_dialog_label = QLabel(tr("Details window:"))
|
self.details_dialog_label = QLabel(tr("Details window:"))
|
||||||
self.displayVLayout.addWidget(self.details_dialog_label)
|
self.displayVLayout.addWidget(self.details_dialog_label)
|
||||||
self._setupAddCheckbox("details_dialog_titlebar_enabled",
|
self._setupAddCheckbox("details_dialog_titlebar_enabled",
|
||||||
tr("Show a title bar and is dockable"))
|
tr("Show the title bar and can be docked"))
|
||||||
self.details_dialog_titlebar_enabled.setToolTip(
|
self.details_dialog_titlebar_enabled.setToolTip(
|
||||||
tr("Title bar can only be disabled while the window is docked"))
|
tr("While the title bar is hidden, \
|
||||||
|
use the modifier key to drag the floating window around") if ISLINUX else
|
||||||
|
tr("The title bar can only be disabled while the window is docked"))
|
||||||
self.displayVLayout.addWidget(self.details_dialog_titlebar_enabled)
|
self.displayVLayout.addWidget(self.details_dialog_titlebar_enabled)
|
||||||
self._setupAddCheckbox("details_dialog_vertical_titlebar",
|
self._setupAddCheckbox("details_dialog_vertical_titlebar",
|
||||||
tr("Vertical title bar"))
|
tr("Vertical title bar"))
|
||||||
|
self.details_dialog_vertical_titlebar.setToolTip(
|
||||||
|
tr("Change the title bar from horizontal on top, to vertical on the left side"))
|
||||||
self.displayVLayout.addWidget(self.details_dialog_vertical_titlebar)
|
self.displayVLayout.addWidget(self.details_dialog_vertical_titlebar)
|
||||||
self.details_dialog_vertical_titlebar.setEnabled(
|
self.details_dialog_vertical_titlebar.setEnabled(
|
||||||
self.details_dialog_titlebar_enabled.isChecked())
|
self.details_dialog_titlebar_enabled.isChecked())
|
||||||
self.details_dialog_titlebar_enabled.stateChanged.connect(
|
self.details_dialog_titlebar_enabled.stateChanged.connect(
|
||||||
self.details_dialog_vertical_titlebar.setEnabled)
|
self.details_dialog_vertical_titlebar.setEnabled)
|
||||||
self._setupAddCheckbox("details_dialog_override_theme_icons",
|
|
||||||
tr("Override theme icons"))
|
|
||||||
self.details_dialog_override_theme_icons.setToolTip(
|
|
||||||
tr("Use our own internal icons instead of those provided by the theme engine"))
|
|
||||||
# Prevent changing this on platforms where themes are unpredictable
|
|
||||||
self.details_dialog_override_theme_icons.setEnabled(False if not ISLINUX else True)
|
|
||||||
self.displayVLayout.addWidget(self.details_dialog_override_theme_icons)
|
|
||||||
gridlayout = QGridLayout()
|
gridlayout = QGridLayout()
|
||||||
self.details_table_delta_foreground_color_label = QLabel(tr("Delta foreground color:"))
|
self.details_table_delta_foreground_color_label = QLabel(tr("Delta foreground color:"))
|
||||||
gridlayout.addWidget(self.details_table_delta_foreground_color_label, 4, 0)
|
gridlayout.addWidget(self.details_table_delta_foreground_color_label, 4, 0)
|
||||||
@ -234,6 +230,7 @@ class PreferencesDialogBase(QDialog):
|
|||||||
self.displayVLayout = QVBoxLayout()
|
self.displayVLayout = QVBoxLayout()
|
||||||
self.page_display.setLayout(self.displayVLayout)
|
self.page_display.setLayout(self.displayVLayout)
|
||||||
self._setupPreferenceWidgets()
|
self._setupPreferenceWidgets()
|
||||||
|
self._setupDisplayPage()
|
||||||
# self.mainVLayout.addLayout(self.widgetsVLayout)
|
# self.mainVLayout.addLayout(self.widgetsVLayout)
|
||||||
self.buttonBox = QDialogButtonBox(self)
|
self.buttonBox = QDialogButtonBox(self)
|
||||||
self.buttonBox.setStandardButtons(
|
self.buttonBox.setStandardButtons(
|
||||||
@ -277,8 +274,6 @@ class PreferencesDialogBase(QDialog):
|
|||||||
setchecked(self.details_dialog_vertical_titlebar,
|
setchecked(self.details_dialog_vertical_titlebar,
|
||||||
prefs.details_dialog_vertical_titlebar)
|
prefs.details_dialog_vertical_titlebar)
|
||||||
self.fontSizeSpinBox.setValue(prefs.tableFontSize)
|
self.fontSizeSpinBox.setValue(prefs.tableFontSize)
|
||||||
setchecked(self.details_dialog_override_theme_icons,
|
|
||||||
prefs.details_dialog_override_theme_icons)
|
|
||||||
self.details_table_delta_foreground_color.setColor(
|
self.details_table_delta_foreground_color.setColor(
|
||||||
prefs.details_table_delta_foreground_color)
|
prefs.details_table_delta_foreground_color)
|
||||||
self.result_table_ref_foreground_color.setColor(
|
self.result_table_ref_foreground_color.setColor(
|
||||||
@ -304,7 +299,6 @@ class PreferencesDialogBase(QDialog):
|
|||||||
prefs.reference_bold_font = ischecked(self.reference_bold_font)
|
prefs.reference_bold_font = ischecked(self.reference_bold_font)
|
||||||
prefs.details_dialog_titlebar_enabled = ischecked(self.details_dialog_titlebar_enabled)
|
prefs.details_dialog_titlebar_enabled = ischecked(self.details_dialog_titlebar_enabled)
|
||||||
prefs.details_dialog_vertical_titlebar = ischecked(self.details_dialog_vertical_titlebar)
|
prefs.details_dialog_vertical_titlebar = ischecked(self.details_dialog_vertical_titlebar)
|
||||||
prefs.details_dialog_override_theme_icons = ischecked(self.details_dialog_override_theme_icons)
|
|
||||||
prefs.details_table_delta_foreground_color = self.details_table_delta_foreground_color.color
|
prefs.details_table_delta_foreground_color = self.details_table_delta_foreground_color.color
|
||||||
prefs.result_table_ref_foreground_color = self.result_table_ref_foreground_color.color
|
prefs.result_table_ref_foreground_color = self.result_table_ref_foreground_color.color
|
||||||
prefs.result_table_delta_foreground_color = self.result_table_delta_foreground_color.color
|
prefs.result_table_delta_foreground_color = self.result_table_delta_foreground_color.color
|
||||||
|
Loading…
x
Reference in New Issue
Block a user