Переглянути джерело

Merge branch 'master' of linode:hci1

Conflicts:
	labelme.py

Resolve conflicts and refactor/cleanup a little
Michael Pitidis 13 роки тому
батько
коміт
dc9fa8216d
2 змінених файлів з 49 додано та 6 видалено
  1. 9 1
      labelDialog.py
  2. 40 5
      labelme.py

+ 9 - 1
labelDialog.py

@@ -49,7 +49,15 @@ class LabelDialog(QDialog):
         self.edit.setSelection(0, len(self.text()))
         self.edit.setFocus(Qt.PopupFocusReason)
         return self.OK if self.exec_() == QDialog.Accepted else self.action
-
+    
+    def popUpEdit(self, text):
+        # It actually works without moving...
+        #self.move(position)
+        self.edit.setText(text)
+        self.edit.setSelection(0, len(self.text()))
+        self.edit.setFocus(Qt.PopupFocusReason)
+        return self.OK if self.exec_() == QDialog.Accepted else self.action
+    
     def validate(self):
         if self.edit.text().trimmed():
             self.accept()

+ 40 - 5
labelme.py

@@ -82,6 +82,7 @@ class MainWindow(QMainWindow, WindowMixin):
 
         # Main widgets.
         self.label = LabelDialog(parent=self)
+       
         self.labels = {}
         self.items = {}
         self.highlighted = None
@@ -166,14 +167,25 @@ class MainWindow(QMainWindow, WindowMixin):
                 'Ctrl+E', 'edit', u'Modify the label of the selected polygon',
                 enabled=False)
 
+        shapeLineColor = action('&Shape Line Color', self.chshapeLineColor,
+                icon='color', tip=u'Change the line color for this specific shape',
+                enabled=False)
+        shapeFillColor = action('&Shape Fill Color', self.chshapeFillColor,
+                icon='color', tip=u'Change the fill color for this specific shape',
+                enabled=False)
 
         # Custom context menu for the canvas widget:
         addActions(self.canvas.menus[0], (label, edit, copy, delete))
+
+        addActions(self.canvas.menus[0], (
+            label, edit, copy, delete,
+            shapeLineColor, shapeFillColor))
         addActions(self.canvas.menus[1], (
             action('&Copy here', self.copyShape),
             action('&Move here', self.moveShape)))
 
         labels = self.dock.toggleViewAction()
+        labels.setText('Show/Hide Label Panel')
         labels.setShortcut('Ctrl+L')
 
         # Lavel list context menu.
@@ -188,6 +200,7 @@ class MainWindow(QMainWindow, WindowMixin):
         self.actions = struct(save=save, open=open, close=close,
                 lineColor=color1, fillColor=color2,
                 label=label, delete=delete, edit=edit, copy=copy,
+                shapeLineColor=shapeLineColor, shapeFillColor=shapeFillColor,
                 zoom=zoom, zoomIn=zoomIn, zoomOut=zoomOut, zoomOrg=zoomOrg,
                 fitWindow=fitWindow, fitWidth=fitWidth)
 
@@ -297,6 +310,7 @@ class MainWindow(QMainWindow, WindowMixin):
         text = self.simpleLabelDialog.popUp(item.text())
         if text is not None:
             item.setText(text)
+            self.setDirty()
 
     # React to canvas signals.
     def shapeSelectionChanged(self, selected=False):
@@ -311,6 +325,8 @@ class MainWindow(QMainWindow, WindowMixin):
         self.actions.delete.setEnabled(selected)
         self.actions.copy.setEnabled(selected)
         self.actions.edit.setEnabled(selected)
+        self.actions.shapeLineColor.setEnabled(selected)
+        self.actions.shapeFillColor.setEnabled(selected)
 
     def addLabel(self, shape):
         item = QListWidgetItem(shape.label)
@@ -575,18 +591,20 @@ class MainWindow(QMainWindow, WindowMixin):
         return os.path.dirname(unicode(self.filename)) if self.filename else '.'
 
     def chooseColor1(self):
+       
         color = self.colorDialog.getColor(self.lineColor, u'Choose line color',
                 default=DEFAULT_LINE_COLOR)
         if color:
             self.lineColor = color
             # Change the color for all shape lines:
-            Shape.line_color = self.lineColor
+            Shape.line_color = self.lineColor 
             self.canvas.repaint()
 
     def chooseColor2(self):
-        color = self.colorDialog.getColor(self.fillColor, u'Choose fill color',
+       
+       color = self.colorDialog.getColor(self.fillColor, u'Choose fill color',
                 default=DEFAULT_FILL_COLOR)
-        if color:
+       if color:
             self.fillColor = color
             Shape.fill_color = self.fillColor
             self.canvas.repaint()
@@ -597,8 +615,25 @@ class MainWindow(QMainWindow, WindowMixin):
         self.actions.label.setEnabled(False)
 
     def deleteSelectedShape(self):
-        self.remLabel(self.canvas.deleteSelected())
-        self.setDirty()
+        yes, no = QMessageBox.Yes, QMessageBox.No
+        msg = u'You are about to delete the polygon for ever, proceed anyway?'
+        if yes == QMessageBox.warning(self, u'Attention', msg, yes|no):
+            self.remLabel(self.canvas.deleteSelected())
+            self.setDirty()
+
+    def chshapeLineColor(self):
+        color = self.colorDialog.getColor(self.lineColor, u'Choose line color',
+                default=DEFAULT_LINE_COLOR)
+        if color:
+            self.canvas.selectedShape.line_color = color
+            self.canvas.update()
+
+    def chshapeFillColor(self):
+        color = self.colorDialog.getColor(self.lineColor, u'Choose line color',
+                default=DEFAULT_LINE_COLOR)
+        if color:
+            self.canvas.selectedShape.fill_color = color
+            self.canvas.update()
 
     def copyShape(self):
         self.canvas.endMove(copy=True)