kopia lustrzana https://github.com/projecthorus/horus-gui
104 wiersze
3.4 KiB
Python
104 wiersze
3.4 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# Horus Telemetry GUI - Configuration
|
|
#
|
|
# Mark Jessop <vk5qi@rfhead.net>
|
|
#
|
|
|
|
import logging
|
|
import os
|
|
from ruamel.yaml import YAML
|
|
from . import __version__
|
|
|
|
|
|
default_config = {
|
|
"audio_device": "None",
|
|
"modem": "Horus Binary v1 (Legacy)",
|
|
"habitat_upload_enabled": True,
|
|
"habitat_call": "N0CALL",
|
|
"habitat_lat": 0.0,
|
|
"habitat_lon": 0.0,
|
|
"habitat_antenna": "",
|
|
"habitat_radio": "Horus-GUI " + __version__,
|
|
"horus_udp_enabled": True,
|
|
"horus_udp_port": 55672,
|
|
}
|
|
|
|
|
|
def init_config(filename="config.yml"):
|
|
""" Initialise the configuration file if it does not exist """
|
|
global default_config
|
|
logging.info(f"Writing configuration file {filename}")
|
|
|
|
yaml = YAML()
|
|
|
|
try:
|
|
with open(filename, "w") as _outfile:
|
|
yaml.dump(default_config, _outfile)
|
|
except Exception as e:
|
|
logging.error(f"Could not write configuration file - {str(e)}")
|
|
|
|
|
|
def read_config(widgets, filename="config.yml"):
|
|
""" Read in a configuration yml file, and set up all GUI widgets """
|
|
if not os.path.exists(filename):
|
|
init_config(filename)
|
|
|
|
yaml = YAML()
|
|
|
|
_config = None
|
|
|
|
try:
|
|
with open(filename, "r") as _infile:
|
|
_config = yaml.load(_infile)
|
|
except Exception as e:
|
|
logging.error(f"Error reading config file - {str(e)}")
|
|
|
|
if _config == None:
|
|
return
|
|
|
|
if widgets:
|
|
# Habitat Settings
|
|
widgets["habitatUploadSelector"].setChecked(_config["habitat_upload_enabled"])
|
|
widgets["userCallEntry"].setText(str(_config["habitat_call"]))
|
|
widgets["userLatEntry"].setText(str(_config["habitat_lat"]))
|
|
widgets["userLonEntry"].setText(str(_config["habitat_lon"]))
|
|
widgets["userAntennaEntry"].setText(str(_config["habitat_antenna"]))
|
|
widgets["userRadioEntry"].setText(str(_config["habitat_radio"]))
|
|
|
|
# Horus Settings
|
|
widgets["horusUploadSelector"].setChecked(_config["horus_udp_enabled"])
|
|
widgets["horusUDPEntry"].setText(str(_config["horus_udp_port"]))
|
|
|
|
# Try and set the audio device.
|
|
# If the audio device is not in the available list of devices, this will fail silently.
|
|
widgets["audioDeviceSelector"].setCurrentText(_config["audio_device"])
|
|
# Try and set the modem. If the modem is not valid, this will fail silently.
|
|
widgets["horusModemSelector"].setCurrentText(_config["modem"])
|
|
|
|
|
|
def save_config(widgets, filename="config.yml"):
|
|
""" Write out settings to a config file """
|
|
global default_config
|
|
|
|
if widgets:
|
|
default_config["habitat_upload_enabled"] = widgets[
|
|
"habitatUploadSelector"
|
|
].isChecked()
|
|
default_config["habitat_call"] = widgets["userCallEntry"].text()
|
|
default_config["habitat_lat"] = float(widgets["userLatEntry"].text())
|
|
default_config["habitat_lon"] = float(widgets["userLonEntry"].text())
|
|
default_config["habitat_antenna"] = widgets["userAntennaEntry"].text()
|
|
default_config["habitat_radio"] = widgets["userRadioEntry"].text()
|
|
default_config["horus_udp_enabled"] = widgets["horusUploadSelector"].isChecked()
|
|
default_config["horus_udp_port"] = int(widgets["horusUDPEntry"].text())
|
|
default_config["audio_device"] = widgets["audioDeviceSelector"].currentText()
|
|
default_config["modem"] = widgets["horusModemSelector"].currentText()
|
|
|
|
# Write out to config file
|
|
init_config(filename)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
read_config(None)
|