mirror of
https://github.com/wassname/sloth.git
synced 2026-06-28 23:42:17 +08:00
Fix tracking of unsaved changes
This commit is contained in:
@@ -387,6 +387,9 @@ class AnnotationModel(QAbstractItemModel):
|
||||
self._root.appendFileItems(annotations)
|
||||
diff = time.time() - start
|
||||
LOG.info("Created AnnotationModel in %.2fs" % (diff, ))
|
||||
self.dataChanged.connect(self.onDataChanged)
|
||||
self.rowsInserted.connect(self.onDataChanged)
|
||||
self.rowsRemoved.connect(self.onDataChanged)
|
||||
|
||||
# QAbstractItemModel overloads
|
||||
def columnCount(self, index=QModelIndex()):
|
||||
@@ -460,12 +463,15 @@ class AnnotationModel(QAbstractItemModel):
|
||||
def dirty(self):
|
||||
return self._dirty
|
||||
|
||||
# TODO: This might need to be updated from within the ModelItems when they change
|
||||
def setDirty(self, dirty=True):
|
||||
if dirty != self._dirty:
|
||||
LOG.debug("Setting model state to dirty")
|
||||
self._dirty = dirty
|
||||
self.dirtyChanged.emit(self._dirty)
|
||||
|
||||
def onDataChanged(self, *args):
|
||||
self.setDirty()
|
||||
|
||||
def itemFromIndex(self, index):
|
||||
index = QModelIndex(index) # explicitly convert from QPersistentModelIndex
|
||||
if index.isValid():
|
||||
|
||||
@@ -25,11 +25,8 @@ class MainWindow(QMainWindow):
|
||||
QMainWindow.__init__(self, parent)
|
||||
|
||||
self.labeltool = labeltool
|
||||
|
||||
self.setupGui()
|
||||
|
||||
self.loadApplicationSettings()
|
||||
|
||||
self.onAnnotationsLoaded()
|
||||
|
||||
# Slots
|
||||
@@ -39,12 +36,17 @@ class MainWindow(QMainWindow):
|
||||
def onStatusMessage(self, message=''):
|
||||
self.statusBar().showMessage(message, 5000)
|
||||
|
||||
def onAnnotationsLoaded(self):
|
||||
def onModelDirtyChanged(self, dirty):
|
||||
postfix = "[+]" if dirty else ""
|
||||
if self.labeltool.getCurrentFilename() is not None:
|
||||
self.setWindowTitle("%s - %s[*]" % \
|
||||
(APP_NAME, QFileInfo(self.labeltool.getCurrentFilename()).fileName()))
|
||||
self.setWindowTitle("%s - %s %s" % \
|
||||
(APP_NAME, QFileInfo(self.labeltool.getCurrentFilename()).fileName(), postfix))
|
||||
else:
|
||||
self.setWindowTitle("%s - Unnamed[*]" % APP_NAME)
|
||||
self.setWindowTitle("%s - Unnamed %s" % (APP_NAME, postfix))
|
||||
|
||||
def onAnnotationsLoaded(self):
|
||||
self.labeltool.model().dirtyChanged.connect(self.onModelDirtyChanged)
|
||||
self.onModelDirtyChanged(self.labeltool.model().dirty())
|
||||
self.treeview.setModel(self.labeltool.model())
|
||||
self.scene.setModel(self.labeltool.model())
|
||||
self.selectionmodel = QItemSelectionModel(self.labeltool.model())
|
||||
|
||||
Reference in New Issue
Block a user