1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-03-10 05:34:36 +00:00

[#165 state:fixed] Don't collapse tree nodes on changing folder states. [Qt]

This commit is contained in:
Virgil Dupras 2011-07-12 12:51:11 -04:00
parent 99e3c34060
commit 2ba3584b7e
3 changed files with 26 additions and 5 deletions

View File

@ -173,6 +173,11 @@ class PyDirectoryOutline(PyOutline):
def addDirectory_(self, path): def addDirectory_(self, path):
self.py.add_directory(path) self.py.add_directory(path)
# python --> cocoa
def refresh_states(self):
# Under cocoa, both refresh() and refresh_states() do the same thing.
self.cocoa.refresh()
class PyResultTable(PyTable): class PyResultTable(PyTable):
py_class = ResultTable py_class = ResultTable

View File

@ -34,6 +34,11 @@ class DirectoryNode(Node):
self.append(DirectoryNode(self._tree, path, path[-1])) self.append(DirectoryNode(self._tree, path, path[-1]))
self._loaded = True self._loaded = True
def update_all_states(self):
self._state = STATE_ORDER.index(self._tree.app.directories.get_state(self._directory_path))
for node in self:
node.update_all_states()
# The state propery is an index to the combobox # The state propery is an index to the combobox
@property @property
def state(self): def state(self):
@ -46,11 +51,14 @@ class DirectoryNode(Node):
self._state = value self._state = value
state = STATE_ORDER[value] state = STATE_ORDER[value]
self._tree.app.directories.set_state(self._directory_path, state) self._tree.app.directories.set_state(self._directory_path, state)
self._tree._refresh() self._tree.update_all_states()
self._tree.view.refresh()
class DirectoryTree(GUIObject, Tree): class DirectoryTree(GUIObject, Tree):
#--- model -> view calls:
# refresh()
# refresh_states() # when only states label need to be refreshed
#
def __init__(self, view, app): def __init__(self, view, app):
GUIObject.__init__(self, view, app) GUIObject.__init__(self, view, app)
Tree.__init__(self) Tree.__init__(self)
@ -68,6 +76,11 @@ class DirectoryTree(GUIObject, Tree):
def add_directory(self, path): def add_directory(self, path):
self.app.add_directory(path) self.app.add_directory(path)
def update_all_states(self):
for node in self:
node.update_all_states()
self.view.refresh_states()
#--- Event Handlers #--- Event Handlers
def directories_changed(self): def directories_changed(self):
self._refresh() self._refresh()

View File

@ -8,7 +8,7 @@
import urllib.parse import urllib.parse
from PyQt4.QtCore import pyqtSignal, Qt, QRect, QUrl from PyQt4.QtCore import pyqtSignal, Qt, QRect, QUrl, QModelIndex
from PyQt4.QtGui import (QComboBox, QStyledItemDelegate, QApplication, QBrush, QStyle, from PyQt4.QtGui import (QComboBox, QStyledItemDelegate, QApplication, QBrush, QStyle,
QStyleOptionComboBox, QStyleOptionViewItemV4) QStyleOptionComboBox, QStyleOptionViewItemV4)
@ -69,7 +69,7 @@ class DirectoriesModel(TreeModel):
def _getChildren(self): def _getChildren(self):
return list(self.model) return list(self.model)
def columnCount(self, parent): def columnCount(self, parent=QModelIndex()):
return 2 return 2
def data(self, index, role): def data(self, index, role):
@ -100,7 +100,7 @@ class DirectoriesModel(TreeModel):
data = bytes(mimeData.data('text/uri-list')).decode('ascii') data = bytes(mimeData.data('text/uri-list')).decode('ascii')
unquoted = urllib.parse.unquote(data) unquoted = urllib.parse.unquote(data)
urls = unquoted.split('\r\n') urls = unquoted.split('\r\n')
paths = [str(QUrl(url).toLocalFile()) for url in urls if url] paths = [QUrl(url).toLocalFile() for url in urls if url]
for path in paths: for path in paths:
self.model.add_directory(path) self.model.add_directory(path)
self.foldersAdded.emit(paths) self.foldersAdded.emit(paths)
@ -143,3 +143,6 @@ class DirectoriesModel(TreeModel):
def refresh(self): def refresh(self):
self.reset() self.reset()
def refresh_states(self):
self.refreshData()