wip: finished work on the TopPanel Widget, added weather icons, changed timeofday icons
@ -87,10 +87,10 @@ def load_icons():
|
||||
ICONS["Terrain_TheChannel"] = QPixmap("./resources/ui/terrain_channel.gif")
|
||||
ICONS["Terrain_Syria"] = QPixmap("./resources/ui/terrain_syria.gif")
|
||||
|
||||
ICONS["Dawn"] = QPixmap("./resources/ui/daytime/dawn.png")
|
||||
ICONS["Day"] = QPixmap("./resources/ui/daytime/day.png")
|
||||
ICONS["Dusk"] = QPixmap("./resources/ui/daytime/dusk.png")
|
||||
ICONS["Night"] = QPixmap("./resources/ui/daytime/night.png")
|
||||
ICONS["Dawn"] = QPixmap("./resources/ui/conditions/timeofday/dawn.png")
|
||||
ICONS["Day"] = QPixmap("./resources/ui/conditions/timeofday/day.png")
|
||||
ICONS["Dusk"] = QPixmap("./resources/ui/conditions/timeofday/dusk.png")
|
||||
ICONS["Night"] = QPixmap("./resources/ui/conditions/timeofday/night.png")
|
||||
|
||||
ICONS["Money"] = QPixmap("./resources/ui/misc/"+get_theme_icons()+"/money_icon.png")
|
||||
ICONS["PassTurn"] = QPixmap("./resources/ui/misc/"+get_theme_icons()+"/hourglass.png")
|
||||
@ -121,6 +121,24 @@ def load_icons():
|
||||
ICONS["TaskSEAD"] = QPixmap("./resources/ui/tasks/sead.png")
|
||||
ICONS["TaskEmpty"] = QPixmap("./resources/ui/tasks/empty.png")
|
||||
|
||||
"""
|
||||
Weather Icons
|
||||
"""
|
||||
ICONS["Weather_day-clear"] = QPixmap("./resources/ui/conditions/weather/day-clear.png")
|
||||
ICONS["Weather_day-cloudy-fog"] = QPixmap("./resources/ui/conditions/weather/day-cloudy-fog.png")
|
||||
ICONS["Weather_day-fog"] = QPixmap("./resources/ui/conditions/weather/day-fog.png")
|
||||
ICONS["Weather_day-partly-cloudy"] = QPixmap("./resources/ui/conditions/weather/day-partly-cloudy.png")
|
||||
ICONS["Weather_day-rain"] = QPixmap("./resources/ui/conditions/weather/day-rain.png")
|
||||
ICONS["Weather_day-thunderstorm"] = QPixmap("./resources/ui/conditions/weather/day-thunderstorm.png")
|
||||
ICONS["Weather_day-totally-cloud"] = QPixmap("./resources/ui/conditions/weather/day-totally-cloud.png")
|
||||
ICONS["Weather_night-clear"] = QPixmap("./resources/ui/conditions/weather/night-clear.png")
|
||||
ICONS["Weather_night-cloudy-fog"] = QPixmap("./resources/ui/conditions/weather/night-cloudy-fog.png")
|
||||
ICONS["Weather_night-fog"] = QPixmap("./resources/ui/conditions/weather/night-fog.png")
|
||||
ICONS["Weather_night-partly-cloudy"] = QPixmap("./resources/ui/conditions/weather/night-partly-cloudy.png")
|
||||
ICONS["Weather_night-rain"] = QPixmap("./resources/ui/conditions/weather/night-rain.png")
|
||||
ICONS["Weather_night-thunderstorm"] = QPixmap("./resources/ui/conditions/weather/night-thunderstorm.png")
|
||||
ICONS["Weather_night-totally-cloud"] = QPixmap("./resources/ui/conditions/weather/night-totally-cloud.png")
|
||||
|
||||
|
||||
EVENT_ICONS: Dict[str, QPixmap] = {}
|
||||
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
import datetime
|
||||
import logging
|
||||
|
||||
from PySide2.QtCore import Qt
|
||||
from PySide2.QtWidgets import QLabel, QHBoxLayout, QGroupBox, QVBoxLayout, QFrame, QSizePolicy, QStyle, QPushButton, QGridLayout
|
||||
from PySide2.QtGui import QFont
|
||||
|
||||
from game.weather import Conditions, TimeOfDay, Weather
|
||||
from game.utils import meter_to_nm
|
||||
from dcs.weather import Weather as PydcsWeather
|
||||
|
||||
from qt_ui.windows.weather.QWeatherInfoWindow import QWeatherInfoWindow
|
||||
@ -88,12 +90,15 @@ class QWeatherWidget(QGroupBox):
|
||||
self.layout.addLayout(self.textLayout)
|
||||
|
||||
self.forecastClouds = QLabel('')
|
||||
self.forecastClouds.setProperty('style', 'text-sm')
|
||||
self.textLayout.addWidget(self.forecastClouds)
|
||||
|
||||
self.forecastRain = QLabel('')
|
||||
self.forecastRain.setProperty('style', 'text-sm')
|
||||
self.textLayout.addWidget(self.forecastRain)
|
||||
|
||||
self.forecastFog = QLabel('')
|
||||
self.forecastFog.setProperty('style', 'text-sm')
|
||||
self.textLayout.addWidget(self.forecastFog)
|
||||
|
||||
self.details = QPushButton("Weather")
|
||||
@ -114,53 +119,66 @@ class QWeatherWidget(QGroupBox):
|
||||
self.turn
|
||||
self.conditions = conditions
|
||||
|
||||
if conditions and turn > 0:
|
||||
if not conditions:
|
||||
self.details.setDisabled(True)
|
||||
else:
|
||||
self.details.setDisabled(False)
|
||||
|
||||
self.updateIcon()
|
||||
self.updateText()
|
||||
self.updateForecast()
|
||||
|
||||
pass
|
||||
|
||||
def updateIcon(self):
|
||||
"""
|
||||
Updates the Forecast Icon based on turn conditions
|
||||
"""
|
||||
|
||||
|
||||
pass
|
||||
|
||||
def updateText(self):
|
||||
def updateForecast(self):
|
||||
"""
|
||||
Updates the Forecast Text based on turn conditions
|
||||
"""
|
||||
cloudDensity = self.conditions.weather.clouds.density
|
||||
precipitation = self.conditions.weather.clouds.precipitation
|
||||
cloudDensity = self.conditions.weather.clouds.density or 0
|
||||
precipitation = self.conditions.weather.clouds.precipitation or None
|
||||
fog = self.conditions.weather.fog or None
|
||||
|
||||
icon = []
|
||||
|
||||
is_night = self.conditions.time_of_day == TimeOfDay.Night
|
||||
time = 'night' if is_night else 'day'
|
||||
|
||||
if cloudDensity <= 0:
|
||||
self.forecastClouds.setText('Sunny')
|
||||
icon = [time, 'clear']
|
||||
|
||||
if cloudDensity > 0 and cloudDensity < 3:
|
||||
self.forecastClouds.setText('Partly Cloudy')
|
||||
icon = [time, 'partly-cloudy']
|
||||
|
||||
if cloudDensity > 3 and cloudDensity < 6:
|
||||
if cloudDensity >= 3 and cloudDensity < 5:
|
||||
self.forecastClouds.setText('Mostly Cloudy')
|
||||
icon = [time, 'partly-cloudy']
|
||||
|
||||
if cloudDensity > 6:
|
||||
if cloudDensity >= 5:
|
||||
self.forecastClouds.setText('Totally Cloudy')
|
||||
|
||||
icon = [time, 'partly-cloudy']
|
||||
|
||||
if precipitation == PydcsWeather.Preceptions.Rain:
|
||||
self.forecastRain.setText('Rain')
|
||||
icon = [time, 'rain']
|
||||
|
||||
elif precipitation == PydcsWeather.Preceptions.Thunderstorm:
|
||||
self.forecastRain.setText('Thunderstorm')
|
||||
icon = [time, 'thunderstorm']
|
||||
|
||||
else:
|
||||
self.forecastRain.setText('No Rain')
|
||||
|
||||
if not self.conditions.weather.fog:
|
||||
self.textLayout.removeWidget(self.forecastFog)
|
||||
if not fog:
|
||||
self.forecastFog.setText('No fog')
|
||||
else:
|
||||
visvibilityNm = round(meter_to_nm(fog.visibility), 1)
|
||||
self.forecastFog.setText('Fog vis: {}nm'.format(visvibilityNm))
|
||||
icon = [time, ('cloudy' if cloudDensity > 1 else None), 'fog']
|
||||
|
||||
|
||||
icon_key = "Weather_{}".format('-'.join(filter(None.__ne__, icon)))
|
||||
|
||||
icon = CONST.ICONS.get(icon_key) or CONST.ICONS['Weather_night-partly-cloudy']
|
||||
|
||||
self.weather_icon.setPixmap(icon)
|
||||
|
||||
|
||||
def updateDetailsBtn(self):
|
||||
|
||||
@ -504,10 +504,22 @@ QWidget[style="baseMenuHeader"]{
|
||||
color:white;
|
||||
}*/
|
||||
|
||||
QLabel[style="small"]{
|
||||
QLabel[style="small"], QLabel[style="text-xs"]{
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
QLabel[style="text-sm"]{
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
QLabel[style="text-md"] {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
QLabel[style="text-xl"] {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
QFrame[style="QConditionsWidget"] {
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
@ -521,4 +533,11 @@ QGroupBox[style="QWeatherWidget"] {
|
||||
margin-right: 5px;
|
||||
margin-top: 1ex;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
QGroupBox[style="QWeatherWidget"] QLabel[style="text-sm"] {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
font-size: 9px;
|
||||
line-height: 9px;
|
||||
}
|
||||
BIN
resources/ui/conditions/timeofday/dawn.png
Normal file
|
After Width: | Height: | Size: 692 B |
BIN
resources/ui/conditions/timeofday/day.png
Normal file
|
After Width: | Height: | Size: 634 B |
BIN
resources/ui/conditions/timeofday/dusk.png
Normal file
|
After Width: | Height: | Size: 671 B |
BIN
resources/ui/conditions/timeofday/night.png
Normal file
|
After Width: | Height: | Size: 482 B |
BIN
resources/ui/conditions/weather/day-clear.png
Normal file
|
After Width: | Height: | Size: 634 B |
BIN
resources/ui/conditions/weather/day-cloudy-fog.png
Normal file
|
After Width: | Height: | Size: 345 B |
BIN
resources/ui/conditions/weather/day-fog.png
Normal file
|
After Width: | Height: | Size: 484 B |
BIN
resources/ui/conditions/weather/day-partly-cloudy.png
Normal file
|
After Width: | Height: | Size: 470 B |
BIN
resources/ui/conditions/weather/day-rain.png
Normal file
|
After Width: | Height: | Size: 567 B |
BIN
resources/ui/conditions/weather/day-thunderstorm.png
Normal file
|
After Width: | Height: | Size: 584 B |
BIN
resources/ui/conditions/weather/day-totally-cloud.png
Normal file
|
After Width: | Height: | Size: 332 B |
BIN
resources/ui/conditions/weather/night-clear.png
Normal file
|
After Width: | Height: | Size: 320 B |
BIN
resources/ui/conditions/weather/night-cloudy-fog.png
Normal file
|
After Width: | Height: | Size: 345 B |
BIN
resources/ui/conditions/weather/night-fog.png
Normal file
|
After Width: | Height: | Size: 437 B |
BIN
resources/ui/conditions/weather/night-partly-cloudy.png
Normal file
|
After Width: | Height: | Size: 405 B |
BIN
resources/ui/conditions/weather/night-rain.png
Normal file
|
After Width: | Height: | Size: 496 B |
BIN
resources/ui/conditions/weather/night-thundersotrm.png
Normal file
|
After Width: | Height: | Size: 481 B |
BIN
resources/ui/conditions/weather/night-totally-cloud.png
Normal file
|
After Width: | Height: | Size: 332 B |