瀏覽代碼

Position the label dialog under the cursor

Michael Pitidis 13 年之前
父節點
當前提交
d61bc9d9ac
共有 3 個文件被更改,包括 9 次插入14 次删除
  1. 2 9
      canvas.py
  2. 5 3
      labelDialog.py
  3. 2 2
      labelme.py

+ 2 - 9
canvas.py

@@ -19,7 +19,7 @@ CURSOR_GRAB    = Qt.OpenHandCursor
 class Canvas(QWidget):
 class Canvas(QWidget):
     zoomRequest = pyqtSignal(int)
     zoomRequest = pyqtSignal(int)
     scrollRequest = pyqtSignal(int, int)
     scrollRequest = pyqtSignal(int, int)
-    newShape = pyqtSignal(QPoint)
+    newShape = pyqtSignal()
     selectionChanged = pyqtSignal(bool)
     selectionChanged = pyqtSignal(bool)
     shapeMoved = pyqtSignal()
     shapeMoved = pyqtSignal()
     drawingPolygon = pyqtSignal(bool)
     drawingPolygon = pyqtSignal(bool)
@@ -393,7 +393,7 @@ class Canvas(QWidget):
         self.shapes.append(self.current)
         self.shapes.append(self.current)
         self.current = None
         self.current = None
         self.setHiding(False)
         self.setHiding(False)
-        self.newShape.emit(self.mapToGlobal(toPoint(self.line[1])))
+        self.newShape.emit()
         self.update()
         self.update()
 
 
     def closeEnough(self, p1, p2):
     def closeEnough(self, p1, p2):
@@ -519,10 +519,3 @@ class Canvas(QWidget):
         self.pixmap = None
         self.pixmap = None
         self.update()
         self.update()
 
 
-
-def toPoint(pointf):
-    return QPoint(int(pointf.x()), int(pointf.y()))
-
-def pp(p):
-    return '%.2f, %.2f' % (p.x(), p.y())
-

+ 5 - 3
labelDialog.py

@@ -4,6 +4,9 @@ from PyQt4.QtCore import *
 
 
 from lib import newIcon, labelValidator
 from lib import newIcon, labelValidator
 
 
+# TODO:
+# - Calculate optimal position so as not to go out of screen area.
+
 BB = QDialogButtonBox
 BB = QDialogButtonBox
 
 
 class LabelDialog(QDialog):
 class LabelDialog(QDialog):
@@ -31,11 +34,10 @@ class LabelDialog(QDialog):
     def postProcess(self):
     def postProcess(self):
         self.edit.setText(self.edit.text().trimmed())
         self.edit.setText(self.edit.text().trimmed())
 
 
-    def popUp(self, text='', position=None):
+    def popUp(self, text=''):
         self.edit.setText(text)
         self.edit.setText(text)
         self.edit.setSelection(0, len(text))
         self.edit.setSelection(0, len(text))
         self.edit.setFocus(Qt.PopupFocusReason)
         self.edit.setFocus(Qt.PopupFocusReason)
-        if position is not None:
-            self.move(position)
+        self.move(QCursor.pos())
         return self.edit.text() if self.exec_() else None
         return self.edit.text() if self.exec_() else None
 
 

+ 2 - 2
labelme.py

@@ -555,12 +555,12 @@ class MainWindow(QMainWindow, WindowMixin):
             self.canvas.setShapeVisible(shape, item.checkState() == Qt.Checked)
             self.canvas.setShapeVisible(shape, item.checkState() == Qt.Checked)
 
 
     ## Callback functions:
     ## Callback functions:
-    def newShape(self, position):
+    def newShape(self):
         """Pop-up and give focus to the label editor.
         """Pop-up and give focus to the label editor.
 
 
         position MUST be in global coordinates.
         position MUST be in global coordinates.
         """
         """
-        text = self.labelDialog.popUp(position=position)
+        text = self.labelDialog.popUp()
         if text is not None:
         if text is not None:
             self.addLabel(self.canvas.setLastLabel(text))
             self.addLabel(self.canvas.setLastLabel(text))
             if self.beginner(): # Switch to edit mode.
             if self.beginner(): # Switch to edit mode.