linuxOS_AP05/debian/test/usr/lib/python3/dist-packages/Onboard/definitions.py

267 lines
6.6 KiB
Python
Raw Normal View History

2025-09-26 01:40:02 +00:00
# -*- coding: utf-8 -*-
# Copyright © 2013-2017 marmuta <marmvta@gmail.com>
#
# This file is part of Onboard.
#
# Onboard is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Onboard is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Global definitions.
"""
from __future__ import division, print_function, unicode_literals
from gi.repository import Gdk
try:
from enum import Enum
except ImportError as e:
# Fallback class for python versions before 3.4 (Precise).
class _EnumMeta(type):
def __new__(cls, name, bases, namespace):
class EnumValue(int):
def __repr__(self):
return "<%s.%s: %r>" % (
self.__class__.__name__, self.name,
int(self))
def __str__(self):
return "%s.%s" % (
self.__class__.__name__, self.name)
members = {}
for name, value in namespace.items():
if isinstance(value, int) and not name.startswith("_"):
ev = EnumValue(value)
ev.name = name
namespace[name] = ev
members[name] = ev
result = type.__new__(cls, name, bases, dict(namespace))
result.__members__ = members
return result
def __call__(cls, value): # noqa: flake8, no self here
for ev in cls.__members__.values():
if value == ev:
return ev
class Enum(metaclass=_EnumMeta):
"""
Simple Enum implementation that emulates python 3.4's Enum interface.
Supports:
- class style enum definition
class xyz(Enum):
value1 = 1
value2 = 2
- name retrieval from enum value
name = KeySynthEnum.AUTO.name
- conversion from int to enum value
enum_value = KeySynthEnum(3)
"""
pass
# Name of the /dev/uinput device when key-synth is set to uinput.
UINPUT_DEVICE_NAME = "Onboard on-screen keyboard"
class DesktopEnvironmentEnum(Enum):
(
Unknown,
Cinnamon,
GNOME_Shell,
GNOME_Classic,
KDE,
LXDE,
LXQT,
MATE,
Unity,
XFCE,
) = range(10)
class StatusIconProviderEnum:
(
auto,
GtkStatusIcon,
AppIndicator,
) = range(3)
class KeySynthEnum(Enum):
(
AUTO,
XTEST,
UINPUT,
ATSPI,
) = range(4)
class InputEventSourceEnum:
(
GTK,
XINPUT,
) = range(2)
class TouchInputEnum:
(
NONE,
SINGLE,
MULTI,
) = range(3)
class LearningBehavior:
(
NOTHING,
KNOWN_ONLY,
ALL,
) = range(3)
# auto-show repositioning
class RepositionMethodEnum:
(
NONE,
PREVENT_OCCLUSION, # Stay put at the user selected home
# position, only move when really necessary.
REDUCE_POINTER_TRAVEL, # Move closer to the accessible, but try
# to stay out of top level windows.
) = range(3)
# window corners
class Handle:
NORTH_WEST = Gdk.WindowEdge.NORTH_WEST
NORTH = Gdk.WindowEdge.NORTH
NORTH_EAST = Gdk.WindowEdge.NORTH_EAST
WEST = Gdk.WindowEdge.WEST
EAST = Gdk.WindowEdge.EAST
SOUTH_WEST = Gdk.WindowEdge.SOUTH_WEST
SOUTH = Gdk.WindowEdge.SOUTH
SOUTH_EAST = Gdk.WindowEdge.SOUTH_EAST
class MOVE: pass
Handle.EDGES = (Handle.EAST,
Handle.SOUTH,
Handle.WEST,
Handle.NORTH)
Handle.CORNERS = (Handle.SOUTH_EAST,
Handle.SOUTH_WEST,
Handle.NORTH_WEST,
Handle.NORTH_EAST)
Handle.RESIZERS = (Handle.EAST,
Handle.SOUTH_EAST,
Handle.SOUTH,
Handle.SOUTH_WEST,
Handle.WEST,
Handle.NORTH_WEST,
Handle.NORTH,
Handle.NORTH_EAST)
Handle.TOP_RESIZERS = (
Handle.EAST,
Handle.WEST,
Handle.NORTH_WEST,
Handle.NORTH,
Handle.NORTH_EAST)
Handle.BOTTOM_RESIZERS = (
Handle.EAST,
Handle.SOUTH_EAST,
Handle.SOUTH,
Handle.SOUTH_WEST,
Handle.WEST)
Handle.RESIZE_MOVE = Handle.RESIZERS + (Handle.MOVE, )
Handle.ALL = Handle.RESIZE_MOVE
Handle.CURSOR_TYPES = {
Handle.NORTH_WEST : Gdk.CursorType.TOP_LEFT_CORNER,
Handle.NORTH : Gdk.CursorType.TOP_SIDE,
Handle.NORTH_EAST : Gdk.CursorType.TOP_RIGHT_CORNER,
Handle.WEST : Gdk.CursorType.LEFT_SIDE,
Handle.EAST : Gdk.CursorType.RIGHT_SIDE,
Handle.SOUTH_WEST : Gdk.CursorType.BOTTOM_LEFT_CORNER,
Handle.SOUTH : Gdk.CursorType.BOTTOM_SIDE,
Handle.SOUTH_EAST : Gdk.CursorType.BOTTOM_RIGHT_CORNER,
Handle.MOVE : Gdk.CursorType.FLEUR}
Handle.IDS = {
Handle.EAST : "E",
Handle.SOUTH_WEST : "SW",
Handle.SOUTH : "S",
Handle.SOUTH_EAST : "SE",
Handle.WEST : "W",
Handle.NORTH_WEST : "NW",
Handle.NORTH : "N",
Handle.NORTH_EAST : "NE",
Handle.MOVE : "M"}
Handle.RIDS = {
"E" : Handle.EAST,
"SW" : Handle.SOUTH_WEST,
"S" : Handle.SOUTH,
"SE" : Handle.SOUTH_EAST,
"W" : Handle.WEST,
"NW" : Handle.NORTH_WEST,
"N" : Handle.NORTH,
"NE" : Handle.NORTH_EAST,
"M" : Handle.MOVE}
class HandleFunction:
NORMAL = 0
ASPECT_RATIO = 1
class DockingEdge:
TOP = 0
BOTTOM = 3
class DockingMonitor:
ACTIVE = 100
PRIMARY = 110
MONITOR0 = 0
MONITOR1 = 1
MONITOR2 = 2
MONITOR3 = 3
MONITOR4 = 4
MONITOR5 = 5
MONITOR6 = 6
MONITOR7 = 7
MONITOR8 = 8
class UIMask:
""" enum of keyboard UI update flags """
(
CONTROLLERS,
SUGGESTIONS,
LAYOUT,
LAYERS,
SIZE,
REDRAW,
) = (1<<bit for bit in range(6))
ALL = -1