Labels will be added to history and re-use it while showing pop window

This commit is contained in:
TzuTa Lin 2015-11-17 10:50:28 +08:00
parent 06c9adf494
commit 87dab57ec9
2 changed files with 25 additions and 3 deletions

View File

@ -59,6 +59,7 @@ class MainWindow(QMainWindow, WindowMixin):
# For loading all image under a directory
self.mImgList = []
self.dirname = None
self.labelHist = []
# Whether we need to save or not.
self.dirty = False
@ -593,6 +594,9 @@ class MainWindow(QMainWindow, WindowMixin):
position MUST be in global coordinates.
"""
if len(self.labelHist) > 0:
self.labelDialog = LabelDialog(parent=self, listItem=self.labelHist)
text = self.labelDialog.popUp()
if text is not None:
self.addLabel(self.canvas.setLastLabel(text))
@ -602,6 +606,10 @@ class MainWindow(QMainWindow, WindowMixin):
else:
self.actions.editMode.setEnabled(True)
self.setDirty()
if text not in self.labelHist:
self.labelHist.append(text)
else:
#self.canvas.undoLastLine()
self.canvas.resetAllLines()
@ -790,9 +798,12 @@ class MainWindow(QMainWindow, WindowMixin):
self.mImgList = self.scanAllImages(dirpath)
self.openNextImg()
def openPrevImg(self, _value=False):
if not self.mayContinue():
return
def openNextImg(self, _value=False):
if self.dirty == True:
print 'dirty'
if not self.mayContinue():
return
if len(self.mImgList) <= 0:

View File

@ -7,7 +7,7 @@ BB = QDialogButtonBox
class LabelDialog(QDialog):
def __init__(self, text="Enter object label", parent=None):
def __init__(self, text="Enter object label", parent=None, listItem=None):
super(LabelDialog, self).__init__(parent)
self.edit = QLineEdit()
self.edit.setText(text)
@ -21,6 +21,14 @@ class LabelDialog(QDialog):
bb.accepted.connect(self.validate)
bb.rejected.connect(self.reject)
layout.addWidget(bb)
if listItem is not None and len(listItem) > 0:
self.listWidget = QListWidget(self)
for item in listItem:
self.listWidget.addItem(item)
self.listWidget.itemDoubleClicked.connect(self.listItemClick)
layout.addWidget(self.listWidget)
self.setLayout(layout)
def validate(self):
@ -38,3 +46,6 @@ class LabelDialog(QDialog):
self.move(QCursor.pos())
return self.edit.text() if self.exec_() else None
def listItemClick(self, tQListWidgetItem):
text = tQListWidgetItem.text().trimmed()
self.edit.setText(text)