tuanchris пре 2 месеци
родитељ
комит
71b25b6c09
2 измењених фајлова са 22 додато и 7 уклоњено
  1. 14 1
      dune-weaver-touch/backend.py
  2. 8 6
      dune-weaver-touch/qml/pages/ExecutionPage.qml

+ 14 - 1
dune-weaver-touch/backend.py

@@ -71,6 +71,7 @@ class Backend(QObject):
     screenStateChanged = Signal(bool)  # True = on, False = off
     screenStateChanged = Signal(bool)  # True = on, False = off
     screenTimeoutChanged = Signal(int)  # New signal for timeout changes
     screenTimeoutChanged = Signal(int)  # New signal for timeout changes
     pauseBetweenPatternsChanged = Signal(int)  # New signal for pause changes
     pauseBetweenPatternsChanged = Signal(int)  # New signal for pause changes
+    pausedChanged = Signal(bool)  # Signal when pause state changes
 
 
     # Backend connection status signals
     # Backend connection status signals
     backendConnectionChanged = Signal(bool)  # True = backend reachable, False = unreachable
     backendConnectionChanged = Signal(bool)  # True = backend reachable, False = unreachable
@@ -90,6 +91,7 @@ class Backend(QObject):
         self._current_file = ""
         self._current_file = ""
         self._progress = 0
         self._progress = 0
         self._is_running = False
         self._is_running = False
+        self._is_paused = False  # Track pause state separately
         self._is_connected = False
         self._is_connected = False
         self._serial_ports = []
         self._serial_ports = []
         self._serial_connected = False
         self._serial_connected = False
@@ -188,7 +190,11 @@ class Backend(QObject):
     @Property(bool, notify=statusChanged)
     @Property(bool, notify=statusChanged)
     def isRunning(self):
     def isRunning(self):
         return self._is_running
         return self._is_running
-    
+
+    @Property(bool, notify=pausedChanged)
+    def isPaused(self):
+        return self._is_paused
+
     @Property(bool, notify=connectionChanged)
     @Property(bool, notify=connectionChanged)
     def isConnected(self):
     def isConnected(self):
         return self._is_connected
         return self._is_connected
@@ -320,6 +326,13 @@ class Backend(QObject):
                 self._current_file = new_file
                 self._current_file = new_file
                 self._is_running = status.get("is_running", False)
                 self._is_running = status.get("is_running", False)
 
 
+                # Handle pause state from WebSocket
+                new_paused = status.get("is_paused", False)
+                if new_paused != self._is_paused:
+                    print(f"⏸️ Pause state changed: {self._is_paused} -> {new_paused}")
+                    self._is_paused = new_paused
+                    self.pausedChanged.emit(new_paused)
+
                 # Handle serial connection status from WebSocket
                 # Handle serial connection status from WebSocket
                 ws_connection_status = status.get("connection_status", False)
                 ws_connection_status = status.get("connection_status", False)
                 if ws_connection_status != self._serial_connected:
                 if ws_connection_status != self._serial_connected:

+ 8 - 6
dune-weaver-touch/qml/pages/ExecutionPage.qml

@@ -314,25 +314,27 @@ Page {
                                         height: parent.height
                                         height: parent.height
                                         radius: 6
                                         radius: 6
                                         color: pauseMouseArea.pressed ? "#1e40af" : (backend && backend.currentFile !== "" ? "#2563eb" : "#9ca3af")
                                         color: pauseMouseArea.pressed ? "#1e40af" : (backend && backend.currentFile !== "" ? "#2563eb" : "#9ca3af")
-                                        
+
                                         Text {
                                         Text {
                                             anchors.centerIn: parent
                                             anchors.centerIn: parent
-                                            text: (backend && backend.isRunning) ? "||" : "▶"
+                                            // Show pause icon when running and not paused, play icon when paused
+                                            text: (backend && backend.isRunning && !backend.isPaused) ? "||" : "▶"
                                             color: "white"
                                             color: "white"
                                             font.pixelSize: 14
                                             font.pixelSize: 14
                                             font.bold: true
                                             font.bold: true
                                         }
                                         }
-                                        
+
                                         MouseArea {
                                         MouseArea {
                                             id: pauseMouseArea
                                             id: pauseMouseArea
                                             anchors.fill: parent
                                             anchors.fill: parent
                                             enabled: backend && backend.currentFile !== ""
                                             enabled: backend && backend.currentFile !== ""
                                             onClicked: {
                                             onClicked: {
                                                 if (backend) {
                                                 if (backend) {
-                                                    if (backend.isRunning) {
-                                                        backend.pauseExecution()
-                                                    } else {
+                                                    // If paused, resume; otherwise pause
+                                                    if (backend.isPaused) {
                                                         backend.resumeExecution()
                                                         backend.resumeExecution()
+                                                    } else {
+                                                        backend.pauseExecution()
                                                     }
                                                     }
                                                 }
                                                 }
                                             }
                                             }