gdctl: Make Monitor a dataclass
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4190>
This commit is contained in:
parent
4837d1ce64
commit
4f218537cd
51
tools/gdctl
51
tools/gdctl
@ -260,32 +260,53 @@ class MonitorMode:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
class Monitor:
|
class Monitor:
|
||||||
def __init__(self, variant):
|
connector: str
|
||||||
self.init_from_variant(variant)
|
vendor: str
|
||||||
|
product: str
|
||||||
|
display_name: str
|
||||||
|
serial: str
|
||||||
|
modes: list[MonitorMode]
|
||||||
|
properties: dict
|
||||||
|
current_mode: MonitorMode | None
|
||||||
|
preferred_mode: MonitorMode | None
|
||||||
|
|
||||||
def init_from_variant(self, variant):
|
@classmethod
|
||||||
|
def from_variant(cls, variant):
|
||||||
spec = variant[0]
|
spec = variant[0]
|
||||||
self.connector = spec[0]
|
connector = spec[0]
|
||||||
self.vendor = spec[1] if spec[1] != "" else None
|
vendor = spec[1] if spec[1] != "" else None
|
||||||
self.product = spec[2] if spec[2] != "" else None
|
product = spec[2] if spec[2] != "" else None
|
||||||
self.serial = spec[3] if spec[3] != "" else None
|
serial = spec[3] if spec[3] != "" else None
|
||||||
self.modes = [
|
modes = [
|
||||||
MonitorMode.from_variant(mode_variant)
|
MonitorMode.from_variant(mode_variant)
|
||||||
for mode_variant in variant[1]
|
for mode_variant in variant[1]
|
||||||
]
|
]
|
||||||
self.properties = translate_properties(variant[2])
|
properties = translate_properties(variant[2])
|
||||||
|
|
||||||
self.current_mode = next(
|
current_mode = next(
|
||||||
(mode for mode in self.modes if "is-current" in mode.properties),
|
(mode for mode in modes if "is-current" in mode.properties),
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
self.preferred_mode = next(
|
preferred_mode = next(
|
||||||
(mode for mode in self.modes if "is-preferred" in mode.properties),
|
(mode for mode in modes if "is-preferred" in mode.properties),
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.display_name = self.properties.get("display-name", None)
|
display_name = properties.get("display-name", None)
|
||||||
|
|
||||||
|
return cls(
|
||||||
|
connector=connector,
|
||||||
|
vendor=vendor,
|
||||||
|
product=product,
|
||||||
|
serial=serial,
|
||||||
|
modes=modes,
|
||||||
|
properties=properties,
|
||||||
|
current_mode=current_mode,
|
||||||
|
preferred_mode=preferred_mode,
|
||||||
|
display_name=display_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -817,7 +838,7 @@ class MonitorsState:
|
|||||||
def init_monitors(self, current_state):
|
def init_monitors(self, current_state):
|
||||||
self.monitors = {}
|
self.monitors = {}
|
||||||
for monitor_variant in current_state[1]:
|
for monitor_variant in current_state[1]:
|
||||||
monitor = Monitor(monitor_variant)
|
monitor = Monitor.from_variant(monitor_variant)
|
||||||
self.monitors[monitor.connector] = monitor
|
self.monitors[monitor.connector] = monitor
|
||||||
|
|
||||||
def init_logical_monitors(self, current_state):
|
def init_logical_monitors(self, current_state):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user