diff options
Diffstat (limited to 'lib/gui/simulator/view_panel.py')
| -rw-r--r-- | lib/gui/simulator/view_panel.py | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/lib/gui/simulator/view_panel.py b/lib/gui/simulator/view_panel.py new file mode 100644 index 00000000..cdcd52ee --- /dev/null +++ b/lib/gui/simulator/view_panel.py @@ -0,0 +1,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() |
