From 27e011f4f05447381a3cc01fcd41918a2be87cdb Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Thu, 14 Oct 2010 12:04:06 +0200 Subject: [PATCH] Add export to clipboard and gray out export menus when applicable --- gui/mainFrame.py | 29 +++++++++++++++++++++++++++-- gui/mainMenuBar.py | 24 +++++++++++++++++++++++- service/fit.py | 4 ++++ 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 8a62b6990..747f6ede9 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -157,6 +157,7 @@ class MainFrame(wx.Frame): dlg.Destroy() def registerMenu(self): + menuBar = self.GetMenuBar() # Quit self.Bind(wx.EVT_MENU, self.ExitApp, id=wx.ID_EXIT) # Widgets Inspector @@ -164,9 +165,9 @@ class MainFrame(wx.Frame): # About self.Bind(wx.EVT_MENU, self.ShowAboutBox, id=wx.ID_ABOUT) # Char editor - self.Bind(wx.EVT_MENU, self.showCharacterEditor, id=self.GetMenuBar().characterEditorId) + self.Bind(wx.EVT_MENU, self.showCharacterEditor, id=menuBar.characterEditorId) # Damage pattern editor - self.Bind(wx.EVT_MENU, self.showDamagePatternEditor, id=self.GetMenuBar().damagePatternEditorId) + self.Bind(wx.EVT_MENU, self.showDamagePatternEditor, id=menuBar.damagePatternEditorId) # Import dialog self.Bind(wx.EVT_MENU, self.showImportDialog, id=wx.ID_OPEN) # Export dialog @@ -174,6 +175,30 @@ class MainFrame(wx.Frame): # Preference dialog self.Bind(wx.EVT_MENU, self.showPreferenceDialog, id=wx.ID_PREFERENCES) + #Clipboard exports + self.Bind(wx.EVT_MENU, self.clipboardEft, id=menuBar.idExportEft) + self.Bind(wx.EVT_MENU, self.clipboardDna, id=menuBar.idExportDna) + self.Bind(wx.EVT_MENU, self.clipboardXml, id=menuBar.idExportXml) + + def clipboardEft(self, event): + sFit = service.Fit.getInstance() + self.toClipboard(sFit.exportFit(self.getActiveFit())) + + def clipboardDna(self, event): + sFit = service.Fit.getInstance() + self.toClipboard(sFit.exportDna(self.getActiveFit())) + + def clipboardXml(self, event): + sFit = service.Fit.getInstance() + self.toClipboard(sFit.exportXml(self.getActiveFit())) + + def toClipboard(self, text): + clip = wx.TheClipboard + clip.Open() + data = wx.TextDataObject(text) + clip.SetData(data) + clip.Close() + def toggleShipBrowser(self, event): self.GetToolBar().toggleShipBrowser(event) diff --git a/gui/mainMenuBar.py b/gui/mainMenuBar.py index 10838232e..129944ab8 100644 --- a/gui/mainMenuBar.py +++ b/gui/mainMenuBar.py @@ -19,6 +19,8 @@ import wx import bitmapLoader +import gui.fittingView +import gui.mainFrame class MainMenuBar(wx.MenuBar): def __init__(self): @@ -41,11 +43,20 @@ class MainMenuBar(wx.MenuBar): editMenu.Append(wx.ID_REDO) # Fit menu - fitMenu = wx.Menu() + self.fitMenu = fitMenu = wx.Menu() self.Append(fitMenu, "F&it") fitMenu.Append(wx.ID_OPEN, "&Import", "Import a fit into pyfa.") fitMenu.Append(wx.ID_SAVEAS, "&Export", "Export the fit to another format.") + clipboardMenu = wx.Menu() + self.idExportDna, self.idExportEft, self.idExportXml = wx.NewId(), wx.NewId(), wx.NewId() + clipboardMenu.Append(self.idExportEft, "&EFT", "Copy the EFT export of this fit to the clipboard") + clipboardMenu.Append(self.idExportXml, "&XML", "Copy the XML export of this fit to the clipboard") + clipboardMenu.Append(self.idExportDna, "&DNA", "Copy the DNA export of this fit to the clipboard") + + fitMenu.AppendMenu(wx.ID_COPY, "To &Clipboard", clipboardMenu, "Export a fit to the clipboard") + + # Character menu windowMenu = wx.Menu() self.Append(windowMenu, "&Window") @@ -65,3 +76,14 @@ class MainMenuBar(wx.MenuBar): helpMenu.Append(wx.ID_ABOUT) helpMenu.Append(wx.ID_HELP, "User manual", "User manual") helpMenu.Append(911,"Open Widgets Inspect tool", "Open Widgets Inspect tool") + + + self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.mainFrame.Bind(gui.fittingView.FIT_CHANGED, self.fitChanged) + + def fitChanged(self, event): + enable = event.fitID is not None + self.Enable(wx.ID_SAVEAS, enable) + self.Enable(wx.ID_COPY, enable) + event.Skip() + diff --git a/service/fit.py b/service/fit.py index 7865da24b..79981cfac 100644 --- a/service/fit.py +++ b/service/fit.py @@ -269,6 +269,10 @@ class Fit(object): fit = eos.db.getFit(fitID) return fit.exportEft() + def exportDna(self, fitID): + fit = eos.db.getFit(fitID) + return fit.exportDna() + def exportXml(self, *fitIDs): fits = map(lambda id: eos.db.getFit(id), fitIDs) return eos.types.Fit.exportXml(*fits)