From 87dab57ec9cd4df8b5096f506b28c0f56eba44e3 Mon Sep 17 00:00:00 2001 From: TzuTa Lin Date: Tue, 17 Nov 2015 10:50:28 +0800 Subject: [PATCH] Labels will be added to history and re-use it while showing pop window --- labelImg.py | 15 +++++++++++++-- libs/labelDialog.py | 13 ++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/labelImg.py b/labelImg.py index d27fdecf..9e2f6ea9 100755 --- a/labelImg.py +++ b/labelImg.py @@ -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: diff --git a/libs/labelDialog.py b/libs/labelDialog.py index 5c96e5bf..b9da6308 100644 --- a/libs/labelDialog.py +++ b/libs/labelDialog.py @@ -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)