mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Add ability to use non-native dialog for directories
- Add preference for native dialogs - Add non-native directory selection to allow selecting multiple folders fixes #874 when using non-native.
This commit is contained in:
parent
2c9437bef4
commit
da72ffd1fd
@ -6,6 +6,7 @@
|
||||
|
||||
from PyQt5.QtCore import QRect, Qt
|
||||
from PyQt5.QtWidgets import (
|
||||
QListView,
|
||||
QWidget,
|
||||
QFileDialog,
|
||||
QHeaderView,
|
||||
@ -285,14 +286,25 @@ class DirectoriesDialog(QMainWindow):
|
||||
|
||||
# --- Events
|
||||
def addFolderTriggered(self):
|
||||
no_native = not self.app.prefs.use_native_dialogs
|
||||
title = tr("Select a folder to add to the scanning list")
|
||||
flags = QFileDialog.ShowDirsOnly
|
||||
dirpath = str(QFileDialog.getExistingDirectory(self, title, self.lastAddedFolder, flags))
|
||||
if not dirpath:
|
||||
file_dialog = QFileDialog(self, title, self.lastAddedFolder)
|
||||
file_dialog.setFileMode(QFileDialog.DirectoryOnly)
|
||||
file_dialog.setOption(QFileDialog.DontUseNativeDialog, no_native)
|
||||
if no_native:
|
||||
file_view = file_dialog.findChild(QListView, "listView")
|
||||
if file_view:
|
||||
file_view.setSelectionMode(QAbstractItemView.MultiSelection)
|
||||
f_tree_view = file_dialog.findChild(QTreeView)
|
||||
if f_tree_view:
|
||||
f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection)
|
||||
if not file_dialog.exec():
|
||||
return
|
||||
self.lastAddedFolder = dirpath
|
||||
self.app.model.add_directory(dirpath)
|
||||
self.recentFolders.insertItem(dirpath)
|
||||
|
||||
paths = file_dialog.selectedFiles()
|
||||
self.lastAddedFolder = paths[-1]
|
||||
[self.app.model.add_directory(path) for path in paths]
|
||||
[self.recentFolders.insertItem(path) for path in paths]
|
||||
|
||||
def appModeButtonSelected(self, index):
|
||||
if index == 2:
|
||||
|
@ -30,6 +30,7 @@ class Preferences(PreferencesBase):
|
||||
if not self.language and trans.installed_lang:
|
||||
self.language = trans.installed_lang
|
||||
self.portable = get("Portable", False)
|
||||
self.use_native_dialogs = get("UseNativeDialogs", True)
|
||||
|
||||
self.tableFontSize = get("TableFontSize", self.tableFontSize)
|
||||
self.reference_bold_font = get("ReferenceBoldFont", self.reference_bold_font)
|
||||
@ -92,6 +93,7 @@ class Preferences(PreferencesBase):
|
||||
self.destination_type = 1
|
||||
self.custom_command = ""
|
||||
self.language = trans.installed_lang if trans.installed_lang else ""
|
||||
self.use_native_dialogs = True
|
||||
|
||||
self.tableFontSize = QApplication.font().pointSize()
|
||||
self.reference_bold_font = True
|
||||
@ -140,6 +142,7 @@ class Preferences(PreferencesBase):
|
||||
set_("CustomCommand", self.custom_command)
|
||||
set_("Language", self.language)
|
||||
set_("Portable", self.portable)
|
||||
set_("UseNativeDialogs", self.use_native_dialogs)
|
||||
|
||||
set_("TableFontSize", self.tableFontSize)
|
||||
set_("ReferenceBoldFont", self.reference_bold_font)
|
||||
|
@ -158,6 +158,16 @@ On MacOS, the tab bar will fill up the window's width instead."
|
||||
)
|
||||
)
|
||||
layout.addWidget(self.tabs_default_pos)
|
||||
self._setupAddCheckbox(
|
||||
"use_native_dialogs",
|
||||
tr("Use native OS dialogs"),
|
||||
)
|
||||
self.use_native_dialogs.setToolTip(
|
||||
tr(
|
||||
"For actions such as file/folder selection use the OS native dialogs.\nSome native dialogs have limited functionality."
|
||||
)
|
||||
)
|
||||
layout.addWidget(self.use_native_dialogs)
|
||||
self.ui_groupbox.setLayout(layout)
|
||||
self.displayVLayout.addWidget(self.ui_groupbox)
|
||||
|
||||
@ -286,6 +296,7 @@ use the modifier key to drag the floating window around"
|
||||
if section & Sections.DISPLAY:
|
||||
setchecked(self.reference_bold_font, prefs.reference_bold_font)
|
||||
setchecked(self.tabs_default_pos, prefs.tabs_default_pos)
|
||||
setchecked(self.use_native_dialogs, prefs.use_native_dialogs)
|
||||
setchecked(
|
||||
self.details_dialog_titlebar_enabled,
|
||||
prefs.details_dialog_titlebar_enabled,
|
||||
@ -329,6 +340,7 @@ use the modifier key to drag the floating window around"
|
||||
prefs.custom_command = str(self.customCommandEdit.text())
|
||||
prefs.tableFontSize = self.fontSizeSpinBox.value()
|
||||
prefs.tabs_default_pos = ischecked(self.tabs_default_pos)
|
||||
prefs.use_native_dialogs = ischecked(self.use_native_dialogs)
|
||||
lang = self.supportedLanguages[self.languageComboBox.currentIndex()]
|
||||
oldlang = self.app.prefs.language
|
||||
if oldlang not in self.supportedLanguages:
|
||||
|
Loading…
x
Reference in New Issue
Block a user