gdctl: Make LogicalMonitor a dataclass
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4190>
This commit is contained in:
parent
f9bb7aa2e6
commit
4837d1ce64
36
tools/gdctl
36
tools/gdctl
@ -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):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user