File: bar_widget_canvas.py

package info (click to toggle)
raysession 0.17.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 19,196 kB
  • sloc: python: 44,463; sh: 1,538; makefile: 213; xml: 86
file content (89 lines) | stat: -rw-r--r-- 2,957 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from typing import TYPE_CHECKING

from qtpy.QtCore import Slot # type:ignore
from qtpy.QtWidgets import QWidget, QApplication

from ..bases.elements import ToolDisplayed
from ..ui.canvas_bar import Ui_Form as CanvasUiForm

if TYPE_CHECKING:
    from ..patchbay_manager import PatchbayManager


_translate = QApplication.translate


class BarWidgetCanvas(QWidget):
    def __init__(self, parent):
        super().__init__(parent)
        self.ui = CanvasUiForm()
        self.ui.setupUi(self)
        self.mng: 'PatchbayManager' = None # type:ignore

        self.ui.toolButtonUndo.clicked.connect(self.undo)
        self.ui.toolButtonRedo.clicked.connect(self.redo)

    def change_tools_displayed(self, tools_displayed: ToolDisplayed):
        self.ui.viewSelector.setVisible(
            bool(tools_displayed & ToolDisplayed.VIEWS_SELECTOR))
        self.ui.toolButtonHiddenBoxes.setVisible(
            bool(tools_displayed & ToolDisplayed.HIDDENS_BOX))
        self.ui.frameTypeFilter.setVisible(
            bool(tools_displayed & ToolDisplayed.PORT_TYPES_VIEW))
        self.ui.sliderZoom.setVisible(
            bool(tools_displayed & ToolDisplayed.ZOOM_SLIDER))
        self.ui.toolButtonUndo.setVisible(
            bool(tools_displayed & ToolDisplayed.UNDO_REDO))
        self.ui.toolButtonRedo.setVisible(
            bool(tools_displayed & ToolDisplayed.UNDO_REDO))

    def set_patchbay_manager(self, mng: 'PatchbayManager'):
        self.ui.frameTypeFilter.set_patchbay_manager(mng)
        self.ui.sliderZoom.set_patchbay_manager(mng)
        self.ui.viewSelector.set_patchbay_manager(mng)
        self.ui.toolButtonHiddenBoxes.set_patchbay_manager(mng)
        self.mng = mng

        self.mng.sg.undo_redo_changed.connect(self.undo_redo_changed)

    def set_at_end_of_line(self, end_of_line: bool):
        self.ui.widgetSpacerRight.setVisible(not end_of_line)

    @Slot()
    def undo_redo_changed(self):
        if self.mng is None:
            return

        cc = self.mng.cancel_mng

        if cc.actions:
            self.ui.toolButtonUndo.setEnabled(True)
            self.ui.toolButtonUndo.setToolTip(
                '<p>%s<br>' %  _translate('undo', 'Undo')
                + f'<i>{cc.actions[-1].name}</i></p>')
        else:
            self.ui.toolButtonUndo.setEnabled(False)
            self.ui.toolButtonUndo.setToolTip('')

        if cc.canceled_acts:
            self.ui.toolButtonRedo.setEnabled(True)
            self.ui.toolButtonRedo.setToolTip(
                '<p>%s<br>' % _translate('undo', 'Redo')
                + f'<i>{cc.canceled_acts[-1].name}</i></p>')
        else:
            self.ui.toolButtonRedo.setEnabled(False)
            self.ui.toolButtonRedo.setToolTip('')

    @Slot()
    def undo(self):
        if self.mng is None:
            return

        self.mng.cancel_mng.undo()

    @Slot()
    def redo(self):
        if self.mng is None:
            return

        self.mng.cancel_mng.redo()