Source code for BaseMod.camera.cameraUIConnectors

from PySide6.QtCore import QCoreApplication, QPoint, Qt
from PySide6.QtGui import QAction, QColor, QPen
from PySide6.QtWidgets import QCheckBox, QTreeWidgetItem

from BaseMod.camera.ui.camera_vis_ui import Ui_CameraView
from BaseMod.camera.ui.cameras_ui import Ui_Cameras
from BaseMod.camera.ui.camerasettings_ui import Ui_Cameras as Ui_CameraSettings
from RWS.Configurable import BoolConfigurable, KeyConfigurable, PenConfigurable, ColorConfigurable
from RWS.Ui import ViewUI, UI, SettingUI
from RWS.Widgets import SettingsViewer


[docs] class CameraUI(UI):
[docs] def __init__(self, mod, parent=None): super().__init__(mod, parent) self.ui = Ui_Cameras() self.ui.setupUi(self) self.editor = self.mod.cameraeditor self.editor.cameraui = self self.ui.CameraTree.setSelectionMode(self.ui.CameraTree.SelectionMode.ExtendedSelection) self.add_key = KeyConfigurable(mod, "EDIT_cameras.add", "Ctrl+a", "Add Camera") self.remove_key = KeyConfigurable(mod, "EDIT_cameras.remove", "Ctrl+d", "Remove Cameras") self.moveup_key = KeyConfigurable(mod, "EDIT_cameras.moveup", "Shift+w", "Move Cameras up") self.movedown_key = KeyConfigurable(mod, "EDIT_cameras.movedown", "Shift+s", "Move Cameras down") self.add_key.link_button(self.ui.AddCamera) self.remove_key.link_button(self.ui.RemoveCamera) self.moveup_key.link_button(self.ui.MoveUp) self.movedown_key.link_button(self.ui.MoveDown) self.ui.AddCamera.clicked.connect(self.editor.add_camera) self.ui.RemoveCamera.clicked.connect(self.remove_cameras) self.ui.CameraTree.itemClicked.connect(self.select_cameras) self.ui.MoveUp.clicked.connect(self.move_up) self.ui.MoveDown.clicked.connect(self.move_down)
[docs] def move_up(self): self.editor.move_up(self.selection)
[docs] def move_down(self): self.editor.move_down(self.selection)
[docs] def select_cameras(self): self.editor.reset_selection(False) selection = self.selection self.editor.select_indexes(selection)
[docs] def add_cameras(self): self.ui.CameraTree.clear() for i, v in enumerate(self.editor.viewport.modulenames["cameras"].cameras): item = QTreeWidgetItem([str(i), str([v.camera.pos.x(), v.camera.pos.y()])]) self.ui.CameraTree.addTopLevelItem(item) item.setSelected(v in self.editor.selected) self.ui.CameraTree.resizeColumnToContents(0)
[docs] def remove_cameras(self): self.editor.remove_cameras(self.selection)
[docs] def select_camera(self, row, clear=True): item = self.ui.CameraTree.itemAt(QPoint(0, row * self.ui.CameraTree.sizeHintForRow(0))) if clear: self.ui.CameraTree.setCurrentItem(item) return item.setSelected(True)
[docs] def reset_selection(self): self.ui.CameraTree.clearSelection()
@property def selection(self): return [v.row() for i, v in enumerate(self.ui.CameraTree.selectedIndexes()) if i % 2 == 0]
[docs] class CameraViewUI(ViewUI):
[docs] def __init__(self, mod, parent=None): super().__init__(mod, parent) self.ui = Ui_CameraView() self.ui.setupUi(self) self.show_cameras = BoolConfigurable(mod, "VIEW_cameras.show", True, "Show Cameras") self.show_cameras_key = KeyConfigurable(mod, "VIEW_cameras.show_key", "Alt+c", "Show Cameras Key") self.showcamaction = QAction("Cameras") self.show_cameras.link_button_action(self.ui.ShowCameras, self.showcamaction, self.show_cameras_key) self.rectcolor = PenConfigurable(mod, "VIEW_cameras.rectcolor", QPen(QColor(0, 255, 0, 190), 4, Qt.PenStyle.DashDotLine), "Outer Camera rect color") self.rect2color = PenConfigurable(mod, "VIEW_cameras.rect2color", QPen(QColor(0, 120, 0, 190), 3), "Inner Camera rect color") self.rect3color = PenConfigurable(mod, "VIEW_cameras.rect3color", QPen(QColor(255, 255, 0, 120), 3, Qt.PenStyle.DotLine), "4x3 Camera rect color") self.rectcentercolor = PenConfigurable(mod, "VIEW_cameras.rectcentercolor", QPen(QColor(40, 40, 40, 120), 5), "Camera rect center color") self.polycolor = PenConfigurable(mod, "VIEW_cameras.polycolor", QPen(QColor(0, 255, 0, 210), 6, Qt.PenStyle.DashLine), "Outer Camera polygon color") self.circcolor = PenConfigurable(mod, "VIEW_cameras.circcolor", QPen(QColor(0, 255, 0, 210), 5), "Camera corner circle color") self.indexcolor = ColorConfigurable(mod, "VIEW_cameras.fontcolor", QColor(168, 168, 168), "Font color") self.showrect = BoolConfigurable(mod, "VIEW_cameras.showrect", True, "Show Outer Camera rect") self.showrect2 = BoolConfigurable(mod, "VIEW_cameras.showrect2", True, "Show Inner Camera rect") self.showrect3 = BoolConfigurable(mod, "VIEW_cameras.showrect3", True, "Show 4x3 Camera rect") self.showrectcenter = BoolConfigurable(mod, "VIEW_cameras.showrectcenter", True, "Show Camera rect center") self.showpoly = BoolConfigurable(mod, "VIEW_cameras.showpoly", True, "Show Outer Camera polygon") self.showcirc = BoolConfigurable(mod, "VIEW_cameras.showcirc", True, "Show Camera corner circle") self.showindex = BoolConfigurable(mod, "VIEW_cameras.showfont", True, "Show Font") self.VQuickCameras = QCheckBox() self.VQuickCameras.setObjectName(u"VQuickCameras") self.VQuickCameras.setText(QCoreApplication.translate("MainWindow", u"Cameras", None)) self.VQuickCameras.setChecked(True) self.mod.add_quickview_option(self.VQuickCameras) self.show_cameras.link_button_action(self.VQuickCameras, self.showcamaction, self.show_cameras_key) self.mod.manager.view_menu.addAction(self.showcamaction) self.showrect.link_button(self.ui.ShowOuter) self.showrect2.link_button(self.ui.ShowInner) self.showrect3.link_button(self.ui.Show43) self.showrectcenter.link_button(self.ui.ShowCenter) self.showpoly.link_button(self.ui.ShowCameraShape) self.showcirc.link_button(self.ui.ShowEdgeCircles) self.showindex.link_button(self.ui.ShowIndex)
[docs] class CameraSettingsUI(SettingUI):
[docs] def __init__(self, mod): super().__init__(mod) self.viewui = self.mod.cameraview self.rectcolor = SettingUI.ManageableSetting(PenConfigurable(None, "rectcolor", QPen(), "Outer Camera rect color"), self.viewui.rectcolor).add_myself(self) self.rect2color = SettingUI.ManageableSetting(PenConfigurable(None, "rect2color", QPen(), "Inner Camera rect color"), self.viewui.rect2color).add_myself(self) self.rect3color = SettingUI.ManageableSetting(PenConfigurable(None, "rect3color", QPen(), "4x3 Camera rect color"), self.viewui.rect3color).add_myself(self) self.rectcentercolor = SettingUI.ManageableSetting(PenConfigurable(None, "rectcentercolor", QPen(), "Camera rect center color"), self.viewui.rectcentercolor).add_myself(self) self.polycolor = SettingUI.ManageableSetting(PenConfigurable(None, "polycolor", QPen(), "Outer Camera polygon color"), self.viewui.polycolor).add_myself(self) self.circcolor = SettingUI.ManageableSetting(PenConfigurable(None, "circcolor", QPen(), "Camera corner circle color"), self.viewui.circcolor).add_myself(self) self.indexcolor = SettingUI.ManageableSetting(ColorConfigurable(None, "fontcolor", QColor(), "Font color"), self.viewui.indexcolor).add_myself(self)
[docs] def init_ui(self, viewer: SettingsViewer): self.ui = Ui_CameraSettings() self.ui.setupUi(viewer) self.rectcolor.setting.link_pen_picker(self.ui.rect1) self.rect2color.setting.link_pen_picker(self.ui.rect2) self.rect3color.setting.link_pen_picker(self.ui.rect3) self.rectcentercolor.setting.link_pen_picker(self.ui.center) self.polycolor.setting.link_pen_picker(self.ui.poly) self.circcolor.setting.link_pen_picker(self.ui.circle) self.indexcolor.setting.link_color_picker(self.ui.Index)