dcs-retribution/qt_ui/widgets/conditions/DcsCloudDensitySelector.py

44 lines
1.4 KiB
Python

from typing import Optional
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QHBoxLayout, QLabel, QSlider, QSpinBox
from dcs.weather import CloudPreset
from game.weather.clouds import Clouds
class DcsCloudDensitySelector(QHBoxLayout):
def __init__(self, clouds: Optional[Clouds]) -> None:
super().__init__()
self.unit_changing = False
self.label = QLabel("Density : ")
self.addWidget(self.label)
self.density = QSlider(Qt.Orientation.Horizontal)
self.density.setRange(0, 10)
if clouds:
self.density.setValue(clouds.density)
self.density.valueChanged.connect(self.on_slider_change)
self.addWidget(self.density, 1)
self.density_spinner = QSpinBox()
self.density_spinner.setValue(self.density.value())
self.density_spinner.setFixedWidth(75)
self.density_spinner.valueChanged.connect(self.update_slider)
self.addWidget(self.density_spinner, 1)
def on_slider_change(self, value: int) -> None:
self.density_spinner.setValue(value)
def update_slider(self, value: int) -> None:
self.density.setValue(value)
def update_ui(self, preset: Optional[CloudPreset]) -> None:
self.label.setVisible(preset is None)
self.density.setVisible(preset is None)
self.density_spinner.setVisible(preset is None)
if preset:
self.density.setValue(0)