mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Adapted th qt part to core.gui.directory_tree.
This commit is contained in:
parent
b5dd9651c3
commit
76d351d8be
@ -21,6 +21,4 @@ http://www.hardcoded.net/licenses/hs_license
|
||||
#define jobScan @"job_scan"
|
||||
#define jobCopy @"job_copy"
|
||||
#define jobMove @"job_move"
|
||||
#define jobDelete @"job_delete"
|
||||
|
||||
#define DEMO_MAX_ACTION_COUNT 10
|
||||
#define jobDelete @"job_delete"
|
@ -23,6 +23,11 @@ class DirectoryNode(Node):
|
||||
self._loaded = False
|
||||
self._state = STATE_ORDER.index(self._app.directories.get_state(path))
|
||||
|
||||
def __len__(self):
|
||||
if not self._loaded:
|
||||
self._load()
|
||||
return Node.__len__(self)
|
||||
|
||||
def _load(self):
|
||||
self.clear()
|
||||
subpaths = self._app.directories.get_subfolders(self._directory_path)
|
||||
@ -30,12 +35,6 @@ class DirectoryNode(Node):
|
||||
self.append(DirectoryNode(self._app, path, path[-1]))
|
||||
self._loaded = True
|
||||
|
||||
@property
|
||||
def children_count(self):
|
||||
if not self._loaded:
|
||||
self._load()
|
||||
return len(self)
|
||||
|
||||
# The state propery is an index to the combobox
|
||||
@property
|
||||
def state(self):
|
||||
|
@ -254,9 +254,7 @@ class DupeGuru(DupeGuruBase, QObject):
|
||||
|
||||
def job_finished(self, jobid):
|
||||
self.emit(SIGNAL('resultsChanged()'))
|
||||
if jobid == JOB_LOAD:
|
||||
self.emit(SIGNAL('directoriesChanged()'))
|
||||
elif jobid in (JOB_MOVE, JOB_COPY, JOB_DELETE) and self.last_op_error_count > 0:
|
||||
if jobid in (JOB_MOVE, JOB_COPY, JOB_DELETE) and self.last_op_error_count > 0:
|
||||
msg = "{0} files could not be processed.".format(self.results.mark_count)
|
||||
QMessageBox.warning(self.main_window, 'Warning', msg)
|
||||
elif jobid == JOB_SCAN:
|
||||
|
@ -26,7 +26,6 @@ class DirectoriesDialog(QDialog, Ui_DirectoriesDialog):
|
||||
self.connect(self.addButton, SIGNAL('clicked()'), self.addButtonClicked)
|
||||
self.connect(self.removeButton, SIGNAL('clicked()'), self.removeButtonClicked)
|
||||
self.connect(self.treeView.selectionModel(), SIGNAL('selectionChanged(QItemSelection,QItemSelection)'), self.selectionChanged)
|
||||
self.connect(self.app, SIGNAL('directoriesChanged()'), self.directoriesChanged)
|
||||
|
||||
def _setupUi(self):
|
||||
self.setupUi(self)
|
||||
@ -60,10 +59,6 @@ class DirectoriesDialog(QDialog, Ui_DirectoriesDialog):
|
||||
return
|
||||
self.lastAddedFolder = dirpath
|
||||
self.app.add_directory(dirpath)
|
||||
self.directoriesModel.reset()
|
||||
|
||||
def directoriesChanged(self):
|
||||
self.directoriesModel.reset()
|
||||
|
||||
def doneButtonClicked(self):
|
||||
self.hide()
|
||||
@ -76,8 +71,7 @@ class DirectoriesDialog(QDialog, Ui_DirectoriesDialog):
|
||||
node = index.internalPointer()
|
||||
if node.parent is None:
|
||||
row = index.row()
|
||||
del self.app.directories[row]
|
||||
self.directoriesModel.reset()
|
||||
self.app.remove_directory(row)
|
||||
|
||||
def selectionChanged(self, selected, deselected):
|
||||
self._updateRemoveButton()
|
||||
|
@ -12,7 +12,9 @@ from PyQt4.QtCore import QModelIndex, Qt, QRect, QEvent, QPoint, QUrl
|
||||
from PyQt4.QtGui import (QComboBox, QStyledItemDelegate, QMouseEvent, QApplication, QBrush, QStyle,
|
||||
QStyleOptionComboBox, QStyleOptionViewItemV4)
|
||||
|
||||
from qtlib.tree_model import TreeNode, TreeModel
|
||||
from qtlib.tree_model import RefNode, TreeModel
|
||||
|
||||
from core.gui.directory_tree import DirectoryTree
|
||||
|
||||
HEADERS = ['Name', 'State']
|
||||
STATES = ['Normal', 'Reference', 'Excluded']
|
||||
@ -58,36 +60,16 @@ class DirectoriesDelegate(QStyledItemDelegate):
|
||||
editor.setGeometry(option.rect)
|
||||
|
||||
|
||||
class DirectoryNode(TreeNode):
|
||||
def __init__(self, model, parent, ref, row):
|
||||
TreeNode.__init__(self, model, parent, row)
|
||||
self.ref = ref
|
||||
|
||||
def _createNode(self, ref, row):
|
||||
return DirectoryNode(self.model, self, ref, row)
|
||||
|
||||
def _getChildren(self):
|
||||
return self.model.dirs.get_subfolders(self.ref)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
if self.parent is not None:
|
||||
return self.ref[-1]
|
||||
else:
|
||||
return unicode(self.ref)
|
||||
|
||||
|
||||
class DirectoriesModel(TreeModel):
|
||||
def __init__(self, app):
|
||||
self.app = app
|
||||
self.dirs = app.directories
|
||||
TreeModel.__init__(self)
|
||||
self.model = DirectoryTree(self, app)
|
||||
|
||||
def _createNode(self, ref, row):
|
||||
return DirectoryNode(self, None, ref, row)
|
||||
return RefNode(self, None, ref, row)
|
||||
|
||||
def _getChildren(self):
|
||||
return self.dirs
|
||||
return list(self.model)
|
||||
|
||||
def columnCount(self, parent):
|
||||
return 2
|
||||
@ -96,15 +78,16 @@ class DirectoriesModel(TreeModel):
|
||||
if not index.isValid():
|
||||
return None
|
||||
node = index.internalPointer()
|
||||
ref = node.ref
|
||||
if role == Qt.DisplayRole:
|
||||
if index.column() == 0:
|
||||
return node.name
|
||||
return ref.name
|
||||
else:
|
||||
return STATES[self.dirs.get_state(node.ref)]
|
||||
return STATES[ref.state]
|
||||
elif role == Qt.EditRole and index.column() == 1:
|
||||
return self.dirs.get_state(node.ref)
|
||||
return ref.state
|
||||
elif role == Qt.ForegroundRole:
|
||||
state = self.dirs.get_state(node.ref)
|
||||
state = ref.state
|
||||
if state == 1:
|
||||
return QBrush(Qt.blue)
|
||||
elif state == 2:
|
||||
@ -121,7 +104,7 @@ class DirectoriesModel(TreeModel):
|
||||
urls = unicode(unquoted, 'utf-8').split('\r\n')
|
||||
paths = [unicode(QUrl(url).toLocalFile()) for url in urls if url]
|
||||
for path in paths:
|
||||
self.app.add_directory(path)
|
||||
self.model.add_directory(path)
|
||||
self.reset()
|
||||
return True
|
||||
|
||||
@ -146,7 +129,8 @@ class DirectoriesModel(TreeModel):
|
||||
if not index.isValid() or role != Qt.EditRole or index.column() != 1:
|
||||
return False
|
||||
node = index.internalPointer()
|
||||
self.dirs.set_state(node.ref, value)
|
||||
ref = node.ref
|
||||
ref.state = value
|
||||
return True
|
||||
|
||||
def supportedDropActions(self):
|
||||
@ -154,3 +138,7 @@ class DirectoriesModel(TreeModel):
|
||||
# work with ActionMove either. So screw that, and accept anything.
|
||||
return Qt.ActionMask
|
||||
|
||||
#--- model --> view
|
||||
def refresh(self):
|
||||
self.reset()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user