diff --git a/htdocs/css/admin.css b/htdocs/css/admin.css index 1244728..8457124 100644 --- a/htdocs/css/admin.css +++ b/htdocs/css/admin.css @@ -24,4 +24,12 @@ h1 { margin: 1em 0; text-align: center; +} + +.matrix { + display: grid; +} + +.q65-matrix { + grid-template-columns: repeat(5, auto); } \ No newline at end of file diff --git a/owrx/controllers/settings.py b/owrx/controllers/settings.py index def68a9..38b6f65 100644 --- a/owrx/controllers/settings.py +++ b/owrx/controllers/settings.py @@ -18,6 +18,7 @@ from owrx.form import ( OptionalConverter, AprsBeaconSymbols, AprsAntennaDirections, + Q65ModeMatrix, ) from urllib.parse import quote from owrx.wsjt import Fst4Profile, Fst4wProfile @@ -239,7 +240,7 @@ class GeneralSettingsController(AdminController): "Enabled FST4W intervals", [Option(v, "{}s".format(v)) for v in Fst4wProfile.availableIntervals], ), - # TODO: q65_enabled_combinations + Q65ModeMatrix("q65_enabled_combinations", "Enabled Q65 Mode combinations"), ), Section( "Background decoding", diff --git a/owrx/form/__init__.py b/owrx/form/__init__.py index 551ea41..bdbbaf3 100644 --- a/owrx/form/__init__.py +++ b/owrx/form/__init__.py @@ -1,6 +1,7 @@ from abc import ABC, abstractmethod from owrx.modes import Modes from owrx.config import Config +from owrx.wsjt import Q65Mode, Q65Profile from enum import Enum @@ -316,6 +317,51 @@ class DropdownInput(Input): return "".join(options) +class Q65ModeConverter(Converter): + def convert_to_form(self, value): + pass + + def convert_from_form(self, value): + pass + + +class Q65ModeMatrix(Input): + def checkbox_id(self, mode, interval): + return "{0}-{1}-{2}".format(self.id, mode.value, interval) + + def render_checkbox(self, mode, interval, value): + return """ +