Source code for RWESharp.Modify.Editor

from __future__ import annotations
from PySide6.QtGui import QMoveEvent, QMouseEvent, QWheelEvent, QGuiApplication, QCursor
from PySide6.QtCore import QPoint, Qt
from PySide6.QtWidgets import QGraphicsScene
from typing import TYPE_CHECKING
from abc import ABC
from RWESharp.Modify.Module import Module
from RWESharp.info import ISMAC, CELLSIZE
if TYPE_CHECKING:
    from RWESharp.Renderable.Renderable import Renderable


[docs] class Editor(Module, ABC): """ Base for creating custom viewport editors """
[docs] def __init__(self, mod): super().__init__(mod) self.defaultcursor: QCursor = QCursor(Qt.CursorShape.ArrowCursor)
[docs] def mouse_move_event(self, event: QMoveEvent): pass
[docs] def mouse_press_event(self, event: QMouseEvent): pass
[docs] def mouse_release_event(self, event: QMouseEvent): pass
[docs] def mouse_wheel_event(self, event: QWheelEvent): pass
@property def workscene(self) -> QGraphicsScene: return self.viewport.workscene @property def mouse_left(self) -> bool: return self.viewport.mouse_left @property def mouse_right(self) -> bool: return self.viewport.mouse_right @property def mouse_pos(self) -> QPoint: """ last mouse location on viewport coordinates :return: """ return self.viewport.mouse_pos @property def editor_pos(self) -> QPoint: return (self.viewport.viewport_to_editor_float(self.mouse_pos.toPointF()) * CELLSIZE).toPoint() @property def shift(self) -> bool: return bool(QGuiApplication.keyboardModifiers() & Qt.KeyboardModifier.ShiftModifier) @property def control(self) -> bool: if ISMAC: return bool(QGuiApplication.keyboardModifiers() & Qt.KeyboardModifier.MetaModifier) return bool(QGuiApplication.keyboardModifiers() & Qt.KeyboardModifier.ControlModifier) @property def alt(self) -> bool: return bool(QGuiApplication.keyboardModifiers() & Qt.KeyboardModifier.AltModifier) @property def meta(self) -> bool: if ISMAC: return bool(QGuiApplication.keyboardModifiers() & Qt.KeyboardModifier.ControlModifier) return bool(QGuiApplication.keyboardModifiers() & Qt.KeyboardModifier.MetaModifier)
[docs] def add_myself(self, ui, viewport=None, name=None): self.mod.add_editor(self, ui) ui.begin_recording() return self
[docs] def mouse_left_release(self): pass
[docs] def mouse_right_release(self): pass
[docs] def mouse_middle_release(self): pass
[docs] def mouse_left_press(self): pass
[docs] def mouse_right_press(self): pass
[docs] def mouse_middle_press(self): pass
@property def modifiers(self): return QGuiApplication.keyboardModifiers()