Skip to content

Commit ffc553e

Browse files
committed
Add functionality to download map tiles outside of MainWindow
1 parent 0778882 commit ffc553e

9 files changed

Lines changed: 275 additions & 11 deletions

File tree

com_window/main.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
import os
22
from collections import namedtuple
33

4-
import PyQt5
54
import serial.tools.list_ports
6-
from PyQt5 import QtCore, QtWidgets, uic
5+
from PyQt5 import QtWidgets, uic
76

87
from util.detail import BUNDLED_DATA, LOGGER
98
from profiles.rocket_profile_list import ROCKET_PROFILES
109

11-
if hasattr(QtCore.Qt, "AA_EnableHighDpiScaling"):
12-
PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)
13-
14-
if hasattr(QtCore.Qt, "AA_UseHighDpiPixmaps"):
15-
PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
16-
1710
qtCreatorFile = os.path.join(BUNDLED_DATA, "qt_files", "com_window.ui")
1811

1912
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
@@ -26,6 +19,7 @@
2619
'SIM': ConnectionRequirements(com_port=False, baud_rate=False),
2720
}
2821

22+
2923
class ComWindow(QtWidgets.QMainWindow, Ui_MainWindow):
3024
def __init__(self) -> None:
3125
"""
@@ -34,7 +28,7 @@ def __init__(self) -> None:
3428
QtWidgets.QMainWindow.__init__(self)
3529
Ui_MainWindow.__init__(self)
3630

37-
self.RocketProfiles = {p.rocket_name:p for p in ROCKET_PROFILES}
31+
self.RocketProfiles = {p.rocket_name: p for p in ROCKET_PROFILES}
3832

3933
self.chosen_connection = None
4034
self.chosen_rocket = None
@@ -67,7 +61,8 @@ def doneButtonPressed(self) -> None:
6761
baud_rate = int(self.baudBox.currentText())
6862
com_port = self.comBox.currentText()
6963

70-
LOGGER.debug(f"User has selected rocket={rocket}, connection={connection}, com_port={com_port}, baud_rate={baud_rate}")
64+
LOGGER.debug(
65+
f"User has selected rocket={rocket}, connection={connection}, com_port={com_port}, baud_rate={baud_rate}")
7166

7267
self.chosen_rocket = self.RocketProfiles[rocket]
7368

download_window/__init__.py

Whitespace-only changes.

download_window/main.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import os
2+
3+
from PyQt5 import QtWidgets, uic
4+
5+
from util.detail import BUNDLED_DATA, LOGGER
6+
7+
qtCreatorFile = os.path.join(BUNDLED_DATA, "qt_files", "downloader.ui")
8+
9+
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
10+
11+
12+
class DownloadWindow(QtWidgets.QMainWindow, Ui_MainWindow):
13+
def __init__(self) -> None:
14+
QtWidgets.QMainWindow.__init__(self)
15+
Ui_MainWindow.__init__(self)
16+
17+
self.setupUi(self)
18+
self.setup()
19+
20+
def setup(self) -> None:
21+
self.modeBox.addItems(["Point-Radius", "Two Points"])
22+
23+
self.doneButton.clicked.connect(self.startButtonPressed)
24+
25+
self.resize(self.sizeHint())
26+
self.setFixedSize(self.size())
27+
28+
def startButtonPressed(self) -> None:
29+
mode = self.modeBox.currentText()
30+
31+
if mode == "Point-Radius":
32+
self.point_radius_download_prompt()
33+
elif mode == "Two Points:":
34+
self.two_points_download_prompt()
35+
36+
def point_radius_download_prompt(self):
37+
# !!!
38+
pass
39+
40+
def two_points_download_prompt(self):
41+
# !!!
42+
pass

main_window/competition/mapping/mapbox_utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,3 +336,22 @@ def pointToTile(p: MapPoint, s: int) -> MapTile:
336336
:rtype: MapTile
337337
"""
338338
return MapTile(math.floor(p.x * 2.0 ** s), math.floor(p.y * 2.0 ** s), s)
339+
340+
341+
def advance_download_point_radius(latitude: float, longitude: float, radius: float, zoom: int):
342+
lat1 = latitude + radius / 110.574
343+
lon1 = longitude - radius / 111.320 / math.cos(lat1 * math.pi / 180.0)
344+
p1 = MapPoint(lat1, lon1) # Map corner 1
345+
346+
lat2 = latitude - radius / 110.574
347+
lon2 = longitude + radius / 111.320 / math.cos(lat2 * math.pi / 180.0)
348+
p2 = MapPoint(lat2, lon2) # Map corner 2
349+
350+
TileGrid(p1, p2, zoom).downloadArrayImages()
351+
352+
353+
def advance_download_two_points(lat1: float, lon1: float, lat2: float, lon2: float, zoom: int):
354+
p1 = MapPoint(lat1, lon1)
355+
p2 = MapPoint(lat2, lon2)
356+
357+
TileGrid(p1, p2, zoom).downloadArrayImages()

mode_select/__init__.py

Whitespace-only changes.

mode_select/main.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import os
2+
3+
import PyQt5
4+
from PyQt5 import QtCore, QtWidgets, uic
5+
6+
from com_window.main import ComWindow
7+
from download_window.main import DownloadWindow
8+
from util.detail import BUNDLED_DATA, LOGGER
9+
10+
if hasattr(QtCore.Qt, "AA_EnableHighDpiScaling"):
11+
PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)
12+
13+
if hasattr(QtCore.Qt, "AA_UseHighDpiPixmaps"):
14+
PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
15+
16+
qtCreatorFile = os.path.join(BUNDLED_DATA, "qt_files", "mode_select.ui")
17+
18+
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
19+
20+
WINDOWS = {
21+
"COM Selection": ComWindow,
22+
"Tile Downloader": DownloadWindow
23+
}
24+
25+
26+
class ModeSelect(QtWidgets.QMainWindow, Ui_MainWindow):
27+
def __init__(self) -> None:
28+
QtWidgets.QMainWindow.__init__(self)
29+
Ui_MainWindow.__init__(self)
30+
31+
self.chosen_window = None
32+
33+
self.setupUi(self)
34+
self.setup()
35+
36+
def setup(self) -> None:
37+
self.windowBox.addItems(WINDOWS.keys())
38+
39+
self.doneButton.clicked.connect(self.doneButtonPressed)
40+
41+
self.resize(self.sizeHint())
42+
self.setFixedSize(self.size())
43+
44+
def doneButtonPressed(self) -> None:
45+
window = self.windowBox.currentText()
46+
47+
LOGGER.debug(
48+
f"User has selected {window}")
49+
50+
self.chosen_window = WINDOWS[window]
51+
52+
self.close()

qt_files/downloader.ui

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>MainWindow</class>
4+
<widget class="QMainWindow" name="MainWindow">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>300</width>
10+
<height>177</height>
11+
</rect>
12+
</property>
13+
<property name="sizePolicy">
14+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
15+
<horstretch>0</horstretch>
16+
<verstretch>0</verstretch>
17+
</sizepolicy>
18+
</property>
19+
<property name="windowTitle">
20+
<string>Select Start Configuration</string>
21+
</property>
22+
<widget class="QWidget" name="centralwidget">
23+
<property name="sizePolicy">
24+
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
25+
<horstretch>0</horstretch>
26+
<verstretch>0</verstretch>
27+
</sizepolicy>
28+
</property>
29+
<layout class="QVBoxLayout" name="verticalLayout">
30+
<property name="sizeConstraint">
31+
<enum>QLayout::SetNoConstraint</enum>
32+
</property>
33+
<item>
34+
<layout class="QFormLayout" name="formLayout">
35+
<property name="sizeConstraint">
36+
<enum>QLayout::SetDefaultConstraint</enum>
37+
</property>
38+
<item row="0" column="1">
39+
<widget class="QComboBox" name="modeBox">
40+
<property name="sizePolicy">
41+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
42+
<horstretch>0</horstretch>
43+
<verstretch>0</verstretch>
44+
</sizepolicy>
45+
</property>
46+
</widget>
47+
</item>
48+
<item row="0" column="0">
49+
<widget class="QLabel" name="label_3">
50+
<property name="text">
51+
<string>Mode:</string>
52+
</property>
53+
</widget>
54+
</item>
55+
</layout>
56+
</item>
57+
<item>
58+
<widget class="QPushButton" name="doneButton">
59+
<property name="sizePolicy">
60+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
61+
<horstretch>0</horstretch>
62+
<verstretch>0</verstretch>
63+
</sizepolicy>
64+
</property>
65+
<property name="text">
66+
<string>Start</string>
67+
</property>
68+
</widget>
69+
</item>
70+
<item>
71+
<widget class="QProgressBar" name="progressBar">
72+
<property name="value">
73+
<number>24</number>
74+
</property>
75+
</widget>
76+
</item>
77+
</layout>
78+
</widget>
79+
</widget>
80+
<resources/>
81+
<connections/>
82+
</ui>

qt_files/mode_select.ui

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>MainWindow</class>
4+
<widget class="QMainWindow" name="MainWindow">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>300</width>
10+
<height>147</height>
11+
</rect>
12+
</property>
13+
<property name="sizePolicy">
14+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
15+
<horstretch>0</horstretch>
16+
<verstretch>0</verstretch>
17+
</sizepolicy>
18+
</property>
19+
<property name="windowTitle">
20+
<string>Select Start Configuration</string>
21+
</property>
22+
<widget class="QWidget" name="centralwidget">
23+
<property name="sizePolicy">
24+
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
25+
<horstretch>0</horstretch>
26+
<verstretch>0</verstretch>
27+
</sizepolicy>
28+
</property>
29+
<layout class="QVBoxLayout" name="verticalLayout">
30+
<property name="sizeConstraint">
31+
<enum>QLayout::SetNoConstraint</enum>
32+
</property>
33+
<item>
34+
<layout class="QFormLayout" name="formLayout">
35+
<property name="sizeConstraint">
36+
<enum>QLayout::SetDefaultConstraint</enum>
37+
</property>
38+
<item row="1" column="1">
39+
<widget class="QComboBox" name="windowBox">
40+
<property name="sizePolicy">
41+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
42+
<horstretch>0</horstretch>
43+
<verstretch>0</verstretch>
44+
</sizepolicy>
45+
</property>
46+
</widget>
47+
</item>
48+
<item row="0" column="1">
49+
<widget class="QLabel" name="label_3">
50+
<property name="text">
51+
<string>Mode:</string>
52+
</property>
53+
</widget>
54+
</item>
55+
</layout>
56+
</item>
57+
<item>
58+
<widget class="QPushButton" name="doneButton">
59+
<property name="sizePolicy">
60+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
61+
<horstretch>0</horstretch>
62+
<verstretch>0</verstretch>
63+
</sizepolicy>
64+
</property>
65+
<property name="text">
66+
<string>Start</string>
67+
</property>
68+
</widget>
69+
</item>
70+
</layout>
71+
</widget>
72+
</widget>
73+
<resources/>
74+
<connections/>
75+
</ui>

start.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,3 @@
5656
main_window.show()
5757
return_code = app.exec_()
5858
sys.exit(return_code)
59-

0 commit comments

Comments
 (0)