gdctl: Make LogicalMonitor a dataclass

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4190>
This commit is contained in:
Jonas Ådahl 2025-01-29 21:50:45 +08:00 committed by Marge Bot
parent f9bb7aa2e6
commit 4837d1ce64

View File

@ -4,7 +4,7 @@ import argparse
import argcomplete import argcomplete
import sys import sys
from dataclasses import dataclass from dataclasses import dataclass, field
from gi.repository import GLib, Gio from gi.repository import GLib, Gio
from enum import Enum, Flag from enum import Enum, Flag
from argcomplete.completers import BaseCompleter, SuppressCompleter from argcomplete.completers import BaseCompleter, SuppressCompleter
@ -288,27 +288,18 @@ class Monitor:
self.display_name = self.properties.get("display-name", None) self.display_name = self.properties.get("display-name", None)
@dataclass
class LogicalMonitor: class LogicalMonitor:
def __init__( monitors: list[Monitor]
self, scale: float
monitors, position: tuple[int, int] | None = (0, 0)
scale, transform: Transform = Transform.NORMAL
position=(0, 0), is_primary: bool = False
transform=Transform.NORMAL, properties: dict = field(default_factory=dict)
is_primary=False, args: dict | None = None
properties={},
args=None,
):
self.position = position
self.scale = scale
self.transform = transform
self.is_primary = is_primary
self.monitors = monitors
self.properties = properties
self.args = args
@classmethod @classmethod
def new_from_variant(cls, monitors_state, variant): def from_variant(cls, monitors_state, variant):
position = (variant[0], variant[1]) position = (variant[0], variant[1])
scale = variant[2] scale = variant[2]
transform = Transform(variant[3]) transform = Transform(variant[3])
@ -682,9 +673,8 @@ def create_logical_monitor(monitors_state, layout_mode, logical_monitor_args):
monitors.append(monitor) monitors.append(monitor)
return LogicalMonitor( return LogicalMonitor(
monitors_state, monitors=monitors,
monitors, scale=scale,
scale,
is_primary=is_primary, is_primary=is_primary,
transform=transform, transform=transform,
position=None, position=None,
@ -833,7 +823,7 @@ class MonitorsState:
def init_logical_monitors(self, current_state): def init_logical_monitors(self, current_state):
self.logical_monitors = [] self.logical_monitors = []
for variant in current_state[2]: for variant in current_state[2]:
logical_monitor = LogicalMonitor.new_from_variant(self, variant) logical_monitor = LogicalMonitor.from_variant(self, variant)
self.logical_monitors.append(logical_monitor) self.logical_monitors.append(logical_monitor)
def create_current_config(self): def create_current_config(self):