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.QtCore import QRect, Qt
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
|
QListView,
|
||||||
QWidget,
|
QWidget,
|
||||||
QFileDialog,
|
QFileDialog,
|
||||||
QHeaderView,
|
QHeaderView,
|
||||||
@ -285,14 +286,25 @@ class DirectoriesDialog(QMainWindow):
|
|||||||
|
|
||||||
# --- Events
|
# --- Events
|
||||||
def addFolderTriggered(self):
|
def addFolderTriggered(self):
|
||||||
|
no_native = not self.app.prefs.use_native_dialogs
|
||||||
title = tr("Select a folder to add to the scanning list")
|
title = tr("Select a folder to add to the scanning list")
|
||||||
flags = QFileDialog.ShowDirsOnly
|
file_dialog = QFileDialog(self, title, self.lastAddedFolder)
|
||||||
dirpath = str(QFileDialog.getExistingDirectory(self, title, self.lastAddedFolder, flags))
|
file_dialog.setFileMode(QFileDialog.DirectoryOnly)
|
||||||
if not dirpath:
|
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
|
return
|
||||||
self.lastAddedFolder = dirpath
|
|
||||||
self.app.model.add_directory(dirpath)
|
paths = file_dialog.selectedFiles()
|
||||||
self.recentFolders.insertItem(dirpath)
|
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):
|
def appModeButtonSelected(self, index):
|
||||||
if index == 2:
|
if index == 2:
|
||||||
|
@ -30,6 +30,7 @@ class Preferences(PreferencesBase):
|
|||||||
if not self.language and trans.installed_lang:
|
if not self.language and trans.installed_lang:
|
||||||
self.language = trans.installed_lang
|
self.language = trans.installed_lang
|
||||||
self.portable = get("Portable", False)
|
self.portable = get("Portable", False)
|
||||||
|
self.use_native_dialogs = get("UseNativeDialogs", True)
|
||||||
|
|
||||||
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)
|
||||||
@ -92,6 +93,7 @@ class Preferences(PreferencesBase):
|
|||||||
self.destination_type = 1
|
self.destination_type = 1
|
||||||
self.custom_command = ""
|
self.custom_command = ""
|
||||||
self.language = trans.installed_lang if trans.installed_lang else ""
|
self.language = trans.installed_lang if trans.installed_lang else ""
|
||||||
|
self.use_native_dialogs = True
|
||||||
|
|
||||||
self.tableFontSize = QApplication.font().pointSize()
|
self.tableFontSize = QApplication.font().pointSize()
|
||||||
self.reference_bold_font = True
|
self.reference_bold_font = True
|
||||||
@ -140,6 +142,7 @@ class Preferences(PreferencesBase):
|
|||||||
set_("CustomCommand", self.custom_command)
|
set_("CustomCommand", self.custom_command)
|
||||||
set_("Language", self.language)
|
set_("Language", self.language)
|
||||||
set_("Portable", self.portable)
|
set_("Portable", self.portable)
|
||||||
|
set_("UseNativeDialogs", self.use_native_dialogs)
|
||||||
|
|
||||||
set_("TableFontSize", self.tableFontSize)
|
set_("TableFontSize", self.tableFontSize)
|
||||||
set_("ReferenceBoldFont", self.reference_bold_font)
|
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)
|
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.ui_groupbox.setLayout(layout)
|
||||||
self.displayVLayout.addWidget(self.ui_groupbox)
|
self.displayVLayout.addWidget(self.ui_groupbox)
|
||||||
|
|
||||||
@ -286,6 +296,7 @@ use the modifier key to drag the floating window around"
|
|||||||
if section & Sections.DISPLAY:
|
if section & Sections.DISPLAY:
|
||||||
setchecked(self.reference_bold_font, prefs.reference_bold_font)
|
setchecked(self.reference_bold_font, prefs.reference_bold_font)
|
||||||
setchecked(self.tabs_default_pos, prefs.tabs_default_pos)
|
setchecked(self.tabs_default_pos, prefs.tabs_default_pos)
|
||||||
|
setchecked(self.use_native_dialogs, prefs.use_native_dialogs)
|
||||||
setchecked(
|
setchecked(
|
||||||
self.details_dialog_titlebar_enabled,
|
self.details_dialog_titlebar_enabled,
|
||||||
prefs.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.custom_command = str(self.customCommandEdit.text())
|
||||||
prefs.tableFontSize = self.fontSizeSpinBox.value()
|
prefs.tableFontSize = self.fontSizeSpinBox.value()
|
||||||
prefs.tabs_default_pos = ischecked(self.tabs_default_pos)
|
prefs.tabs_default_pos = ischecked(self.tabs_default_pos)
|
||||||
|
prefs.use_native_dialogs = ischecked(self.use_native_dialogs)
|
||||||
lang = self.supportedLanguages[self.languageComboBox.currentIndex()]
|
lang = self.supportedLanguages[self.languageComboBox.currentIndex()]
|
||||||
oldlang = self.app.prefs.language
|
oldlang = self.app.prefs.language
|
||||||
if oldlang not in self.supportedLanguages:
|
if oldlang not in self.supportedLanguages:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user