Browse Source

Merge label dialog into a single class

Michael Pitidis 13 năm trước cách đây
mục cha
commit
bf21090bd5
3 tập tin đã thay đổi với 37 bổ sung54 xóa
  1. 33 7
      labelDialog.py
  2. 4 5
      labelme.py
  3. 0 42
      simpleLabelDialog.py

+ 33 - 7
labelDialog.py

@@ -2,14 +2,40 @@
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 
-from lib import newIcon
-from simpleLabelDialog import SimpleLabelDialog
+from lib import newIcon, labelValidator
 
 BB = QDialogButtonBox
 
-class LabelDialog(SimpleLabelDialog):
-    def __init__(self, parent=None):
-        super(LabelDialog, self).__init__(parent=parent)
-        self.buttonBox.button(BB.Ok).setIcon(newIcon('done'))
-        self.buttonBox.button(BB.Cancel).setIcon(newIcon('undo'))
+class LabelDialog(QDialog):
+
+    def __init__(self, text="Enter object label", parent=None):
+        super(LabelDialog, self).__init__(parent)
+        self.edit = QLineEdit()
+        self.edit.setText(text)
+        self.edit.setValidator(labelValidator())
+        self.edit.editingFinished.connect(self.postProcess)
+        layout = QVBoxLayout()
+        layout.addWidget(self.edit)
+        self.buttonBox = bb = BB(BB.Ok | BB.Cancel, Qt.Horizontal, self)
+        bb.button(BB.Ok).setIcon(newIcon('done'))
+        bb.button(BB.Cancel).setIcon(newIcon('undo'))
+        bb.accepted.connect(self.validate)
+        bb.rejected.connect(self.reject)
+        layout.addWidget(bb)
+        self.setLayout(layout)
+
+    def validate(self):
+        if self.edit.text().trimmed():
+            self.accept()
+
+    def postProcess(self):
+        self.edit.setText(self.edit.text().trimmed())
+
+    def popUp(self, text='', position=None):
+        self.edit.setText(text)
+        self.edit.setSelection(0, len(text))
+        self.edit.setFocus(Qt.PopupFocusReason)
+        if position is not None:
+            self.move(position)
+        return self.edit.text() if self.exec_() else None
 

+ 4 - 5
labelme.py

@@ -18,7 +18,6 @@ from shape import Shape, DEFAULT_LINE_COLOR, DEFAULT_FILL_COLOR
 from canvas import Canvas
 from zoomWidget import ZoomWidget
 from labelDialog import LabelDialog
-from simpleLabelDialog import SimpleLabelDialog
 from colorDialog import ColorDialog
 from labelFile import LabelFile, LabelFileError
 from toolBar import ToolBar
@@ -106,7 +105,6 @@ class MainWindow(QMainWindow, WindowMixin):
 
         self.zoomWidget = ZoomWidget()
         self.colorDialog = ColorDialog(parent=self)
-        self.simpleLabelDialog = LabelDialog(parent=self)
 
         self.canvas = Canvas()
         self.canvas.zoomRequest.connect(self.zoomRequest)
@@ -460,7 +458,7 @@ class MainWindow(QMainWindow, WindowMixin):
         if not self.canvas.editing():
             return
         item = item if item else self.currentItem()
-        text = self.simpleLabelDialog.popUp(item.text())
+        text = self.labelDialog.popUp(item.text())
         if text is not None:
             item.setText(text)
             self.setDirty()
@@ -558,8 +556,9 @@ class MainWindow(QMainWindow, WindowMixin):
 
         position MUST be in global coordinates.
         """
-        if self.labelDialog.popUp(position=position):
-            self.addLabel(self.canvas.setLastLabel(self.labelDialog.text()))
+        text = self.labelDialog.popUp(position=position)
+        if text is not None:
+            self.addLabel(self.canvas.setLastLabel(text))
             if self.beginner(): # Switch to edit mode.
                 self.canvas.setEditing(True)
                 self.actions.create.setEnabled(True)

+ 0 - 42
simpleLabelDialog.py

@@ -1,42 +0,0 @@
-
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
-
-from lib import newButton, labelValidator
-
-BB = QDialogButtonBox
-
-class SimpleLabelDialog(QDialog):
-
-    def __init__(self, text="Enter object label", parent=None):
-        super(SimpleLabelDialog, self).__init__(parent)
-        self.edit = QLineEdit()
-        self.edit.setText(text)
-        self.edit.setValidator(labelValidator())
-        self.edit.editingFinished.connect(self.postProcess)
-        layout = QVBoxLayout()
-        layout.addWidget(self.edit)
-        self.buttonBox = bb = BB(BB.Ok | BB.Cancel, Qt.Horizontal, self)
-        bb.accepted.connect(self.validate)
-        bb.rejected.connect(self.reject)
-        layout.addWidget(bb)
-        self.setLayout(layout)
-
-    def validate(self):
-        if self.edit.text().trimmed():
-            self.accept()
-
-    def postProcess(self):
-        self.edit.setText(self.edit.text().trimmed())
-
-    def popUp(self, text='', position=None):
-        self.edit.setText(text)
-        self.edit.setSelection(0, len(text))
-        self.edit.setFocus(Qt.PopupFocusReason)
-        if position is not None:
-            self.move(position)
-        return self.edit.text() if self.exec_() else None
-
-    def text(self):
-        return self.edit.text()
-