mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-09 21:24:36 +00:00
Save/Load directories in Directories
* Add the ability to save / load directories as XML, just like the last_directories.xml which get loaded on program start.
This commit is contained in:
parent
ab402d4024
commit
2a032d24bc
16
core/app.py
16
core/app.py
@ -588,6 +588,12 @@ class DupeGuru(Broadcaster):
|
||||
self.ignore_list.load_from_xml(p)
|
||||
self.ignore_list_dialog.refresh()
|
||||
|
||||
def load_directories(self, filepath):
|
||||
# Clear out previous entries
|
||||
self.directories.__init__()
|
||||
self.directories.load_from_file(filepath)
|
||||
self.notify("directories_changed")
|
||||
|
||||
def load_from(self, filename):
|
||||
"""Start an async job to load results from ``filename``.
|
||||
|
||||
@ -785,6 +791,16 @@ class DupeGuru(Broadcaster):
|
||||
except OSError as e:
|
||||
self.view.show_message(tr("Couldn't write to file: {}").format(str(e)))
|
||||
|
||||
def save_directories_as(self, filename):
|
||||
"""Save directories in ``filename``.
|
||||
|
||||
:param str filename: path of the file to save directories (as XML) to.
|
||||
"""
|
||||
try:
|
||||
self.directories.save_to_file(filename)
|
||||
except OSError as e:
|
||||
self.view.show_message(tr("Couldn't write to file: {}").format(str(e)))
|
||||
|
||||
def start_scanning(self):
|
||||
"""Starts an async job to scan for duplicates.
|
||||
|
||||
|
@ -92,12 +92,14 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.app.showResultsWindow,
|
||||
),
|
||||
("actionAddFolder", "", "", tr("Add Folder..."), self.addFolderTriggered),
|
||||
("actionLoadDirectories", "", "", tr("Load Directories..."), self.loadDirectoriesTriggered),
|
||||
("actionSaveDirectories", "", "", tr("Save Directories..."), self.saveDirectoriesTriggered),
|
||||
]
|
||||
createActions(ACTIONS, self)
|
||||
# if self.app.use_tabs:
|
||||
# # Keep track of actions which should only be accessible from this class
|
||||
# for action, _, _, _, _ in ACTIONS:
|
||||
# self.specific_actions.add(getattr(self, action))
|
||||
if self.app.use_tabs:
|
||||
# Keep track of actions which should only be accessible from this window
|
||||
self.specific_actions.add(self.actionLoadDirectories)
|
||||
self.specific_actions.add(self.actionSaveDirectories)
|
||||
|
||||
def _setupMenu(self):
|
||||
if not self.app.use_tabs:
|
||||
@ -127,6 +129,9 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.menuFile.addSeparator()
|
||||
self.menuFile.addAction(self.app.actionClearPictureCache)
|
||||
self.menuFile.addSeparator()
|
||||
self.menuFile.addAction(self.actionLoadDirectories)
|
||||
self.menuFile.addAction(self.actionSaveDirectories)
|
||||
self.menuFile.addSeparator()
|
||||
self.menuFile.addAction(self.app.actionQuit)
|
||||
|
||||
self.menuView.addAction(self.app.actionDirectoriesWindow)
|
||||
@ -327,9 +332,25 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.app.model.load_from(destination)
|
||||
self.app.recentResults.insertItem(destination)
|
||||
|
||||
def loadDirectoriesTriggered(self):
|
||||
title = tr("Select a directories file to load")
|
||||
files = ";;".join([tr("dupeGuru Results (*.dupegurudirs)"), tr("All Files (*.*)")])
|
||||
destination = QFileDialog.getOpenFileName(self, title, "", files)[0]
|
||||
if destination:
|
||||
self.app.model.load_directories(destination)
|
||||
|
||||
def removeFolderButtonClicked(self):
|
||||
self.directoriesModel.model.remove_selected()
|
||||
|
||||
def saveDirectoriesTriggered(self):
|
||||
title = tr("Select a file to save your directories to")
|
||||
files = tr("dupeGuru Directories (*.dupegurudirs)")
|
||||
destination, chosen_filter = QFileDialog.getSaveFileName(self, title, "", files)
|
||||
if destination:
|
||||
if not destination.endswith(".dupegurudirs"):
|
||||
destination = "{}.dupegurudirs".format(destination)
|
||||
self.app.model.save_directories_as(destination)
|
||||
|
||||
def scanButtonClicked(self):
|
||||
if self.app.model.results.is_modified:
|
||||
title = tr("Start a new scan")
|
||||
|
Loading…
x
Reference in New Issue
Block a user