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