MAJOR refactor of software layout. Needed as ground station and rover both need access to shared packages.

This commit is contained in:
2018-02-27 18:38:55 -08:00
parent ff7a587f80
commit 934dd3eeb4
148 changed files with 412 additions and 337 deletions

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>1920</width>
<height>1080</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1920</width>
<height>1080</height>
</size>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="windowOpacity">
<double>1.000000000000000</double>
</property>
<property name="styleSheet">
<string notr="true">background-color: #201F1D;
color: #DCDCDC;</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>74</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>UI File 1 (Left Screen)</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>1920</width>
<height>1080</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1920</width>
<height>1080</height>
</size>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="windowOpacity">
<double>1.000000000000000</double>
</property>
<property name="styleSheet">
<string notr="true">background-color: #201F1D;
color: #DCDCDC;</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>74</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>UI File 2 (Right Screen)</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,88 @@
#!/usr/bin/env python
"""
Main file used to launch the Rover Base Station
No other files should be used for launching this application.
"""
#####################################
# Imports
#####################################
# Python native imports
import sys
from PyQt5 import QtWidgets, QtCore, uic
import signal
# Custom Imports
#####################################
# Global Variables
#####################################
UI_FILE_LEFT = "Resources/UI/RoverGui.ui"
UI_FILE_RIGHT = "Resources/UI/RoverGui2.ui"
FORM_LEFT, BASE_UI_LEFT = uic.loadUiType(UI_FILE_LEFT)
FORM_RIGHT, BASE_UI_RIGHT = uic.loadUiType(UI_FILE_RIGHT)
LEFT_SCREEN_ID = 0
RIGHT_SCREEN_ID = 1
#####################################
# Application Class Definition
#####################################
class LeftWindow(BASE_UI_LEFT, FORM_LEFT):
kill_threads_signal = QtCore.pyqtSignal()
def __init__(self, parent=None):
# noinspection PyArgumentList
super(BASE_UI_LEFT, self).__init__(parent)
self.setupUi(self)
#####################################
# Application Class Definition
#####################################
class RightWindow(BASE_UI_RIGHT, FORM_RIGHT):
kill_threads_signal = QtCore.pyqtSignal()
def __init__(self, parent=None):
# noinspection PyArgumentList
super(BASE_UI_RIGHT, self).__init__(parent)
self.setupUi(self)
#####################################
# Main Definition
#####################################
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL) # This allows the keyboard interrupt kill to work properly
application = QtWidgets.QApplication(sys.argv) # Create the base qt gui application
system_desktop = QtWidgets.QDesktopWidget() # This gets us access to the desktop geometry
app_window = LeftWindow() # Make a window in this application
app_window.setWindowTitle("Rover Control") # Sets the window title
app_window.setWindowFlags(app_window.windowFlags() | # Sets the windows flags to:
QtCore.Qt.FramelessWindowHint | # remove the border and frame on the application,
QtCore.Qt.WindowStaysOnTopHint | # and makes the window stay on top of all others
QtCore.Qt.X11BypassWindowManagerHint) # This is needed to show fullscreen in gnome
app_window.setGeometry(system_desktop.screenGeometry(LEFT_SCREEN_ID)) # Sets the window to be on the first screen
app_window.showFullScreen() # Shows the window in full screen mode
app_window2 = RightWindow()
app_window2.setWindowTitle("Rover Video")
app_window2.setWindowFlags(app_window.windowFlags() |
QtCore.Qt.FramelessWindowHint |
QtCore.Qt.WindowStaysOnTopHint |
QtCore.Qt.X11BypassWindowManagerHint)
app_window2.setGeometry(system_desktop.screenGeometry(RIGHT_SCREEN_ID))
app_window2.showFullScreen()
application.exec_() # Execute launching of the application

View File

@@ -0,0 +1,181 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1920"
height="1080"
viewBox="0 0 1920 1080"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="left_screen.svg"
inkscape:export-filename="/home/caperren/caperren@gmail.com/_School/Capstone/1. Fall/left_screen.svg.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.5"
inkscape:cx="805.69335"
inkscape:cy="664.4128"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="2560"
inkscape:window-height="1375"
inkscape:window-x="1920"
inkscape:window-y="1080"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,27.637808)">
<rect
style="fill:#ffb380;fill-rule:evenodd;stroke:none;stroke-width:1.28854847px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3355"
width="1280"
height="720"
x="640"
y="-27.637808" />
<rect
style="fill:#8080ff;fill-rule:evenodd;stroke:none;stroke-width:1.05599153px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3361"
width="640"
height="540"
x="0"
y="-27.637808" />
<rect
style="fill:#ffe680;fill-rule:evenodd;stroke:none;stroke-width:1.05599153px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3361-0"
width="640"
height="540"
x="2"
y="512.36218" />
<rect
style="fill:#de8787;fill-rule:evenodd;stroke:none;stroke-width:1.05599153px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3361-2"
width="320"
height="360"
x="1600"
y="692.36218" />
<rect
style="fill:#decd87;fill-rule:evenodd;stroke:none;stroke-width:1.05599153px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3361-2-3"
width="320"
height="360"
x="1282"
y="692.36218" />
<rect
style="fill:#cd87de;fill-rule:evenodd;stroke:none;stroke-width:1.05599153px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3361-2-5"
width="640"
height="360"
x="642"
y="692.36218" />
<flowRoot
xml:space="preserve"
id="flowRoot4195"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-757.78662,446.94237)"><flowRegion
id="flowRegion4197"><rect
id="rect4199"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">1</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-9"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(204.54248,537.53563)"><flowRegion
id="flowRegion4197-2"><rect
id="rect4199-2"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-8"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">2</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-97"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-753.23779,986.89841)"><flowRegion
id="flowRegion4197-3"><rect
id="rect4199-6"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-1"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">3</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-2"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-113.76514,1076.9424)"><flowRegion
id="flowRegion4197-9"><rect
id="rect4199-3"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-19"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">4</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-4"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(365.86133,1076.3051)"><flowRegion
id="flowRegion4197-7"><rect
id="rect4199-8"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-4"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">5</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-5"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(683.81738,1076.8545)"><flowRegion
id="flowRegion4197-0"><rect
id="rect4199-36"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-10"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">6</flowPara></flowRoot> </g>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1920"
height="1080"
viewBox="0 0 1920 1080"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="right_screen.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.5"
inkscape:cx="856.69335"
inkscape:cy="744.4128"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="2560"
inkscape:window-height="1375"
inkscape:window-x="1920"
inkscape:window-y="1080"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,27.637808)">
<rect
style="fill:#ffb380;fill-rule:evenodd;stroke:none;stroke-width:1.28854847px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3355"
width="1280"
height="720"
x="640"
y="-27.637808" />
<rect
style="fill:#cdde87;fill-rule:evenodd;stroke:none;stroke-width:0.92212087px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3357"
width="640"
height="360"
x="1280"
y="692.36218" />
<rect
style="fill:#ffe680;fill-rule:evenodd;stroke:none;stroke-width:0.6692487px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3359"
width="640"
height="360"
x="640"
y="692.36218" />
<rect
style="fill:#de8787;fill-rule:evenodd;stroke:none;stroke-width:1.05599153px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3361"
width="640"
height="720"
x="0"
y="-27.637808" />
<rect
style="fill:#aa87de;fill-rule:evenodd;stroke:none;stroke-width:0.47325671px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3359-3"
width="320"
height="360"
x="0"
y="692.36218" />
<rect
style="fill:#8080ff;fill-rule:evenodd;stroke:none;stroke-width:0.47325671px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3359-3-6"
width="320"
height="360"
x="320"
y="692.36218" />
<flowRoot
xml:space="preserve"
id="flowRoot4195"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-757.78662,536.94237)"><flowRegion
id="flowRegion4197"><rect
id="rect4199"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">1</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-7"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(204.54248,537.53563)"><flowRegion
id="flowRegion4197-5"><rect
id="rect4199-3"
width="72.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-5"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">2</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-6"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-915.23779,1076.8984)"><flowRegion
id="flowRegion4197-2"><rect
id="rect4199-9"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'"
id="flowPara4275">3</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-2"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-595.76514,1076.9424)"><flowRegion
id="flowRegion4197-7"><rect
id="rect4199-0"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">4</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-3"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-116.13867,1076.3051)"><flowRegion
id="flowRegion4197-6"><rect
id="rect4199-06"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">5</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4195-61"
style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(523.81738,1076.8545)"><flowRegion
id="flowRegion4197-8"><rect
id="rect4199-7"
width="66.83252"
height="127.25128"
x="1044.4977"
y="-261.48257"
style="font-size:90px" /></flowRegion><flowPara
id="flowPara4201-92"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">6</flowPara></flowRoot> </g>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB