From 3e6e3b074393446eef0aa245fa0d3184296e5453 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Mon, 12 Aug 2019 01:41:38 +0300 Subject: [PATCH] Migrate more windows to new window control scheme --- .../targetProfile/editor.py | 6 ++-- gui/mainFrame.py | 34 +++++-------------- gui/patternEditor.py | 20 ++++++----- gui/setEditor.py | 27 ++++++++------- gui/targetProfileEditor.py | 5 +-- 5 files changed, 42 insertions(+), 50 deletions(-) diff --git a/gui/builtinContextMenus/targetProfile/editor.py b/gui/builtinContextMenus/targetProfile/editor.py index be42dd264..4105d4971 100644 --- a/gui/builtinContextMenus/targetProfile/editor.py +++ b/gui/builtinContextMenus/targetProfile/editor.py @@ -5,7 +5,7 @@ from gui.contextMenu import ContextMenuSingle from gui.targetProfileEditor import TargetProfileEditor -class TargetProfileEditor(ContextMenuSingle): +class TargetProfileEditorMenu(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() @@ -25,7 +25,7 @@ class TargetProfileEditor(ContextMenuSingle): return 'Edit Target Profile' def activate(self, callingWindow, fullContext, mainItem, i): - self.mainFrame.ShowTargetProfileEditor(selected=mainItem.item) + TargetProfileEditor.openOne(parent=self.mainFrame, selected=mainItem.item) -TargetProfileEditor.register() +TargetProfileEditorMenu.register() diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 8c26772cf..d05f40031 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -55,9 +55,9 @@ from gui.esiFittings import EveFittings, ExportToEve, SsoCharacterMgmt from gui.mainMenuBar import MainMenuBar from gui.marketBrowser import MarketBrowser from gui.multiSwitch import MultiSwitch -from gui.patternEditor import DmgPatternEditorDlg +from gui.patternEditor import DmgPatternEditor from gui.preferenceDialog import PreferenceDialog -from gui.setEditor import ImplantSetEditorDlg +from gui.setEditor import ImplantSetEditor from gui.shipBrowser import ShipBrowser from gui.statsPane import StatsPane from gui.targetProfileEditor import TargetProfileEditor @@ -397,18 +397,13 @@ class MainFrame(wx.Frame): AttributeEditor.openOne(parent=self) def OnShowTargetProfileEditor(self, event): - self.ShowTargetProfileEditor() - - def ShowTargetProfileEditor(self, selected=None): - TargetProfileEditor.openOne(parent=self, selected=selected) + TargetProfileEditor.openOne(parent=self) def OnShowDamagePatternEditor(self, event): - with DmgPatternEditorDlg(self) as dlg: - dlg.ShowModal() + DmgPatternEditor.openOne(parent=self) def OnShowImplantSetEditor(self, event): - with ImplantSetEditorDlg(self) as dlg: - dlg.ShowModal() + ImplantSetEditor.openOne(parent=self) def OnShowExportDialog(self, event): """ Export active fit """ @@ -430,23 +425,13 @@ class MainFrame(wx.Frame): output = Port.exportXml([fit], None) if '.' not in os.path.basename(path): path += ".xml" + with open(path, "w", encoding="utf-8") as openfile: + openfile.write(output) + openfile.close() else: pyfalog.warning("oops, invalid fit format %d" % format_) - try: - dlg.Destroy() - except RuntimeError: - pyfalog.error("Tried to destroy an object that doesn't exist in .") return - with open(path, "w", encoding="utf-8") as openfile: - openfile.write(output) - openfile.close() - - try: - dlg.Destroy() - except RuntimeError: - pyfalog.error("Tried to destroy an object that doesn't exist in .") - def OnShowPreferenceDialog(self, event): with PreferenceDialog(self) as dlg: dlg.ShowModal() @@ -834,8 +819,7 @@ class MainFrame(wx.Frame): "Backup fits", "Generating HTML file at: %s" % path, maximum=max_, parent=self, - style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME - ) + style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME) exportHtml.getInstance().refreshFittingHtml(True, self.backupCallback) self.progressDialog.ShowModal() diff --git a/gui/patternEditor.py b/gui/patternEditor.py index e534b6429..ca4e9fea3 100644 --- a/gui/patternEditor.py +++ b/gui/patternEditor.py @@ -19,13 +19,16 @@ # noinspection PyPackageRequirements import wx -from gui.bitmap_loader import BitmapLoader +from logbook import Logger # noinspection PyPackageRequirements from wx.lib.intctrl import IntCtrl -from gui.utils.clipboard import toClipboard, fromClipboard -from gui.builtinViews.entityEditor import EntityEditor, BaseValidator + +from gui.auxFrame import AuxiliaryFrame +from gui.bitmap_loader import BitmapLoader +from gui.builtinViews.entityEditor import BaseValidator, EntityEditor +from gui.utils.clipboard import fromClipboard, toClipboard from service.damagePattern import DamagePattern, ImportError -from logbook import Logger + pyfalog = Logger(__name__) @@ -85,13 +88,13 @@ class DmgPatternEntityEditor(EntityEditor): sDP.deletePattern(entity) -class DmgPatternEditorDlg(wx.Dialog): +class DmgPatternEditor(AuxiliaryFrame): + DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive") def __init__(self, parent): - wx.Dialog.__init__( - self, parent, id=wx.ID_ANY, - title="Damage Pattern Editor", + super().__init__( + parent, id=wx.ID_ANY, title="Damage Pattern Editor", style=wx.RESIZE_BORDER, # Dropdown list widget is scaled to its longest content line on GTK, adapt to that size=wx.Size(500, 240) if "wxGTK" in wx.PlatformInfo else wx.Size(400, 240)) @@ -185,6 +188,7 @@ class DmgPatternEditorDlg(wx.Dialog): self.Layout() bsize = self.GetBestSize() self.SetSize((-1, bsize.height)) + self.SetMinSize(self.GetSize()) self.CenterOnParent() self.Bind(wx.EVT_CHOICE, self.patternChanged) diff --git a/gui/setEditor.py b/gui/setEditor.py index 7866465d5..ba6443d8e 100644 --- a/gui/setEditor.py +++ b/gui/setEditor.py @@ -17,14 +17,16 @@ # along with pyfa. If not, see . # ============================================================================= -from logbook import Logger # noinspection PyPackageRequirements import wx +from logbook import Logger -from service.implantSet import ImplantSets +from gui.auxFrame import AuxiliaryFrame +from gui.builtinViews.entityEditor import BaseValidator, EntityEditor from gui.builtinViews.implantEditor import BaseImplantEditorView -from gui.utils.clipboard import toClipboard, fromClipboard -from gui.builtinViews.entityEditor import EntityEditor, BaseValidator +from gui.utils.clipboard import fromClipboard, toClipboard +from service.implantSet import ImplantSets + pyfalog = Logger(__name__) @@ -83,7 +85,8 @@ class ImplantSetEntityEditor(EntityEditor): sIS.deleteSet(entity) -class ImplantSetEditor(BaseImplantEditorView): +class ImplantSetEditorView(BaseImplantEditorView): + def __init__(self, parent): BaseImplantEditorView.__init__(self, parent) if 'wxMSW' in wx.PlatformInfo: @@ -112,12 +115,11 @@ class ImplantSetEditor(BaseImplantEditorView): sIS.removeImplant(set_.ID, implant) -class ImplantSetEditorDlg(wx.Dialog): +class ImplantSetEditor(AuxiliaryFrame): def __init__(self, parent): - wx.Dialog.__init__( - self, parent, id=wx.ID_ANY, - title="Implant Set Editor", + super().__init__( + parent, id=wx.ID_ANY, title="Implant Set Editor", style=wx.RESIZE_BORDER, size=wx.Size(950, 500) if "wxGTK" in wx.PlatformInfo else wx.Size(850, 420)) self.block = False @@ -131,7 +133,7 @@ class ImplantSetEditorDlg(wx.Dialog): self.sl = wx.StaticLine(self) mainSizer.Add(self.sl, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) - self.iview = ImplantSetEditor(self) + self.iview = ImplantSetEditorView(self) mainSizer.Add(self.iview, 1, wx.ALL | wx.EXPAND, 5) self.slfooter = wx.StaticLine(self) @@ -165,7 +167,7 @@ class ImplantSetEditorDlg(wx.Dialog): self.Layout() if not self.entityEditor.checkEntitiesExist(): - self.Destroy() + self.Close() return self.Bind(wx.EVT_CHOICE, self.entityChanged) @@ -174,11 +176,12 @@ class ImplantSetEditorDlg(wx.Dialog): self.Import.Bind(wx.EVT_BUTTON, self.importPatterns) self.Export.Bind(wx.EVT_BUTTON, self.exportPatterns) + self.SetMinSize(self.GetSize()) self.CenterOnParent() def entityChanged(self, event): if not self.entityEditor.checkEntitiesExist(): - self.Destroy() + self.Close() return def kbEvent(self, event): diff --git a/gui/targetProfileEditor.py b/gui/targetProfileEditor.py index c2c5a3502..7ae5b4aa5 100644 --- a/gui/targetProfileEditor.py +++ b/gui/targetProfileEditor.py @@ -124,7 +124,7 @@ class TargetProfileEditor(AuxiliaryFrame): ('signatureRadius', ('Signature radius\nLeave blank for infinitely big value', 'm')), ('radius', ('Radius', 'm'))]) - def __init__(self, parent, selected=None): + def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title="Target Profile Editor", style=wx.RESIZE_BORDER, # Dropdown list widget is scaled to its longest content line on GTK, adapt to that @@ -136,7 +136,7 @@ class TargetProfileEditor(AuxiliaryFrame): mainSizer = wx.BoxSizer(wx.VERTICAL) - self.entityEditor = TargetProfileEntityEditor(parent=self, selected=selected) + self.entityEditor = TargetProfileEntityEditor(parent=self) mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2) self.sl = wx.StaticLine(self) @@ -241,6 +241,7 @@ class TargetProfileEditor(AuxiliaryFrame): self.Layout() bsize = self.GetBestSize() self.SetSize((-1, bsize.height)) + self.SetMinSize(self.GetSize()) self.CenterOnParent() self.Bind(wx.EVT_CHOICE, self.patternChanged)