Make all secondary windows closable by ESC

This commit is contained in:
DarkPhoenix
2019-04-21 19:34:14 +03:00
parent 1d7be66eb1
commit 72fc560241
9 changed files with 140 additions and 13 deletions

View File

@@ -149,7 +149,7 @@ class CharacterEntityEditor(EntityEditor):
class CharacterEditor(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title="pyfa: Character Editor", pos=wx.DefaultPosition,
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title="Character Editor", pos=wx.DefaultPosition,
size=wx.Size(640, 600), style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER | wx.FRAME_FLOAT_ON_PARENT)
i = wx.Icon(BitmapLoader.getBitmap("character_small", "gui"))
@@ -208,6 +208,7 @@ class CharacterEditor(wx.Frame):
self.Centre(wx.BOTH)
self.Bind(wx.EVT_CLOSE, self.closeEvent)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList)
self.entityEditor.Bind(wx.EVT_CHOICE, self.charChanged)
@@ -253,8 +254,17 @@ class CharacterEditor(wx.Frame):
sChr.revertCharacter(char.ID)
wx.PostEvent(self, GE.CharListUpdated())
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeEvent(self, event):
# del self.disableWin
self.closeWindow()
def closeWindow(self):
wx.PostEvent(self.mainFrame, GE.CharListUpdated())
self.Destroy()

View File

@@ -21,6 +21,7 @@ pyfalog = Logger(__name__)
class EveFittings(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title="Browse EVE Fittings", pos=wx.DefaultPosition,
size=wx.Size(550, 450), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
@@ -69,6 +70,7 @@ class EveFittings(wx.Frame):
self.deleteBtn.Bind(wx.EVT_BUTTON, self.deleteFitting)
self.Bind(wx.EVT_CLOSE, self.OnClose)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.statusbar = wx.StatusBar(self)
self.statusbar.SetFieldsCount()
@@ -92,12 +94,23 @@ class EveFittings(wx.Frame):
self.charChoice.SetSelection(0)
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def OnClose(self, event):
self.mainFrame.Unbind(GE.EVT_SSO_LOGOUT)
self.mainFrame.Unbind(GE.EVT_SSO_LOGIN)
self.closeWindow()
# self.cacheTimer.Stop() # must be manually stopped, otherwise crash. See https://github.com/wxWidgets/Phoenix/issues/632
event.Skip()
def closeWindow(self):
self.mainFrame.Unbind(GE.EVT_SSO_LOGOUT)
self.mainFrame.Unbind(GE.EVT_SSO_LOGIN)
self.Destroy()
def getActiveCharacter(self):
selection = self.charChoice.GetCurrentSelection()
return self.charChoice.GetClientData(selection) if selection is not None else None
@@ -186,6 +199,7 @@ class ESIExceptionHandler(object):
class ExportToEve(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title="Export fit to EVE", pos=wx.DefaultPosition,
size=(wx.Size(350, 100)), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
@@ -213,6 +227,7 @@ class ExportToEve(wx.Frame):
self.statusbar.SetStatusWidths([100, -1])
self.Bind(wx.EVT_CLOSE, self.OnClose)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.SetSizer(mainSizer)
self.SetStatusBar(self.statusbar)
@@ -233,11 +248,21 @@ class ExportToEve(wx.Frame):
self.charChoice.SetSelection(0)
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def OnClose(self, event):
self.closeWindow()
event.Skip()
def closeWindow(self):
self.mainFrame.Unbind(GE.EVT_SSO_LOGOUT)
self.mainFrame.Unbind(GE.EVT_SSO_LOGIN)
event.Skip()
self.Destroy()
def getActiveCharacter(self):
selection = self.charChoice.GetCurrentSelection()
@@ -283,6 +308,7 @@ class ExportToEve(wx.Frame):
class SsoCharacterMgmt(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title="SSO Character Management", pos=wx.DefaultPosition,
size=wx.Size(550, 250), style=wx.DEFAULT_DIALOG_STYLE)
@@ -312,6 +338,7 @@ class SsoCharacterMgmt(wx.Dialog):
self.deleteBtn.Bind(wx.EVT_BUTTON, self.delChar)
self.mainFrame.Bind(GE.EVT_SSO_LOGIN, self.ssoLogin)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.SetSizer(mainSizer)
self.Layout()
@@ -324,6 +351,16 @@ class SsoCharacterMgmt(wx.Dialog):
self.popCharList()
event.Skip()
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeWindow(self):
self.Destroy()
def popCharList(self):
sEsi = Esi.getInstance()
chars = sEsi.getSsoCharacters()

View File

@@ -67,6 +67,7 @@ except Exception:
class GraphFrame(wx.Frame):
def __init__(self, parent, style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE | wx.FRAME_FLOAT_ON_PARENT):
global graphFrame_enabled
global mplImported
@@ -160,7 +161,8 @@ class GraphFrame(wx.Frame):
self.fitList.fitList.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
self.mainFrame.Bind(GE.FIT_CHANGED, self.draw)
self.Bind(wx.EVT_CLOSE, self.close)
self.Bind(wx.EVT_CLOSE, self.closeEvent)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.Fit()
self.SetMinSize(self.GetSize())
@@ -169,10 +171,21 @@ class GraphFrame(wx.Frame):
if type == "fit":
self.AppendFitToList(fitID)
def close(self, event):
def closeEvent(self, event):
self.closeWindow()
event.Skip()
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeWindow(self):
self.fitList.fitList.Unbind(wx.EVT_LEFT_DCLICK, handler=self.removeItem)
self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.draw)
event.Skip()
self.Destroy()
def getView(self):
return self.graphSelection.GetClientData(self.graphSelection.GetSelection())

View File

@@ -131,20 +131,29 @@ class ItemStatsDialog(wx.Dialog):
self.Show()
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.Bind(wx.EVT_CLOSE, self.closeEvent)
self.Bind(wx.EVT_ACTIVATE, self.OnActivate)
def OnActivate(self, event):
self.parentWnd.SetActiveStatsWindow(self)
def closeEvent(self, event):
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeEvent(self, event):
self.closeWindow()
event.Skip()
def closeWindow(self):
if self.dlgOrder == ItemStatsDialog.counter:
ItemStatsDialog.counter -= 1
self.parentWnd.UnregisterStatsWindow(self)
self.Destroy()
event.Skip()
class ItemStatsContainer(wx.Panel):
def __init__(self, parent, stuff, item, context=None):

View File

@@ -188,6 +188,7 @@ class DmgPatternEditorDlg(wx.Dialog):
self.CenterOnParent()
self.Bind(wx.EVT_CHOICE, self.patternChanged)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.patternChanged()
@@ -272,3 +273,13 @@ class DmgPatternEditorDlg(wx.Dialog):
sDP = DamagePattern.getInstance()
toClipboard(sDP.exportPatterns())
self.stNotice.SetLabel("Patterns exported to clipboard")
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeWindow(self):
self.Destroy()

View File

@@ -24,6 +24,7 @@ from gui.bitmap_loader import BitmapLoader
class PreferenceDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, id=wx.ID_ANY, size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE)
self.SetTitle("pyfa - Preferences")
@@ -74,6 +75,17 @@ class PreferenceDialog(wx.Dialog):
self.Layout()
self.btnOK.Bind(wx.EVT_BUTTON, self.OnBtnOK)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
def OnBtnOK(self, event):
self.Close()
self.closeWindow()
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeWindow(self):
self.Destroy()

View File

@@ -25,6 +25,7 @@ pyfalog = Logger(__name__)
class AttributeEditor(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, wx.ID_ANY, title="Attribute Editor", pos=wx.DefaultPosition,
size=wx.Size(650, 600),
@@ -89,8 +90,19 @@ class AttributeEditor(wx.Frame):
self.SetAutoLayout(True)
self.Bind(wx.EVT_CLOSE, self.OnClose)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def OnClose(self, event):
self.closeWindow()
def closeWindow(self):
fitID = self.mainFrame.getActiveFit()
if fitID is not None:
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))

View File

@@ -183,6 +183,7 @@ class ResistsEditorDlg(wx.Dialog):
self.CenterOnParent()
self.Bind(wx.EVT_CHOICE, self.patternChanged)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.patternChanged()
@@ -292,3 +293,13 @@ class ResistsEditorDlg(wx.Dialog):
sTR = TargetResists.getInstance()
toClipboard(sTR.exportPatterns())
self.stNotice.SetLabel("Patterns exported to clipboard")
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeWindow(self):
self.Destroy()

View File

@@ -113,6 +113,7 @@ class ImplantSetEditor(BaseImplantEditorView):
class ImplantSetEditorDlg(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(
self, parent, id=wx.ID_ANY,
@@ -168,6 +169,7 @@ class ImplantSetEditorDlg(wx.Dialog):
return
self.Bind(wx.EVT_CHOICE, self.entityChanged)
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
self.Import.Bind(wx.EVT_BUTTON, self.importPatterns)
self.Export.Bind(wx.EVT_BUTTON, self.exportPatterns)
@@ -180,6 +182,16 @@ class ImplantSetEditorDlg(wx.Dialog):
self.Destroy()
return
def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.closeWindow()
return
event.Skip()
def closeWindow(self):
self.Destroy()
def __del__(self):
pass