Fix tracking of unsaved changes

This commit is contained in:
Mika Fischer
2011-06-21 11:12:56 +02:00
parent 0040e27a2f
commit 4eb89cdbe4
2 changed files with 16 additions and 8 deletions
+7 -1
View File
@@ -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():
+9 -7
View File
@@ -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())