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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# Authors: see git history
#
# Copyright (c) 2024 Authors
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
import wx
from wx.lib.scrolledpanel import ScrolledPanel
from ...debug.debug import debug
from ...i18n import _
from . import SimulatorPreferenceDialog
class ViewPanel(ScrolledPanel):
""""""
@debug.time
def __init__(self, parent, detach_callback):
""""""
self.parent = parent
self.detach_callback = detach_callback
ScrolledPanel.__init__(self, parent)
self.SetupScrolling(scroll_y=True, scroll_x=False)
self.button_style = wx.BU_EXACTFIT | wx.BU_NOTEXT
self.control_panel = parent.cp
self.btnNpp = wx.BitmapToggleButton(self, -1, style=self.button_style)
self.btnNpp.Bind(wx.EVT_TOGGLEBUTTON, self.toggle_npp)
self.btnNpp.SetBitmap(self.control_panel.load_icon('npp'))
self.btnNpp.SetToolTip(_('Display needle penetration point (O)'))
self.btnJump = wx.BitmapToggleButton(self, -1, style=self.button_style)
self.btnJump.SetToolTip(_('Show jump stitches'))
self.btnJump.SetBitmap(self.control_panel.load_icon('jump'))
self.btnJump.Bind(wx.EVT_TOGGLEBUTTON, lambda event: self.on_marker_button('jump', event))
self.btnTrim = wx.BitmapToggleButton(self, -1, style=self.button_style)
self.btnTrim.SetToolTip(_('Show trims'))
self.btnTrim.SetBitmap(self.control_panel.load_icon('trim'))
self.btnTrim.Bind(wx.EVT_TOGGLEBUTTON, lambda event: self.on_marker_button('trim', event))
self.btnStop = wx.BitmapToggleButton(self, -1, style=self.button_style)
self.btnStop.SetToolTip(_('Show stops'))
self.btnStop.SetBitmap(self.control_panel.load_icon('stop'))
self.btnStop.Bind(wx.EVT_TOGGLEBUTTON, lambda event: self.on_marker_button('stop', event))
self.btnColorChange = wx.BitmapToggleButton(self, -1, style=self.button_style)
self.btnColorChange.SetToolTip(_('Show color changes'))
self.btnColorChange.SetBitmap(self.control_panel.load_icon('color_change'))
self.btnColorChange.Bind(wx.EVT_TOGGLEBUTTON, lambda event: self.on_marker_button('color_change', event))
self.btnBackgroundColor = wx.ColourPickerCtrl(self, -1, colour='white', size=((40, -1)))
self.btnBackgroundColor.SetToolTip(_("Change background color"))
self.btnBackgroundColor.Bind(wx.EVT_COLOURPICKER_CHANGED, self.on_update_background_color)
self.btnSettings = wx.BitmapButton(self, -1, style=self.button_style)
self.btnSettings.SetToolTip(_('Open settings dialog'))
self.btnSettings.SetBitmap(self.control_panel.load_icon('settings'))
self.btnSettings.Bind(wx.EVT_BUTTON, self.on_settings_button)
if self.detach_callback:
self.btnDetachSimulator = wx.BitmapButton(self, -1, style=self.button_style)
self.btnDetachSimulator.SetToolTip(_('Detach/attach simulator window'))
self.btnDetachSimulator.SetBitmap(self.control_panel.load_icon('detach_window'))
self.btnDetachSimulator.Bind(wx.EVT_BUTTON, lambda event: self.control_panel.detach_callback())
outer_sizer = wx.BoxSizer(wx.VERTICAL)
show_sizer = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Show")), wx.VERTICAL)
show_inner_sizer = wx.BoxSizer(wx.VERTICAL)
show_inner_sizer.Add(self.btnNpp, 0, wx.ALL, 2)
show_inner_sizer.Add(self.btnJump, 0, wx.ALL, 2)
show_inner_sizer.Add(self.btnTrim, 0, wx.ALL, 2)
show_inner_sizer.Add(self.btnStop, 0, wx.ALL, 2)
show_inner_sizer.Add(self.btnColorChange, 0, wx.ALL, 2)
show_sizer.Add(0, 2, 0)
show_sizer.Add(show_inner_sizer, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 2)
show_sizer.Add(0, 2, 0)
outer_sizer.Add(show_sizer)
outer_sizer.Add(0, 10, 0)
settings_sizer = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Settings")), wx.VERTICAL)
settings_inner_sizer = wx.BoxSizer(wx.VERTICAL)
settings_inner_sizer.Add(self.btnBackgroundColor, 0, wx.EXPAND | wx.ALL, 2)
settings_inner_sizer.Add(self.btnSettings, 0, wx.EXPAND | wx.ALL, 2)
if self.detach_callback:
settings_inner_sizer.Add(self.btnDetachSimulator, 0, wx.ALL, 2)
settings_sizer.Add(0, 2, 0)
settings_sizer.Add(settings_inner_sizer, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 2)
settings_sizer.Add(0, 2, 0)
outer_sizer.Add(settings_sizer)
self.SetSizerAndFit(outer_sizer)
def set_drawing_panel(self, drawing_panel):
self.drawing_panel = drawing_panel
def on_update_background_color(self, event):
self.set_background_color(event.Colour)
def set_background_color(self, color):
self.btnBackgroundColor.SetColour(color)
self.drawing_panel.SetBackgroundColour(color)
self.drawing_panel.Refresh()
def on_toggle_npp_shortcut(self, event):
self.btnNpp.SetValue(not self.btnNpp.GetValue())
self.toggle_npp(event)
def toggle_npp(self, event):
self.drawing_panel.Refresh()
def on_marker_button(self, marker_type, event):
self.control_panel.slider.enable_marker_list(marker_type, event.GetEventObject().GetValue())
if marker_type == 'jump':
self.drawing_panel.Refresh()
def on_settings_button(self, event):
simulator_panel = SimulatorPreferenceDialog(self, title=_('Simulator Preferences'))
simulator_panel.Show()
|