Tweak margins
[uberlogger] / uberlogger.py
index a656749..4215d07 100755 (executable)
@@ -181,14 +181,9 @@ class ContainerWidget(QWidget):
                self.status = "stopped"
 
                # UI: header
-               self.startbutton = QPushButton("Start")
-               self.startbutton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
-               self.connect(self.startbutton, SIGNAL('clicked()'), self.start_thread)
-
-               self.stopbutton = QPushButton("Stop")
-               self.stopbutton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
-               self.stopbutton.setEnabled(False)
-               self.connect(self.stopbutton, SIGNAL('clicked()'), self.stop_thread)
+               self.togglebutton = QPushButton("Start")
+               self.togglebutton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
+               self.connect(self.togglebutton, SIGNAL('clicked()'), self.toggle_thread)
 
                self.statuswidget = QLabel()
                self.statuswidget.setWordWrap(True)
@@ -196,11 +191,12 @@ class ContainerWidget(QWidget):
                self.monitorwidget = QLabel()
 
                header = QHBoxLayout()
-               header.addWidget(self.startbutton)
-               header.addWidget(self.stopbutton)
+               header.addWidget(self.togglebutton)
                header.addWidget(self.statuswidget)
 
                self.layout = QVBoxLayout()
+               self.layout.setContentsMargins(0, 0, 0, 0)
+               self.layout.setSpacing(5)
                self.layout.addLayout(header)
                self.layout.addWidget(self.monitorwidget)
 
@@ -212,47 +208,43 @@ class ContainerWidget(QWidget):
        def __del__(self):
                self.thread = None
 
-       def start_thread(self):
-               if self.thread is not None:
-                       return
-
-               self.startbutton.setEnabled(False)
-               self.stopbutton.setEnabled(True)
-
-                self.thread = GPSThread(self.addr, self.name, self)
-               self.connect(self.thread, SIGNAL("status_updated(QString)"), self.update_status)
-               self.connect(self.thread, SIGNAL("data_updated(QString)"), self.update_monitor)
-               self.connect(self.thread, SIGNAL("finished()"), self.gc_thread)
-                self.thread.start()
-
-       def stop_thread(self):
+       def toggle_thread(self):
                if self.thread is None:
-                       return
+                       self.togglebutton.setText("Stop")
 
-               self.stopbutton.setEnabled(False)
-               self.thread.stop()
+                       self.thread = GPSThread(self.addr, self.name, self)
+                       self.connect(self.thread, SIGNAL("status_updated(QString)"), self.update_status)
+                       self.connect(self.thread, SIGNAL("data_updated(QString)"), self.update_monitor)
+                       self.connect(self.thread, SIGNAL("finished()"), self.gc_thread)
+                       self.thread.start()
+               else:
+                       self.togglebutton.setEnabled(False)
+                       self.thread.stop()
 
        def gc_thread(self):
                self.thread = None # join
 
-               self.startbutton.setEnabled(True)
-               self.stopbutton.setEnabled(False)
+               self.togglebutton.setText("Start")
+               self.togglebutton.setEnabled(True)
                self.update_status()
 
        def update_status(self, status = None):
                if status is not None:
                        self.status = status
-               self.statuswidget.setText("%s: %s" % (self.name, self.status))
+               self.statuswidget.setText("%s\n%s" % (self.name, self.status))
 
        def update_monitor(self, data = None):
                self.monitorwidget.setText(data)
 
-class MainWindow(QWidget):
+class InputsList(QWidget):
        def __init__(self, parent=None):
                QWidget.__init__(self, parent)
-               self.setWindowTitle("UberLogger")
+
+               self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
 
                layout = QVBoxLayout()
+               layout.setContentsMargins(0, 0, 0, 0)
+               layout.setSpacing(0)
 
                global devices
                for addr, name in devices:
@@ -263,8 +255,12 @@ class MainWindow(QWidget):
 def main():
        app = QApplication(sys.argv)
 
-       window = MainWindow()
-       window.show()
+       scrollarea = QScrollArea()
+       scrollarea.setWindowTitle("UberLogger")
+       scrollarea.setWidgetResizable(True)
+       scrollarea.setWidget(InputsList())
+       scrollarea.show()
+
        sys.exit(app.exec_())
 
 if __name__ == "__main__":