From be21fec2d22bd037899241535562c217178b2987 Mon Sep 17 00:00:00 2001 From: Alexey Min Date: Sat, 26 May 2018 14:34:40 +0300 Subject: [PATCH] Make item traits copyable --- gui/builtinItemStatsViews/itemTraits.py | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gui/builtinItemStatsViews/itemTraits.py b/gui/builtinItemStatsViews/itemTraits.py index 12abd078d..1ea0514a5 100644 --- a/gui/builtinItemStatsViews/itemTraits.py +++ b/gui/builtinItemStatsViews/itemTraits.py @@ -13,5 +13,38 @@ class ItemTraits(wx.Panel): self.traits = wx.html.HtmlWindow(self) self.traits.SetPage(item.traits.traitText) + self.traits.Bind(wx.EVT_CONTEXT_MENU, self.onPopupMenu) + self.traits.Bind(wx.EVT_KEY_DOWN, self.onKeyDown) + mainSizer.Add(self.traits, 1, wx.ALL | wx.EXPAND, 0) self.Layout() + + self.popupMenu = wx.Menu() + copyItem = wx.MenuItem(self.popupMenu, 1, 'Copy') + self.popupMenu.Append(copyItem) + self.popupMenu.Bind(wx.EVT_MENU, self.menuClickHandler, copyItem) + + def onPopupMenu(self, event): + self.PopupMenu(self.popupMenu) + + def menuClickHandler(self, event): + selectedMenuItem = event.GetId() + if selectedMenuItem == 1: # Copy was chosen + self.copySelectionToClipboard() + + def onKeyDown(self, event): + keyCode = event.GetKeyCode() + # Ctrl + C + if keyCode == 67 and event.ControlDown(): + self.copySelectionToClipboard() + # Ctrl + A + if keyCode == 65 and event.ControlDown(): + self.traits.SelectAll() + + def copySelectionToClipboard(self): + selectedText = self.traits.SelectionToText() + if selectedText == '': # if no selection, copy all content + selectedText = self.traits.ToText() + if wx.TheClipboard.Open(): + wx.TheClipboard.SetData(wx.TextDataObject(selectedText)) + wx.TheClipboard.Close()