diff --git a/config.py b/config.py
index 9e3dc3d36..fdf6a18a9 100644
--- a/config.py
+++ b/config.py
@@ -31,18 +31,19 @@ gameDB = None
class StreamToLogger(object):
- """
- Fake file-like stream object that redirects writes to a logger instance.
- From: http://www.electricmonk.nl/log/2011/08/14/redirect-stdout-and-stderr-to-a-logger-in-python/
- """
- def __init__(self, logger, log_level=logging.INFO):
- self.logger = logger
- self.log_level = log_level
- self.linebuf = ''
+ """
+ Fake file-like stream object that redirects writes to a logger instance.
+ From: http://www.electricmonk.nl/log/2011/08/14/redirect-stdout-and-stderr-to-a-logger-in-python/
+ """
+ def __init__(self, logger, log_level=logging.INFO):
+ self.logger = logger
+ self.log_level = log_level
+ self.linebuf = ''
+
+ def write(self, buf):
+ for line in buf.rstrip().splitlines():
+ self.logger.log(self.log_level, line.rstrip())
- def write(self, buf):
- for line in buf.rstrip().splitlines():
- self.logger.log(self.log_level, line.rstrip())
def isFrozen():
if hasattr(sys, 'frozen'):
@@ -50,16 +51,19 @@ def isFrozen():
else:
return False
+
def getPyfaRoot():
base = getattr(sys.modules['__main__'], "__file__", sys.executable) if isFrozen() else sys.argv[0]
root = os.path.dirname(os.path.realpath(os.path.abspath(base)))
root = unicode(root, sys.getfilesystemencoding())
return root
+
def __createDirs(path):
if not os.path.exists(path):
os.makedirs(path)
+
def defPaths(customSavePath):
global debug
global pyfaPath
@@ -87,9 +91,9 @@ def defPaths(customSavePath):
else:
savePath = getattr(configforced, "savePath", None)
if savePath is None:
- if customSavePath is None: # customSavePath is not overriden
+ if customSavePath is None: # customSavePath is not overriden
savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")),
- sys.getfilesystemencoding())
+ sys.getfilesystemencoding())
else:
savePath = customSavePath
@@ -114,9 +118,9 @@ def defPaths(customSavePath):
sys.stdout = sl
# This interferes with cx_Freeze's own handling of exceptions. Find a way to fix this.
- #stderr_logger = logging.getLogger('STDERR')
- #sl = StreamToLogger(stderr_logger, logging.ERROR)
- #sys.stderr = sl
+ # stderr_logger = logging.getLogger('STDERR')
+ # sl = StreamToLogger(stderr_logger, logging.ERROR)
+ # sys.stderr = sl
# The database where we store all the fits etc
saveDB = os.path.join(savePath, "saveddata.db")
@@ -126,10 +130,10 @@ def defPaths(customSavePath):
# maintenance script
gameDB = os.path.join(pyfaPath, "eve.db")
- ## DON'T MODIFY ANYTHING BELOW ##
+ # DON'T MODIFY ANYTHING BELOW!
import eos.config
- #Caching modifiers, disable all gamedata caching, its unneeded.
+ # Caching modifiers, disable all gamedata caching, its unneeded.
eos.config.gamedataCache = False
# saveddata db location modifier, shouldn't ever need to touch this
eos.config.saveddata_connectionstring = "sqlite:///" + saveDB + "?check_same_thread=False"
diff --git a/gui/PFListPane.py b/gui/PFListPane.py
index 9385dbc75..9803f6873 100644
--- a/gui/PFListPane.py
+++ b/gui/PFListPane.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,13 +15,14 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
+
class PFListPane(wx.ScrolledWindow):
def __init__(self, parent):
- wx.ScrolledWindow.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(1, 1), style=wx.TAB_TRAVERSAL)
+ wx.ScrolledWindow.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(1, 1), style=wx.TAB_TRAVERSAL)
self._wList = []
self._wCount = 0
@@ -29,19 +30,18 @@ class PFListPane(wx.ScrolledWindow):
self.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
-
self.SetVirtualSize((1, 1))
self.SetScrollRate(0, 1)
self.Bind(wx.EVT_SCROLLWIN_LINEUP, self.MScrollUp)
self.Bind(wx.EVT_SCROLLWIN_LINEDOWN, self.MScrollDown)
-# self.Bind(wx.EVT_CHILD_FOCUS, self.OnChildFocus)
-# self.Bind(wx.EVT_LEFT_DOWN, self.ForceFocus)
+ # self.Bind(wx.EVT_CHILD_FOCUS, self.OnChildFocus)
+ # self.Bind(wx.EVT_LEFT_DOWN, self.ForceFocus)
self.SetFocus()
-# self.Bind(wx.EVT_MOUSE_CAPTURE_CHANGED, self.ForceFocus)
+ # self.Bind(wx.EVT_MOUSE_CAPTURE_CHANGED, self.ForceFocus)
self.Bind(wx.EVT_SCROLLWIN_THUMBRELEASE, self.ForceFocus)
- def ForceFocus(self,event):
+ def ForceFocus(self, event):
if self.FindFocus() and self.FindFocus().Parent != self:
self.SetFocus()
event.Skip()
@@ -67,13 +67,12 @@ class PFListPane(wx.ScrolledWindow):
event.Skip()
-
def ScrollChildIntoView(self, child):
"""
Scrolls the panel such that the specified child window is in view.
"""
sppu_x, sppu_y = self.GetScrollPixelsPerUnit()
- vs_x, vs_y = self.GetViewStart()
+ vs_x, vs_y = self.GetViewStart()
cr = child.GetRect()
clntsz = self.GetSize()
new_vs_x, new_vs_y = -1, -1
@@ -110,8 +109,6 @@ class PFListPane(wx.ScrolledWindow):
if new_vs_x != -1 or new_vs_y != -1:
self.Scroll(new_vs_x, new_vs_y)
-
-
def AddWidget(self, widget):
widget.Reparent(self)
self._wList.append(widget)
@@ -124,13 +121,11 @@ class PFListPane(wx.ScrolledWindow):
def IsWidgetSelectedByContext(self, widget):
return False
- def RefreshList(self, doRefresh = False, doFocus = False):
- ypos = 0
+ def RefreshList(self, doRefresh=False, doFocus=False):
maxy = 0
- scrollTo = 0
selected = None
- for i in xrange( len(self._wList) ):
+ for i in xrange(len(self._wList)):
iwidth, iheight = self._wList[i].GetSize()
xa, ya = self.CalcScrolledPosition((0, maxy))
self._wList[i].SetPosition((xa, ya))
@@ -143,16 +138,16 @@ class PFListPane(wx.ScrolledWindow):
if selected:
self.ScrollChildIntoView(selected)
- #selected.SetFocus()
+ # selected.SetFocus()
elif doFocus:
self.SetFocus()
- clientW,clientH = self.GetSize()
- for i in xrange( len(self._wList) ):
+ clientW, clientH = self.GetSize()
+ for i in xrange(len(self._wList)):
iwidth, iheight = self._wList[i].GetSize()
- itemX,itemY = self._wList[i].GetPosition()
+ itemX, itemY = self._wList[i].GetPosition()
self._wList[i].SetSize((cwidth, iheight))
- if doRefresh == True:
+ if doRefresh is True:
self._wList[i].Refresh()
self.itemsHeight = max(self.itemsHeight, iheight - 1)
@@ -160,7 +155,6 @@ class PFListPane(wx.ScrolledWindow):
child.Destroy()
self._wList.remove(child)
-
def RemoveAllChildren(self):
for widget in self._wList:
widget.Destroy()
diff --git a/gui/PFSearchBox.py b/gui/PFSearchBox.py
index 7fff91e9b..452bdbf09 100644
--- a/gui/PFSearchBox.py
+++ b/gui/PFSearchBox.py
@@ -1,7 +1,6 @@
import wx
import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
-from gui.bitmapLoader import BitmapLoader
SearchButton, EVT_SEARCH_BTN = wx.lib.newevent.NewEvent()
@@ -9,9 +8,10 @@ CancelButton, EVT_CANCEL_BTN = wx.lib.newevent.NewEvent()
TextEnter, EVT_TEXT_ENTER = wx.lib.newevent.NewEvent()
TextTyped, EVT_TEXT = wx.lib.newevent.NewEvent()
+
class PFSearchBox(wx.Window):
- def __init__(self, parent, id = wx.ID_ANY, value = "", pos = wx.DefaultPosition, size = wx.Size(-1,24), style = 0):
- wx.Window.__init__(self, parent, id, pos, size, style = style)
+ def __init__(self, parent, id=wx.ID_ANY, value="", pos=wx.DefaultPosition, size=wx.Size(-1, 24), style=0):
+ wx.Window.__init__(self, parent, id, pos, size, style=style)
self.isSearchButtonVisible = False
self.isCancelButtonVisible = False
@@ -35,13 +35,12 @@ class PFSearchBox(wx.Window):
self.editX = 0
self.editY = 0
-
self.padding = 4
self._hl = False
- w,h = size
- self.EditBox = wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, (-1, h - 2 if 'wxGTK' in wx.PlatformInfo else -1 ), wx.TE_PROCESS_ENTER | (wx.BORDER_NONE if 'wxGTK' in wx.PlatformInfo else 0))
+ w, h = size
+ self.EditBox = wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, (-1, h - 2 if 'wxGTK' in wx.PlatformInfo else -1), wx.TE_PROCESS_ENTER | (wx.BORDER_NONE if 'wxGTK' in wx.PlatformInfo else 0))
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBk)
@@ -50,7 +49,7 @@ class PFSearchBox(wx.Window):
self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
-# self.EditBox.ChangeValue(self.descriptiveText)
+ # self.EditBox.ChangeValue(self.descriptiveText)
self.EditBox.Bind(wx.EVT_SET_FOCUS, self.OnEditSetFocus)
self.EditBox.Bind(wx.EVT_KILL_FOCUS, self.OnEditKillFocus)
@@ -68,11 +67,10 @@ class PFSearchBox(wx.Window):
wx.PostEvent(self, TextEnter())
event.Skip()
-
def OnEditSetFocus(self, event):
-# value = self.EditBox.GetValue()
-# if value == self.descriptiveText:
-# self.EditBox.ChangeValue("")
+ # value = self.EditBox.GetValue()
+ # if value == self.descriptiveText:
+ # self.EditBox.ChangeValue("")
event.Skip()
def OnEditKillFocus(self, event):
@@ -80,10 +78,9 @@ class PFSearchBox(wx.Window):
self.Clear()
event.Skip()
-
def Clear(self):
self.EditBox.Clear()
-# self.EditBox.ChangeValue(self.descriptiveText)
+ # self.EditBox.ChangeValue(self.descriptiveText)
def Focus(self):
self.EditBox.SetFocus()
@@ -110,8 +107,8 @@ class PFSearchBox(wx.Window):
def GetButtonsPos(self):
btnpos = []
- btnpos.append( (self.searchButtonX, self.searchButtonY) )
- btnpos.append( (self.cancelButtonX, self.cancelButtonY) )
+ btnpos.append((self.searchButtonX, self.searchButtonY))
+ btnpos.append((self.cancelButtonX, self.cancelButtonY))
return btnpos
def GetButtonsSize(self):
@@ -131,8 +128,8 @@ class PFSearchBox(wx.Window):
cw = 0
ch = 0
- btnsize.append( (sw,sh))
- btnsize.append( (cw,ch))
+ btnsize.append((sw, sh))
+ btnsize.append((cw, ch))
return btnsize
def OnLeftDown(self, event):
@@ -140,7 +137,7 @@ class PFSearchBox(wx.Window):
btnsize = self.GetButtonsSize()
self.CaptureMouse()
- for btn in xrange(2):
+ for btn in range(2):
if self.HitTest(btnpos[btn], event.GetPosition(), btnsize[btn]):
if btn == 0:
if not self.searchButtonPressed:
@@ -158,7 +155,7 @@ class PFSearchBox(wx.Window):
if self.HasCapture():
self.ReleaseMouse()
- for btn in xrange(2):
+ for btn in range(2):
if self.HitTest(btnpos[btn], event.GetPosition(), btnsize[btn]):
if btn == 0:
if self.searchButtonPressed:
@@ -218,9 +215,9 @@ class PFSearchBox(wx.Window):
editWidth, editHeight = self.EditBox.GetSize()
- self.editY = (cheight - editHeight)/2
+ self.editY = (cheight - editHeight) / 2
self.EditBox.SetPosition((self.editX, self.editY))
- self.EditBox.SetSize( (self.cancelButtonX - self.padding - self.editX, -1))
+ self.EditBox.SetSize((self.cancelButtonX - self.padding - self.editX, -1))
def OnPaint(self, event):
dc = wx.BufferedPaintDC(self)
@@ -246,7 +243,6 @@ class PFSearchBox(wx.Window):
dc.DrawBitmap(self.searchBitmapShadow, self.searchButtonX + 1, self.searchButtonY + 1)
dc.DrawBitmap(self.searchBitmap, self.searchButtonX + spad, self.searchButtonY + spad)
-
if self.isCancelButtonVisible:
if self.cancelBitmap:
if self.cancelButtonPressed:
@@ -256,8 +252,8 @@ class PFSearchBox(wx.Window):
dc.DrawBitmap(self.cancelBitmapShadow, self.cancelButtonX + 1, self.cancelButtonY + 1)
dc.DrawBitmap(self.cancelBitmap, self.cancelButtonX + cpad, self.cancelButtonY + cpad)
- dc.SetPen(wx.Pen(sepColor,1))
- dc.DrawLine(0,rect.height - 1, rect.width, rect.height - 1)
+ dc.SetPen(wx.Pen(sepColor, 1))
+ dc.DrawLine(0, rect.height - 1, rect.width, rect.height - 1)
def SetSearchBitmap(self, bitmap):
self.searchBitmap = bitmap
@@ -273,10 +269,10 @@ class PFSearchBox(wx.Window):
def IsCancelButtonVisible(self):
return self.isCancelButtonVisible
- def ShowSearchButton(self, show = True):
+ def ShowSearchButton(self, show=True):
self.isSearchButtonVisible = show
- def ShowCancelButton(self, show = True):
+ def ShowCancelButton(self, show=True):
self.isCancelButtonVisible = show
def SetDescriptiveText(self, text):
@@ -284,4 +280,3 @@ class PFSearchBox(wx.Window):
def GetDescriptiveText(self):
return self.descriptiveText
-
diff --git a/gui/aboutData.py b/gui/aboutData.py
index be29b6298..98e4c12f7 100644
--- a/gui/aboutData.py
+++ b/gui/aboutData.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,9 +15,11 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
import config
+
versionString = "{0} {1} - {2} {3}".format(config.version, config.tag, config.expansionName, config.expansionVersion)
licenses = (
"pyfa is released under GNU GPLv3 - see included LICENSE file",
@@ -27,7 +29,7 @@ licenses = (
)
developers = (
"blitzmann \tSable Blitzmann (maintainer)",
- "cncfanatics \tSakari Orisi (retired)" ,
+ "cncfanatics \tSakari Orisi (retired)",
"DarkPhoenix \tKadesh Priestess (retired)",
"Darriele \t\tDarriele (retired)",
"Ebag333 \t\tEbag Trescientas"
diff --git a/gui/additionsPane.py b/gui/additionsPane.py
index c7b28b48b..2e7e459e3 100644
--- a/gui/additionsPane.py
+++ b/gui/additionsPane.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.mainFrame
@@ -29,16 +29,16 @@ from gui.projectedView import ProjectedView
from gui.commandView import CommandView
from gui.notesView import NotesView
from gui.pyfatogglepanel import TogglePanel
-from gui.gangView import GangView
from gui.bitmapLoader import BitmapLoader
import gui.chromeTabs
+
class AdditionsPane(TogglePanel):
def __init__(self, parent):
- TogglePanel.__init__(self, parent, forceLayout = 1)
+ TogglePanel.__init__(self, parent, forceLayout=1)
self.SetLabel("Additions")
pane = self.GetContentPane()
@@ -63,28 +63,28 @@ class AdditionsPane(TogglePanel):
notesImg = BitmapLoader.getImage("skill_small", "gui")
self.drone = DroneView(self.notebook)
- self.notebook.AddPage(self.drone, "Drones", tabImage = droneImg, showClose = False)
+ self.notebook.AddPage(self.drone, "Drones", tabImage=droneImg, showClose=False)
self.fighter = FighterView(self.notebook)
- self.notebook.AddPage(self.fighter, "Fighters", tabImage = fighterImg, showClose = False)
+ self.notebook.AddPage(self.fighter, "Fighters", tabImage=fighterImg, showClose=False)
self.cargo = CargoView(self.notebook)
- self.notebook.AddPage(self.cargo, "Cargo", tabImage = cargoImg, showClose = False)
+ self.notebook.AddPage(self.cargo, "Cargo", tabImage=cargoImg, showClose=False)
self.implant = ImplantView(self.notebook)
- self.notebook.AddPage(self.implant, "Implants", tabImage = implantImg, showClose = False)
+ self.notebook.AddPage(self.implant, "Implants", tabImage=implantImg, showClose=False)
self.booster = BoosterView(self.notebook)
- self.notebook.AddPage(self.booster, "Boosters", tabImage = boosterImg, showClose = False)
+ self.notebook.AddPage(self.booster, "Boosters", tabImage=boosterImg, showClose=False)
self.projectedPage = ProjectedView(self.notebook)
- self.notebook.AddPage(self.projectedPage, "Projected", tabImage = projectedImg, showClose = False)
+ self.notebook.AddPage(self.projectedPage, "Projected", tabImage=projectedImg, showClose=False)
self.gangPage = CommandView(self.notebook)
- self.notebook.AddPage(self.gangPage, "Command", tabImage = gangImg, showClose = False)
+ self.notebook.AddPage(self.gangPage, "Command", tabImage=gangImg, showClose=False)
self.notes = NotesView(self.notebook)
- self.notebook.AddPage(self.notes, "Notes", tabImage = notesImg, showClose = False)
+ self.notebook.AddPage(self.notes, "Notes", tabImage=notesImg, showClose=False)
self.notebook.SetSelection(0)
@@ -101,12 +101,12 @@ class AdditionsPane(TogglePanel):
def toggleContent(self, event):
TogglePanel.toggleContent(self, event)
- h = self.headerPanel.GetSize()[1]+4
+ h = self.headerPanel.GetSize()[1] + 4
if self.IsCollapsed():
self.old_pos = self.parent.GetSashPosition()
self.parent.SetMinimumPaneSize(h)
- self.parent.SetSashPosition(h*-1, True)
+ self.parent.SetSashPosition(h * -1, True)
# only available in >= wx2.9
if getattr(self.parent, "SetSashInvisible", None):
self.parent.SetSashInvisible(True)
@@ -115,4 +115,3 @@ class AdditionsPane(TogglePanel):
self.parent.SetSashInvisible(False)
self.parent.SetMinimumPaneSize(200)
self.parent.SetSashPosition(self.old_pos, True)
-
diff --git a/gui/bitmapLoader.py b/gui/bitmapLoader.py
index 45026bedb..fb8be8a02 100644
--- a/gui/bitmapLoader.py
+++ b/gui/bitmapLoader.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import os.path
import config
@@ -28,7 +28,8 @@ try:
except ImportError:
from utils.compat import OrderedDict
-class BitmapLoader():
+
+class BitmapLoader(object):
try:
archive = zipfile.ZipFile(os.path.join(config.pyfaPath, 'imgs.zip'), 'r')
@@ -42,7 +43,7 @@ class BitmapLoader():
@classmethod
def getStaticBitmap(cls, name, parent, location):
static = wx.StaticBitmap(parent)
- static.SetBitmap(cls.getBitmap(name,location))
+ static.SetBitmap(cls.getBitmap(name, location))
return static
@classmethod
@@ -83,11 +84,11 @@ class BitmapLoader():
sbuf = cStringIO.StringIO(img_data)
return wx.ImageFromStream(sbuf)
except KeyError:
- print "Missing icon file from zip: {0}".format(path)
+ print("Missing icon file from zip: {0}".format(path))
else:
path = os.path.join(config.pyfaPath, 'imgs', location, filename)
if os.path.exists(path):
return wx.Image(path)
else:
- print "Missing icon file: {0}".format(path)
+ print("Missing icon file: {0}".format(path))
diff --git a/gui/boosterView.py b/gui/boosterView.py
index d7e52a4ac..d4d631942 100644
--- a/gui/boosterView.py
+++ b/gui/boosterView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.display as d
@@ -25,19 +25,21 @@ from gui.builtinViewColumns.state import State
from gui.contextMenu import ContextMenu
from service.fit import Fit
-class BoosterViewDrop(wx.PyDropTarget):
- def __init__(self, dropFn):
- wx.PyDropTarget.__init__(self)
- self.dropFn = dropFn
- # this is really transferring an EVE itemID
- self.dropData = wx.PyTextDataObject()
- self.SetDataObject(self.dropData)
- def OnData(self, x, y, t):
- if self.GetData():
- data = self.dropData.GetText().split(':')
- self.dropFn(x, y, data)
- return t
+class BoosterViewDrop(wx.PyDropTarget):
+ def __init__(self, dropFn):
+ wx.PyDropTarget.__init__(self)
+ self.dropFn = dropFn
+ # this is really transferring an EVE itemID
+ self.dropData = wx.PyTextDataObject()
+ self.SetDataObject(self.dropData)
+
+ def OnData(self, x, y, t):
+ if self.GetData():
+ data = self.dropData.GetText().split(':')
+ self.dropFn(x, y, data)
+ return t
+
class BoosterView(d.Display):
DEFAULT_COLS = ["State",
@@ -58,7 +60,7 @@ class BoosterView(d.Display):
self.SetDropTarget(BoosterViewDrop(self.handleListDrag))
- if "__WXGTK__" in wx.PlatformInfo:
+ if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
@@ -75,7 +77,7 @@ class BoosterView(d.Display):
if data[0] == "market":
wx.PostEvent(self.mainFrame, mb.ItemSelected(itemID=int(data[1])))
- def kbEvent(self,event):
+ def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
row = self.GetFirstSelected()
@@ -90,7 +92,7 @@ class BoosterView(d.Display):
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
- #Clear list and get out if current fitId is None
+ # Clear list and get out if current fitId is None
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
@@ -154,7 +156,6 @@ class BoosterView(d.Display):
sFit.toggleBooster(fitID, row)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
-
def scheduleMenu(self, event):
event.Skip()
if self.getColumn(event.Position) != self.getColIndex(State):
diff --git a/gui/builtinContextMenus/ammoPattern.py b/gui/builtinContextMenus/ammoPattern.py
index 5e38ec66c..be2833d9e 100644
--- a/gui/builtinContextMenus/ammoPattern.py
+++ b/gui/builtinContextMenus/ammoPattern.py
@@ -1,34 +1,37 @@
-from gui.contextMenu import ContextMenu
-import gui.mainFrame
-import wx
-import gui.globalEvents as GE
-
-class AmmoPattern(ContextMenu):
- def __init__(self):
- self.mainFrame = gui.mainFrame.MainFrame.getInstance()
-
- def display(self, srcContext, selection):
- if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None:
- return False
-
- item = selection[0]
- for attr in ("emDamage", "thermalDamage", "explosiveDamage", "kineticDamage"):
- if item.getAttribute(attr) is not None:
- return True
-
- return False
-
- def getText(self, itmContext, selection):
- return "Set {0} as Damage Pattern".format(itmContext if itmContext is not None else "Item")
-
- def activate(self, fullContext, selection, i):
- item = selection[0]
- fit = self.mainFrame.getActiveFit()
- sFit = Fit.getInstance()
- sFit.setAsPattern(fit, item)
- wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fit))
-
- def getBitmap(self, context, selection):
- return None
-
-AmmoPattern.register()
+from gui.contextMenu import ContextMenu
+import gui.mainFrame
+import wx
+import gui.globalEvents as GE
+from service.fit import Fit
+
+
+class AmmoPattern(ContextMenu):
+ def __init__(self):
+ self.mainFrame = gui.mainFrame.MainFrame.getInstance()
+
+ def display(self, srcContext, selection):
+ if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None:
+ return False
+
+ item = selection[0]
+ for attr in ("emDamage", "thermalDamage", "explosiveDamage", "kineticDamage"):
+ if item.getAttribute(attr) is not None:
+ return True
+
+ return False
+
+ def getText(self, itmContext, selection):
+ return "Set {0} as Damage Pattern".format(itmContext if itmContext is not None else "Item")
+
+ def activate(self, fullContext, selection, i):
+ item = selection[0]
+ fit = self.mainFrame.getActiveFit()
+ sFit = Fit.getInstance()
+ sFit.setAsPattern(fit, item)
+ wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fit))
+
+ def getBitmap(self, context, selection):
+ return None
+
+
+AmmoPattern.register()
diff --git a/gui/builtinContextMenus/amount.py b/gui/builtinContextMenus/amount.py
index ae9331932..a3186b723 100644
--- a/gui/builtinContextMenus/amount.py
+++ b/gui/builtinContextMenus/amount.py
@@ -23,6 +23,7 @@ class ChangeAmount(ContextMenu):
dlg = AmountChanger(self.mainFrame, selection[0], srcContext)
dlg.ShowModal()
+
ChangeAmount.register()
class AmountChanger(wx.Dialog):
diff --git a/gui/builtinContextMenus/cargo.py b/gui/builtinContextMenus/cargo.py
index 3de85804d..8d1705ee6 100644
--- a/gui/builtinContextMenus/cargo.py
+++ b/gui/builtinContextMenus/cargo.py
@@ -32,4 +32,5 @@ class Cargo(ContextMenu):
self.mainFrame.additionsPane.select("Cargo")
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
Cargo.register()
diff --git a/gui/builtinContextMenus/changeAffectingSkills.py b/gui/builtinContextMenus/changeAffectingSkills.py
index df7d896b0..d679a8791 100644
--- a/gui/builtinContextMenus/changeAffectingSkills.py
+++ b/gui/builtinContextMenus/changeAffectingSkills.py
@@ -100,4 +100,5 @@ class ChangeAffectingSkills(ContextMenu):
wx.PostEvent(self.mainFrame, GE.CharListUpdated())
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
ChangeAffectingSkills.register()
diff --git a/gui/builtinContextMenus/damagePattern.py b/gui/builtinContextMenus/damagePattern.py
index df14e0c9b..553c02e04 100644
--- a/gui/builtinContextMenus/damagePattern.py
+++ b/gui/builtinContextMenus/damagePattern.py
@@ -105,4 +105,5 @@ class DamagePattern(ContextMenu):
setattr(self.mainFrame,"_activeDmgPattern", pattern)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
DamagePattern.register()
diff --git a/gui/builtinContextMenus/droneRemoveStack.py b/gui/builtinContextMenus/droneRemoveStack.py
index bc608ea1e..af2ecd9ea 100644
--- a/gui/builtinContextMenus/droneRemoveStack.py
+++ b/gui/builtinContextMenus/droneRemoveStack.py
@@ -23,4 +23,5 @@ class ItemRemove(ContextMenu):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
ItemRemove.register()
diff --git a/gui/builtinContextMenus/droneSplit.py b/gui/builtinContextMenus/droneSplit.py
index 20cdf0caa..476e40eee 100644
--- a/gui/builtinContextMenus/droneSplit.py
+++ b/gui/builtinContextMenus/droneSplit.py
@@ -1,58 +1,61 @@
-from gui.contextMenu import ContextMenu
-from gui.itemStats import ItemStatsDialog
-import gui.mainFrame
-import gui.globalEvents as GE
-import wx
-
-class DroneSplit(ContextMenu):
- def __init__(self):
- self.mainFrame = gui.mainFrame.MainFrame.getInstance()
-
- def display(self, srcContext, selection):
- return srcContext in ("droneItem", "projectedDrone") and selection[0].amount > 1
-
- def getText(self, itmContext, selection):
- return "Split {0} Stack".format(itmContext)
-
- def activate(self, fullContext, selection, i):
- srcContext = fullContext[0]
- dlg = DroneSpinner(self.mainFrame, selection[0], srcContext)
- dlg.ShowModal()
- dlg.Destroy()
-
-DroneSplit.register()
-
-
-class DroneSpinner(wx.Dialog):
-
- def __init__(self, parent, drone, context):
- wx.Dialog.__init__(self, parent, title="Select Amount", size=wx.Size(220, 60))
- self.drone = drone
- self.context = context
-
- bSizer1 = wx.BoxSizer(wx.HORIZONTAL)
-
- self.spinner = wx.SpinCtrl(self)
- self.spinner.SetRange(1, drone.amount - 1)
- self.spinner.SetValue(1)
-
- bSizer1.Add(self.spinner, 0, wx.ALL, 5)
-
- self.button = wx.Button(self, wx.ID_OK, u"Split")
- bSizer1.Add(self.button, 0, wx.ALL, 5)
-
- self.SetSizer(bSizer1)
- self.Layout()
- self.Centre(wx.BOTH)
- self.button.Bind(wx.EVT_BUTTON, self.split)
-
- def split(self, event):
- sFit = Fit.getInstance()
- mainFrame = gui.mainFrame.MainFrame.getInstance()
- fitID = mainFrame.getActiveFit()
- if self.context == "droneItem":
- sFit.splitDroneStack(fitID, self.drone, self.spinner.GetValue())
- else:
- sFit.splitProjectedDroneStack(fitID, self.drone, self.spinner.GetValue())
- wx.PostEvent(mainFrame, GE.FitChanged(fitID=fitID))
- event.Skip()
+from gui.contextMenu import ContextMenu
+from gui.itemStats import ItemStatsDialog
+import gui.mainFrame
+import gui.globalEvents as GE
+from service.fit import Fit
+import wx
+
+
+class DroneSplit(ContextMenu):
+ def __init__(self):
+ self.mainFrame = gui.mainFrame.MainFrame.getInstance()
+
+ def display(self, srcContext, selection):
+ return srcContext in ("droneItem", "projectedDrone") and selection[0].amount > 1
+
+ def getText(self, itmContext, selection):
+ return "Split {0} Stack".format(itmContext)
+
+ def activate(self, fullContext, selection, i):
+ srcContext = fullContext[0]
+ dlg = DroneSpinner(self.mainFrame, selection[0], srcContext)
+ dlg.ShowModal()
+ dlg.Destroy()
+
+
+DroneSplit.register()
+
+
+class DroneSpinner(wx.Dialog):
+
+ def __init__(self, parent, drone, context):
+ wx.Dialog.__init__(self, parent, title="Select Amount", size=wx.Size(220, 60))
+ self.drone = drone
+ self.context = context
+
+ bSizer1 = wx.BoxSizer(wx.HORIZONTAL)
+
+ self.spinner = wx.SpinCtrl(self)
+ self.spinner.SetRange(1, drone.amount - 1)
+ self.spinner.SetValue(1)
+
+ bSizer1.Add(self.spinner, 0, wx.ALL, 5)
+
+ self.button = wx.Button(self, wx.ID_OK, u"Split")
+ bSizer1.Add(self.button, 0, wx.ALL, 5)
+
+ self.SetSizer(bSizer1)
+ self.Layout()
+ self.Centre(wx.BOTH)
+ self.button.Bind(wx.EVT_BUTTON, self.split)
+
+ def split(self, event):
+ sFit = Fit.getInstance()
+ mainFrame = gui.mainFrame.MainFrame.getInstance()
+ fitID = mainFrame.getActiveFit()
+ if self.context == "droneItem":
+ sFit.splitDroneStack(fitID, self.drone, self.spinner.GetValue())
+ else:
+ sFit.splitProjectedDroneStack(fitID, self.drone, self.spinner.GetValue())
+ wx.PostEvent(mainFrame, GE.FitChanged(fitID=fitID))
+ event.Skip()
diff --git a/gui/builtinContextMenus/fighterAbilities.py b/gui/builtinContextMenus/fighterAbilities.py
index 3a659c905..e422070cc 100644
--- a/gui/builtinContextMenus/fighterAbilities.py
+++ b/gui/builtinContextMenus/fighterAbilities.py
@@ -52,4 +52,5 @@ class FighterAbility(ContextMenu):
sFit.toggleFighterAbility(fitID, ability)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
FighterAbility.register()
diff --git a/gui/builtinContextMenus/itemStats.py b/gui/builtinContextMenus/itemStats.py
index 8c5bc0cd6..2f822aec3 100644
--- a/gui/builtinContextMenus/itemStats.py
+++ b/gui/builtinContextMenus/itemStats.py
@@ -1,62 +1,64 @@
-from gui.contextMenu import ContextMenu
-from gui.itemStats import ItemStatsDialog
-import gui.mainFrame
-import wx
-from service.fit import Fit
-
-class ItemStats(ContextMenu):
- def __init__(self):
- self.mainFrame = gui.mainFrame.MainFrame.getInstance()
-
- def display(self, srcContext, selection):
-
- return srcContext in ("marketItemGroup", "marketItemMisc",
- "fittingModule", "fittingCharge",
- "fittingShip", "baseShip",
- "cargoItem", "droneItem",
- "implantItem", "boosterItem",
- "skillItem", "projectedModule",
- "projectedDrone", "projectedCharge",
- "itemStats", "fighterItem",
- "implantItemChar", "projectedFighter")
-
- def getText(self, itmContext, selection):
- return "{0} Stats".format(itmContext if itmContext is not None else "Item")
-
- def activate(self, fullContext, selection, i):
- srcContext = fullContext[0]
- if srcContext == "fittingShip":
- fitID = self.mainFrame.getActiveFit()
- sFit = Fit.getInstance()
- stuff = sFit.getFit(fitID).ship
- else:
- stuff = selection[0]
-
- if srcContext == "fittingModule" and stuff.isEmpty:
- return
-
- mstate = wx.GetMouseState()
- reuse = False
-
- if mstate.CmdDown():
- reuse = True
-
- if self.mainFrame.GetActiveStatsWindow() is None and reuse:
- ItemStatsDialog(stuff, fullContext)
-
- elif reuse:
- lastWnd = self.mainFrame.GetActiveStatsWindow()
- pos = lastWnd.GetPosition()
- maximized = lastWnd.IsMaximized()
- if not maximized:
- size = lastWnd.GetSize()
- else:
- size = wx.DefaultSize
- pos = wx.DefaultPosition
- ItemStatsDialog(stuff, fullContext, pos, size, maximized)
- lastWnd.closeEvent(None)
-
- else:
- ItemStatsDialog(stuff, fullContext)
-
-ItemStats.register()
+from gui.contextMenu import ContextMenu
+from gui.itemStats import ItemStatsDialog
+import gui.mainFrame
+import wx
+from service.fit import Fit
+
+
+class ItemStats(ContextMenu):
+ def __init__(self):
+ self.mainFrame = gui.mainFrame.MainFrame.getInstance()
+
+ def display(self, srcContext, selection):
+
+ return srcContext in ("marketItemGroup", "marketItemMisc",
+ "fittingModule", "fittingCharge",
+ "fittingShip", "baseShip",
+ "cargoItem", "droneItem",
+ "implantItem", "boosterItem",
+ "skillItem", "projectedModule",
+ "projectedDrone", "projectedCharge",
+ "itemStats", "fighterItem",
+ "implantItemChar", "projectedFighter")
+
+ def getText(self, itmContext, selection):
+ return "{0} Stats".format(itmContext if itmContext is not None else "Item")
+
+ def activate(self, fullContext, selection, i):
+ srcContext = fullContext[0]
+ if srcContext == "fittingShip":
+ fitID = self.mainFrame.getActiveFit()
+ sFit = Fit.getInstance()
+ stuff = sFit.getFit(fitID).ship
+ else:
+ stuff = selection[0]
+
+ if srcContext == "fittingModule" and stuff.isEmpty:
+ return
+
+ mstate = wx.GetMouseState()
+ reuse = False
+
+ if mstate.CmdDown():
+ reuse = True
+
+ if self.mainFrame.GetActiveStatsWindow() is None and reuse:
+ ItemStatsDialog(stuff, fullContext)
+
+ elif reuse:
+ lastWnd = self.mainFrame.GetActiveStatsWindow()
+ pos = lastWnd.GetPosition()
+ maximized = lastWnd.IsMaximized()
+ if not maximized:
+ size = lastWnd.GetSize()
+ else:
+ size = wx.DefaultSize
+ pos = wx.DefaultPosition
+ ItemStatsDialog(stuff, fullContext, pos, size, maximized)
+ lastWnd.closeEvent(None)
+
+ else:
+ ItemStatsDialog(stuff, fullContext)
+
+
+ItemStats.register()
diff --git a/gui/builtinContextMenus/marketJump.py b/gui/builtinContextMenus/marketJump.py
index d5804eada..eea2a9a2b 100644
--- a/gui/builtinContextMenus/marketJump.py
+++ b/gui/builtinContextMenus/marketJump.py
@@ -1,48 +1,49 @@
-from gui.contextMenu import ContextMenu
-from gui.itemStats import ItemStatsDialog
-import gui.mainFrame
-from service.market import Market
-
-class MarketJump(ContextMenu):
- def __init__(self):
- self.mainFrame = gui.mainFrame.MainFrame.getInstance()
-
- def display(self, srcContext, selection):
- validContexts = ("marketItemMisc", "fittingModule",
- "fittingCharge", "droneItem",
- "implantItem", "boosterItem",
- "projectedModule", "projectedDrone",
- "projectedCharge", "cargoItem",
- "implantItemChar", "fighterItem",
- "projectedDrone")
-
- if not srcContext in validContexts or selection is None or len(selection) < 1:
- return False
-
- sMkt = Market.getInstance()
- item = getattr(selection[0], "item", selection[0])
- mktGrp = sMkt.getMarketGroupByItem(item)
-
- # 1663 is Special Edition Festival Assets, we don't have root group for it
- if mktGrp is None or mktGrp.ID == 1663:
- return False
-
- doit = not selection[0].isEmpty if srcContext == "fittingModule" else True
- return doit
-
- def getText(self, itmContext, selection):
- return "{0} Market Group".format(itmContext if itmContext is not None else "Item")
-
- def activate(self, fullContext, selection, i):
- srcContext = fullContext[0]
- if srcContext in ("fittingCharge", "projectedCharge"):
- item = selection[0].charge
- elif hasattr(selection[0], "item"):
- item = selection[0].item
- else:
- item = selection[0]
-
- self.mainFrame.notebookBrowsers.SetSelection(0)
- self.mainFrame.marketBrowser.jump(item)
-
-MarketJump.register()
+from gui.contextMenu import ContextMenu
+from gui.itemStats import ItemStatsDialog
+import gui.mainFrame
+from service.market import Market
+
+class MarketJump(ContextMenu):
+ def __init__(self):
+ self.mainFrame = gui.mainFrame.MainFrame.getInstance()
+
+ def display(self, srcContext, selection):
+ validContexts = ("marketItemMisc", "fittingModule",
+ "fittingCharge", "droneItem",
+ "implantItem", "boosterItem",
+ "projectedModule", "projectedDrone",
+ "projectedCharge", "cargoItem",
+ "implantItemChar", "fighterItem",
+ "projectedDrone")
+
+ if srcContext not in validContexts or selection is None or len(selection) < 1:
+ return False
+
+ sMkt = Market.getInstance()
+ item = getattr(selection[0], "item", selection[0])
+ mktGrp = sMkt.getMarketGroupByItem(item)
+
+ # 1663 is Special Edition Festival Assets, we don't have root group for it
+ if mktGrp is None or mktGrp.ID == 1663:
+ return False
+
+ doit = not selection[0].isEmpty if srcContext == "fittingModule" else True
+ return doit
+
+ def getText(self, itmContext, selection):
+ return "{0} Market Group".format(itmContext if itmContext is not None else "Item")
+
+ def activate(self, fullContext, selection, i):
+ srcContext = fullContext[0]
+ if srcContext in ("fittingCharge", "projectedCharge"):
+ item = selection[0].charge
+ elif hasattr(selection[0], "item"):
+ item = selection[0].item
+ else:
+ item = selection[0]
+
+ self.mainFrame.notebookBrowsers.SetSelection(0)
+ self.mainFrame.marketBrowser.jump(item)
+
+
+MarketJump.register()
diff --git a/gui/builtinContextMenus/metaSwap.py b/gui/builtinContextMenus/metaSwap.py
index 38e339074..43d722346 100644
--- a/gui/builtinContextMenus/metaSwap.py
+++ b/gui/builtinContextMenus/metaSwap.py
@@ -1,11 +1,10 @@
-# -*- coding: utf-8 -*-
-from gui.contextMenu import ContextMenu
-from gui.itemStats import ItemStatsDialog
-import gui.mainFrame
import wx
-import gui.globalEvents as GE
-from service.market import Market
+
from service.fit import Fit
+from service.market import Market
+import gui.mainFrame
+import gui.globalEvents as GE
+from gui.contextMenu import ContextMenu
class MetaSwap(ContextMenu):
def __init__(self):
@@ -42,7 +41,8 @@ class MetaSwap(ContextMenu):
self.moduleLookup = {}
def get_metalevel(x):
- if "metaLevel" not in x.attributes: return 0
+ if "metaLevel" not in x.attributes:
+ return 0
return x.attributes["metaLevel"].value
def get_metagroup(x):
@@ -99,4 +99,5 @@ class MetaSwap(ContextMenu):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
MetaSwap.register()
diff --git a/gui/builtinContextMenus/moduleAmmoPicker.py b/gui/builtinContextMenus/moduleAmmoPicker.py
index 6edcf6deb..03ace7f52 100644
--- a/gui/builtinContextMenus/moduleAmmoPicker.py
+++ b/gui/builtinContextMenus/moduleAmmoPicker.py
@@ -1,224 +1,226 @@
-# -*- coding: utf-8 -*-
-from gui.contextMenu import ContextMenu
-import gui.mainFrame
-import wx
-from gui.bitmapLoader import BitmapLoader
-from eos.types import Hardpoint
-import gui.globalEvents as GE
-from service.market import Market
-from service.fit import Fit
-
-class ModuleAmmoPicker(ContextMenu):
- DAMAGE_TYPES = ("em", "explosive", "kinetic", "thermal")
- MISSILE_ORDER = ("em", "thermal", "kinetic", "explosive", "mixed")
-
- def __init__(self):
- self.mainFrame = gui.mainFrame.MainFrame.getInstance()
-
- def display(self, srcContext, selection):
- if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule", "projectedModule"):
- return False
-
- modules = selection if srcContext == "fittingModule" else (selection[0],)
-
- validCharges = None
- checkedTypes = set()
-
- for mod in modules:
- # loop through modules and gather list of valid charges
- if mod.item.ID in checkedTypes:
- continue
- checkedTypes.add(mod.item.ID)
- currCharges = mod.getValidCharges()
- if len(currCharges) > 0:
- if validCharges is not None and validCharges != currCharges:
- return False
-
- validCharges = currCharges
- self.module = mod
-
- if validCharges is None:
- return False
-
- self.modules = modules
- self.charges = list(filter(lambda charge: Market.getInstance().getPublicityByItem(charge), validCharges))
- return len(self.charges) > 0
-
- def getText(self, itmContext, selection):
- return "Charge"
-
- def turretSorter(self, charge):
- damage = 0
- range = (self.module.getModifiedItemAttr("maxRange") or 0) * (charge.getAttribute("weaponRangeMultiplier") or 1)
- falloff = (self.module.getModifiedItemAttr("falloff") or 0) * (charge.getAttribute("fallofMultiplier") or 1)
- for type in self.DAMAGE_TYPES:
- d = charge.getAttribute("%sDamage" % type)
- if d > 0:
- damage += d
-
- # Take optimal and half falloff as range factor
- rangeFactor = range + falloff / 2
-
- return - rangeFactor, charge.name.rsplit()[-2:], damage, charge.name
-
- def missileSorter(self, charge):
- # Get charge damage type and total damage
- chargeDamageType, totalDamage = self.damageInfo(charge)
- # Find its position in sort list
- position = self.MISSILE_ORDER.index(chargeDamageType)
- return position, totalDamage, charge.name
-
- def damageInfo(self, charge):
- # Set up data storage for missile damage stuff
- damageMap = {}
- totalDamage = 0
- # Fill them with the data about charge
- for damageType in self.DAMAGE_TYPES:
- currentDamage = charge.getAttribute("{0}Damage".format(damageType)) or 0
- damageMap[damageType] = currentDamage
- totalDamage += currentDamage
- # Detect type of ammo
- chargeDamageType = None
- for damageType in damageMap:
- # If all damage belongs to certain type purely, set appropriate
- # ammoType
- if damageMap[damageType] == totalDamage:
- chargeDamageType = damageType
- break
- # Else consider ammo as mixed damage
- if chargeDamageType is None:
- chargeDamageType = "mixed"
-
- return chargeDamageType, totalDamage
-
- def numericConverter(self, string):
- return int(string) if string.isdigit() else string
-
- def nameSorter(self, charge):
- parts = charge.name.split(" ")
- return map(self.numericConverter, parts)
-
- def addCharge(self, menu, charge):
- id = ContextMenu.nextID()
- name = charge.name if charge is not None else "Empty"
- self.chargeIds[id] = charge
- item = wx.MenuItem(menu, id, name)
- menu.Bind(wx.EVT_MENU, self.handleAmmoSwitch, item)
- item.charge = charge
- if charge is not None and charge.icon is not None:
- bitmap = BitmapLoader.getBitmap(charge.icon.iconFile, "icons")
- if bitmap is not None:
- item.SetBitmap(bitmap)
-
- return item
-
- def addSeperator(self, m, text):
- id = ContextMenu.nextID()
- m.Append(id, u'─ %s ─' % text)
- m.Enable(id, False)
-
- def getSubMenu(self, context, selection, rootMenu, i, pitem):
- msw = True if "wxMSW" in wx.PlatformInfo else False
- m = wx.Menu()
- self.chargeIds = {}
- hardpoint = self.module.hardpoint
- moduleName = self.module.item.name
- # Make sure we do not consider mining turrets as combat turrets
- if hardpoint == Hardpoint.TURRET and self.module.getModifiedItemAttr("miningAmount") is None:
- self.addSeperator(m, "Long Range")
- items = []
- range = None
- nameBase = None
- sub = None
- self.charges.sort(key=self.turretSorter)
- for charge in self.charges:
- # fix issue 71 - will probably have to change if CCP adds more Orbital ammo
- if "Orbital" in charge.name:
- # uncomment if we ever want to include Oribital ammo in ammo picker - see issue #71
- # This allows us to hide the ammo, but it's still loadable from the market
- #item = self.addCharge(m, charge)
- #items.append(item)
- continue
- currBase = charge.name.rsplit()[-2:]
- currRange = charge.getAttribute("weaponRangeMultiplier")
- if nameBase is None or range != currRange or nameBase != currBase:
- if sub is not None:
- self.addSeperator(sub, "More Damage")
-
- sub = None
- base = charge
- nameBase = currBase
- range = currRange
- item = self.addCharge(rootMenu if msw else m, charge)
- items.append(item)
- else:
- if sub is None:
- sub = wx.Menu()
- sub.Bind(wx.EVT_MENU, self.handleAmmoSwitch)
- self.addSeperator(sub, "Less Damage")
- item.SetSubMenu(sub)
- sub.AppendItem(self.addCharge(rootMenu if msw else sub, base))
-
- sub.AppendItem(self.addCharge(rootMenu if msw else sub, charge))
-
- if sub is not None:
- self.addSeperator(sub, "More Damage")
-
- for item in items:
- m.AppendItem(item)
-
- self.addSeperator(m, "Short Range")
- elif hardpoint == Hardpoint.MISSILE and moduleName != 'Festival Launcher':
- self.charges.sort(key=self.missileSorter)
- type = None
- sub = None
- defender = None
- for charge in self.charges:
- currType = self.damageInfo(charge)[0]
-
- if currType != type or type is None:
- if sub is not None:
- self.addSeperator(sub, "More Damage")
-
- type = currType
- item = wx.MenuItem(m, wx.ID_ANY, type.capitalize())
- bitmap = BitmapLoader.getBitmap("%s_small" % type, "gui")
- if bitmap is not None:
- item.SetBitmap(bitmap)
-
- sub = wx.Menu()
- sub.Bind(wx.EVT_MENU, self.handleAmmoSwitch)
- self.addSeperator(sub, "Less Damage")
- item.SetSubMenu(sub)
- m.AppendItem(item)
-
- if charge.name not in ("Light Defender Missile I", "Heavy Defender Missile I"):
- sub.AppendItem(self.addCharge(rootMenu if msw else sub, charge))
- else:
- defender = charge
-
- if defender is not None:
- m.AppendItem(self.addCharge(rootMenu if msw else m, defender))
- if sub is not None:
- self.addSeperator(sub, "More Damage")
- else:
- self.charges.sort(key=self.nameSorter)
- for charge in self.charges:
- m.AppendItem(self.addCharge(rootMenu if msw else m, charge))
-
- m.AppendItem(self.addCharge(rootMenu if msw else m, None))
- return m
-
- def handleAmmoSwitch(self, event):
- charge = self.chargeIds.get(event.Id, False)
- if charge is False:
- event.Skip()
- return
-
- sFit = Fit.getInstance()
- fitID = self.mainFrame.getActiveFit()
-
- sFit.setAmmo(fitID, charge.ID if charge is not None else None, self.modules)
- wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
-
-ModuleAmmoPicker.register()
+# -*- coding: utf-8 -*-
+from gui.contextMenu import ContextMenu
+import gui.mainFrame
+import wx
+from gui.bitmapLoader import BitmapLoader
+from eos.types import Hardpoint
+import gui.globalEvents as GE
+from service.market import Market
+from service.fit import Fit
+
+
+class ModuleAmmoPicker(ContextMenu):
+ DAMAGE_TYPES = ("em", "explosive", "kinetic", "thermal")
+ MISSILE_ORDER = ("em", "thermal", "kinetic", "explosive", "mixed")
+
+ def __init__(self):
+ self.mainFrame = gui.mainFrame.MainFrame.getInstance()
+
+ def display(self, srcContext, selection):
+ if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule", "projectedModule"):
+ return False
+
+ modules = selection if srcContext == "fittingModule" else (selection[0],)
+
+ validCharges = None
+ checkedTypes = set()
+
+ for mod in modules:
+ # loop through modules and gather list of valid charges
+ if mod.item.ID in checkedTypes:
+ continue
+ checkedTypes.add(mod.item.ID)
+ currCharges = mod.getValidCharges()
+ if len(currCharges) > 0:
+ if validCharges is not None and validCharges != currCharges:
+ return False
+
+ validCharges = currCharges
+ self.module = mod
+
+ if validCharges is None:
+ return False
+
+ self.modules = modules
+ self.charges = list(filter(lambda charge: Market.getInstance().getPublicityByItem(charge), validCharges))
+ return len(self.charges) > 0
+
+ def getText(self, itmContext, selection):
+ return "Charge"
+
+ def turretSorter(self, charge):
+ damage = 0
+ range_ = (self.module.getModifiedItemAttr("maxRange") or 0) * (charge.getAttribute("weaponRangeMultiplier") or 1)
+ falloff = (self.module.getModifiedItemAttr("falloff") or 0) * (charge.getAttribute("fallofMultiplier") or 1)
+ for type_ in self.DAMAGE_TYPES:
+ d = charge.getAttribute("%sDamage" % type_)
+ if d > 0:
+ damage += d
+
+ # Take optimal and half falloff as range factor
+ rangeFactor = range_ + falloff / 2
+
+ return - rangeFactor, charge.name.rsplit()[-2:], damage, charge.name
+
+ def missileSorter(self, charge):
+ # Get charge damage type and total damage
+ chargeDamageType, totalDamage = self.damageInfo(charge)
+ # Find its position in sort list
+ position = self.MISSILE_ORDER.index(chargeDamageType)
+ return position, totalDamage, charge.name
+
+ def damageInfo(self, charge):
+ # Set up data storage for missile damage stuff
+ damageMap = {}
+ totalDamage = 0
+ # Fill them with the data about charge
+ for damageType in self.DAMAGE_TYPES:
+ currentDamage = charge.getAttribute("{0}Damage".format(damageType)) or 0
+ damageMap[damageType] = currentDamage
+ totalDamage += currentDamage
+ # Detect type of ammo
+ chargeDamageType = None
+ for damageType in damageMap:
+ # If all damage belongs to certain type purely, set appropriate
+ # ammoType
+ if damageMap[damageType] == totalDamage:
+ chargeDamageType = damageType
+ break
+ # Else consider ammo as mixed damage
+ if chargeDamageType is None:
+ chargeDamageType = "mixed"
+
+ return chargeDamageType, totalDamage
+
+ def numericConverter(self, string):
+ return int(string) if string.isdigit() else string
+
+ def nameSorter(self, charge):
+ parts = charge.name.split(" ")
+ return map(self.numericConverter, parts)
+
+ def addCharge(self, menu, charge):
+ id_ = ContextMenu.nextID()
+ name = charge.name if charge is not None else "Empty"
+ self.chargeIds[id_] = charge
+ item = wx.MenuItem(menu, id_, name)
+ menu.Bind(wx.EVT_MENU, self.handleAmmoSwitch, item)
+ item.charge = charge
+ if charge is not None and charge.icon is not None:
+ bitmap = BitmapLoader.getBitmap(charge.icon.iconFile, "icons")
+ if bitmap is not None:
+ item.SetBitmap(bitmap)
+
+ return item
+
+ def addSeperator(self, m, text):
+ id_ = ContextMenu.nextID()
+ m.Append(id_, u'─ %s ─' % text)
+ m.Enable(id_, False)
+
+ def getSubMenu(self, context, selection, rootMenu, i, pitem):
+ msw = True if "wxMSW" in wx.PlatformInfo else False
+ m = wx.Menu()
+ self.chargeIds = {}
+ hardpoint = self.module.hardpoint
+ moduleName = self.module.item.name
+ # Make sure we do not consider mining turrets as combat turrets
+ if hardpoint == Hardpoint.TURRET and self.module.getModifiedItemAttr("miningAmount") is None:
+ self.addSeperator(m, "Long Range")
+ items = []
+ range_ = None
+ nameBase = None
+ sub = None
+ self.charges.sort(key=self.turretSorter)
+ for charge in self.charges:
+ # fix issue 71 - will probably have to change if CCP adds more Orbital ammo
+ if "Orbital" in charge.name:
+ # uncomment if we ever want to include Oribital ammo in ammo picker - see issue #71
+ # This allows us to hide the ammo, but it's still loadable from the market
+ # item = self.addCharge(m, charge)
+ # items.append(item)
+ continue
+ currBase = charge.name.rsplit()[-2:]
+ currRange = charge.getAttribute("weaponRangeMultiplier")
+ if nameBase is None or range_ != currRange or nameBase != currBase:
+ if sub is not None:
+ self.addSeperator(sub, "More Damage")
+
+ sub = None
+ base = charge
+ nameBase = currBase
+ range_ = currRange
+ item = self.addCharge(rootMenu if msw else m, charge)
+ items.append(item)
+ else:
+ if sub is None:
+ sub = wx.Menu()
+ sub.Bind(wx.EVT_MENU, self.handleAmmoSwitch)
+ self.addSeperator(sub, "Less Damage")
+ item.SetSubMenu(sub)
+ sub.AppendItem(self.addCharge(rootMenu if msw else sub, base))
+
+ sub.AppendItem(self.addCharge(rootMenu if msw else sub, charge))
+
+ if sub is not None:
+ self.addSeperator(sub, "More Damage")
+
+ for item in items:
+ m.AppendItem(item)
+
+ self.addSeperator(m, "Short Range")
+ elif hardpoint == Hardpoint.MISSILE and moduleName != 'Festival Launcher':
+ self.charges.sort(key=self.missileSorter)
+ type_ = None
+ sub = None
+ defender = None
+ for charge in self.charges:
+ currType = self.damageInfo(charge)[0]
+
+ if currType != type_ or type_ is None:
+ if sub is not None:
+ self.addSeperator(sub, "More Damage")
+
+ type_ = currType
+ item = wx.MenuItem(m, wx.ID_ANY, type_.capitalize())
+ bitmap = BitmapLoader.getBitmap("%s_small" % type, "gui")
+ if bitmap is not None:
+ item.SetBitmap(bitmap)
+
+ sub = wx.Menu()
+ sub.Bind(wx.EVT_MENU, self.handleAmmoSwitch)
+ self.addSeperator(sub, "Less Damage")
+ item.SetSubMenu(sub)
+ m.AppendItem(item)
+
+ if charge.name not in ("Light Defender Missile I", "Heavy Defender Missile I"):
+ sub.AppendItem(self.addCharge(rootMenu if msw else sub, charge))
+ else:
+ defender = charge
+
+ if defender is not None:
+ m.AppendItem(self.addCharge(rootMenu if msw else m, defender))
+ if sub is not None:
+ self.addSeperator(sub, "More Damage")
+ else:
+ self.charges.sort(key=self.nameSorter)
+ for charge in self.charges:
+ m.AppendItem(self.addCharge(rootMenu if msw else m, charge))
+
+ m.AppendItem(self.addCharge(rootMenu if msw else m, None))
+ return m
+
+ def handleAmmoSwitch(self, event):
+ charge = self.chargeIds.get(event.Id, False)
+ if charge is False:
+ event.Skip()
+ return
+
+ sFit = Fit.getInstance()
+ fitID = self.mainFrame.getActiveFit()
+
+ sFit.setAmmo(fitID, charge.ID if charge is not None else None, self.modules)
+ wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
+
+ModuleAmmoPicker.register()
diff --git a/gui/builtinContextMenus/openFit.py b/gui/builtinContextMenus/openFit.py
index eaf38832e..621885f67 100644
--- a/gui/builtinContextMenus/openFit.py
+++ b/gui/builtinContextMenus/openFit.py
@@ -17,4 +17,5 @@ class OpenFit(ContextMenu):
fit = selection[0]
wx.PostEvent(self.mainFrame, FitSelected(fitID=fit.ID, startup=2))
+
OpenFit.register()
diff --git a/gui/builtinContextMenus/priceClear.py b/gui/builtinContextMenus/priceClear.py
index 14e4d23b4..be7986536 100644
--- a/gui/builtinContextMenus/priceClear.py
+++ b/gui/builtinContextMenus/priceClear.py
@@ -19,4 +19,5 @@ class PriceClear(ContextMenu):
sMkt.clearPriceCache()
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
+
PriceClear.register()
diff --git a/gui/builtinContextMenus/project.py b/gui/builtinContextMenus/project.py
index b40058a79..0fcae7864 100644
--- a/gui/builtinContextMenus/project.py
+++ b/gui/builtinContextMenus/project.py
@@ -1,37 +1,38 @@
-from gui.contextMenu import ContextMenu
-import gui.mainFrame
-import gui.globalEvents as GE
-import wx
-import eos.db
-from service.fit import Fit
-
-class Project(ContextMenu):
- def __init__(self):
- self.mainFrame = gui.mainFrame.MainFrame.getInstance()
-
- def display(self, srcContext, selection):
- if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None:
- return False
-
- sFit = Fit.getInstance()
- fitID = self.mainFrame.getActiveFit()
- fit = sFit.getFit(fitID)
-
- if fit.isStructure:
- return False
-
- item = selection[0]
- return item.isType("projected")
-
- def getText(self, itmContext, selection):
- return "Project {0} onto Fit".format(itmContext)
-
- def activate(self, fullContext, selection, i):
- sFit = Fit.getInstance()
- fitID = self.mainFrame.getActiveFit()
- trigger = sFit.project(fitID, selection[0])
- if trigger:
- wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
- self.mainFrame.additionsPane.select("Projected")
-
-Project.register()
+from gui.contextMenu import ContextMenu
+import gui.mainFrame
+import gui.globalEvents as GE
+import wx
+from service.fit import Fit
+
+
+class Project(ContextMenu):
+ def __init__(self):
+ self.mainFrame = gui.mainFrame.MainFrame.getInstance()
+
+ def display(self, srcContext, selection):
+ if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None:
+ return False
+
+ sFit = Fit.getInstance()
+ fitID = self.mainFrame.getActiveFit()
+ fit = sFit.getFit(fitID)
+
+ if fit.isStructure:
+ return False
+
+ item = selection[0]
+ return item.isType("projected")
+
+ def getText(self, itmContext, selection):
+ return "Project {0} onto Fit".format(itmContext)
+
+ def activate(self, fullContext, selection, i):
+ sFit = Fit.getInstance()
+ fitID = self.mainFrame.getActiveFit()
+ trigger = sFit.project(fitID, selection[0])
+ if trigger:
+ wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+ self.mainFrame.additionsPane.select("Projected")
+
+
+Project.register()
diff --git a/gui/builtinContextMenus/shipJump.py b/gui/builtinContextMenus/shipJump.py
index 3cf6b1f12..478619cf7 100644
--- a/gui/builtinContextMenus/shipJump.py
+++ b/gui/builtinContextMenus/shipJump.py
@@ -23,4 +23,5 @@ class ShipJump(ContextMenu):
self.mainFrame.notebookBrowsers.SetSelection(1)
wx.PostEvent(self.mainFrame.shipBrowser,Stage3Selected(shipID=stuff.item.ID, back=groupID))
+
ShipJump.register()
diff --git a/gui/builtinContextMenus/tacticalMode.py b/gui/builtinContextMenus/tacticalMode.py
index 07dda7bc4..3909ef693 100644
--- a/gui/builtinContextMenus/tacticalMode.py
+++ b/gui/builtinContextMenus/tacticalMode.py
@@ -58,4 +58,5 @@ class TacticalMode(ContextMenu):
sFit.setMode(fitID, self.modeIds[event.Id])
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
TacticalMode.register()
diff --git a/gui/builtinContextMenus/targetResists.py b/gui/builtinContextMenus/targetResists.py
index 557a7f276..7f3ba2131 100644
--- a/gui/builtinContextMenus/targetResists.py
+++ b/gui/builtinContextMenus/targetResists.py
@@ -106,4 +106,5 @@ class TargetResists(ContextMenu):
return sub
+
TargetResists.register()
diff --git a/gui/builtinContextMenus/whProjector.py b/gui/builtinContextMenus/whProjector.py
index b47ded3da..96fe2c767 100644
--- a/gui/builtinContextMenus/whProjector.py
+++ b/gui/builtinContextMenus/whProjector.py
@@ -54,4 +54,5 @@ class WhProjector(ContextMenu):
sFit.project(fitID, swObj)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
+
WhProjector.register()
diff --git a/gui/builtinGraphs/fitDps.py b/gui/builtinGraphs/fitDps.py
index 0e0c4f12e..fcbfa68fa 100644
--- a/gui/builtinGraphs/fitDps.py
+++ b/gui/builtinGraphs/fitDps.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
from gui.graph import Graph
from gui.bitmapLoader import BitmapLoader
@@ -24,6 +24,7 @@ from eos.graph import Data
import gui.mainFrame
from service.attribute import Attribute
+
class FitDpsGraph(Graph):
propertyAttributeMap = {"angle": "maxVelocity",
"distance": "maxRange",
@@ -74,7 +75,7 @@ class FitDpsGraph(Graph):
if variable is None:
variable = fieldName
else:
- #We can't handle more then one variable atm, OOPS FUCK OUT
+ # We can't handle more then one variable atm, OOPS FUCK OUT
return False, "Can only handle 1 variable"
fitDps.setData(d)
@@ -90,4 +91,5 @@ class FitDpsGraph(Graph):
return x, y
+
FitDpsGraph.register()
diff --git a/gui/builtinPreferenceViews/__init__.py b/gui/builtinPreferenceViews/__init__.py
index 9d29c75ff..48e631eb1 100644
--- a/gui/builtinPreferenceViews/__init__.py
+++ b/gui/builtinPreferenceViews/__init__.py
@@ -1,6 +1,6 @@
-__all__ = ["pyfaGeneralPreferences","pyfaHTMLExportPreferences","pyfaUpdatePreferences","pyfaNetworkPreferences"]
-
import wx
-if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
+__all__ = ["pyfaGeneralPreferences", "pyfaHTMLExportPreferences", "pyfaUpdatePreferences", "pyfaNetworkPreferences"] # noqa
+
+if 'wxMac' not in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0)):
__all__.append("pyfaCrestPreferences")
diff --git a/gui/builtinPreferenceViews/dummyView.py b/gui/builtinPreferenceViews/dummyView.py
index 5b8822d1c..c6c93f582 100644
--- a/gui/builtinPreferenceViews/dummyView.py
+++ b/gui/builtinPreferenceViews/dummyView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,80 +15,81 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.preferenceView import PreferenceView
-from gui.bitmapLoader import BitmapLoader
+
+
class DummyView(PreferenceView):
title = "Dummy"
def populatePanel(self, panel):
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
headerSizer = self.initHeader(panel)
- mainSizer.Add( headerSizer, 0, wx.EXPAND, 5 )
+ mainSizer.Add(headerSizer, 0, wx.EXPAND, 5)
- self.stline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.stline1, 0, wx.EXPAND, 5 )
+ self.stline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.stline1, 0, wx.EXPAND, 5)
contentSizer = self.initContent(panel)
- mainSizer.Add( contentSizer, 1, wx.EXPAND|wx.TOP|wx.BOTTOM|wx.LEFT, 10 )
-
- self.stline2 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.stline2, 0, wx.EXPAND, 5 )
+ mainSizer.Add(contentSizer, 1, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 10)
+ self.stline2 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.stline2, 0, wx.EXPAND, 5)
footerSizer = self.initFooter(panel)
- mainSizer.Add( footerSizer, 0, wx.EXPAND, 5 )
- panel.SetSizer( mainSizer )
+ mainSizer.Add(footerSizer, 0, wx.EXPAND, 5)
+ panel.SetSizer(mainSizer)
panel.Layout()
def refreshPanel(self, fit):
pass
def initHeader(self, panel):
- headerSizer = wx.BoxSizer( wx.VERTICAL )
- self.stTitle = wx.StaticText( panel, wx.ID_ANY, u"Dummy", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stTitle.Wrap( -1 )
- self.stTitle.SetFont( wx.Font( 14, 70, 90, 90, False, wx.EmptyString ) )
- headerSizer.Add( self.stTitle, 0, wx.ALL, 5)
+ headerSizer = wx.BoxSizer(wx.VERTICAL)
+ self.stTitle = wx.StaticText(panel, wx.ID_ANY, u"Dummy", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stTitle.Wrap(-1)
+ self.stTitle.SetFont(wx.Font(14, 70, 90, 90, False, wx.EmptyString))
+ headerSizer.Add(self.stTitle, 0, wx.ALL, 5)
return headerSizer
def initContent(self, panel):
- contentSizer = wx.BoxSizer( wx.VERTICAL )
+ contentSizer = wx.BoxSizer(wx.VERTICAL)
- self.m_checkBox2 = wx.CheckBox( panel, wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0 )
- contentSizer.Add( self.m_checkBox2, 0, wx.ALL, 5 )
+ self.m_checkBox2 = wx.CheckBox(panel, wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0)
+ contentSizer.Add(self.m_checkBox2, 0, wx.ALL, 5)
- self.m_radioBtn2 = wx.RadioButton( panel, wx.ID_ANY, u"RadioBtn", wx.DefaultPosition, wx.DefaultSize, 0 )
- contentSizer.Add( self.m_radioBtn2, 0, wx.ALL, 5 )
+ self.m_radioBtn2 = wx.RadioButton(panel, wx.ID_ANY, u"RadioBtn", wx.DefaultPosition, wx.DefaultSize, 0)
+ contentSizer.Add(self.m_radioBtn2, 0, wx.ALL, 5)
- self.m_slider2 = wx.Slider( panel, wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
- contentSizer.Add( self.m_slider2, 0, wx.ALL, 5 )
+ self.m_slider2 = wx.Slider(panel, wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL)
+ contentSizer.Add(self.m_slider2, 0, wx.ALL, 5)
- self.m_gauge1 = wx.Gauge( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL )
- contentSizer.Add( self.m_gauge1, 0, wx.ALL, 5 )
+ self.m_gauge1 = wx.Gauge(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL)
+ contentSizer.Add(self.m_gauge1, 0, wx.ALL, 5)
- self.m_textCtrl2 = wx.TextCtrl( panel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
- contentSizer.Add( self.m_textCtrl2, 0, wx.ALL, 5 )
+ self.m_textCtrl2 = wx.TextCtrl(panel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
+ contentSizer.Add(self.m_textCtrl2, 0, wx.ALL, 5)
return contentSizer
def initFooter(self, panel):
- footerSizer = wx.BoxSizer( wx.HORIZONTAL )
+ footerSizer = wx.BoxSizer(wx.HORIZONTAL)
+ footerSizer.AddSpacer((0, 0), 1, wx.EXPAND, 5)
- footerSizer.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 )
+ self.btnRestore = wx.Button(panel, wx.ID_ANY, u"Restore", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.btnRestore.Enable(False)
- self.btnRestore = wx.Button( panel, wx.ID_ANY, u"Restore", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.btnRestore.Enable( False )
+ footerSizer.Add(self.btnRestore, 0, wx.ALL, 5)
- footerSizer.Add( self.btnRestore, 0, wx.ALL, 5 )
-
- self.btnApply = wx.Button( panel, wx.ID_ANY, u"Apply", wx.DefaultPosition, wx.DefaultSize, 0 )
- footerSizer.Add( self.btnApply, 0, wx.ALL, 5 )
+ self.btnApply = wx.Button(panel, wx.ID_ANY, u"Apply", wx.DefaultPosition, wx.DefaultSize, 0)
+ footerSizer.Add(self.btnApply, 0, wx.ALL, 5)
return footerSizer
+
+
DummyView.register()
diff --git a/gui/builtinPreferenceViews/pyfaCrestPreferences.py b/gui/builtinPreferenceViews/pyfaCrestPreferences.py
index 56f559068..964596eb6 100644
--- a/gui/builtinPreferenceViews/pyfaCrestPreferences.py
+++ b/gui/builtinPreferenceViews/pyfaCrestPreferences.py
@@ -4,35 +4,35 @@ from gui.preferenceView import PreferenceView
from gui.bitmapLoader import BitmapLoader
import gui.mainFrame
-from service.crest import CrestModes
from service.crest import Crest
from service.settings import CRESTSettings
from wx.lib.intctrl import IntCtrl
-class PFCrestPref ( PreferenceView):
+
+class PFCrestPref(PreferenceView):
title = "CREST"
- def populatePanel( self, panel ):
+ def populatePanel(self, panel):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = CRESTSettings.getInstance()
self.dirtySettings = False
dlgWidth = panel.GetParent().GetParent().ClientSize.width
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stTitle.Wrap( -1 )
- self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
+ self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stTitle.Wrap(-1)
+ self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
- mainSizer.Add( self.stTitle, 0, wx.ALL, 5 )
+ mainSizer.Add(self.stTitle, 0, wx.ALL, 5)
- self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 )
+ self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
- self.stInfo = wx.StaticText( panel, wx.ID_ANY, u"Please see the pyfa wiki on GitHub for information regarding these options.", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.stInfo = wx.StaticText(panel, wx.ID_ANY, u"Please see the pyfa wiki on GitHub for information regarding these options.", wx.DefaultPosition, wx.DefaultSize, 0)
self.stInfo.Wrap(dlgWidth - 50)
- mainSizer.Add( self.stInfo, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 )
+ mainSizer.Add(self.stInfo, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
rbSizer = wx.BoxSizer(wx.HORIZONTAL)
self.rbMode = wx.RadioBox(panel, -1, "Mode", wx.DefaultPosition, wx.DefaultSize, ['Implicit', 'User-supplied details'], 1, wx.RA_SPECIFY_COLS)
@@ -41,65 +41,65 @@ class PFCrestPref ( PreferenceView):
self.rbMode.SetSelection(self.settings.get('mode'))
self.rbServer.SetSelection(self.settings.get('server'))
- rbSizer.Add(self.rbMode, 1, wx.TOP | wx.RIGHT, 5 )
- rbSizer.Add(self.rbServer, 1, wx.ALL, 5 )
+ rbSizer.Add(self.rbMode, 1, wx.TOP | wx.RIGHT, 5)
+ rbSizer.Add(self.rbServer, 1, wx.ALL, 5)
self.rbMode.Bind(wx.EVT_RADIOBOX, self.OnModeChange)
self.rbServer.Bind(wx.EVT_RADIOBOX, self.OnServerChange)
- mainSizer.Add(rbSizer, 1, wx.ALL|wx.EXPAND, 0)
+ mainSizer.Add(rbSizer, 1, wx.ALL | wx.EXPAND, 0)
timeoutSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.stTimout = wx.StaticText( panel, wx.ID_ANY, u"Timeout (seconds):", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stTimout.Wrap( -1 )
+ self.stTimout = wx.StaticText(panel, wx.ID_ANY, u"Timeout (seconds):", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stTimout.Wrap(-1)
- timeoutSizer.Add( self.stTimout, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5 )
+ timeoutSizer.Add(self.stTimout, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
self.intTimeout = IntCtrl(panel, max=300000, limited=True, value=self.settings.get('timeout'))
- timeoutSizer.Add(self.intTimeout, 0, wx.ALL, 5 )
+ timeoutSizer.Add(self.intTimeout, 0, wx.ALL, 5)
self.intTimeout.Bind(wx.lib.intctrl.EVT_INT, self.OnTimeoutChange)
- mainSizer.Add(timeoutSizer, 0, wx.ALL|wx.EXPAND, 0)
+ mainSizer.Add(timeoutSizer, 0, wx.ALL | wx.EXPAND, 0)
- detailsTitle = wx.StaticText( panel, wx.ID_ANY, "CREST client details", wx.DefaultPosition, wx.DefaultSize, 0 )
- detailsTitle.Wrap( -1 )
- detailsTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
+ detailsTitle = wx.StaticText(panel, wx.ID_ANY, "CREST client details", wx.DefaultPosition, wx.DefaultSize, 0)
+ detailsTitle.Wrap(-1)
+ detailsTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
- mainSizer.Add( detailsTitle, 0, wx.ALL, 5 )
- mainSizer.Add( wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0, wx.EXPAND, 5 )
+ mainSizer.Add(detailsTitle, 0, wx.ALL, 5)
+ mainSizer.Add(wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND, 5)
- fgAddrSizer = wx.FlexGridSizer( 2, 2, 0, 0 )
- fgAddrSizer.AddGrowableCol( 1 )
- fgAddrSizer.SetFlexibleDirection( wx.BOTH )
- fgAddrSizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
+ fgAddrSizer = wx.FlexGridSizer(2, 2, 0, 0)
+ fgAddrSizer.AddGrowableCol(1)
+ fgAddrSizer.SetFlexibleDirection(wx.BOTH)
+ fgAddrSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
- self.stSetID = wx.StaticText( panel, wx.ID_ANY, u"Client ID:", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stSetID.Wrap( -1 )
- fgAddrSizer.Add( self.stSetID, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.stSetID = wx.StaticText(panel, wx.ID_ANY, u"Client ID:", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stSetID.Wrap(-1)
+ fgAddrSizer.Add(self.stSetID, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.inputClientID = wx.TextCtrl( panel, wx.ID_ANY, self.settings.get('clientID'), wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.inputClientID = wx.TextCtrl(panel, wx.ID_ANY, self.settings.get('clientID'), wx.DefaultPosition, wx.DefaultSize, 0)
- fgAddrSizer.Add( self.inputClientID, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5 )
+ fgAddrSizer.Add(self.inputClientID, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
- self.stSetSecret = wx.StaticText( panel, wx.ID_ANY, u"Client Secret:", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stSetSecret.Wrap( -1 )
+ self.stSetSecret = wx.StaticText(panel, wx.ID_ANY, u"Client Secret:", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stSetSecret.Wrap(-1)
- fgAddrSizer.Add( self.stSetSecret, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ fgAddrSizer.Add(self.stSetSecret, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.inputClientSecret = wx.TextCtrl( panel, wx.ID_ANY, self.settings.get('clientSecret'), wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.inputClientSecret = wx.TextCtrl(panel, wx.ID_ANY, self.settings.get('clientSecret'), wx.DefaultPosition, wx.DefaultSize, 0)
- fgAddrSizer.Add( self.inputClientSecret, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5 )
+ fgAddrSizer.Add(self.inputClientSecret, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
- self.btnApply = wx.Button( panel, wx.ID_ANY, u"Save Client Settings", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.btnApply = wx.Button(panel, wx.ID_ANY, u"Save Client Settings", wx.DefaultPosition, wx.DefaultSize, 0)
self.btnApply.Bind(wx.EVT_BUTTON, self.OnBtnApply)
- mainSizer.Add( fgAddrSizer, 0, wx.EXPAND, 5)
- mainSizer.Add( self.btnApply, 0, wx.ALIGN_RIGHT, 5)
+ mainSizer.Add(fgAddrSizer, 0, wx.EXPAND, 5)
+ mainSizer.Add(self.btnApply, 0, wx.ALIGN_RIGHT, 5)
self.ToggleProxySettings(self.settings.get('mode'))
- panel.SetSizer( mainSizer )
+ panel.SetSizer(mainSizer)
panel.Layout()
def OnTimeoutChange(self, event):
@@ -135,4 +135,5 @@ class PFCrestPref ( PreferenceView):
def getImage(self):
return BitmapLoader.getBitmap("eve", "gui")
+
PFCrestPref.register()
diff --git a/gui/builtinPreferenceViews/pyfaGaugePreferences.py b/gui/builtinPreferenceViews/pyfaGaugePreferences.py
index 4163eeaf4..c20f0d878 100644
--- a/gui/builtinPreferenceViews/pyfaGaugePreferences.py
+++ b/gui/builtinPreferenceViews/pyfaGaugePreferences.py
@@ -11,12 +11,13 @@ from gui.utils import colorUtils
import gui.utils.drawUtils as drawUtils
###########################################################################
-## Class PFGaugePref
+# Class PFGaugePref
###########################################################################
+
class PFGaugePreview(wx.Window):
- def __init__ (self, parent, id = wx.ID_ANY, value = 0, pos = wx.DefaultPosition, size = wx.DefaultSize, style = 0):
- wx.Window.__init__(self, parent, id, pos = pos, size = size, style = style)
+ def __init__(self, parent, id=wx.ID_ANY, value=0, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0):
+ wx.Window.__init__(self, parent, id, pos=pos, size=size, style=style)
self.value = float(value)
self.oldValue = self.value
@@ -28,14 +29,14 @@ class PFGaugePreview(wx.Window):
self.animDir = 1
self._fractionDigits = 2
- self.colorS = wx.Colour(0,0,0,255)
- self.colorE = wx.Colour(0,0,0,255)
+ self.colorS = wx.Colour(0, 0, 0, 255)
+ self.colorE = wx.Colour(0, 0, 0, 255)
self.gradientStart = 0
- self.bkColor = wx.Colour(0,0,0,255)
- self.SetMinSize((100,-1))
+ self.bkColor = wx.Colour(0, 0, 0, 255)
+ self.SetMinSize((100, -1))
- self.font = wx.FontFromPixelSize((0,13),wx.SWISS, wx.NORMAL, wx.NORMAL, False)
+ self.font = wx.FontFromPixelSize((0, 13), wx.SWISS, wx.NORMAL, wx.NORMAL, False)
self.timerID = wx.NewId()
self.timer = wx.Timer(self, self.timerID)
@@ -56,7 +57,7 @@ class PFGaugePreview(wx.Window):
if self.value > 100:
self.value = 100
self.animDir = -1
- if self.value <0:
+ if self.value < 0:
self.value = 0
self.animDir = 1
self.Refresh()
@@ -79,7 +80,7 @@ class PFGaugePreview(wx.Window):
self.Refresh()
event.Skip()
- def CanAnimate(self, anim = True):
+ def CanAnimate(self, anim=True):
self.animate = anim
if self.timer.IsRunning():
self.timer.Stop()
@@ -97,7 +98,7 @@ class PFGaugePreview(wx.Window):
self.Refresh()
def SetValue(self, value):
- self.value = min(max(value,0),100)
+ self.value = min(max(value, 0), 100)
self.Refresh()
def SetPercentages(self, start, end):
@@ -119,198 +120,198 @@ class PFGaugePreview(wx.Window):
r = copy.copy(rect)
r.width = w
- color = colorUtils.CalculateTransitionColor(self.colorS, self.colorE, float(value)/100)
+ color = colorUtils.CalculateTransitionColor(self.colorS, self.colorE, float(value) / 100)
if self.gradientStart > 0:
- gcolor = colorUtils.BrightenColor(color, float(self.gradientStart) / 100)
- gMid = colorUtils.BrightenColor(color, float(self.gradientStart/2) / 100)
+ gcolor = colorUtils.BrightenColor(color, float(self.gradientStart) / 100)
+ gMid = colorUtils.BrightenColor(color, float(self.gradientStart / 2) / 100)
else:
- gcolor = colorUtils.DarkenColor(color, float(-self.gradientStart) / 100)
- gMid = colorUtils.DarkenColor(color, float(-self.gradientStart/2) / 100)
+ gcolor = colorUtils.DarkenColor(color, float(-self.gradientStart) / 100)
+ gMid = colorUtils.DarkenColor(color, float(-self.gradientStart / 2) / 100)
gBmp = drawUtils.DrawGradientBar(r.width, r.height, gMid, color, gcolor)
- dc.DrawBitmap(gBmp,0,0)
+ dc.DrawBitmap(gBmp, 0, 0)
dc.SetFont(self.font)
r = copy.copy(rect)
- r.left +=1
- r.top +=1
-
+ r.left += 1
+ r.top += 1
formatStr = "{0:." + str(self._fractionDigits) + "f}%"
value = (self.percE - self.percS) * value / (self.percE - self.percS)
value = self.percS + (self.percE - self.percS) * value / 100
- dc.SetTextForeground(wx.Colour(80,80,80))
+ dc.SetTextForeground(wx.Colour(80, 80, 80))
dc.DrawLabel(formatStr.format(value), r, wx.ALIGN_CENTER)
- dc.SetTextForeground(wx.Colour(255,255,255))
+ dc.SetTextForeground(wx.Colour(255, 255, 255))
dc.DrawLabel(formatStr.format(value), rect, wx.ALIGN_CENTER)
-class PFGaugePref ( PreferenceView):
+class PFGaugePref(PreferenceView):
title = "Pyfa Gauge Theme"
- def populatePanel( self, panel ):
+
+ def populatePanel(self, panel):
self.InitDefaultColours()
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- gSizer1 = wx.BoxSizer( wx.HORIZONTAL )
+ gSizer1 = wx.BoxSizer(wx.HORIZONTAL)
- self.st0100 = wx.StaticText( panel, wx.ID_ANY, u"0 - 100", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
- self.st0100.Wrap( -1 )
- gSizer1.Add( self.st0100, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.st0100 = wx.StaticText(panel, wx.ID_ANY, u"0 - 100", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT)
+ self.st0100.Wrap(-1)
+ gSizer1.Add(self.st0100, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp0100S = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer1.Add( self.cp0100S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp0100S = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer1.Add(self.cp0100S, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp0100E = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer1.Add( self.cp0100E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp0100E = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer1.Add(self.cp0100E, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.gauge0100S = PFGaugePreview( panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer1.Add( self.gauge0100S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge0100S = PFGaugePreview(panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer1.Add(self.gauge0100S, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge0100M = PFGaugePreview( panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer1.Add( self.gauge0100M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge0100M = PFGaugePreview(panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer1.Add(self.gauge0100M, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge0100E = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer1.Add( self.gauge0100E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 )
+ self.gauge0100E = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer1.Add(self.gauge0100E, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 5)
- mainSizer.Add( gSizer1, 0, wx.EXPAND, 5 )
+ mainSizer.Add(gSizer1, 0, wx.EXPAND, 5)
- gSizer2 = wx.BoxSizer( wx.HORIZONTAL )
+ gSizer2 = wx.BoxSizer(wx.HORIZONTAL)
- self.st100101 = wx.StaticText( panel, wx.ID_ANY, u"100 - 101", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
- self.st100101.Wrap( -1 )
- gSizer2.Add( self.st100101, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.st100101 = wx.StaticText(panel, wx.ID_ANY, u"100 - 101", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT)
+ self.st100101.Wrap(-1)
+ gSizer2.Add(self.st100101, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp100101S = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer2.Add( self.cp100101S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp100101S = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer2.Add(self.cp100101S, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp100101E = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer2.Add( self.cp100101E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp100101E = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer2.Add(self.cp100101E, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.gauge100101S = PFGaugePreview( panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer2.Add( self.gauge100101S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge100101S = PFGaugePreview(panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer2.Add(self.gauge100101S, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge100101M = PFGaugePreview( panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer2.Add( self.gauge100101M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge100101M = PFGaugePreview(panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer2.Add(self.gauge100101M, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge100101E = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer2.Add( self.gauge100101E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 )
+ self.gauge100101E = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer2.Add(self.gauge100101E, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 5)
- mainSizer.Add( gSizer2, 0, wx.EXPAND, 5 )
+ mainSizer.Add(gSizer2, 0, wx.EXPAND, 5)
- gSizer3 = wx.BoxSizer( wx.HORIZONTAL )
+ gSizer3 = wx.BoxSizer(wx.HORIZONTAL)
- self.st101103 = wx.StaticText( panel, wx.ID_ANY, u"101 - 103", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
- self.st101103.Wrap( -1 )
- gSizer3.Add( self.st101103, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.st101103 = wx.StaticText(panel, wx.ID_ANY, u"101 - 103", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT)
+ self.st101103.Wrap(-1)
+ gSizer3.Add(self.st101103, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp101103S = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer3.Add( self.cp101103S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp101103S = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer3.Add(self.cp101103S, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp101103E = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer3.Add( self.cp101103E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp101103E = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer3.Add(self.cp101103E, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.gauge101103S = PFGaugePreview( panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer3.Add( self.gauge101103S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge101103S = PFGaugePreview(panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer3.Add(self.gauge101103S, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge101103M = PFGaugePreview( panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer3.Add( self.gauge101103M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge101103M = PFGaugePreview(panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer3.Add(self.gauge101103M, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge101103E = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer3.Add( self.gauge101103E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 )
+ self.gauge101103E = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer3.Add(self.gauge101103E, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 5)
- mainSizer.Add( gSizer3, 0, wx.EXPAND, 5 )
+ mainSizer.Add(gSizer3, 0, wx.EXPAND, 5)
- gSizer4 = wx.BoxSizer( wx.HORIZONTAL )
+ gSizer4 = wx.BoxSizer(wx.HORIZONTAL)
- self.st103105 = wx.StaticText( panel, wx.ID_ANY, u"103 - 105", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
- self.st103105.Wrap( -1 )
- gSizer4.Add( self.st103105, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.st103105 = wx.StaticText(panel, wx.ID_ANY, u"103 - 105", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT)
+ self.st103105.Wrap(-1)
+ gSizer4.Add(self.st103105, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp103105S = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer4.Add( self.cp103105S, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp103105S = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer4.Add(self.cp103105S, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.cp103105E = wx.ColourPickerCtrl( panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL )
- gSizer4.Add( self.cp103105E, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.cp103105E = wx.ColourPickerCtrl(panel, wx.ID_ANY, wx.BLACK, wx.DefaultPosition, wx.DefaultSize, wx.CLRP_DEFAULT_STYLE | wx.CLRP_SHOW_LABEL)
+ gSizer4.Add(self.cp103105E, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.gauge103105S = PFGaugePreview( panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer4.Add( self.gauge103105S, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge103105S = PFGaugePreview(panel, wx.ID_ANY, 33, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer4.Add(self.gauge103105S, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge103105M = PFGaugePreview( panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer4.Add( self.gauge103105M, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 )
+ self.gauge103105M = PFGaugePreview(panel, wx.ID_ANY, 66, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer4.Add(self.gauge103105M, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5)
- self.gauge103105E = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER )
- gSizer4.Add( self.gauge103105E, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.LEFT, 5 )
+ self.gauge103105E = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.SIMPLE_BORDER)
+ gSizer4.Add(self.gauge103105E, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 5)
- mainSizer.Add( gSizer4, 0, wx.EXPAND, 5 )
+ mainSizer.Add(gSizer4, 0, wx.EXPAND, 5)
- footerSizer = wx.BoxSizer( wx.VERTICAL )
+ footerSizer = wx.BoxSizer(wx.VERTICAL)
- self.sl1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- footerSizer.Add( self.sl1, 0, wx.EXPAND |wx.ALL, 5 )
+ self.sl1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ footerSizer.Add(self.sl1, 0, wx.EXPAND | wx.ALL, 5)
- previewSizer = wx.BoxSizer( wx.HORIZONTAL )
+ previewSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.wndPreview0100 = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
- previewSizer.Add( self.wndPreview0100, 1, wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.wndPreview0100 = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
+ previewSizer.Add(self.wndPreview0100, 1, wx.ALIGN_CENTER_VERTICAL, 5)
- self.wndPreview100101 = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
- previewSizer.Add( self.wndPreview100101, 1, wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.wndPreview100101 = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
+ previewSizer.Add(self.wndPreview100101, 1, wx.ALIGN_CENTER_VERTICAL, 5)
- self.wndPreview101103 = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
- previewSizer.Add( self.wndPreview101103, 1, wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.wndPreview101103 = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
+ previewSizer.Add(self.wndPreview101103, 1, wx.ALIGN_CENTER_VERTICAL, 5)
- self.wndPreview103105 = PFGaugePreview( panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
- previewSizer.Add( self.wndPreview103105, 1, wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.wndPreview103105 = PFGaugePreview(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, 0)
+ previewSizer.Add(self.wndPreview103105, 1, wx.ALIGN_CENTER_VERTICAL, 5)
- footerSizer.Add( previewSizer, 1, wx.EXPAND | wx.ALL, 5 )
+ footerSizer.Add(previewSizer, 1, wx.EXPAND | wx.ALL, 5)
- buttonsSizer = wx.BoxSizer( wx.HORIZONTAL )
+ buttonsSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.cbLink = wx.CheckBox( panel, wx.ID_ANY, u"Link Colors", wx.DefaultPosition, wx.DefaultSize, 0 )
- buttonsSizer.Add( self.cbLink, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 5 )
+ self.cbLink = wx.CheckBox(panel, wx.ID_ANY, u"Link Colors", wx.DefaultPosition, wx.DefaultSize, 0)
+ buttonsSizer.Add(self.cbLink, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 5)
- self.sliderGradientStart = wx.Slider( panel, wx.ID_ANY, self.gradientStart, -100, 100, wx.DefaultPosition, (127,-1), wx.SL_HORIZONTAL|wx.SL_LABELS )
- buttonsSizer.Add( self.sliderGradientStart, 1, wx.EXPAND | wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.sliderGradientStart = wx.Slider(panel, wx.ID_ANY, self.gradientStart, -100, 100, wx.DefaultPosition, (127, -1), wx.SL_HORIZONTAL | wx.SL_LABELS)
+ buttonsSizer.Add(self.sliderGradientStart, 1, wx.EXPAND | wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.btnRestore = wx.Button( panel, wx.ID_ANY, u"Restore Defaults", wx.DefaultPosition, wx.DefaultSize, 0 )
- buttonsSizer.Add( self.btnRestore, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.btnRestore = wx.Button(panel, wx.ID_ANY, u"Restore Defaults", wx.DefaultPosition, wx.DefaultSize, 0)
+ buttonsSizer.Add(self.btnRestore, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.btnDump = wx.Button( panel, wx.ID_ANY, u"Dump Colors", wx.DefaultPosition, wx.DefaultSize, 0 )
- buttonsSizer.Add( self.btnDump, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.btnDump = wx.Button(panel, wx.ID_ANY, u"Dump Colors", wx.DefaultPosition, wx.DefaultSize, 0)
+ buttonsSizer.Add(self.btnDump, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.btnOk = wx.Button( panel, wx.ID_ANY, u"Apply", wx.DefaultPosition, wx.DefaultSize, 0 )
- buttonsSizer.Add( self.btnOk, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.btnOk = wx.Button(panel, wx.ID_ANY, u"Apply", wx.DefaultPosition, wx.DefaultSize, 0)
+ buttonsSizer.Add(self.btnOk, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- footerSizer.Add( buttonsSizer, 1, wx.ALIGN_RIGHT, 5 )
- mainSizer.Add( footerSizer, 0, wx.EXPAND, 5 )
+ footerSizer.Add(buttonsSizer, 1, wx.ALIGN_RIGHT, 5)
+ mainSizer.Add(footerSizer, 0, wx.EXPAND, 5)
- panel.SetSizer( mainSizer )
+ panel.SetSizer(mainSizer)
self.SetColours()
-# self.Fit()
-# self.Layout()
+ # self.Fit()
+ # self.Layout()
self.sliderGradientStart.Bind(wx.EVT_SCROLL, self.OnGradientStartScroll)
self.btnRestore.Bind(wx.EVT_BUTTON, self.RestoreDefaults)
self.btnDump.Bind(wx.EVT_BUTTON, self.DumpColours)
self.btnOk.Bind(wx.EVT_BUTTON, self.OnOk)
- self.cp0100S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
- self.cp0100E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
+ self.cp0100S.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
+ self.cp0100E.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
- self.cp100101S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
- self.cp100101E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
+ self.cp100101S.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
+ self.cp100101E.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
- self.cp101103S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
- self.cp101103E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
+ self.cp101103S.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
+ self.cp101103E.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
- self.cp103105S.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
- self.cp103105E.Bind( wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged )
+ self.cp103105S.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
+ self.cp103105E.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnColourChanged)
def getImage(self):
return BitmapLoader.getBitmap("pref-gauges_big", "gui")
@@ -344,7 +345,6 @@ class PFGaugePref ( PreferenceView):
self.gauge0100M.SetGradientStart(self.sliderGradientStart.GetValue())
self.gauge0100E.SetGradientStart(self.sliderGradientStart.GetValue())
-
self.cp100101S.SetColour(self.c100101S)
self.cp100101E.SetColour(self.c100101E)
self.gauge100101S.SetColour(self.c100101S, self.c100101E)
@@ -363,7 +363,6 @@ class PFGaugePref ( PreferenceView):
self.gauge100101M.SetGradientStart(self.sliderGradientStart.GetValue())
self.gauge100101E.SetGradientStart(self.sliderGradientStart.GetValue())
-
self.cp101103S.SetColour(self.c101103S)
self.cp101103E.SetColour(self.c101103E)
self.gauge101103S.SetColour(self.c101103S, self.c101103E)
@@ -378,7 +377,6 @@ class PFGaugePref ( PreferenceView):
self.gauge101103M.SetGradientStart(self.sliderGradientStart.GetValue())
self.gauge101103E.SetGradientStart(self.sliderGradientStart.GetValue())
-
self.cp103105S.SetColour(self.c103105S)
self.cp103105E.SetColour(self.c103105E)
self.gauge103105S.SetColour(self.c103105S, self.c103105E)
@@ -406,7 +404,7 @@ class PFGaugePref ( PreferenceView):
self.wndPreview101103.SetGradientStart(self.sliderGradientStart.GetValue())
self.wndPreview103105.SetColour(self.c103105S, self.c103105E)
- self.wndPreview103105.SetPercentages(103,104.99)
+ self.wndPreview103105.SetPercentages(103, 104.99)
self.wndPreview103105.SetGradientStart(self.sliderGradientStart.GetValue())
def OnGradientStartScroll(self, event):
@@ -415,15 +413,15 @@ class PFGaugePref ( PreferenceView):
event.Skip()
def OnOk(self, event):
- #Apply New Settings
+ # Apply New Settings
event.Skip()
def DumpColours(self, event):
- print "Gradient start: %d" % self.sliderGradientStart.GetValue()
- print " 0 <-> 100 Start: ", self.c0100S, " End: ", self.c0100E
- print "100 <-> 101 Start: ", self.c100101S, " End: ", self.c100101E
- print "101 <-> 103 Start: ", self.c101103S, " End: ", self.c101103E
- print "103 <-> 105 Start: ", self.c103105S, " End: ", self.c103105E
+ print("Gradient start: %d" % self.sliderGradientStart.GetValue())
+ print(" 0 <-> 100 Start: ", self.c0100S, " End: ", self.c0100E)
+ print("100 <-> 101 Start: ", self.c100101S, " End: ", self.c100101E)
+ print("101 <-> 103 Start: ", self.c101103S, " End: ", self.c101103E)
+ print("103 <-> 105 Start: ", self.c103105S, " End: ", self.c103105E)
event.Skip()
@@ -478,7 +476,8 @@ class PFGaugePref ( PreferenceView):
self.SetColours()
event.Skip()
- def __del__( self ):
+ def __del__(self):
pass
+
PFGaugePref.register()
diff --git a/gui/builtinPreferenceViews/pyfaGeneralPreferences.py b/gui/builtinPreferenceViews/pyfaGeneralPreferences.py
index 4ea5924bc..35ea9cb1d 100644
--- a/gui/builtinPreferenceViews/pyfaGeneralPreferences.py
+++ b/gui/builtinPreferenceViews/pyfaGeneralPreferences.py
@@ -8,67 +8,68 @@ import gui.globalEvents as GE
from service.settings import SettingsProvider
from service.fit import Fit
-class PFGeneralPref ( PreferenceView):
+
+class PFGeneralPref(PreferenceView):
title = "General"
- def populatePanel( self, panel ):
+ def populatePanel(self, panel):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.dirtySettings = False
self.openFitsSettings = SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []})
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stTitle.Wrap( -1 )
- self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
+ self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stTitle.Wrap(-1)
+ self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
- mainSizer.Add( self.stTitle, 0, wx.ALL, 5 )
+ mainSizer.Add(self.stTitle, 0, wx.ALL, 5)
- self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 )
+ self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
- self.cbGlobalChar = wx.CheckBox( panel, wx.ID_ANY, u"Use global character", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbGlobalChar, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbGlobalChar = wx.CheckBox(panel, wx.ID_ANY, u"Use global character", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbGlobalChar, 0, wx.ALL | wx.EXPAND, 5)
- self.cbGlobalDmgPattern = wx.CheckBox( panel, wx.ID_ANY, u"Use global damage pattern", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbGlobalDmgPattern, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbGlobalDmgPattern = wx.CheckBox(panel, wx.ID_ANY, u"Use global damage pattern", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbGlobalDmgPattern, 0, wx.ALL | wx.EXPAND, 5)
- self.cbGlobalForceReload = wx.CheckBox( panel, wx.ID_ANY, u"Factor in reload time", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbGlobalForceReload, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbGlobalForceReload = wx.CheckBox(panel, wx.ID_ANY, u"Factor in reload time", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbGlobalForceReload, 0, wx.ALL | wx.EXPAND, 5)
- self.cbCompactSkills = wx.CheckBox( panel, wx.ID_ANY, u"Compact skills needed tooltip", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbCompactSkills, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbCompactSkills = wx.CheckBox(panel, wx.ID_ANY, u"Compact skills needed tooltip", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbCompactSkills, 0, wx.ALL | wx.EXPAND, 5)
- self.cbFitColorSlots = wx.CheckBox( panel, wx.ID_ANY, u"Color fitting view by slot", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbFitColorSlots, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbFitColorSlots = wx.CheckBox(panel, wx.ID_ANY, u"Color fitting view by slot", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbFitColorSlots, 0, wx.ALL | wx.EXPAND, 5)
- self.cbReopenFits = wx.CheckBox( panel, wx.ID_ANY, u"Reopen previous fits on startup", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbReopenFits, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbReopenFits = wx.CheckBox(panel, wx.ID_ANY, u"Reopen previous fits on startup", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbReopenFits, 0, wx.ALL | wx.EXPAND, 5)
- self.cbRackSlots = wx.CheckBox( panel, wx.ID_ANY, u"Separate Racks", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbRackSlots, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbRackSlots = wx.CheckBox(panel, wx.ID_ANY, u"Separate Racks", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbRackSlots, 0, wx.ALL | wx.EXPAND, 5)
- labelSizer = wx.BoxSizer( wx.VERTICAL )
- self.cbRackLabels = wx.CheckBox( panel, wx.ID_ANY, u"Show Rack Labels", wx.DefaultPosition, wx.DefaultSize, 0 )
- labelSizer.Add( self.cbRackLabels, 0, wx.ALL|wx.EXPAND, 5 )
- mainSizer.Add( labelSizer, 0, wx.LEFT|wx.EXPAND, 30 )
+ labelSizer = wx.BoxSizer(wx.VERTICAL)
+ self.cbRackLabels = wx.CheckBox(panel, wx.ID_ANY, u"Show Rack Labels", wx.DefaultPosition, wx.DefaultSize, 0)
+ labelSizer.Add(self.cbRackLabels, 0, wx.ALL | wx.EXPAND, 5)
+ mainSizer.Add(labelSizer, 0, wx.LEFT | wx.EXPAND, 30)
- self.cbShowTooltip = wx.CheckBox( panel, wx.ID_ANY, u"Show tab tooltips", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbShowTooltip, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbShowTooltip = wx.CheckBox(panel, wx.ID_ANY, u"Show tab tooltips", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbShowTooltip, 0, wx.ALL | wx.EXPAND, 5)
- self.cbMarketShortcuts = wx.CheckBox( panel, wx.ID_ANY, u"Show market shortcuts", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbMarketShortcuts, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbMarketShortcuts = wx.CheckBox(panel, wx.ID_ANY, u"Show market shortcuts", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbMarketShortcuts, 0, wx.ALL | wx.EXPAND, 5)
- self.cbGaugeAnimation = wx.CheckBox( panel, wx.ID_ANY, u"Animate gauges", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbGaugeAnimation, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbGaugeAnimation = wx.CheckBox(panel, wx.ID_ANY, u"Animate gauges", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbGaugeAnimation, 0, wx.ALL | wx.EXPAND, 5)
- self.cbExportCharges = wx.CheckBox( panel, wx.ID_ANY, u"Export loaded charges", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbExportCharges, 0, wx.ALL|wx.EXPAND, 5 )
-
- self.cbOpenFitInNew = wx.CheckBox( panel, wx.ID_ANY, u"Open fittings in a new page by default", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbOpenFitInNew, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbExportCharges = wx.CheckBox(panel, wx.ID_ANY, u"Export loaded charges", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbExportCharges, 0, wx.ALL | wx.EXPAND, 5)
- defCharSizer = wx.BoxSizer( wx.HORIZONTAL )
+ self.cbOpenFitInNew = wx.CheckBox(panel, wx.ID_ANY, u"Open fittings in a new page by default", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbOpenFitInNew, 0, wx.ALL | wx.EXPAND, 5)
+
+ wx.BoxSizer(wx.HORIZONTAL)
self.sFit = Fit.getInstance()
@@ -102,7 +103,7 @@ class PFGeneralPref ( PreferenceView):
self.cbRackLabels.Enable(self.sFit.serviceFittingOptions["rackSlots"] or False)
- panel.SetSizer( mainSizer )
+ panel.SetSizer(mainSizer)
panel.Layout()
def onCBGlobalColorBySlot(self, event):
@@ -163,11 +164,12 @@ class PFGeneralPref ( PreferenceView):
def onCBExportCharges(self, event):
self.sFit.serviceFittingOptions["exportCharges"] = self.cbExportCharges.GetValue()
-
+
def onCBOpenFitInNew(self, event):
self.sFit.serviceFittingOptions["openFitInNew"] = self.cbOpenFitInNew.GetValue()
def getImage(self):
return BitmapLoader.getBitmap("prefs_settings", "gui")
-PFGeneralPref.register()
\ No newline at end of file
+
+PFGeneralPref.register()
diff --git a/gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py b/gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py
index f018efe8f..588c9eead 100644
--- a/gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py
+++ b/gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py
@@ -5,79 +5,76 @@ from gui.preferenceView import PreferenceView
from gui.bitmapLoader import BitmapLoader
import gui.mainFrame
-import gui.globalEvents as GE
from service.settings import HTMLExportSettings
-class PFHTMLExportPref ( PreferenceView):
+class PFHTMLExportPref(PreferenceView):
title = "HTML Export"
- desc = "HTML Export (File > Export HTML) allows you to export your entire fitting "+\
- "database into an HTML file at the specified location. This file can be "+\
- "used in the in-game browser to easily open and import your fits, or used "+\
- "in a regular web browser to open them at NULL-SEC.com or Osmium."
- desc2 = "Enabling automatic exporting will update the HTML file after any change "+\
- "to a fit is made. Under certain circumstance, this may cause performance issues."
- desc4 = "Export Fittings in a minmal HTML Version, just containing the Fittingslinks " +\
- "without any visual styling or javscript features"
+ desc = ("HTML Export (File > Export HTML) allows you to export your entire fitting "
+ "database into an HTML file at the specified location. This file can be "
+ "used in the in-game browser to easily open and import your fits, or used "
+ "in a regular web browser to open them at NULL-SEC.com or Osmium.")
+ desc2 = ("Enabling automatic exporting will update the HTML file after any change "
+ "to a fit is made. Under certain circumstance, this may cause performance issues.")
+ desc4 = ("Export Fittings in a minmal HTML Version, just containing the Fittingslinks "
+ "without any visual styling or javscript features")
- def populatePanel( self, panel ):
+ def populatePanel(self, panel):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.HTMLExportSettings = HTMLExportSettings.getInstance()
self.dirtySettings = False
dlgWidth = panel.GetParent().GetParent().ClientSize.width
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stTitle.Wrap( -1 )
- self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
- mainSizer.Add( self.stTitle, 0, wx.ALL, 5 )
+ self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stTitle.Wrap(-1)
+ self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
+ mainSizer.Add(self.stTitle, 0, wx.ALL, 5)
- self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 )
+ self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
- self.stDesc = wx.StaticText( panel, wx.ID_ANY, self.desc, wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.stDesc = wx.StaticText(panel, wx.ID_ANY, self.desc, wx.DefaultPosition, wx.DefaultSize, 0)
self.stDesc.Wrap(dlgWidth - 50)
- mainSizer.Add( self.stDesc, 0, wx.ALL, 5 )
+ mainSizer.Add(self.stDesc, 0, wx.ALL, 5)
- self.PathLinkCtrl = wx.HyperlinkCtrl( panel, wx.ID_ANY, self.HTMLExportSettings.getPath(), u'file:///{}'.format(self.HTMLExportSettings.getPath()), wx.DefaultPosition, wx.DefaultSize, wx.HL_ALIGN_LEFT|wx.NO_BORDER|wx.HL_CONTEXTMENU )
- mainSizer.Add( self.PathLinkCtrl, 0, wx.ALL|wx.EXPAND, 5)
+ self.PathLinkCtrl = wx.HyperlinkCtrl(panel, wx.ID_ANY, self.HTMLExportSettings.getPath(), u'file:///{}'.format(self.HTMLExportSettings.getPath()), wx.DefaultPosition, wx.DefaultSize, wx.HL_ALIGN_LEFT | wx.NO_BORDER | wx.HL_CONTEXTMENU)
+ mainSizer.Add(self.PathLinkCtrl, 0, wx.ALL | wx.EXPAND, 5)
- self.fileSelectDialog = wx.FileDialog(None, "Save Fitting As...", wildcard = "EVE IGB HTML fitting file (*.html)|*.html", style = wx.FD_SAVE)
+ self.fileSelectDialog = wx.FileDialog(None, "Save Fitting As...", wildcard="EVE IGB HTML fitting file (*.html)|*.html", style=wx.FD_SAVE)
self.fileSelectDialog.SetPath(self.HTMLExportSettings.getPath())
- self.fileSelectDialog.SetFilename(os.path.basename(self.HTMLExportSettings.getPath()));
+ self.fileSelectDialog.SetFilename(os.path.basename(self.HTMLExportSettings.getPath()))
- self.fileSelectButton = wx.Button(panel, -1, "Set export destination", pos=(0,0))
+ self.fileSelectButton = wx.Button(panel, -1, "Set export destination", pos=(0, 0))
self.fileSelectButton.Bind(wx.EVT_BUTTON, self.selectHTMLExportFilePath)
- mainSizer.Add( self.fileSelectButton, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
+ mainSizer.Add(self.fileSelectButton, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.stDesc2 = wx.StaticText( panel, wx.ID_ANY, self.desc2, wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.stDesc2 = wx.StaticText(panel, wx.ID_ANY, self.desc2, wx.DefaultPosition, wx.DefaultSize, 0)
self.stDesc2.Wrap(dlgWidth - 50)
- mainSizer.Add( self.stDesc2, 0, wx.ALL, 5 )
+ mainSizer.Add(self.stDesc2, 0, wx.ALL, 5)
- self.exportEnabled = wx.CheckBox( panel, wx.ID_ANY, u"Enable automatic HTML export", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.exportEnabled = wx.CheckBox(panel, wx.ID_ANY, u"Enable automatic HTML export", wx.DefaultPosition, wx.DefaultSize, 0)
self.exportEnabled.SetValue(self.HTMLExportSettings.getEnabled())
self.exportEnabled.Bind(wx.EVT_CHECKBOX, self.OnExportEnabledChange)
- mainSizer.Add( self.exportEnabled, 0, wx.ALL|wx.EXPAND, 5 )
+ mainSizer.Add(self.exportEnabled, 0, wx.ALL | wx.EXPAND, 5)
-
-
- self.stDesc4 = wx.StaticText( panel, wx.ID_ANY, self.desc4, wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.stDesc4 = wx.StaticText(panel, wx.ID_ANY, self.desc4, wx.DefaultPosition, wx.DefaultSize, 0)
self.stDesc4.Wrap(dlgWidth - 50)
- mainSizer.Add( self.stDesc4, 0, wx.ALL, 5 )
+ mainSizer.Add(self.stDesc4, 0, wx.ALL, 5)
- self.exportMinimal = wx.CheckBox( panel, wx.ID_ANY, u"Enable minimal export Format", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.exportMinimal = wx.CheckBox(panel, wx.ID_ANY, u"Enable minimal export Format", wx.DefaultPosition, wx.DefaultSize, 0)
self.exportMinimal.SetValue(self.HTMLExportSettings.getMinimalEnabled())
self.exportMinimal.Bind(wx.EVT_CHECKBOX, self.OnMinimalEnabledChange)
- mainSizer.Add( self.exportMinimal, 0, wx.ALL|wx.EXPAND, 5 )
+ mainSizer.Add(self.exportMinimal, 0, wx.ALL | wx.EXPAND, 5)
- panel.SetSizer( mainSizer )
+ panel.SetSizer(mainSizer)
panel.Layout()
def setPathLinkCtrlValues(self, path):
self.PathLinkCtrl.SetLabel(self.HTMLExportSettings.getPath())
self.PathLinkCtrl.SetURL(u'file:///{}'.format(self.HTMLExportSettings.getPath()))
- self.PathLinkCtrl.SetSize(wx.DefaultSize);
+ self.PathLinkCtrl.SetSize(wx.DefaultSize)
self.PathLinkCtrl.Refresh()
def selectHTMLExportFilePath(self, event):
@@ -95,4 +92,5 @@ class PFHTMLExportPref ( PreferenceView):
def getImage(self):
return BitmapLoader.getBitmap("prefs_html", "gui")
+
PFHTMLExportPref.register()
diff --git a/gui/builtinPreferenceViews/pyfaNetworkPreferences.py b/gui/builtinPreferenceViews/pyfaNetworkPreferences.py
index cda14dd3b..c8da61bc3 100644
--- a/gui/builtinPreferenceViews/pyfaNetworkPreferences.py
+++ b/gui/builtinPreferenceViews/pyfaNetworkPreferences.py
@@ -7,48 +7,49 @@ import gui.mainFrame
from service.settings import NetworkSettings
from service.network import Network
-class PFNetworkPref ( PreferenceView):
+
+class PFNetworkPref(PreferenceView):
title = "Network"
- def populatePanel( self, panel ):
+ def populatePanel(self, panel):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = NetworkSettings.getInstance()
self.network = Network.getInstance()
self.dirtySettings = False
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stTitle.Wrap( -1 )
- self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
+ self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stTitle.Wrap(-1)
+ self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
- mainSizer.Add( self.stTitle, 0, wx.ALL, 5 )
+ mainSizer.Add(self.stTitle, 0, wx.ALL, 5)
- self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 )
+ self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
- self.cbEnableNetwork = wx.CheckBox( panel, wx.ID_ANY, u"Enable Network", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.cbEnableNetwork, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbEnableNetwork = wx.CheckBox(panel, wx.ID_ANY, u"Enable Network", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.cbEnableNetwork, 0, wx.ALL | wx.EXPAND, 5)
- subSizer = wx.BoxSizer( wx.VERTICAL )
- self.cbEve = wx.CheckBox( panel, wx.ID_ANY, u"EVE Servers (API && CREST import)", wx.DefaultPosition, wx.DefaultSize, 0 )
- subSizer.Add( self.cbEve, 0, wx.ALL|wx.EXPAND, 5 )
+ subSizer = wx.BoxSizer(wx.VERTICAL)
+ self.cbEve = wx.CheckBox(panel, wx.ID_ANY, u"EVE Servers (API && CREST import)", wx.DefaultPosition, wx.DefaultSize, 0)
+ subSizer.Add(self.cbEve, 0, wx.ALL | wx.EXPAND, 5)
- self.cbPricing = wx.CheckBox( panel, wx.ID_ANY, u"Pricing updates", wx.DefaultPosition, wx.DefaultSize, 0 )
- subSizer.Add( self.cbPricing, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbPricing = wx.CheckBox(panel, wx.ID_ANY, u"Pricing updates", wx.DefaultPosition, wx.DefaultSize, 0)
+ subSizer.Add(self.cbPricing, 0, wx.ALL | wx.EXPAND, 5)
- self.cbPyfaUpdate = wx.CheckBox( panel, wx.ID_ANY, u"Pyfa Update checks", wx.DefaultPosition, wx.DefaultSize, 0 )
- subSizer.Add( self.cbPyfaUpdate, 0, wx.ALL|wx.EXPAND, 5 )
+ self.cbPyfaUpdate = wx.CheckBox(panel, wx.ID_ANY, u"Pyfa Update checks", wx.DefaultPosition, wx.DefaultSize, 0)
+ subSizer.Add(self.cbPyfaUpdate, 0, wx.ALL | wx.EXPAND, 5)
- mainSizer.Add( subSizer, 0, wx.LEFT|wx.EXPAND, 30 )
+ mainSizer.Add(subSizer, 0, wx.LEFT | wx.EXPAND, 30)
- proxyTitle = wx.StaticText( panel, wx.ID_ANY, "Proxy settings", wx.DefaultPosition, wx.DefaultSize, 0 )
- proxyTitle.Wrap( -1 )
- proxyTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
+ proxyTitle = wx.StaticText(panel, wx.ID_ANY, "Proxy settings", wx.DefaultPosition, wx.DefaultSize, 0)
+ proxyTitle.Wrap(-1)
+ proxyTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
- mainSizer.Add( proxyTitle, 0, wx.ALL, 5 )
- mainSizer.Add( wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0, wx.EXPAND, 5 )
+ mainSizer.Add(proxyTitle, 0, wx.ALL, 5)
+ mainSizer.Add(wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND, 5)
self.cbEnableNetwork.SetValue(self.settings.isEnabled(self.network.ENABLED))
self.cbEve.SetValue(self.settings.isEnabled(self.network.EVE))
@@ -62,9 +63,9 @@ class PFNetworkPref ( PreferenceView):
self.toggleNetworks(self.cbEnableNetwork.GetValue())
- #---------------
+ # ---------------
# Proxy
- #---------------
+ # ---------------
self.nMode = self.settings.getMode()
self.nAddr = self.settings.getAddress()
@@ -74,46 +75,44 @@ class PFNetworkPref ( PreferenceView):
if self.nAuth is None:
self.nAuth = ("", "") # we don't want None here, it should be a tuple
- ptypeSizer = wx.BoxSizer( wx.HORIZONTAL )
+ ptypeSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.stPType = wx.StaticText( panel, wx.ID_ANY, u"Mode:", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stPType.Wrap( -1 )
- ptypeSizer.Add( self.stPType, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.stPType = wx.StaticText(panel, wx.ID_ANY, u"Mode:", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stPType.Wrap(-1)
+ ptypeSizer.Add(self.stPType, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.chProxyTypeChoices = [ u"No proxy", u"Auto-detected proxy settings", u"Manual proxy settings" ]
- self.chProxyType = wx.Choice( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, self.chProxyTypeChoices, 0 )
+ self.chProxyTypeChoices = [u"No proxy", u"Auto-detected proxy settings", u"Manual proxy settings"]
+ self.chProxyType = wx.Choice(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, self.chProxyTypeChoices, 0)
+ self.chProxyType.SetSelection(self.nMode)
- self.chProxyType.SetSelection( self.nMode )
+ ptypeSizer.Add(self.chProxyType, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- ptypeSizer.Add( self.chProxyType, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ mainSizer.Add(ptypeSizer, 0, wx.EXPAND, 5)
- mainSizer.Add( ptypeSizer, 0, wx.EXPAND, 5 )
+ fgAddrSizer = wx.FlexGridSizer(2, 2, 0, 0)
+ fgAddrSizer.AddGrowableCol(1)
+ fgAddrSizer.SetFlexibleDirection(wx.BOTH)
+ fgAddrSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
- fgAddrSizer = wx.FlexGridSizer( 2, 2, 0, 0 )
- fgAddrSizer.AddGrowableCol( 1 )
- fgAddrSizer.SetFlexibleDirection( wx.BOTH )
- fgAddrSizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
+ self.stPSetAddr = wx.StaticText(panel, wx.ID_ANY, u"Addr:", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stPSetAddr.Wrap(-1)
+ fgAddrSizer.Add(self.stPSetAddr, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
+ self.editProxySettingsAddr = wx.TextCtrl(panel, wx.ID_ANY, self.nAddr, wx.DefaultPosition, wx.DefaultSize, 0)
- self.stPSetAddr = wx.StaticText( panel, wx.ID_ANY, u"Addr:", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stPSetAddr.Wrap( -1 )
- fgAddrSizer.Add( self.stPSetAddr, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ fgAddrSizer.Add(self.editProxySettingsAddr, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
- self.editProxySettingsAddr = wx.TextCtrl( panel, wx.ID_ANY, self.nAddr, wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.stPSetPort = wx.StaticText(panel, wx.ID_ANY, u"Port:", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stPSetPort.Wrap(-1)
- fgAddrSizer.Add( self.editProxySettingsAddr, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5 )
+ fgAddrSizer.Add(self.stPSetPort, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.stPSetPort = wx.StaticText( panel, wx.ID_ANY, u"Port:", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stPSetPort.Wrap( -1 )
+ self.editProxySettingsPort = wx.TextCtrl(panel, wx.ID_ANY, self.nPort, wx.DefaultPosition, wx.DefaultSize, 0)
- fgAddrSizer.Add( self.stPSetPort, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ fgAddrSizer.Add(self.editProxySettingsPort, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
- self.editProxySettingsPort = wx.TextCtrl( panel, wx.ID_ANY, self.nPort, wx.DefaultPosition, wx.DefaultSize, 0 )
-
- fgAddrSizer.Add( self.editProxySettingsPort, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5 )
-
- mainSizer.Add( fgAddrSizer, 0, wx.EXPAND, 5)
+ mainSizer.Add(fgAddrSizer, 0, wx.EXPAND, 5)
# proxy auth information: login and pass
self.stPSetLogin = wx.StaticText(panel, wx.ID_ANY, u"Username:", wx.DefaultPosition, wx.DefaultSize, 0)
@@ -130,23 +129,23 @@ class PFNetworkPref ( PreferenceView):
pAuthSizer.Add(self.editProxySettingsPassword, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
mainSizer.Add(pAuthSizer, 0, wx.EXPAND, 5)
- self.stPSAutoDetected = wx.StaticText( panel, wx.ID_ANY, u"Auto-detected: ", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stPSAutoDetected.Wrap( -1 )
- mainSizer.Add( self.stPSAutoDetected, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.stPSAutoDetected = wx.StaticText(panel, wx.ID_ANY, u"Auto-detected: ", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stPSAutoDetected.Wrap(-1)
+ mainSizer.Add(self.stPSAutoDetected, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
- btnSizer = wx.BoxSizer( wx.HORIZONTAL )
- btnSizer.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 )
+ btnSizer = wx.BoxSizer(wx.HORIZONTAL)
+ btnSizer.AddSpacer((0, 0), 1, wx.EXPAND, 5)
- self.btnApply = wx.Button( panel, wx.ID_ANY, u"Apply Proxy Settings", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.btnApply = wx.Button(panel, wx.ID_ANY, u"Apply Proxy Settings", wx.DefaultPosition, wx.DefaultSize, 0)
- btnSizer.Add( self.btnApply, 0, wx.ALL, 5 )
+ btnSizer.Add(self.btnApply, 0, wx.ALL, 5)
- mainSizer.Add(btnSizer, 0, wx.EXPAND,5)
+ mainSizer.Add(btnSizer, 0, wx.EXPAND, 5)
proxy = self.settings.autodetect()
if proxy is not None:
- addr,port = proxy
+ addr, port = proxy
txt = addr + ":" + str(port)
else:
txt = "None"
@@ -160,7 +159,6 @@ class PFNetworkPref ( PreferenceView):
self.editProxySettingsLogin.Bind(wx.EVT_TEXT, self.OnEditPSLoginText)
self.editProxySettingsPassword.Bind(wx.EVT_TEXT, self.OnEditPSPasswordText)
-
self.btnApply.Bind(wx.EVT_BUTTON, self.OnBtnApply)
self.UpdateApplyButtonState()
@@ -170,7 +168,7 @@ class PFNetworkPref ( PreferenceView):
else:
self.ToggleProxySettings(True)
- panel.SetSizer( mainSizer )
+ panel.SetSizer(mainSizer)
panel.Layout()
def toggleNetworks(self, toggle):
@@ -265,4 +263,5 @@ class PFNetworkPref ( PreferenceView):
def getImage(self):
return BitmapLoader.getBitmap("prefs_proxy", "gui")
+
PFNetworkPref.register()
diff --git a/gui/builtinPreferenceViews/pyfaUpdatePreferences.py b/gui/builtinPreferenceViews/pyfaUpdatePreferences.py
index c4ec70039..88022be61 100644
--- a/gui/builtinPreferenceViews/pyfaUpdatePreferences.py
+++ b/gui/builtinPreferenceViews/pyfaUpdatePreferences.py
@@ -1,83 +1,79 @@
import wx
-import os
from gui.preferenceView import PreferenceView
from gui.bitmapLoader import BitmapLoader
from service.settings import UpdateSettings
-import gui.globalEvents as GE
-
-class PFUpdatePref (PreferenceView):
+class PFUpdatePref(PreferenceView):
title = "Updates"
- desc = "Pyfa can automatically check and notify you of new releases. "+\
- "This feature is toggled in the Network settings. "+\
- "Here, you may allow pre-release notifications and view "+\
- "suppressed release notifications, if any."
+ desc = ("Pyfa can automatically check and notify you of new releases. "
+ "This feature is toggled in the Network settings. "
+ "Here, you may allow pre-release notifications and view "
+ "suppressed release notifications, if any.")
- def populatePanel( self, panel ):
+ def populatePanel(self, panel):
self.UpdateSettings = UpdateSettings.getInstance()
self.dirtySettings = False
dlgWidth = panel.GetParent().GetParent().ClientSize.width
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stTitle.Wrap( -1 )
- self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
- mainSizer.Add( self.stTitle, 0, wx.ALL, 5 )
+ self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stTitle.Wrap(-1)
+ self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
+ mainSizer.Add(self.stTitle, 0, wx.ALL, 5)
- self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 )
+ self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
- self.stDesc = wx.StaticText( panel, wx.ID_ANY, self.desc, wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.stDesc = wx.StaticText(panel, wx.ID_ANY, self.desc, wx.DefaultPosition, wx.DefaultSize, 0)
self.stDesc.Wrap(dlgWidth - 50)
- mainSizer.Add( self.stDesc, 0, wx.ALL, 5 )
+ mainSizer.Add(self.stDesc, 0, wx.ALL, 5)
- self.suppressPrerelease = wx.CheckBox( panel, wx.ID_ANY, u"Allow pre-release notifications", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.suppressPrerelease = wx.CheckBox(panel, wx.ID_ANY, u"Allow pre-release notifications", wx.DefaultPosition, wx.DefaultSize, 0)
self.suppressPrerelease.Bind(wx.EVT_CHECKBOX, self.OnPrereleaseStateChange)
self.suppressPrerelease.SetValue(not self.UpdateSettings.get('prerelease'))
- mainSizer.Add( self.suppressPrerelease, 0, wx.ALL|wx.EXPAND, 5 )
+ mainSizer.Add(self.suppressPrerelease, 0, wx.ALL | wx.EXPAND, 5)
if (self.UpdateSettings.get('version')):
- self.versionSizer = wx.BoxSizer( wx.VERTICAL )
+ self.versionSizer = wx.BoxSizer(wx.VERTICAL)
+ self.versionTitle = wx.StaticText(panel, wx.ID_ANY, "Suppressing {0} Notifications".format(self.UpdateSettings.get('version')), wx.DefaultPosition, wx.DefaultSize, 0)
+ self.versionTitle.Wrap(-1)
+ self.versionTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString))
- self.versionTitle = wx.StaticText( panel, wx.ID_ANY, "Suppressing "+self.UpdateSettings.get('version')+" Notifications", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.versionTitle.Wrap( -1 )
- self.versionTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
+ self.versionInfo = ("There is a release available which you have chosen to suppress. "
+ "You can choose to reset notification suppression for this release, "
+ "or download the new release from GitHub.")
- self.versionInfo = "There is a release available which you have chosen to suppress. "+\
- "You can choose to reset notification suppression for this release, "+\
- "or download the new release from GitHub."
+ self.versionSizer.AddSpacer((5, 5), 0, wx.EXPAND, 5)
- self.versionSizer.AddSpacer( ( 5, 5), 0, wx.EXPAND, 5 )
+ self.versionSizer.Add(wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND, 5)
+ self.versionSizer.AddSpacer((5, 5), 0, wx.EXPAND, 5)
- self.versionSizer.Add( wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0, wx.EXPAND, 5 )
- self.versionSizer.AddSpacer( ( 5, 5), 0, wx.EXPAND, 5 )
-
- self.versionSizer.Add( self.versionTitle, 0, wx.EXPAND, 5 )
- self.versionDesc = wx.StaticText( panel, wx.ID_ANY, self.versionInfo, wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.versionSizer.Add(self.versionTitle, 0, wx.EXPAND, 5)
+ self.versionDesc = wx.StaticText(panel, wx.ID_ANY, self.versionInfo, wx.DefaultPosition, wx.DefaultSize, 0)
self.versionDesc.Wrap(dlgWidth - 50)
- self.versionSizer.Add( self.versionDesc, 0, wx.ALL, 5 )
+ self.versionSizer.Add(self.versionDesc, 0, wx.ALL, 5)
- actionSizer = wx.BoxSizer( wx.HORIZONTAL )
- resetSizer = wx.BoxSizer( wx.VERTICAL )
+ actionSizer = wx.BoxSizer(wx.HORIZONTAL)
+ resetSizer = wx.BoxSizer(wx.VERTICAL)
- self.downloadButton = wx.Button( panel, wx.ID_ANY, "Download", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.downloadButton = wx.Button(panel, wx.ID_ANY, "Download", wx.DefaultPosition, wx.DefaultSize, 0)
self.downloadButton.Bind(wx.EVT_BUTTON, self.OnDownload)
- resetSizer.Add( self.downloadButton, 0, wx.ALL, 5 )
- actionSizer.Add( resetSizer, 1, wx.EXPAND, 5 )
+ resetSizer.Add(self.downloadButton, 0, wx.ALL, 5)
+ actionSizer.Add(resetSizer, 1, wx.EXPAND, 5)
- self.resetButton = wx.Button( panel, wx.ID_ANY, "Reset Suppression", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.resetButton = wx.Button(panel, wx.ID_ANY, "Reset Suppression", wx.DefaultPosition, wx.DefaultSize, 0)
self.resetButton.Bind(wx.EVT_BUTTON, self.ResetSuppression)
- actionSizer.Add( self.resetButton, 0, wx.ALL, 5 )
- self.versionSizer.Add( actionSizer, 0, wx.EXPAND, 5 )
- mainSizer.Add( self.versionSizer, 0, wx.EXPAND, 5 )
+ actionSizer.Add(self.resetButton, 0, wx.ALL, 5)
+ self.versionSizer.Add(actionSizer, 0, wx.EXPAND, 5)
+ mainSizer.Add(self.versionSizer, 0, wx.EXPAND, 5)
- panel.SetSizer( mainSizer )
+ panel.SetSizer(mainSizer)
panel.Layout()
def OnPrereleaseStateChange(self, event):
@@ -95,9 +91,10 @@ class PFUpdatePref (PreferenceView):
self.resetButton.Hide()
def OnDownload(self, event):
- wx.LaunchDefaultBrowser('https://github.com/pyfa-org/Pyfa/releases/tag/'+self.UpdateSettings.get('version'))
+ wx.LaunchDefaultBrowser('https://github.com/pyfa-org/Pyfa/releases/tag/' + self.UpdateSettings.get('version'))
def getImage(self):
return BitmapLoader.getBitmap("prefs_update", "gui")
+
PFUpdatePref.register()
diff --git a/gui/builtinStatsViews/capacitorViewFull.py b/gui/builtinStatsViews/capacitorViewFull.py
index c07045199..a09b2ff91 100644
--- a/gui/builtinStatsViews/capacitorViewFull.py
+++ b/gui/builtinStatsViews/capacitorViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,24 +15,26 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.statsView import StatsView
-from gui import builtinStatsViews
from gui.bitmapLoader import BitmapLoader
from gui.utils.numberFormatter import formatAmount
+
class CapacitorViewFull(StatsView):
name = "capacitorViewFull"
+
def __init__(self, parent):
StatsView.__init__(self)
self.parent = parent
+
def getHeaderText(self, fit):
return "Capacitor"
def getTextExtentW(self, text):
- width, height = self.parent.GetTextExtent( text )
+ width, height = self.parent.GetTextExtent(text)
return width
def populatePanel(self, contentPanel, headerPanel):
@@ -104,12 +106,13 @@ class CapacitorViewFull(StatsView):
chargeSizer.Add(lbl, 0, wx.ALIGN_CENTER)
chargeSizer.Add(wx.StaticText(parent, wx.ID_ANY, " GJ/s"), 0, wx.ALIGN_CENTER)
-
def refreshPanel(self, fit):
- #If we did anything intresting, we'd update our labels to reflect the new fit's stats here
- stats= (("label%sCapacitorCapacity", lambda: fit.ship.getModifiedItemAttr("capacitorCapacity"), 3, 0, 9),
- ("label%sCapacitorRecharge", lambda: fit.capRecharge, 3, 0, 0),
- ("label%sCapacitorDischarge", lambda: fit.capUsed, 3, 0, 0))
+ # If we did anything intresting, we'd update our labels to reflect the new fit's stats here
+ stats = (
+ ("label%sCapacitorCapacity", lambda: fit.ship.getModifiedItemAttr("capacitorCapacity"), 3, 0, 9),
+ ("label%sCapacitorRecharge", lambda: fit.capRecharge, 3, 0, 0),
+ ("label%sCapacitorDischarge", lambda: fit.capUsed, 3, 0, 0),
+ )
panel = "Full"
for labelName, value, prec, lowest, highest in stats:
@@ -147,4 +150,5 @@ class CapacitorViewFull(StatsView):
self.panel.Layout()
self.headerPanel.Layout()
+
CapacitorViewFull.register()
diff --git a/gui/builtinStatsViews/firepowerViewFull.py b/gui/builtinStatsViews/firepowerViewFull.py
index 26789a0df..39f7bdbd1 100644
--- a/gui/builtinStatsViews/firepowerViewFull.py
+++ b/gui/builtinStatsViews/firepowerViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.mainFrame
@@ -170,4 +170,5 @@ class FirepowerViewFull(StatsView):
self.panel.Layout()
self.headerPanel.Layout()
+
FirepowerViewFull.register()
diff --git a/gui/builtinStatsViews/miningyieldViewFull.py b/gui/builtinStatsViews/miningyieldViewFull.py
index f96def013..5a3a10212 100644
--- a/gui/builtinStatsViews/miningyieldViewFull.py
+++ b/gui/builtinStatsViews/miningyieldViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2014 Alexandros Kosiaris
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.mainFrame
@@ -142,4 +142,5 @@ class MiningYieldViewFull(StatsView):
self.panel.Layout()
self.headerPanel.Layout()
+
MiningYieldViewFull.register()
diff --git a/gui/builtinStatsViews/priceViewFull.py b/gui/builtinStatsViews/priceViewFull.py
index 2829a3fa2..c02f723c1 100644
--- a/gui/builtinStatsViews/priceViewFull.py
+++ b/gui/builtinStatsViews/priceViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,17 +15,18 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.statsView import StatsView
-from gui import builtinStatsViews
from gui.bitmapLoader import BitmapLoader
from gui.utils.numberFormatter import formatAmount
from service.market import Market
+
class PriceViewFull(StatsView):
name = "priceViewFull"
+
def __init__(self, parent):
StatsView.__init__(self)
self.parent = parent
@@ -81,15 +82,15 @@ class PriceViewFull(StatsView):
typeIDs.append(mod.itemID)
for drone in fit.drones:
- for _ in xrange(drone.amount):
+ for _ in range(drone.amount):
typeIDs.append(drone.itemID)
for fighter in fit.fighters:
- for _ in xrange(fighter.amountActive):
+ for _ in range(fighter.amountActive):
typeIDs.append(fighter.itemID)
for cargo in fit.cargo:
- for _ in xrange(cargo.amount):
+ for _ in range(cargo.amount):
typeIDs.append(cargo.itemID)
sMkt = Market.getInstance()
@@ -117,10 +118,11 @@ class PriceViewFull(StatsView):
self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(modPrice, 3, 3, 9, currency=True))
self.labelPriceFittings.SetToolTip(wx.ToolTip('{:,.2f}'.format(modPrice)))
self._cachedFittings = modPrice
- if self._cachedTotal != (shipPrice+modPrice):
+ if self._cachedTotal != (shipPrice + modPrice):
self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(shipPrice + modPrice, 3, 3, 9, currency=True))
self.labelPriceTotal.SetToolTip(wx.ToolTip('{:,.2f}'.format(shipPrice + modPrice)))
self._cachedTotal = shipPrice + modPrice
self.panel.Layout()
+
PriceViewFull.register()
diff --git a/gui/builtinStatsViews/rechargeViewFull.py b/gui/builtinStatsViews/rechargeViewFull.py
index 5d8c1424a..b8055de97 100644
--- a/gui/builtinStatsViews/rechargeViewFull.py
+++ b/gui/builtinStatsViews/rechargeViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.statsView import StatsView
@@ -25,8 +25,10 @@ import gui.mainFrame
import gui.builtinStatsViews.resistancesViewFull as rvf
from service.fit import Fit
+
class RechargeViewFull(StatsView):
name = "rechargeViewFull"
+
def __init__(self, parent):
StatsView.__init__(self)
self.parent = parent
@@ -38,7 +40,7 @@ class RechargeViewFull(StatsView):
return "Recharge rates"
def getTextExtentW(self, text):
- width, height = self.parent.GetTextExtent( text )
+ width, height = self.parent.GetTextExtent(text)
return width
def toggleEffective(self, event):
@@ -53,21 +55,21 @@ class RechargeViewFull(StatsView):
self.panel = contentPanel
self.headerPanel = headerPanel
sizerTankStats = wx.FlexGridSizer(3, 5)
- for i in xrange(4):
+ for i in range(4):
sizerTankStats.AddGrowableCol(i + 1)
contentSizer.Add(sizerTankStats, 0, wx.EXPAND, 0)
- #Add an empty label first for correct alignment.
+ # Add an empty label first for correct alignment.
sizerTankStats.Add(wx.StaticText(contentPanel, wx.ID_ANY, ""), 0)
- toolTipText = {"shieldPassive" : "Passive shield recharge", "shieldActive" : "Active shield boost", "armorActive" : "Armor repair amount", "hullActive" : "Hull repair amount"}
+ toolTipText = {"shieldPassive": "Passive shield recharge", "shieldActive": "Active shield boost", "armorActive": "Armor repair amount", "hullActive": "Hull repair amount"}
for tankType in ("shieldPassive", "shieldActive", "armorActive", "hullActive"):
bitmap = BitmapLoader.getStaticBitmap("%s_big" % tankType, contentPanel, "gui")
tooltip = wx.ToolTip(toolTipText[tankType])
bitmap.SetToolTip(tooltip)
sizerTankStats.Add(bitmap, 0, wx.ALIGN_CENTER)
- toolTipText = {"reinforced" : "Reinforced", "sustained" : "Sustained"}
+ toolTipText = {"reinforced": "Reinforced", "sustained": "Sustained"}
for stability in ("reinforced", "sustained"):
bitmap = BitmapLoader.getStaticBitmap("regen%s_big" % stability.capitalize(), contentPanel, "gui")
tooltip = wx.ToolTip(toolTipText[stability])
@@ -79,7 +81,7 @@ class RechargeViewFull(StatsView):
continue
tankTypeCap = tankType[0].capitalize() + tankType[1:]
- lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0.0", style = wx.ALIGN_RIGHT)
+ lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0.0", style=wx.ALIGN_RIGHT)
setattr(self, "labelTank%s%s" % (stability.capitalize(), tankTypeCap), lbl)
box = wx.BoxSizer(wx.HORIZONTAL)
@@ -91,12 +93,12 @@ class RechargeViewFull(StatsView):
contentPanel.Layout()
def refreshPanel(self, fit):
- #If we did anything intresting, we'd update our labels to reflect the new fit's stats here
+ # If we did anything intresting, we'd update our labels to reflect the new fit's stats here
for stability in ("reinforced", "sustained"):
- if stability == "reinforced" and fit != None:
+ if stability == "reinforced" and fit is not None:
tank = fit.effectiveTank if self.effective else fit.tank
- elif stability == "sustained" and fit != None:
+ elif stability == "sustained" and fit is not None:
tank = fit.effectiveSustainableTank if self.effective else fit.sustainableTank
else:
tank = None
@@ -122,4 +124,5 @@ class RechargeViewFull(StatsView):
self.panel.Layout()
self.headerPanel.Layout()
+
RechargeViewFull.register()
diff --git a/gui/builtinStatsViews/resistancesViewFull.py b/gui/builtinStatsViews/resistancesViewFull.py
index f12860a85..3f56c3727 100644
--- a/gui/builtinStatsViews/resistancesViewFull.py
+++ b/gui/builtinStatsViews/resistancesViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.statsView import StatsView
@@ -222,5 +222,6 @@ class ResistancesViewFull(StatsView):
self.panel.Layout()
self.headerPanel.Layout()
+
ResistancesViewFull.register()
diff --git a/gui/builtinStatsViews/resourcesViewFull.py b/gui/builtinStatsViews/resourcesViewFull.py
index e0ac0da52..4f3f63b3b 100644
--- a/gui/builtinStatsViews/resourcesViewFull.py
+++ b/gui/builtinStatsViews/resourcesViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,11 +15,10 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.statsView import StatsView
-from gui import builtinStatsViews
from gui.bitmapLoader import BitmapLoader
from gui import pygauge as PG
import gui.mainFrame
@@ -29,6 +28,7 @@ from eos.types import Hardpoint
from gui.utils.numberFormatter import formatAmount
+
class ResourcesViewFull(StatsView):
name = "resourcesViewFull"
contexts = ["drone", "fighter", "cargo"]
@@ -79,7 +79,7 @@ class ResourcesViewFull(StatsView):
return "Resources"
def getTextExtentW(self, text):
- width, height = self.parent.GetTextExtent( text )
+ width, height = self.parent.GetTextExtent(text)
return width
def populatePanel(self, contentPanel, headerPanel):
@@ -99,54 +99,52 @@ class ResourcesViewFull(StatsView):
self.headerPanel = headerPanel
panel = "full"
-
base = sizerResources
sizer.AddSpacer((0, 0), 1, wx.EXPAND, 5)
- #Turrets & launcher hardslots display
- tooltipText = {"turret":"Turret hardpoints", "launcher":"Launcher hardpoints", "drones":"Drones active", "fighter": "Fighter squadrons active", "calibration":"Calibration"}
- for type in ("turret", "launcher", "drones", "fighter", "calibration"):
+ # Turrets & launcher hardslots display
+ tooltipText = {"turret": "Turret hardpoints", "launcher": "Launcher hardpoints", "drones": "Drones active", "fighter": "Fighter squadrons active", "calibration": "Calibration"}
+ for type_ in ("turret", "launcher", "drones", "fighter", "calibration"):
box = wx.BoxSizer(wx.HORIZONTAL)
bitmap = BitmapLoader.getStaticBitmap("%s_big" % type, parent, "gui")
- tooltip = wx.ToolTip(tooltipText[type])
+ tooltip = wx.ToolTip(tooltipText[type_])
bitmap.SetToolTip(tooltip)
box.Add(bitmap, 0, wx.ALIGN_CENTER)
sizer.Add(box, 0, wx.ALIGN_CENTER)
- suffix = {'turret':'Hardpoints', 'launcher':'Hardpoints', 'drones':'Active', 'fighter':'Tubes', 'calibration':'Points'}
+ suffix = {'turret': 'Hardpoints', 'launcher': 'Hardpoints', 'drones': 'Active', 'fighter': 'Tubes', 'calibration': 'Points'}
lbl = wx.StaticText(parent, wx.ID_ANY, "0")
- setattr(self, "label%sUsed%s%s" % (panel.capitalize(), type.capitalize(), suffix[type].capitalize()), lbl)
+ setattr(self, "label%sUsed%s%s" % (panel.capitalize(), type_.capitalize(), suffix[type_].capitalize()), lbl)
box.Add(lbl, 0, wx.ALIGN_CENTER | wx.LEFT, 5)
box.Add(wx.StaticText(parent, wx.ID_ANY, "/"), 0, wx.ALIGN_CENTER)
lbl = wx.StaticText(parent, wx.ID_ANY, "0")
- setattr(self, "label%sTotal%s%s" % (panel.capitalize(), type.capitalize(), suffix[type].capitalize()), lbl)
+ setattr(self, "label%sTotal%s%s" % (panel.capitalize(), type_.capitalize(), suffix[type_].capitalize()), lbl)
box.Add(lbl, 0, wx.ALIGN_CENTER)
- setattr(self, "boxSizer{}".format(type.capitalize()), box)
+ setattr(self, "boxSizer{}".format(type_.capitalize()), box)
# Hack - We add a spacer after each thing, but we are always hiding something. The spacer is stil there.
# This way, we only have one space after the drones/fighters
- if type != "drones":
+ if type_ != "drones":
sizer.AddSpacer((0, 0), 1, wx.EXPAND, 5)
-
- #PG, Cpu & drone stuff
- tooltipText = {"cpu":"CPU", "pg":"PowerGrid", "droneBay":"Drone bay", "fighterBay": "Fighter bay", "droneBandwidth":"Drone bandwidth", "cargoBay":"Cargo bay"}
+ # PG, Cpu & drone stuff
+ tooltipText = {"cpu": "CPU", "pg": "PowerGrid", "droneBay": "Drone bay", "fighterBay": "Fighter bay", "droneBandwidth": "Drone bandwidth", "cargoBay": "Cargo bay"}
for i, group in enumerate((("cpu", "pg"), ("cargoBay", "droneBay", "fighterBay", "droneBandwidth"))):
main = wx.BoxSizer(wx.VERTICAL)
- base.Add(main, 1 , wx.ALIGN_CENTER)
+ base.Add(main, 1, wx.ALIGN_CENTER)
- for type in group:
- capitalizedType = type[0].capitalize() + type[1:]
- bitmap = BitmapLoader.getStaticBitmap(type + "_big", parent, "gui")
- tooltip = wx.ToolTip(tooltipText[type])
+ for type_ in group:
+ capitalizedType = type_[0].capitalize() + type_[1:]
+ bitmap = BitmapLoader.getStaticBitmap(type_ + "_big", parent, "gui")
+ tooltip = wx.ToolTip(tooltipText[type_])
bitmap.SetToolTip(tooltip)
stats = wx.BoxSizer(wx.VERTICAL)
- absolute = wx.BoxSizer(wx.HORIZONTAL)
+ absolute = wx.BoxSizer(wx.HORIZONTAL)
stats.Add(absolute, 0, wx.EXPAND)
b = wx.BoxSizer(wx.HORIZONTAL)
@@ -166,8 +164,8 @@ class ResourcesViewFull(StatsView):
setattr(self, "label%sTotal%s" % (panel.capitalize(), capitalizedType), lbl)
absolute.Add(lbl, 0, wx.ALIGN_LEFT)
- units = {"cpu":" tf", "pg":" MW", "droneBandwidth":" mbit/s", "droneBay":u" m\u00B3", "fighterBay":u" m\u00B3", "cargoBay":u" m\u00B3"}
- lbl = wx.StaticText(parent, wx.ID_ANY, "%s" % units[type])
+ units = {"cpu": " tf", "pg": " MW", "droneBandwidth": " mbit/s", "droneBay": u" m\u00B3", "fighterBay": u" m\u00B3", "cargoBay": u" m\u00B3"}
+ lbl = wx.StaticText(parent, wx.ID_ANY, "%s" % units[type_])
absolute.Add(lbl, 0, wx.ALIGN_LEFT)
# Gauges modif. - Darriele
@@ -177,7 +175,7 @@ class ResourcesViewFull(StatsView):
gauge.SetMinSize((self.getTextExtentW("1.999M/1.99M MW"), 23))
gauge.SetFractionDigits(2)
- setattr(self, "gauge%s%s" % (panel.capitalize(),capitalizedType), gauge)
+ setattr(self, "gauge%s%s" % (panel.capitalize(), capitalizedType), gauge)
stats.Add(gauge, 0, wx.ALIGN_CENTER)
setattr(self, "base%s%s" % (panel.capitalize(), capitalizedType), b)
@@ -186,30 +184,32 @@ class ResourcesViewFull(StatsView):
self.toggleContext("drone")
def refreshPanel(self, fit):
- #If we did anything intresting, we'd update our labels to reflect the new fit's stats here
+ # If we did anything intresting, we'd update our labels to reflect the new fit's stats here
- stats = (("label%sUsedTurretHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.TURRET), 0, 0, 0),
- ("label%sTotalTurretHardpoints", lambda: fit.ship.getModifiedItemAttr('turretSlotsLeft'), 0, 0, 0),
- ("label%sUsedLauncherHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.MISSILE), 0, 0, 0),
- ("label%sTotalLauncherHardpoints", lambda: fit.ship.getModifiedItemAttr('launcherSlotsLeft'), 0, 0, 0),
- ("label%sUsedDronesActive", lambda: fit.activeDrones, 0, 0, 0),
- ("label%sTotalDronesActive", lambda: fit.extraAttributes["maxActiveDrones"], 0, 0, 0),
- ("label%sUsedFighterTubes", lambda: fit.fighterTubesUsed, 3, 0, 9),
- ("label%sTotalFighterTubes", lambda: fit.ship.getModifiedItemAttr("fighterTubes"), 3, 0, 9),
- ("label%sUsedCalibrationPoints", lambda: fit.calibrationUsed, 0, 0, 0),
- ("label%sTotalCalibrationPoints", lambda: fit.ship.getModifiedItemAttr('upgradeCapacity'), 0, 0, 0),
- ("label%sUsedPg", lambda: fit.pgUsed, 4, 0, 9),
- ("label%sUsedCpu", lambda: fit.cpuUsed, 4, 0, 9),
- ("label%sTotalPg", lambda: fit.ship.getModifiedItemAttr("powerOutput"), 4, 0, 9),
- ("label%sTotalCpu", lambda: fit.ship.getModifiedItemAttr("cpuOutput"), 4, 0, 9),
- ("label%sUsedDroneBay", lambda: fit.droneBayUsed, 3, 0, 9),
- ("label%sUsedFighterBay", lambda: fit.fighterBayUsed, 3, 0, 9),
- ("label%sUsedDroneBandwidth", lambda: fit.droneBandwidthUsed, 3, 0, 9),
- ("label%sTotalDroneBay", lambda: fit.ship.getModifiedItemAttr("droneCapacity"), 3, 0, 9),
- ("label%sTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 3, 0, 9),
- ("label%sTotalFighterBay", lambda: fit.ship.getModifiedItemAttr("fighterCapacity"), 3, 0, 9),
- ("label%sUsedCargoBay", lambda: fit.cargoBayUsed, 3, 0, 9),
- ("label%sTotalCargoBay", lambda: fit.ship.getModifiedItemAttr("capacity"), 3, 0, 9))
+ stats = (
+ ("label%sUsedTurretHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.TURRET), 0, 0, 0),
+ ("label%sTotalTurretHardpoints", lambda: fit.ship.getModifiedItemAttr('turretSlotsLeft'), 0, 0, 0),
+ ("label%sUsedLauncherHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.MISSILE), 0, 0, 0),
+ ("label%sTotalLauncherHardpoints", lambda: fit.ship.getModifiedItemAttr('launcherSlotsLeft'), 0, 0, 0),
+ ("label%sUsedDronesActive", lambda: fit.activeDrones, 0, 0, 0),
+ ("label%sTotalDronesActive", lambda: fit.extraAttributes["maxActiveDrones"], 0, 0, 0),
+ ("label%sUsedFighterTubes", lambda: fit.fighterTubesUsed, 3, 0, 9),
+ ("label%sTotalFighterTubes", lambda: fit.ship.getModifiedItemAttr("fighterTubes"), 3, 0, 9),
+ ("label%sUsedCalibrationPoints", lambda: fit.calibrationUsed, 0, 0, 0),
+ ("label%sTotalCalibrationPoints", lambda: fit.ship.getModifiedItemAttr('upgradeCapacity'), 0, 0, 0),
+ ("label%sUsedPg", lambda: fit.pgUsed, 4, 0, 9),
+ ("label%sUsedCpu", lambda: fit.cpuUsed, 4, 0, 9),
+ ("label%sTotalPg", lambda: fit.ship.getModifiedItemAttr("powerOutput"), 4, 0, 9),
+ ("label%sTotalCpu", lambda: fit.ship.getModifiedItemAttr("cpuOutput"), 4, 0, 9),
+ ("label%sUsedDroneBay", lambda: fit.droneBayUsed, 3, 0, 9),
+ ("label%sUsedFighterBay", lambda: fit.fighterBayUsed, 3, 0, 9),
+ ("label%sUsedDroneBandwidth", lambda: fit.droneBandwidthUsed, 3, 0, 9),
+ ("label%sTotalDroneBay", lambda: fit.ship.getModifiedItemAttr("droneCapacity"), 3, 0, 9),
+ ("label%sTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 3, 0, 9),
+ ("label%sTotalFighterBay", lambda: fit.ship.getModifiedItemAttr("fighterCapacity"), 3, 0, 9),
+ ("label%sUsedCargoBay", lambda: fit.cargoBayUsed, 3, 0, 9),
+ ("label%sTotalCargoBay", lambda: fit.ship.getModifiedItemAttr("capacity"), 3, 0, 9),
+ )
panel = "Full"
usedTurretHardpoints = 0
totalTurretHardpoints = 0
@@ -303,12 +303,14 @@ class ResourcesViewFull(StatsView):
labelTCP.SetForegroundColour(colorC)
if fit is not None:
- resMax = (lambda: fit.ship.getModifiedItemAttr("cpuOutput"),
- lambda: fit.ship.getModifiedItemAttr("powerOutput"),
- lambda: fit.ship.getModifiedItemAttr("droneCapacity"),
- lambda: fit.ship.getModifiedItemAttr("fighterCapacity"),
- lambda: fit.ship.getModifiedItemAttr("droneBandwidth"),
- lambda: fit.ship.getModifiedItemAttr("capacity"))
+ resMax = (
+ lambda: fit.ship.getModifiedItemAttr("cpuOutput"),
+ lambda: fit.ship.getModifiedItemAttr("powerOutput"),
+ lambda: fit.ship.getModifiedItemAttr("droneCapacity"),
+ lambda: fit.ship.getModifiedItemAttr("fighterCapacity"),
+ lambda: fit.ship.getModifiedItemAttr("droneBandwidth"),
+ lambda: fit.ship.getModifiedItemAttr("capacity"),
+ )
i = 0
for resourceType in ("cpu", "pg", "droneBay", "fighterBay", "droneBandwidth", "cargoBay"):
@@ -316,11 +318,11 @@ class ResourcesViewFull(StatsView):
capitalizedType = resourceType[0].capitalize() + resourceType[1:]
gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType))
- resUsed = getattr(fit,"%sUsed" % resourceType)
+ resUsed = getattr(fit, "%sUsed" % resourceType)
gauge.SetValueRange(resUsed or 0, resMax[i]() or 0)
- i+=1
+ i += 1
else:
capitalizedType = resourceType[0].capitalize() + resourceType[1:]
@@ -328,9 +330,10 @@ class ResourcesViewFull(StatsView):
gauge.SetValueRange(0, 0)
- i+=1
+ i += 1
self.panel.Layout()
self.headerPanel.Layout()
+
ResourcesViewFull.register()
diff --git a/gui/builtinStatsViews/targetingMiscViewFull.py b/gui/builtinStatsViews/targetingMiscViewFull.py
index 207fe46c5..e5be6110a 100644
--- a/gui/builtinStatsViews/targetingMiscViewFull.py
+++ b/gui/builtinStatsViews/targetingMiscViewFull.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,29 +15,31 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.statsView import StatsView
-from gui import builtinStatsViews
from gui.utils.numberFormatter import formatAmount
-import locale
+
try:
from collections import OrderedDict
except ImportError:
from utils.compat import OrderedDict
+
class TargetingMiscViewFull(StatsView):
name = "targetingmiscViewFull"
+
def __init__(self, parent):
StatsView.__init__(self)
self.parent = parent
self._cachedValues = []
+
def getHeaderText(self, fit):
return "Targeting && Misc"
def getTextExtentW(self, text):
- width, height = self.parent.GetTextExtent( text )
+ width, height = self.parent.GetTextExtent(text)
return width
def populatePanel(self, contentPanel, headerPanel):
@@ -46,7 +48,7 @@ class TargetingMiscViewFull(StatsView):
self.panel = contentPanel
self.headerPanel = headerPanel
gridTargetingMisc = wx.FlexGridSizer(1, 3)
- contentSizer.Add( gridTargetingMisc, 0, wx.EXPAND | wx.ALL, 0)
+ contentSizer.Add(gridTargetingMisc, 0, wx.EXPAND | wx.ALL, 0)
gridTargetingMisc.AddGrowableCol(0)
gridTargetingMisc.AddGrowableCol(2)
# Targeting
@@ -68,17 +70,17 @@ class TargetingMiscViewFull(StatsView):
box = wx.BoxSizer(wx.HORIZONTAL)
gridTargeting.Add(box, 0, wx.ALIGN_LEFT)
- lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0 %s" %unit)
+ lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0 %s" % unit)
setattr(self, "label%s" % labelShort, lbl)
box.Add(lbl, 0, wx.ALIGN_LEFT)
self._cachedValues.append({"main": 0})
# Misc
- gridTargetingMisc.Add( wx.StaticLine( contentPanel, wx.ID_ANY, style = wx.VERTICAL),0, wx.EXPAND, 3 )
+ gridTargetingMisc.Add(wx.StaticLine(contentPanel, wx.ID_ANY, style=wx.VERTICAL), 0, wx.EXPAND, 3)
gridMisc = wx.FlexGridSizer(5, 2)
gridMisc.AddGrowableCol(1)
- gridTargetingMisc.Add(gridMisc,0 , wx.ALIGN_LEFT | wx.ALL, 5)
+ gridTargetingMisc.Add(gridMisc, 0, wx.ALIGN_LEFT | wx.ALL, 5)
labels = (("Speed", "Speed", "m/s"),
("Align time", "AlignTime", "s"),
@@ -98,9 +100,8 @@ class TargetingMiscViewFull(StatsView):
self._cachedValues.append({"main": 0})
-
def refreshPanel(self, fit):
- #If we did anything interesting, we'd update our labels to reflect the new fit's stats here
+ # If we did anything interesting, we'd update our labels to reflect the new fit's stats here
cargoNamesOrder = OrderedDict((
("fleetHangarCapacity", "Fleet hangar"),
@@ -155,9 +156,9 @@ class TargetingMiscViewFull(StatsView):
("labelFullCargo", cargoValues, 4, 0, 9, u"m\u00B3"))
counter = 0
- RADII = [("Pod",25), ("Interceptor",33), ("Frigate",38),
+ RADII = [("Pod", 25), ("Interceptor", 33), ("Frigate", 38),
("Destroyer", 83), ("Cruiser", 130),
- ("Battlecruiser", 265), ("Battleship",420),
+ ("Battlecruiser", 265), ("Battleship", 420),
("Carrier", 3000)]
for labelName, valueDict, prec, lowest, highest, unit in stats:
label = getattr(self, labelName)
@@ -173,13 +174,13 @@ class TargetingMiscViewFull(StatsView):
# Get sum of all cargoholds except for maintenance bay
additionalCargo = sum(otherValues.values())
if additionalCargo > 0:
- label.SetLabel("%s+%s %s" %(formatAmount(mainValue, prec, lowest, highest),
- formatAmount(additionalCargo, prec, lowest, highest),
- unit))
+ label.SetLabel("%s+%s %s" % (formatAmount(mainValue, prec, lowest, highest),
+ formatAmount(additionalCargo, prec, lowest, highest),
+ unit))
else:
- label.SetLabel("%s %s" %(formatAmount(mainValue, prec, lowest, highest), unit))
+ label.SetLabel("%s %s" % (formatAmount(mainValue, prec, lowest, highest), unit))
else:
- label.SetLabel("%s %s" %(formatAmount(mainValue, prec, lowest, highest), unit))
+ label.SetLabel("%s %s" % (formatAmount(mainValue, prec, lowest, highest), unit))
# Tooltip stuff
if fit:
if labelName == "labelScanRes":
@@ -187,21 +188,21 @@ class TargetingMiscViewFull(StatsView):
for size, radius in RADII:
left = "%.1fs" % fit.calculateLockTime(radius)
right = "%s [%d]" % (size, radius)
- lockTime += "%5s\t%s\n" % (left,right)
+ lockTime += "%5s\t%s\n" % (left, right)
label.SetToolTip(wx.ToolTip(lockTime))
elif labelName == "labelFullSigRadius":
- label.SetToolTip(wx.ToolTip("Probe Size: %.3f" % (fit.probeSize or 0) ))
+ label.SetToolTip(wx.ToolTip("Probe Size: %.3f" % (fit.probeSize or 0)))
elif labelName == "labelFullWarpSpeed":
label.SetToolTip(wx.ToolTip("Max Warp Distance: %.1f AU" % fit.maxWarpDistance))
elif labelName == "labelSensorStr":
if fit.jamChance > 0:
- label.SetToolTip(wx.ToolTip("Type: %s\n%.1f%% Chance of Jam" % (fit.scanType, fit.jamChance)))
+ label.SetToolTip(wx.ToolTip("Type: %s\n%.1f%% Chance of Jam" % (fit.scanType, fit.jamChance)))
else:
- label.SetToolTip(wx.ToolTip("Type: %s" % (fit.scanType)))
+ label.SetToolTip(wx.ToolTip("Type: %s" % (fit.scanType)))
elif labelName == "labelFullAlignTime":
- alignTime = "Align:\t%.3fs"%mainValue
+ alignTime = "Align:\t%.3fs" % mainValue
mass = 'Mass:\t{:,.0f}kg'.format(fit.ship.getModifiedItemAttr("mass"))
- agility = "Agility:\t%.3fx"%(fit.ship.getModifiedItemAttr("agility") or 0)
+ agility = "Agility:\t%.3fx" % (fit.ship.getModifiedItemAttr("agility") or 0)
label.SetToolTip(wx.ToolTip("%s\n%s\n%s" % (alignTime, mass, agility)))
elif labelName == "labelFullCargo":
tipLines = []
@@ -247,4 +248,5 @@ class TargetingMiscViewFull(StatsView):
self.panel.Layout()
self.headerPanel.Layout()
+
TargetingMiscViewFull.register()
diff --git a/gui/builtinViewColumns/abilities.py b/gui/builtinViewColumns/abilities.py
index f61557446..e42a2eed3 100644
--- a/gui/builtinViewColumns/abilities.py
+++ b/gui/builtinViewColumns/abilities.py
@@ -1,5 +1,4 @@
-# -*- coding: utf-8 -*-
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -16,17 +15,18 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
-from gui.viewColumn import ViewColumn
-import gui.mainFrame
import wx
from eos.types import Fighter
+from gui.viewColumn import ViewColumn
+import gui.mainFrame
class Abilities(ViewColumn):
name = "Fighter Abilities"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
@@ -41,4 +41,5 @@ class Abilities(ViewColumn):
return "None"
return ", ".join(active)
+
Abilities.register()
diff --git a/gui/builtinViewColumns/ammo.py b/gui/builtinViewColumns/ammo.py
index 698e8595b..27a742bce 100644
--- a/gui/builtinViewColumns/ammo.py
+++ b/gui/builtinViewColumns/ammo.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,17 +15,17 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
-from gui import builtinViewColumns
-from gui.viewColumn import ViewColumn
-from gui.bitmapLoader import BitmapLoader
import wx
from eos.types import Fighter
+from gui.viewColumn import ViewColumn
+from gui.bitmapLoader import BitmapLoader
class Ammo(ViewColumn):
name = "Ammo"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.mask = wx.LIST_MASK_IMAGE
@@ -43,7 +43,7 @@ class Ammo(ViewColumn):
charges = stuff.numCharges
if charges > 0:
cycles = stuff.numShots
- if cycles !=0 and charges != cycles:
+ if cycles != 0 and charges != cycles:
return "%s (%d, %d cycles)" % (stuff.charge.name, charges, cycles)
else:
return "%s (%d)" % (stuff.charge.name, charges)
@@ -54,5 +54,5 @@ class Ammo(ViewColumn):
def getImageId(self, mod):
return -1
-Ammo.register()
+Ammo.register()
diff --git a/gui/builtinViewColumns/ammoIcon.py b/gui/builtinViewColumns/ammoIcon.py
index 2403077bd..1dc6906e3 100644
--- a/gui/builtinViewColumns/ammoIcon.py
+++ b/gui/builtinViewColumns/ammoIcon.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,16 +15,16 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
-from gui import builtinViewColumns
from gui.viewColumn import ViewColumn
-from gui.bitmapLoader import BitmapLoader
import wx
from eos.types import Module
+
class AmmoIcon(ViewColumn):
name = "Ammo Icon"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.size = 24
@@ -52,4 +52,5 @@ class AmmoIcon(ViewColumn):
if isinstance(mod, Module) and mod.charge is not None:
return mod.charge.name
+
AmmoIcon.register()
diff --git a/gui/builtinViewColumns/attributeDisplay.py b/gui/builtinViewColumns/attributeDisplay.py
index c8bda870c..26994a956 100644
--- a/gui/builtinViewColumns/attributeDisplay.py
+++ b/gui/builtinViewColumns/attributeDisplay.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,9 +15,10 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
+import wx
-from gui import builtinViewColumns
from gui.viewColumn import ViewColumn
from gui.bitmapLoader import BitmapLoader
from gui.utils.numberFormatter import formatAmount
@@ -25,10 +26,10 @@ from gui.utils.numberFormatter import formatAmount
from service.attribute import Attribute
from service.market import Market
-import wx
class AttributeDisplay(ViewColumn):
name = "attr"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
sAttr = Attribute.getInstance()
@@ -60,8 +61,9 @@ class AttributeDisplay(ViewColumn):
self.view = fittingView
originalRefresh = fittingView.refresh
sMkt = Market.getInstance()
- #Hack into our master view and add a callback for ourselves to know when to query
+
def refresh(stuff):
+ # Hack into our master view and add a callback for ourselves to know when to query
self.directInfo = sMkt.directAttrRequest(stuff, info) if stuff else None
originalRefresh(stuff)
@@ -78,10 +80,10 @@ class AttributeDisplay(ViewColumn):
attr = mod.getAttribute(self.info.name)
if self.info.name == "volume":
- str = (formatAmount(attr, 3, 0, 3))
+ str_ = (formatAmount(attr, 3, 0, 3))
if hasattr(mod, "amount"):
- str = str + u"m\u00B3 (%s m\u00B3)"%(formatAmount(attr*mod.amount, 3, 0, 3))
- attr = str
+ str_ = str_ + u"m\u00B3 (%s m\u00B3)" % (formatAmount(attr * mod.amount, 3, 0, 3))
+ attr = str_
if isinstance(attr, (float, int)):
attr = (formatAmount(attr, 3, 0, 3))
@@ -104,4 +106,5 @@ class AttributeDisplay(ViewColumn):
("showIcon", bool, True),
("direct", bool, False))
+
AttributeDisplay.register()
diff --git a/gui/builtinViewColumns/baseIcon.py b/gui/builtinViewColumns/baseIcon.py
index 868c73a21..d767a97a6 100644
--- a/gui/builtinViewColumns/baseIcon.py
+++ b/gui/builtinViewColumns/baseIcon.py
@@ -1,11 +1,11 @@
-from gui import builtinViewColumns
-from gui.viewColumn import ViewColumn
-from gui.bitmapLoader import BitmapLoader
import wx
from eos.types import Drone, Fit, Module, Slot, Rack, Implant
+from gui.viewColumn import ViewColumn
+
class BaseIcon(ViewColumn):
name = "Base Icon"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.size = 24
@@ -17,16 +17,16 @@ class BaseIcon(ViewColumn):
def getImageId(self, stuff):
if isinstance(stuff, Drone):
return -1
- if isinstance(stuff, Fit):
+ elif isinstance(stuff, Fit):
return self.shipImage
- if isinstance(stuff, Rack):
+ elif isinstance(stuff, Rack):
return -1
- if isinstance(stuff, Implant):
+ elif isinstance(stuff, Implant):
if stuff.character: # if it has a character as it's parent
return self.fittingView.imageList.GetImageIndex("character_small", "gui")
else:
return self.shipImage
- if isinstance(stuff, Module):
+ elif isinstance(stuff, Module):
if stuff.isEmpty:
return self.fittingView.imageList.GetImageIndex("slot_%s_small" % Slot.getName(stuff.slot).lower(), "gui")
else:
@@ -41,4 +41,5 @@ class BaseIcon(ViewColumn):
else:
return -1
+
BaseIcon.register()
diff --git a/gui/builtinViewColumns/baseName.py b/gui/builtinViewColumns/baseName.py
index 9381509a0..9018ac453 100644
--- a/gui/builtinViewColumns/baseName.py
+++ b/gui/builtinViewColumns/baseName.py
@@ -1,5 +1,4 @@
-# -*- coding: utf-8 -*-
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -16,18 +15,18 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+import wx
+from eos.types import Drone, Cargo, Module, Slot, Rack, Implant, Fighter
+from service.fit import Fit
from gui.viewColumn import ViewColumn
import gui.mainFrame
-#from eos.saveddata.fit import Fit
-from service.fit import Fit
-import wx
-from eos.types import Drone, Cargo, Module, Slot, Rack, Implant, Fighter
class BaseName(ViewColumn):
name = "Base Name"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
@@ -40,7 +39,7 @@ class BaseName(ViewColumn):
def getText(self, stuff):
if isinstance(stuff, Drone):
return "%dx %s" % (stuff.amount, stuff.item.name)
- if isinstance(stuff, Fighter):
+ elif isinstance(stuff, Fighter):
return "%d/%d %s" % (stuff.amountActive, stuff.getModifiedItemAttr("fighterSquadronMaxSize"), stuff.item.name)
elif isinstance(stuff, Cargo):
return "%dx %s" % (stuff.amount, stuff.item.name)
@@ -74,10 +73,11 @@ class BaseName(ViewColumn):
if marketShortcut:
# use unicode subscript to display shortcut value
- shortcut = unichr(marketShortcut+8320)+u" "
+ shortcut = unichr(marketShortcut + 8320) + u" "
del item.marketShortcut
- return shortcut+item.name
+ return shortcut + item.name
return item.name
+
BaseName.register()
diff --git a/gui/builtinViewColumns/capacitorUse.py b/gui/builtinViewColumns/capacitorUse.py
index 9648d4fde..cc5efa16c 100644
--- a/gui/builtinViewColumns/capacitorUse.py
+++ b/gui/builtinViewColumns/capacitorUse.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,25 +15,26 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
+from eos.types import Mode
+from service.attribute import Attribute
from gui.utils.numberFormatter import formatAmount
from gui.viewColumn import ViewColumn
from gui.bitmapLoader import BitmapLoader
-from eos.types import Mode
-from service.attribute import Attribute
+
class CapacitorUse(ViewColumn):
name = "Capacitor Usage"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.mask = wx.LIST_MASK_IMAGE
- sAttr = Attribute.getInstance()
- info = sAttr.getAttributeInfo("capacitorNeed")
+ Attribute.getInstance().getAttributeInfo("capacitorNeed")
self.imageId = fittingView.imageList.GetImageIndex("capacitorRecharge_small", "gui")
self.bitmap = BitmapLoader.getBitmap("capacitorRecharge_small", "gui")
@@ -53,4 +54,5 @@ class CapacitorUse(ViewColumn):
def getToolTip(self, mod):
return self.name
+
CapacitorUse.register()
diff --git a/gui/builtinViewColumns/maxRange.py b/gui/builtinViewColumns/maxRange.py
index 8f3b4f4eb..ea26d4d67 100644
--- a/gui/builtinViewColumns/maxRange.py
+++ b/gui/builtinViewColumns/maxRange.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,23 +15,24 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
-from gui import builtinViewColumns
+import wx
+
+from eos.types import Mode
+from service.attribute import Attribute
from gui.viewColumn import ViewColumn
from gui.bitmapLoader import BitmapLoader
from gui.utils.numberFormatter import formatAmount
-import wx
-from eos.types import Mode
-from service.attribute import Attribute
class MaxRange(ViewColumn):
name = "Max Range"
- def __init__(self, fittingView, params = None):
- if params == None:
- params = {"showIcon": True,
- "displayName": False}
+
+ def __init__(self, fittingView, params=None):
+ if params is None:
+ params = {"showIcon": True, "displayName": False}
+
ViewColumn.__init__(self, fittingView)
sAttr = Attribute.getInstance()
@@ -72,10 +73,10 @@ class MaxRange(ViewColumn):
return -1
def getParameters(self):
- return (("displayName", bool, False),
- ("showIcon", bool, True))
+ return (("displayName", bool, False), ("showIcon", bool, True))
def getToolTip(self, mod):
return "Optimal + Falloff"
+
MaxRange.register()
diff --git a/gui/builtinViewColumns/misc.py b/gui/builtinViewColumns/misc.py
index 0c7f9ef8f..95a8b07bd 100644
--- a/gui/builtinViewColumns/misc.py
+++ b/gui/builtinViewColumns/misc.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,24 +15,26 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+import wx
+from service.fit import Fit
+from service.market import Market
import gui.mainFrame
from gui.viewColumn import ViewColumn
from gui.bitmapLoader import BitmapLoader
from gui.utils.numberFormatter import formatAmount
from gui.utils.listFormatter import formatList
-from service.fit import Fit, Market
-import wx
class Miscellanea(ViewColumn):
name = "Miscellanea"
- def __init__(self, fittingView, params = None):
- if params == None:
- params = {"showIcon": True,
- "displayName": False}
+
+ def __init__(self, fittingView, params=None):
+ if params is None:
+ params = {"showIcon": True, "displayName": False}
+
ViewColumn.__init__(self, fittingView)
if params["showIcon"]:
self.imageId = fittingView.imageList.GetImageIndex("column_misc", "gui")
@@ -47,19 +49,16 @@ class Miscellanea(ViewColumn):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def getText(self, stuff):
- text = self.__getData(stuff)[0]
- return text
+ return self.__getData(stuff)[0]
def getToolTip(self, mod):
- text = self.__getData(mod)[1]
- return text
+ return self.__getData(mod)[1]
def getImageId(self, mod):
return -1
def getParameters(self):
- return (("displayName", bool, False),
- ("showIcon", bool, True))
+ return (("displayName", bool, False), ("showIcon", bool, True))
def __getData(self, stuff):
item = stuff.item
@@ -81,10 +80,10 @@ class Miscellanea(ViewColumn):
slots = ("hi", "med", "low")
info = []
for slot in slots:
- n = int(stuff.getModifiedItemAttr("%sSlotModifier"%slot))
+ n = int(stuff.getModifiedItemAttr("%sSlotModifier" % slot))
if n > 0:
info.append("{0}{1}".format(n, slot[0].upper()))
- return "+ "+", ".join(info), "Slot Modifiers"
+ return "+ " + ", ".join(info), "Slot Modifiers"
elif itemGroup == "Energy Neutralizer":
neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount")
cycleTime = stuff.cycleTime
@@ -276,7 +275,7 @@ class Miscellanea(ViewColumn):
recalibration = stuff.getModifiedItemAttr("cloakingTargetingDelay")
if recalibration is None:
return "", None
- text = "{0}s".format(formatAmount(float(recalibration)/1000, 3, 0, 3))
+ text = "{0}s".format(formatAmount(float(recalibration) / 1000, 3, 0, 3))
tooltip = "Sensor recalibration time"
return text, tooltip
elif itemGroup == "Remote Armor Repairer":
@@ -487,10 +486,10 @@ class Miscellanea(ViewColumn):
return text, tooltip
elif itemGroup == "Armor Resistance Shift Hardener":
- itemArmorResistanceShiftHardenerEM = (1-stuff.getModifiedItemAttr("armorEmDamageResonance"))*100
- itemArmorResistanceShiftHardenerTherm = (1-stuff.getModifiedItemAttr("armorThermalDamageResonance")) * 100
- itemArmorResistanceShiftHardenerKin = (1-stuff.getModifiedItemAttr("armorKineticDamageResonance")) * 100
- itemArmorResistanceShiftHardenerExp = (1-stuff.getModifiedItemAttr("armorExplosiveDamageResonance")) * 100
+ itemArmorResistanceShiftHardenerEM = (1 - stuff.getModifiedItemAttr("armorEmDamageResonance")) * 100
+ itemArmorResistanceShiftHardenerTherm = (1 - stuff.getModifiedItemAttr("armorThermalDamageResonance")) * 100
+ itemArmorResistanceShiftHardenerKin = (1 - stuff.getModifiedItemAttr("armorKineticDamageResonance")) * 100
+ itemArmorResistanceShiftHardenerExp = (1 - stuff.getModifiedItemAttr("armorExplosiveDamageResonance")) * 100
text = "{0}% | {1}% | {2}% | {3}%".format(
formatAmount(itemArmorResistanceShiftHardenerEM, 3, 0, 3),
@@ -540,4 +539,5 @@ class Miscellanea(ViewColumn):
else:
return "", None
+
Miscellanea.register()
diff --git a/gui/builtinViewColumns/price.py b/gui/builtinViewColumns/price.py
index 6f1f95eb2..68ad87e1e 100644
--- a/gui/builtinViewColumns/price.py
+++ b/gui/builtinViewColumns/price.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos, Lucas Thode
#
# This file is part of pyfa.
@@ -15,17 +15,20 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+import wx
+
+from eos.types import Drone, Cargo
+from service.market import Market
from gui.viewColumn import ViewColumn
from gui.bitmapLoader import BitmapLoader
from gui.utils.numberFormatter import formatAmount
-from eos.types import Drone, Cargo
-import wx
-from service.market import Market
+
class Price(ViewColumn):
name = "Price"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.mask = wx.LIST_MASK_IMAGE
@@ -45,21 +48,22 @@ class Price(ViewColumn):
price = price.price # Set new price variable with what we need
if isinstance(stuff, Drone) or isinstance(stuff, Cargo):
- price *= stuff.amount
+ price *= stuff.amount
return formatAmount(price, 3, 3, 9, currency=True)
def delayedText(self, mod, display, colItem):
sMkt = Market.getInstance()
+
def callback(item):
price = sMkt.getPriceNow(item.ID)
text = formatAmount(price.price, 3, 3, 9, currency=True) if price.price else ""
- if price.failed: text += " (!)"
+ if price.failed:
+ text += " (!)"
colItem.SetText(text)
display.SetItem(colItem)
-
sMkt.waitForPrice(mod.item, callback)
def getImageId(self, mod):
@@ -68,4 +72,5 @@ class Price(ViewColumn):
def getToolTip(self, mod):
return self.name
+
Price.register()
diff --git a/gui/builtinViewColumns/propertyDisplay.py b/gui/builtinViewColumns/propertyDisplay.py
index cb1008fb1..71f22ca5d 100644
--- a/gui/builtinViewColumns/propertyDisplay.py
+++ b/gui/builtinViewColumns/propertyDisplay.py
@@ -1,69 +1,73 @@
-#===============================================================================
-# Copyright (C) 2010 Diego Duclos
-#
-# This file is part of pyfa.
-#
-# pyfa is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# pyfa is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with pyfa. If not, see .
-#===============================================================================
-
-from gui.viewColumn import ViewColumn
-from gui.bitmapLoader import BitmapLoader
-from gui.utils.numberFormatter import formatAmount
-import wx
-
-class PropertyDisplay(ViewColumn):
- name = "prop"
- def __init__(self, fittingView, params):
- ViewColumn.__init__(self, fittingView)
- sAttr = Attribute.getInstance()
- attributeSlave = params["attributeSlave"] or params["property"]
- # This function can throw an exception if the database isn't sane
- # We need to do a sanity check before this runs
- info = sAttr.getAttributeInfo(attributeSlave)
-
- self.mask = 0
- self.propertyName = params["property"]
- self.info = info
- if params["showIcon"]:
- if info.name == "power":
- iconFile = "pg_small"
- iconType = "gui"
- else:
- iconFile = info.icon.iconFile if info.icon else None
- iconType = "icons"
- if iconFile:
- self.imageId = fittingView.imageList.GetImageIndex(iconFile, iconType)
- else:
- self.imageId = -1
- else:
- self.imageId = -1
-
- if params["displayName"] or self.imageId == -1:
- self.columnText = info.displayName if info.displayName != "" else info.name
-
- def getText(self, stuff):
- attr = getattr(stuff, self.propertyName, None)
- if attr:
- return (formatAmount(attr, 3, 0, 3))
- else:
- return ""
-
- @staticmethod
- def getParameters():
- return (("property", str, None),
- ("attributeSlave", str, None),
- ("displayName", bool, False),
- ("showIcon", bool, True))
-
-PropertyDisplay.register()
+# =============================================================================
+# Copyright (C) 2010 Diego Duclos
+#
+# This file is part of pyfa.
+#
+# pyfa is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# pyfa is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with pyfa. If not, see .
+# =============================================================================
+
+from gui.viewColumn import ViewColumn
+from gui.bitmapLoader import BitmapLoader
+from gui.utils.numberFormatter import formatAmount
+from service.attribute import Attribute
+import wx
+
+
+class PropertyDisplay(ViewColumn):
+ name = "prop"
+
+ def __init__(self, fittingView, params):
+ ViewColumn.__init__(self, fittingView)
+ sAttr = Attribute.getInstance()
+ attributeSlave = params["attributeSlave"] or params["property"]
+ # This function can throw an exception if the database isn't sane
+ # We need to do a sanity check before this runs
+ info = sAttr.getAttributeInfo(attributeSlave)
+
+ self.mask = 0
+ self.propertyName = params["property"]
+ self.info = info
+ if params["showIcon"]:
+ if info.name == "power":
+ iconFile = "pg_small"
+ iconType = "gui"
+ else:
+ iconFile = info.icon.iconFile if info.icon else None
+ iconType = "icons"
+ if iconFile:
+ self.imageId = fittingView.imageList.GetImageIndex(iconFile, iconType)
+ else:
+ self.imageId = -1
+ else:
+ self.imageId = -1
+
+ if params["displayName"] or self.imageId == -1:
+ self.columnText = info.displayName if info.displayName != "" else info.name
+
+ def getText(self, stuff):
+ attr = getattr(stuff, self.propertyName, None)
+ if attr:
+ return (formatAmount(attr, 3, 0, 3))
+ else:
+ return ""
+
+ @staticmethod
+ def getParameters():
+ return (("property", str, None),
+ ("attributeSlave", str, None),
+ ("displayName", bool, False),
+ ("showIcon", bool, True))
+
+
+PropertyDisplay.register()
diff --git a/gui/builtinViewColumns/state.py b/gui/builtinViewColumns/state.py
index cc3dee59b..b6c8698ec 100644
--- a/gui/builtinViewColumns/state.py
+++ b/gui/builtinViewColumns/state.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,18 +15,21 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
-from gui.viewColumn import ViewColumn
-from gui.bitmapLoader import BitmapLoader
-import gui.mainFrame
import wx
+
from eos.types import Drone, Module, Rack, Fit, Implant
from eos.types import State as State_
+from gui.viewColumn import ViewColumn
+
+import gui.mainFrame
+
class State(ViewColumn):
name = "State"
+
def __init__(self, fittingView, params):
ViewColumn.__init__(self, fittingView)
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
@@ -78,4 +81,5 @@ class State(ViewColumn):
return generic_active
return generic_inactive
+
State.register()
diff --git a/gui/builtinViews/emptyView.py b/gui/builtinViews/emptyView.py
index 3088c65a1..0dc8d958e 100644
--- a/gui/builtinViews/emptyView.py
+++ b/gui/builtinViews/emptyView.py
@@ -3,6 +3,7 @@ import gui.globalEvents as GE
import gui.chromeTabs
import gui.mainFrame
+
class BlankPage(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, size=(0, 0))
@@ -22,8 +23,8 @@ class BlankPage(wx.Panel):
def pageChanged(self, event):
if self.parent.IsActive(self):
fitID = None
-# sFit = Fit.getInstance()
-# sFit.switchFit(fitID)
+ # sFit = Fit.getInstance()
+ # sFit.switchFit(fitID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
- event.Skip()
\ No newline at end of file
+ event.Skip()
diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py
index f4cac9753..cdcddde14 100644
--- a/gui/builtinViews/fittingView.py
+++ b/gui/builtinViews/fittingView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import wx.lib.newevent
@@ -36,7 +36,8 @@ from service.market import Market
import gui.globalEvents as GE
-#Tab spawning handler
+
+# Tab spawning handler
class FitSpawner(gui.multiSwitch.TabSpawner):
def __init__(self, multiSwitch):
self.multiSwitch = multiSwitch
@@ -86,9 +87,11 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
self.multiSwitch.AddPage(view)
view.handleDrag(type, fitID)
+
FitSpawner.register()
-#Drag'n'drop handler
+
+# Drag'n'drop handler
class FittingViewDrop(wx.PyDropTarget):
def __init__(self, dropFn):
wx.PyDropTarget.__init__(self)
@@ -103,6 +106,7 @@ class FittingViewDrop(wx.PyDropTarget):
self.dropFn(x, y, data)
return t
+
class FittingView(d.Display):
DEFAULT_COLS = ["State",
"Ammo Icon",
@@ -118,7 +122,7 @@ class FittingView(d.Display):
]
def __init__(self, parent):
- d.Display.__init__(self, parent, size = (0,0), style = wx.BORDER_NONE)
+ d.Display.__init__(self, parent, size=(0, 0), style=wx.BORDER_NONE)
self.Show(False)
self.parent = parent
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
@@ -128,7 +132,7 @@ class FittingView(d.Display):
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
- if "__WXGTK__" in wx.PlatformInfo:
+ if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
@@ -193,7 +197,7 @@ class FittingView(d.Display):
self.addModule(x, y, int(data[1]))
def handleDrag(self, type, fitID):
- #Those are drags coming from pyfa sources, NOT builtin wx drags
+ # Those are drags coming from pyfa sources, NOT builtin wx drags
if type == "fit":
wx.PostEvent(self.mainFrame, gui.shipBrowser.FitSelected(fitID=fitID))
@@ -223,11 +227,11 @@ class FittingView(d.Display):
if row != -1 and row not in self.blanks:
data = wx.PyTextDataObject()
- data.SetText("fitting:"+str(self.mods[row].position))
+ data.SetText("fitting:" + str(self.mods[row].position))
dropSource = wx.DropSource(self)
dropSource.SetData(data)
- res = dropSource.DoDragDrop()
+ dropSource.DoDragDrop()
def getSelectedMods(self):
sel = []
@@ -238,15 +242,14 @@ class FittingView(d.Display):
return sel
- def kbEvent(self,event):
+ def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
row = self.GetFirstSelected()
- firstSel = row
while row != -1:
if row not in self.blanks:
self.removeModule(self.mods[row])
- self.Select(row,0)
+ self.Select(row, 0)
row = self.GetNextSelected(row)
event.Skip()
@@ -309,7 +312,7 @@ class FittingView(d.Display):
if self.parent.IsActive(self):
itemID = event.itemID
fitID = self.activeFitID
- if fitID != None:
+ if fitID is not None:
sFit = Fit.getInstance()
if sFit.isAmmo(itemID):
modules = []
@@ -349,7 +352,6 @@ class FittingView(d.Display):
def addModule(self, x, y, srcIdx):
'''Add a module from the market browser'''
- mstate = wx.GetMouseState()
dstRow, _ = self.HitTest((x, y))
if dstRow != -1 and dstRow not in self.blanks:
@@ -433,12 +435,12 @@ class FittingView(d.Display):
for i, mod in enumerate(self.mods):
if mod.slot != slotDivider:
slotDivider = mod.slot
- self.blanks.append((i, slotDivider)) # where and what
+ self.blanks.append((i, slotDivider)) # where and what
# second loop modifies self.mods, rewrites self.blanks to represent actual index of blanks
for i, (x, slot) in enumerate(self.blanks):
- self.blanks[i] = x+i # modify blanks with actual index
- self.mods.insert(x+i, Rack.buildRack(slot))
+ self.blanks[i] = x + i # modify blanks with actual index
+ self.mods.insert(x + i, Rack.buildRack(slot))
if fit.mode:
# Modes are special snowflakes and need a little manual loving
@@ -494,13 +496,13 @@ class FittingView(d.Display):
srcContext = "fittingModule"
itemContext = sMkt.getCategoryByItem(mod.item).name
fullContext = (srcContext, itemContext)
- if not srcContext in tuple(fCtxt[0] for fCtxt in contexts):
+ if srcContext not in tuple(fCtxt[0] for fCtxt in contexts):
contexts.append(fullContext)
if mod.charge is not None:
srcContext = "fittingCharge"
itemContext = sMkt.getCategoryByItem(mod.charge).name
fullContext = (srcContext, itemContext)
- if not srcContext in tuple(fCtxt[0] for fCtxt in contexts):
+ if srcContext not in tuple(fCtxt[0] for fCtxt in contexts):
contexts.append(fullContext)
selection.append(mod)
@@ -530,7 +532,7 @@ class FittingView(d.Display):
sel = []
curr = self.GetFirstSelected()
- while curr != -1 and row not in self.blanks :
+ while curr != -1 and row not in self.blanks:
sel.append(curr)
curr = self.GetNextSelected(curr)
@@ -611,7 +613,7 @@ class FittingView(d.Display):
try:
self.MakeSnapshot()
except:
- pass
+ pass
def OnShow(self, event):
if event.GetShow():
@@ -624,19 +626,19 @@ class FittingView(d.Display):
def Snapshot(self):
return self.FVsnapshot
- def MakeSnapshot(self, maxColumns = 1337):
+ def MakeSnapshot(self, maxColumns=1337):
if self.FVsnapshot:
del self.FVsnapshot
- tbmp = wx.EmptyBitmap(16,16)
+ tbmp = wx.EmptyBitmap(16, 16)
tdc = wx.MemoryDC()
tdc.SelectObject(tbmp)
font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
tdc.SetFont(font)
columnsWidths = []
- for i in xrange(len(self.DEFAULT_COLS)):
+ for i in range(len(self.DEFAULT_COLS)):
columnsWidths.append(0)
sFit = Fit.getInstance()
@@ -660,25 +662,25 @@ class FittingView(d.Display):
maxWidth = 0
maxRowHeight = isize
rows = 0
- for id,st in enumerate(self.mods):
+ for st in self.mods:
for i, col in enumerate(self.activeColumns):
- if i>maxColumns:
+ if i > maxColumns:
break
name = col.getText(st)
if not isinstance(name, basestring):
name = ""
- nx,ny = tdc.GetTextExtent(name)
+ nx, ny = tdc.GetTextExtent(name)
imgId = col.getImageId(st)
cw = 0
if imgId != -1:
cw += isize + padding
if name != "":
- cw += nx + 4*padding
+ cw += nx + 4 * padding
if imgId == -1 and name == "":
- cw += isize +padding
+ cw += isize + padding
maxRowHeight = max(ny, maxRowHeight)
columnsWidths[i] = max(columnsWidths[i], cw)
@@ -687,7 +689,7 @@ class FittingView(d.Display):
render = wx.RendererNative.Get()
- #Fix column widths (use biggest between header or items)
+ # Fix column widths (use biggest between header or items)
for i, col in enumerate(self.activeColumns):
if i > maxColumns:
@@ -705,26 +707,23 @@ class FittingView(d.Display):
opts.m_labelText = name
if imgId != -1:
- opts.m_labelBitmap = wx.EmptyBitmap(isize,isize)
+ opts.m_labelBitmap = wx.EmptyBitmap(isize, isize)
- width = render.DrawHeaderButton(self, tdc, (0, 0, 16, 16),
- sortArrow = wx.HDR_SORT_ICON_NONE, params = opts)
+ width = render.DrawHeaderButton(self, tdc, (0, 0, 16, 16), sortArrow=wx.HDR_SORT_ICON_NONE, params=opts)
columnsWidths[i] = max(columnsWidths[i], width)
tdc.SelectObject(wx.NullBitmap)
-
maxWidth = padding * 2
- for i in xrange(len(self.DEFAULT_COLS)):
+ for i in range(len(self.DEFAULT_COLS)):
if i > maxColumns:
break
maxWidth += columnsWidths[i]
-
mdc = wx.MemoryDC()
- mbmp = wx.EmptyBitmap(maxWidth, (maxRowHeight) * rows + padding*4 + headerSize)
+ mbmp = wx.EmptyBitmap(maxWidth, (maxRowHeight) * rows + padding * 4 + headerSize)
mdc.SelectObject(mbmp)
@@ -754,8 +753,8 @@ class FittingView(d.Display):
bmp = col.bitmap
opts.m_labelBitmap = bmp
- width = render.DrawHeaderButton (self, mdc, (cx, padding, columnsWidths[i], headerSize), wx.CONTROL_CURRENT,
- sortArrow = wx.HDR_SORT_ICON_NONE, params = opts)
+ width = render.DrawHeaderButton(self, mdc, (cx, padding, columnsWidths[i], headerSize), wx.CONTROL_CURRENT,
+ sortArrow=wx.HDR_SORT_ICON_NONE, params=opts)
cx += columnsWidths[i]
@@ -765,15 +764,15 @@ class FittingView(d.Display):
mdc.SetPen(pen)
mdc.SetBrush(brush)
- cy = padding*2 + headerSize
- for id,st in enumerate(self.mods):
+ cy = padding * 2 + headerSize
+ for st in self.mods:
cx = padding
if slotMap[st.slot]:
- mdc.DrawRectangle(cx,cy,maxWidth - cx,maxRowHeight)
+ mdc.DrawRectangle(cx, cy, maxWidth - cx, maxRowHeight)
for i, col in enumerate(self.activeColumns):
- if i>maxColumns:
+ if i > maxColumns:
break
name = col.getText(st)
@@ -784,14 +783,14 @@ class FittingView(d.Display):
tcx = cx
if imgId != -1:
- self.imageList.Draw(imgId,mdc,cx,cy,wx.IMAGELIST_DRAW_TRANSPARENT,False)
+ self.imageList.Draw(imgId, mdc, cx, cy, wx.IMAGELIST_DRAW_TRANSPARENT, False)
tcx += isize + padding
if name != "":
- nx,ny = mdc.GetTextExtent(name)
+ nx, ny = mdc.GetTextExtent(name)
rect = wx.Rect()
rect.top = cy
- rect.left = cx + 2*padding
+ rect.left = cx + 2 * padding
rect.width = nx
rect.height = maxRowHeight + padding
mdc.DrawLabel(name, rect, wx.ALIGN_CENTER_VERTICAL)
@@ -803,4 +802,4 @@ class FittingView(d.Display):
mdc.SelectObject(wx.NullBitmap)
- self.FVsnapshot = mbmp
\ No newline at end of file
+ self.FVsnapshot = mbmp
diff --git a/gui/builtinViews/fleetView.py b/gui/builtinViews/fleetView.py
index 7112778f3..3b4347ff2 100644
--- a/gui/builtinViews/fleetView.py
+++ b/gui/builtinViews/fleetView.py
@@ -1,139 +1,142 @@
-import wx.gizmos
-import gui.fleetBrowser
-from gui.bitmapLoader import BitmapLoader
-
-#Tab spawning handler
-class FleetSpawner(gui.multiSwitch.TabSpawner):
- def __init__(self, multiSwitch):
- self.multiSwitch = multiSwitch
- mainFrame = gui.mainFrame.MainFrame.getInstance()
- mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_SELECTED, self.fleetSelected)
-
- def fleetSelected(self, event):
- if self.multiSwitch.GetPageCount() == 0:
- self.multiSwitch.AddPage(wx.Panel(self.multiSwitch, size = (0,0)), "Empty Tab")
-
- view = FleetView(self.multiSwitch)
- self.multiSwitch.ReplaceActivePage(view)
- view.populate(event.fleetID)
- view.Show()
-
-FleetSpawner.register()
-
-class FleetView(wx.gizmos.TreeListCtrl):
- def __init__(self, parent, size = (0,0)):
- wx.gizmos.TreeListCtrl.__init__(self, parent, size = size)
-
- self.tabManager = parent
-
- self.fleetId = None
- self.fleetImg = BitmapLoader.getImage("53_16", "icons")
-
- self.imageList = wx.ImageList(16, 16)
- self.SetImageList(self.imageList)
-
- for col in ("", "Fit", "Shiptype", "Character", "Bonusses"):
- self.AddColumn(col)
-
- self.SetMainColumn(1)
- self.icons = {}
- self.addImage = self.imageList.Add(BitmapLoader.getBitmap("add_small", "gui"))
- for icon in ("fb", "fc", "sb", "sc", "wb", "wc"):
- self.icons[icon] = self.imageList.Add(BitmapLoader.getBitmap("fleet_%s_small" % icon, "gui"))
-
- self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.checkNew)
- self.mainFrame = gui.mainFrame.MainFrame.getInstance()
-
- self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_RENAMED, self.fleetRenamed)
- self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_REMOVED, self.fleetRemoved)
-
- def Destroy(self):
- self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_REMOVED, handler = self.fleetRemoved)
- self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_RENAMED, handler = self.fleetRenamed)
- wx.gizmos.TreeListCtrl.Destroy(self)
-
- def fleetRenamed(self, event):
- if event.fleetID == self.fleetId:
- sFleet = service.Fleet.getInstance()
- f = sFleet.getFleetByID(event.fleetID)
- self.UpdateTab(f.name, self.fleetImg)
-
- event.Skip()
-
- def fleetRemoved(self, event):
- if event.fleetID == self.fleetId:
- self.tabManager.DeletePage(self.tabManager.GetPageIndex(self))
-
- event.Skip()
-
- def checkNew(self, event):
- data = self.GetPyData(event.Item)
- if data and isinstance(data, tuple) and data[0] == "add":
- layer = data[1]
-
-
- def UpdateTab(self, name, img):
- self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), name, img)
-
- def populate(self, fleetID):
- sFleet = service.Fleet.getInstance()
- f = sFleet.getFleetByID(fleetID)
- self.fleetId = fleetID
-
- self.UpdateTab( f.name, self.fleetImg)
- self.fleet = f
- self.DeleteAllItems()
- root = self.AddRoot("")
-
- self.setEntry(root, f.leader, "fleet", f)
- for wing in f.wings:
- wingId = self.AppendItem(root, "")
- self.setEntry(wingId, wing.leader, "wing", wing)
- for squad in wing.squads:
- for member in squad.members:
- memberId = self.AppendItem(wingId, "")
- self.setEntry(memberId, member, "squad", squad)
-
- self.addAdder(wingId, "squad")
-
- self.addAdder(root, "wing")
-
- self.ExpandAll(root)
- self.SetColumnWidth(0, 16)
- for i in xrange(1, 5):
- self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER)
- headerWidth = self.GetColumnWidth(i) + 5
- self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
- baseWidth = self.GetColumnWidth(i)
- if baseWidth < headerWidth:
- self.SetColumnWidth(i, headerWidth)
- else:
- self.SetColumnWidth(i, baseWidth)
-
-
- def addAdder(self, treeItemId, layer):
- id = self.AppendItem(treeItemId, "Add new %s" % layer.capitalize())
- self.SetPyData(id, ("add", layer))
- self.SetItemImage(id, self.addImage, 1)
-
- def setEntry(self, treeItemId, fit, layer, info):
- self.SetPyData(treeItemId, info)
- if fit is None:
- self.SetItemText(treeItemId, "%s Commander" % layer.capitalize(), 1)
- else:
- fleet = self.fleet
- if fit == info.booster:
- self.SetItemImage(treeItemId, self.icons["%sb" % layer[0]], 0)
- elif fit == info.leader:
- self.SetItemImage(treeItemId, self.icons["%sc" % layer[0]], 1)
-
- self.SetItemText(treeItemId, fit.name, 1)
- self.SetItemText(treeItemId, fit.ship.item.name, 2)
- self.SetItemText(treeItemId, fit.character.name, 3)
- boosts = fleet.store.getBoosts(fit)
- if boosts:
- bonusses = []
- for name, info in boosts.iteritems():
- bonusses.append("%s: %.2g" % (name, info[0]))
-
- self.SetItemText(treeItemId, ", ".join(bonusses), 3)
+import wx.gizmos
+import gui.fleetBrowser
+from gui.bitmapLoader import BitmapLoader
+from service.fleet import Fleet
+
+
+# Tab spawning handler
+class FleetSpawner(gui.multiSwitch.TabSpawner):
+ def __init__(self, multiSwitch):
+ self.multiSwitch = multiSwitch
+ mainFrame = gui.mainFrame.MainFrame.getInstance()
+ mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_SELECTED, self.fleetSelected)
+
+ def fleetSelected(self, event):
+ if self.multiSwitch.GetPageCount() == 0:
+ self.multiSwitch.AddPage(wx.Panel(self.multiSwitch, size=(0, 0)), "Empty Tab")
+
+ view = FleetView(self.multiSwitch)
+ self.multiSwitch.ReplaceActivePage(view)
+ view.populate(event.fleetID)
+ view.Show()
+
+
+FleetSpawner.register()
+
+
+class FleetView(wx.gizmos.TreeListCtrl):
+ def __init__(self, parent, size=(0, 0)):
+ wx.gizmos.TreeListCtrl.__init__(self, parent, size=size)
+
+ self.tabManager = parent
+
+ self.fleetId = None
+ self.fleetImg = BitmapLoader.getImage("53_16", "icons")
+
+ self.imageList = wx.ImageList(16, 16)
+ self.SetImageList(self.imageList)
+
+ for col in ("", "Fit", "Shiptype", "Character", "Bonusses"):
+ self.AddColumn(col)
+
+ self.SetMainColumn(1)
+ self.icons = {}
+ self.addImage = self.imageList.Add(BitmapLoader.getBitmap("add_small", "gui"))
+ for icon in ("fb", "fc", "sb", "sc", "wb", "wc"):
+ self.icons[icon] = self.imageList.Add(BitmapLoader.getBitmap("fleet_%s_small" % icon, "gui"))
+
+ self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.checkNew)
+ self.mainFrame = gui.mainFrame.MainFrame.getInstance()
+
+ self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_RENAMED, self.fleetRenamed)
+ self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_REMOVED, self.fleetRemoved)
+
+ def Destroy(self):
+ self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_REMOVED, handler=self.fleetRemoved)
+ self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_RENAMED, handler=self.fleetRenamed)
+ wx.gizmos.TreeListCtrl.Destroy(self)
+
+ def fleetRenamed(self, event):
+ if event.fleetID == self.fleetId:
+ sFleet = Fleet.getInstance()
+ f = sFleet.getFleetByID(event.fleetID)
+ self.UpdateTab(f.name, self.fleetImg)
+
+ event.Skip()
+
+ def fleetRemoved(self, event):
+ if event.fleetID == self.fleetId:
+ self.tabManager.DeletePage(self.tabManager.GetPageIndex(self))
+
+ event.Skip()
+
+ def checkNew(self, event):
+ data = self.GetPyData(event.Item)
+ if data and isinstance(data, tuple) and data[0] == "add":
+ layer = data[1]
+
+
+ def UpdateTab(self, name, img):
+ self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), name, img)
+
+ def populate(self, fleetID):
+ sFleet = Fleet.getInstance()
+ f = sFleet.getFleetByID(fleetID)
+ self.fleetId = fleetID
+
+ self.UpdateTab(f.name, self.fleetImg)
+ self.fleet = f
+ self.DeleteAllItems()
+ root = self.AddRoot("")
+
+ self.setEntry(root, f.leader, "fleet", f)
+ for wing in f.wings:
+ wingId = self.AppendItem(root, "")
+ self.setEntry(wingId, wing.leader, "wing", wing)
+ for squad in wing.squads:
+ for member in squad.members:
+ memberId = self.AppendItem(wingId, "")
+ self.setEntry(memberId, member, "squad", squad)
+
+ self.addAdder(wingId, "squad")
+
+ self.addAdder(root, "wing")
+
+ self.ExpandAll(root)
+ self.SetColumnWidth(0, 16)
+ for i in range(1, 5):
+ self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER)
+ headerWidth = self.GetColumnWidth(i) + 5
+ self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
+ baseWidth = self.GetColumnWidth(i)
+ if baseWidth < headerWidth:
+ self.SetColumnWidth(i, headerWidth)
+ else:
+ self.SetColumnWidth(i, baseWidth)
+
+ def addAdder(self, treeItemId, layer):
+ id_ = self.AppendItem(treeItemId, "Add new %s" % layer.capitalize())
+ self.SetPyData(id_, ("add", layer))
+ self.SetItemImage(id_, self.addImage, 1)
+
+ def setEntry(self, treeItemId, fit, layer, info):
+ self.SetPyData(treeItemId, info)
+ if fit is None:
+ self.SetItemText(treeItemId, "%s Commander" % layer.capitalize(), 1)
+ else:
+ fleet = self.fleet
+ if fit == info.booster:
+ self.SetItemImage(treeItemId, self.icons["%sb" % layer[0]], 0)
+ elif fit == info.leader:
+ self.SetItemImage(treeItemId, self.icons["%sc" % layer[0]], 1)
+
+ self.SetItemText(treeItemId, fit.name, 1)
+ self.SetItemText(treeItemId, fit.ship.item.name, 2)
+ self.SetItemText(treeItemId, fit.character.name, 3)
+ boosts = fleet.store.getBoosts(fit)
+ if boosts:
+ bonusses = []
+ for name, info in boosts.iteritems():
+ bonusses.append("%s: %.2g" % (name, info[0]))
+
+ self.SetItemText(treeItemId, ", ".join(bonusses), 3)
diff --git a/gui/builtinViews/implantEditor.py b/gui/builtinViews/implantEditor.py
index 851f49754..b06a0ea5c 100644
--- a/gui/builtinViews/implantEditor.py
+++ b/gui/builtinViews/implantEditor.py
@@ -1,10 +1,12 @@
import wx
-import gui.display as d
-from gui.bitmapLoader import BitmapLoader
-import gui.PFSearchBox as SBox
-from gui.marketBrowser import SearchBox
from wx.lib.buttons import GenBitmapButton
+
from service.market import Market
+import gui.display as d
+import gui.PFSearchBox as SBox
+from gui.bitmapLoader import BitmapLoader
+from gui.marketBrowser import SearchBox
+
class BaseImplantEditorView (wx.Panel):
def addMarketViewImage(self, iconFile):
@@ -17,7 +19,7 @@ class BaseImplantEditorView (wx.Panel):
return self.availableImplantsImageList.Add(bitmap)
def __init__(self, parent):
- wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL)
+ wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL)
self.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
pmainSizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -46,25 +48,23 @@ class BaseImplantEditorView (wx.Panel):
availableSizer.Add(self.availableImplantsTree, 1, wx.EXPAND)
-
pmainSizer.Add(availableSizer, 1, wx.ALL | wx.EXPAND, 5)
-
buttonSizer = wx.BoxSizer(wx.VERTICAL)
- buttonSizer.AddSpacer(( 0, 0), 1)
+ buttonSizer.AddSpacer((0, 0), 1)
- self.btnAdd = GenBitmapButton(self, wx.ID_ADD, BitmapLoader.getBitmap("fit_add_small", "gui"), style = wx.BORDER_NONE)
+ self.btnAdd = GenBitmapButton(self, wx.ID_ADD, BitmapLoader.getBitmap("fit_add_small", "gui"), style=wx.BORDER_NONE)
buttonSizer.Add(self.btnAdd, 0)
- self.btnRemove = GenBitmapButton(self, wx.ID_REMOVE, BitmapLoader.getBitmap("fit_delete_small", "gui"), style = wx.BORDER_NONE)
+ self.btnRemove = GenBitmapButton(self, wx.ID_REMOVE, BitmapLoader.getBitmap("fit_delete_small", "gui"), style=wx.BORDER_NONE)
buttonSizer.Add(self.btnRemove, 0)
- buttonSizer.AddSpacer(( 0, 0), 1)
+ buttonSizer.AddSpacer((0, 0), 1)
pmainSizer.Add(buttonSizer, 0, wx.EXPAND, 0)
characterImplantSizer = wx.BoxSizer(wx.VERTICAL)
self.pluggedImplantsTree = AvailableImplantsView(self)
- characterImplantSizer.Add(self.pluggedImplantsTree, 1, wx.ALL|wx.EXPAND, 5)
+ characterImplantSizer.Add(self.pluggedImplantsTree, 1, wx.ALL | wx.EXPAND, 5)
pmainSizer.Add(characterImplantSizer, 1, wx.EXPAND, 5)
self.SetSizer(pmainSizer)
@@ -80,13 +80,13 @@ class BaseImplantEditorView (wx.Panel):
self.availableImplantsTree.SortChildren(self.availableRoot)
- #Bind the event to replace dummies by real data
+ # Bind the event to replace dummies by real data
self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup)
self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.itemSelected)
self.itemView.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemSelected)
- #Bind add & remove buttons
+ # Bind add & remove buttons
self.btnAdd.Bind(wx.EVT_BUTTON, self.itemSelected)
self.btnRemove.Bind(wx.EVT_BUTTON, self.removeItem)
@@ -136,7 +136,7 @@ class BaseImplantEditorView (wx.Panel):
# if the dummy item is a market group, replace with actual market groups
if text == "dummy":
- #Add 'real stoof!' instead
+ # Add 'real stoof!' instead
currentMktGrp = sMkt.getMarketGroup(tree.GetPyData(parent), eager="children")
for childMktGrp in sMkt.getMarketGroupChildren(currentMktGrp):
iconId = self.addMarketViewImage(sMkt.getIconByMarketGroup(childMktGrp))
@@ -194,6 +194,7 @@ class BaseImplantEditorView (wx.Panel):
self.removeImplantFromContext(self.implants[pos])
self.update()
+
class AvailableImplantsView(d.Display):
DEFAULT_COLS = ["attr:implantness",
"Base Icon",
@@ -203,6 +204,7 @@ class AvailableImplantsView(d.Display):
d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL)
self.Bind(wx.EVT_LEFT_DCLICK, parent.removeItem)
+
class ItemView(d.Display):
DEFAULT_COLS = ["Base Icon",
"Base Name",
@@ -255,4 +257,4 @@ class ItemView(d.Display):
self.items = sorted(list(items), key=lambda i: i.name)
- self.update(self.items)
\ No newline at end of file
+ self.update(self.items)
diff --git a/gui/cachingImageList.py b/gui/cachingImageList.py
index 4ec0b2f69..aceff6775 100644
--- a/gui/cachingImageList.py
+++ b/gui/cachingImageList.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,21 +15,23 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
import wx
from gui.bitmapLoader import BitmapLoader
+
class CachingImageList(wx.ImageList):
def __init__(self, width, height):
wx.ImageList.__init__(self, width, height)
self.map = {}
def GetImageIndex(self, *loaderArgs):
- id = self.map.get(loaderArgs)
- if id is None:
+ id_ = self.map.get(loaderArgs)
+ if id_ is None:
bitmap = BitmapLoader.getBitmap(*loaderArgs)
if bitmap is None:
return -1
- id = self.map[loaderArgs] = wx.ImageList.Add(self,bitmap)
- return id
+ id_ = self.map[loaderArgs] = wx.ImageList.Add(self, bitmap)
+ return id_
diff --git a/gui/cargoView.py b/gui/cargoView.py
index a6b93c1ef..527b41691 100644
--- a/gui/cargoView.py
+++ b/gui/cargoView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,17 +15,17 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.display as d
-import gui.marketBrowser as mb
from gui.builtinViewColumns.state import State
from gui.contextMenu import ContextMenu
import globalEvents as GE
from service.fit import Fit
from service.market import Market
+
class CargoViewDrop(wx.PyDropTarget):
def __init__(self, dropFn):
wx.PyDropTarget.__init__(self)
@@ -40,6 +40,7 @@ class CargoViewDrop(wx.PyDropTarget):
self.dropFn(x, y, data)
return t
+
# @todo: Was copied form another class and modified. Look through entire file, refine
class CargoView(d.Display):
DEFAULT_COLS = ["Base Icon",
@@ -59,7 +60,7 @@ class CargoView(d.Display):
self.SetDropTarget(CargoViewDrop(self.handleListDrag))
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
- if "__WXGTK__" in wx.PlatformInfo:
+ if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
@@ -85,13 +86,13 @@ class CargoView(d.Display):
if row != -1:
data = wx.PyTextDataObject()
- data.SetText("cargo:"+str(row))
+ data.SetText("cargo:" + str(row))
dropSource = wx.DropSource(self)
dropSource.SetData(data)
- res = dropSource.DoDragDrop()
+ dropSource.DoDragDrop()
- def kbEvent(self,event):
+ def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
fitID = self.mainFrame.getActiveFit()
@@ -112,16 +113,16 @@ class CargoView(d.Display):
# Gather module information to get position
module = fit.modules[modIdx]
- if dstRow != -1: # we're swapping with cargo
- if mstate.CmdDown(): # if copying, append to cargo
+ if dstRow != -1: # we're swapping with cargo
+ if mstate.CmdDown(): # if copying, append to cargo
sFit.addCargo(self.mainFrame.getActiveFit(), module.item.ID)
- else: # else, move / swap
+ else: # else, move / swap
sFit.moveCargoToModule(self.mainFrame.getActiveFit(), module.position, dstRow)
- else: # dragging to blank spot, append
+ else: # dragging to blank spot, append
sFit.addCargo(self.mainFrame.getActiveFit(), module.item.ID)
- if not mstate.CmdDown(): # if not copying, remove module
- sFit.removeModule(self.mainFrame.getActiveFit(), module.position)
+ if not mstate.CmdDown(): # if not copying, remove module
+ sFit.removeModule(self.mainFrame.getActiveFit(), module.position)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
@@ -131,7 +132,7 @@ class CargoView(d.Display):
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
- #Clear list and get out if current fitId is None
+ # Clear list and get out if current fitId is None
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
@@ -140,7 +141,8 @@ class CargoView(d.Display):
self.original = fit.cargo if fit is not None else None
self.cargo = stuff = fit.cargo if fit is not None else None
- if stuff is not None: stuff.sort(key=lambda cargo: cargo.itemID)
+ if stuff is not None:
+ stuff.sort(key=lambda cargo: cargo.itemID)
if event.fitID != self.lastFitId:
self.lastFitId = event.fitID
diff --git a/gui/characterEditor.py b/gui/characterEditor.py
index e551ce9fa..e9d512a74 100644
--- a/gui/characterEditor.py
+++ b/gui/characterEditor.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
diff --git a/gui/characterSelection.py b/gui/characterSelection.py
index 7ff6be57e..b63f87475 100644
--- a/gui/characterSelection.py
+++ b/gui/characterSelection.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.bitmapLoader import BitmapLoader
@@ -24,6 +24,7 @@ import gui.mainFrame
from service.character import Character
from service.fit import Fit
+
class CharacterSelection(wx.Panel):
def __init__(self, parent):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
@@ -43,9 +44,9 @@ class CharacterSelection(wx.Panel):
self.refreshCharacterList()
self.cleanSkills = BitmapLoader.getBitmap("skill_big", "gui")
- self.redSkills = BitmapLoader.getBitmap("skillRed_big", "gui")
+ self.redSkills = BitmapLoader.getBitmap("skillRed_big", "gui")
self.greenSkills = BitmapLoader.getBitmap("skillGreen_big", "gui")
- self.refresh = BitmapLoader.getBitmap("refresh", "gui")
+ self.refresh = BitmapLoader.getBitmap("refresh", "gui")
self.btnRefresh = wx.BitmapButton(self, wx.ID_ANY, self.refresh)
size = self.btnRefresh.GetSize()
@@ -67,7 +68,7 @@ class CharacterSelection(wx.Panel):
self.mainFrame.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList)
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
- self.SetMinSize(wx.Size(25,-1))
+ self.SetMinSize(wx.Size(25, -1))
self.charChoice.Enable(False)
@@ -138,16 +139,16 @@ class CharacterSelection(wx.Panel):
def selectChar(self, charID):
choice = self.charChoice
numItems = len(choice.GetItems())
- for i in xrange(numItems):
- id = choice.GetClientData(i)
- if id == charID:
+ for i in range(numItems):
+ id_ = choice.GetClientData(i)
+ if id_ == charID:
choice.SetSelection(i)
return True
return False
def fitChanged(self, event):
- self.charChoice.Enable(event.fitID != None)
+ self.charChoice.Enable(event.fitID is not None)
choice = self.charChoice
sFit = Fit.getInstance()
currCharID = choice.GetClientData(choice.GetCurrentSelection())
@@ -159,23 +160,23 @@ class CharacterSelection(wx.Panel):
else:
sCharacter = Character.getInstance()
reqs = sCharacter.checkRequirements(fit)
- sCharacter.skillReqsDict = {'charname':fit.character.name, 'skills':[]}
+ sCharacter.skillReqsDict = {'charname': fit.character.name, 'skills': []}
if len(reqs) == 0:
tip = "All skill prerequisites have been met"
self.skillReqsStaticBitmap.SetBitmap(self.greenSkills)
else:
- tip = "Skills required:\n"
+ tip = "Skills required:\n"
condensed = sFit.serviceFittingOptions["compactSkills"]
if condensed:
- dict = self._buildSkillsTooltipCondensed(reqs, skillsMap = {})
- for key in sorted(dict):
- tip += "%s: %d\n" % (key, dict[key])
+ dict_ = self._buildSkillsTooltipCondensed(reqs, skillsMap={})
+ for key in sorted(dict_):
+ tip += "%s: %d\n" % (key, dict_[key])
else:
tip += self._buildSkillsTooltip(reqs)
self.skillReqsStaticBitmap.SetBitmap(self.redSkills)
self.skillReqsStaticBitmap.SetToolTipString(tip.strip())
- if newCharID == None:
+ if newCharID is None:
sChar = Character.getInstance()
self.selectChar(sChar.all5ID())
@@ -183,10 +184,9 @@ class CharacterSelection(wx.Panel):
self.selectChar(newCharID)
self.charChanged(None)
-
event.Skip()
- def _buildSkillsTooltip(self, reqs, currItem = "", tabulationLevel = 0):
+ def _buildSkillsTooltip(self, reqs, currItem="", tabulationLevel=0):
tip = ""
sCharacter = Character.getInstance()
@@ -198,11 +198,11 @@ class CharacterSelection(wx.Panel):
for name, info in reqs.iteritems():
level, ID, more = info
sCharacter.skillReqsDict['skills'].append({
- 'item' : currItem,
- 'skillID' : ID,
- 'skill' : name,
- 'level' : level,
- 'indent' : tabulationLevel
+ 'item': currItem,
+ 'skillID': ID,
+ 'skill': name,
+ 'level': level,
+ 'indent': tabulationLevel,
})
tip += "%s%s: %d\n" % (" " * tabulationLevel, name, level)
@@ -210,7 +210,10 @@ class CharacterSelection(wx.Panel):
return tip
- def _buildSkillsTooltipCondensed(self, reqs, currItem = "", tabulationLevel = 0, skillsMap = {}):
+ def _buildSkillsTooltipCondensed(self, reqs, currItem="", tabulationLevel=0, skillsMap=None):
+ if skillsMap is None:
+ skillsMap = {}
+
sCharacter = Character.getInstance()
if tabulationLevel == 0:
@@ -221,11 +224,11 @@ class CharacterSelection(wx.Panel):
for name, info in reqs.iteritems():
level, ID, more = info
sCharacter.skillReqsDict['skills'].append({
- 'item' : currItem,
- 'skillID' : ID,
- 'skill' : name,
- 'level' : level,
- 'indent' : tabulationLevel
+ 'item': currItem,
+ 'skillID': ID,
+ 'skill': name,
+ 'level': level,
+ 'indent': tabulationLevel,
})
if name not in skillsMap:
@@ -233,6 +236,6 @@ class CharacterSelection(wx.Panel):
elif skillsMap[name] < level:
skillsMap[name] = level
- skillMap = self._buildSkillsTooltipCondensed(more, currItem, tabulationLevel + 1, skillsMap)
+ skillsMap = self._buildSkillsTooltipCondensed(more, currItem, tabulationLevel + 1, skillsMap)
return skillsMap
diff --git a/gui/chromeTabs.py b/gui/chromeTabs.py
index db1ad694c..be2342622 100644
--- a/gui/chromeTabs.py
+++ b/gui/chromeTabs.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Darriele
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import wx.lib.newevent
@@ -23,7 +23,6 @@ import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
import gui.utils.fonts as fonts
from gui.bitmapLoader import BitmapLoader
-import gui.utils.fonts as fonts
from service.fit import Fit
@@ -35,6 +34,7 @@ _PageClosing, EVT_NOTEBOOK_PAGE_CLOSING = wx.lib.newevent.NewEvent()
PageAdded, EVT_NOTEBOOK_PAGE_ADDED = wx.lib.newevent.NewEvent()
PageClosed, EVT_NOTEBOOK_PAGE_CLOSED = wx.lib.newevent.NewEvent()
+
class VetoAble():
def __init__(self):
self.__vetoed = False
@@ -92,7 +92,6 @@ class PageAdding(_PageAdding, VetoAble):
class PFNotebook(wx.Panel):
-
def __init__(self, parent, canAdd=True):
"""
Instance of Pyfa Notebook. Initializes general layout, includes methods
@@ -101,8 +100,8 @@ class PFNotebook(wx.Panel):
parent - wx parent element
canAdd - True if tabs be deleted and added, passed directly to
PFTabsContainer
-
"""
+
wx.Panel.__init__(self, parent, wx.ID_ANY, size=(-1, -1))
self.pages = []
@@ -235,7 +234,7 @@ class PFNotebook(wx.Panel):
try:
# Set page to the first non-disabled page
self.SetSelection(next(i for i, _ in enumerate(self.pages) if not self.tabsContainer.tabs[i].disabled))
- except StopIteration, ex:
+ except StopIteration:
self.SetSelection(0)
self.tabsContainer.DisableTab(idx, toggle)
@@ -338,7 +337,7 @@ class PFNotebook(wx.Panel):
class PFTabRenderer:
- def __init__(self, size=(36, 24), text=wx.EmptyString, img=None, inclination=6 , closeButton=True):
+ def __init__(self, size=(36, 24), text=wx.EmptyString, img=None, inclination=6, closeButton=True):
"""
Renders a new tab
@@ -433,7 +432,7 @@ class PFTabRenderer:
mdc.SelectObject(ebmp)
mdc.SetFont(self.font)
textSizeX, textSizeY = mdc.GetTextExtent(self.text)
- totalSize = self.leftWidth + self.rightWidth + textSizeX + self.closeBtnWidth/2 + 16 + self.padding*2
+ totalSize = self.leftWidth + self.rightWidth + textSizeX + self.closeBtnWidth / 2 + 16 + self.padding * 2
mdc.SelectObject(wx.NullBitmap)
return totalSize, self.tabHeight
@@ -498,7 +497,7 @@ class PFTabRenderer:
mdc = wx.MemoryDC()
mdc.SelectObject(bkbmp)
- #mdc.SetBackground(wx.Brush((0x12, 0x23, 0x32)))
+ # mdc.SetBackground(wx.Brush((0x12, 0x23, 0x32)))
mdc.Clear()
mdc.DrawBitmap(self.ctabLeftBmp, 0, 0) # set the left bitmap
@@ -507,14 +506,14 @@ class PFTabRenderer:
cm = self.ctabMiddleBmp.ConvertToImage()
mimg = cm.Scale(self.contentWidth, self.ctabMiddle.GetHeight(), wx.IMAGE_QUALITY_NORMAL)
mbmp = wx.BitmapFromImage(mimg)
- mdc.DrawBitmap(mbmp, self.leftWidth, 0 ) # set middle bitmap, offset by left
+ mdc.DrawBitmap(mbmp, self.leftWidth, 0) # set middle bitmap, offset by left
# set right bitmap offset by left + middle
mdc.DrawBitmap(self.ctabRightBmp, self.contentWidth + self.leftWidth, 0)
mdc.SelectObject(wx.NullBitmap)
- #bkbmp.SetMaskColour((0x12, 0x23, 0x32))
+ # bkbmp.SetMaskColour((0x12, 0x23, 0x32))
if self.tabBackBitmap:
del self.tabBackBitmap
@@ -528,7 +527,7 @@ class PFTabRenderer:
"""
self.tabRegion = wx.RegionFromBitmap(self.tabBackBitmap)
self.closeBtnRegion = wx.RegionFromBitmap(self.ctabCloseBmp)
- self.closeBtnRegion.Offset(self.contentWidth + self.leftWidth - self.ctabCloseBmp.GetWidth()/2, (self.tabHeight - self.ctabCloseBmp.GetHeight())/2)
+ self.closeBtnRegion.Offset(self.contentWidth + self.leftWidth - self.ctabCloseBmp.GetWidth() / 2, (self.tabHeight - self.ctabCloseBmp.GetHeight()) / 2)
def InitColors(self):
"""Determines colors used for tab, based on system settings"""
@@ -546,33 +545,33 @@ class PFTabRenderer:
height = self.tabHeight
- #rect = wx.Rect(0, 0, self.tabWidth, self.tabHeight)
+ # rect = wx.Rect(0, 0, self.tabWidth, self.tabHeight)
canvas = wx.EmptyBitmap(self.tabWidth, self.tabHeight, 24)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
- #mdc.SetBackground(wx.Brush ((0x12,0x23,0x32)))
+ # mdc.SetBackground(wx.Brush ((0x12,0x23,0x32)))
mdc.Clear()
- #r = copy.copy(rect)
- #r.top = r.left = 0
- #r.height = height
+ # r = copy.copy(rect)
+ # r.top = r.left = 0
+ # r.height = height
mdc.DrawBitmap(self.tabBackBitmap, 0, 0, True)
if self.tabImg:
bmp = wx.BitmapFromImage(self.tabImg.ConvertToGreyscale() if self.disabled else self.tabImg)
if self.contentWidth > 16: # @todo: is this conditional relevant anymore?
# Draw tab icon
- mdc.DrawBitmap(bmp, self.leftWidth + self.padding - bmp.GetWidth()/2, (height - bmp.GetHeight())/2)
- textStart = self.leftWidth + self.padding + bmp.GetWidth()/2
+ mdc.DrawBitmap(bmp, self.leftWidth + self.padding - bmp.GetWidth() / 2, (height - bmp.GetHeight()) / 2)
+ textStart = self.leftWidth + self.padding + bmp.GetWidth() / 2
else:
textStart = self.leftWidth
mdc.SetFont(self.font)
- maxsize = self.tabWidth - textStart - self.rightWidth - self.padding*4
+ maxsize = self.tabWidth - textStart - self.rightWidth - self.padding * 4
color = self.selectedColor if self.selected else self.inactiveColor
mdc.SetTextForeground(colorUtils.GetSuitableColor(color, 1))
@@ -590,9 +589,10 @@ class PFTabRenderer:
cbmp = wx.BitmapFromImage(cimg)
mdc.DrawBitmap(
- cbmp,
- self.contentWidth + self.leftWidth - self.ctabCloseBmp.GetWidth()/2,
- (height - self.ctabCloseBmp.GetHeight())/2)
+ cbmp,
+ self.contentWidth + self.leftWidth - self.ctabCloseBmp.GetWidth() / 2,
+ (height - self.ctabCloseBmp.GetHeight()) / 2,
+ )
mdc.SelectObject(wx.NullBitmap)
@@ -610,6 +610,7 @@ class PFTabRenderer:
self.text, self.disabled, hex(id(self))
)
+
class PFAddRenderer:
def __init__(self):
"""Renders the add tab button"""
@@ -629,7 +630,7 @@ class PFAddRenderer:
def GetPosition(self):
return self.position
- def SetPosition(self,pos):
+ def SetPosition(self, pos):
self.position = pos
def GetSize(self):
@@ -690,7 +691,7 @@ class PFTabsContainer(wx.Panel):
"""
wx.Panel.__init__(self, parent, id, pos, size)
- if wx.VERSION >= (3,0):
+ if wx.VERSION >= (3, 0):
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.tabs = []
@@ -866,7 +867,8 @@ class PFTabsContainer(wx.Panel):
return True
if self.TabHitTest(tab, x, y):
- if tab.disabled: return
+ if tab.disabled:
+ return
tab.SetSelected(True)
oldSelTab.SetSelected(False)
@@ -943,7 +945,7 @@ class PFTabsContainer(wx.Panel):
closeBtnReg = tab.GetCloseButtonRegion()
tabPos = tab.GetPosition()
tabPosX, tabPosY = tabPos
- closeBtnReg.Offset(tabPosX,tabPosY)
+ closeBtnReg.Offset(tabPosX, tabPosY)
if closeBtnReg.Contains(x, y):
if not tab.GetCloseButtonHoverStatus():
@@ -986,7 +988,6 @@ class PFTabsContainer(wx.Panel):
def GetTabAtRight(self, tabIndex):
return self.tabs[tabIndex + 1] if tabIndex < self.GetTabsCount() - 1 else None
-
def SwitchTabs(self, src, dest, draggedTab=None):
self.tabs[src], self.tabs[dest] = self.tabs[dest], self.tabs[src]
self.UpdateTabsPosition(draggedTab)
@@ -1111,14 +1112,12 @@ class PFTabsContainer(wx.Panel):
def OnPaint(self, event):
if "wxGTK" in wx.PlatformInfo:
mdc = wx.AutoBufferedPaintDC(self)
-
else:
- rect = self.GetRect()
mdc = wx.BufferedPaintDC(self)
selected = 0
- if 'wxMac' in wx.PlatformInfo and wx.VERSION < (3,0):
+ if 'wxMac' in wx.PlatformInfo and wx.VERSION < (3, 0):
color = wx.Colour(0, 0, 0)
brush = wx.Brush(color)
@@ -1129,7 +1128,7 @@ class PFTabsContainer(wx.Panel):
brush = wx.Brush(color)
if "wxGTK" not in wx.PlatformInfo:
- mdc.SetBackground (brush)
+ mdc.SetBackground(brush)
mdc.Clear()
selected = None
@@ -1137,21 +1136,18 @@ class PFTabsContainer(wx.Panel):
tabsWidth = 0
for tab in self.tabs:
- tabsWidth += tab.tabWidth - self.inclination*2
-
- pos = tabsWidth
+ tabsWidth += tab.tabWidth - self.inclination * 2
if self.showAddButton:
- ax,ay = self.addButton.GetPosition()
+ ax, ay = self.addButton.GetPosition()
mdc.DrawBitmap(self.addButton.Render(), ax, ay, True)
- for i in xrange(len(self.tabs) - 1, -1, -1):
+ for i in range(len(self.tabs) - 1, -1, -1):
tab = self.tabs[i]
- width = tab.tabWidth - 6
posx, posy = tab.GetPosition()
if not tab.IsSelected():
- mdc.DrawBitmap(self.efxBmp, posx, posy, True )
+ mdc.DrawBitmap(self.efxBmp, posx, posy, True)
bmp = tab.Render()
img = bmp.ConvertToImage()
img = img.AdjustChannels(1, 1, 1, 0.85)
@@ -1266,13 +1262,13 @@ class PFTabsContainer(wx.Panel):
def UpdateTabsPosition(self, skipTab=None):
tabsWidth = 0
for tab in self.tabs:
- tabsWidth += tab.tabWidth - self.inclination*2
+ tabsWidth += tab.tabWidth - self.inclination * 2
pos = tabsWidth
selected = None
- for i in xrange(len(self.tabs) - 1, -1, -1):
+ for i in range(len(self.tabs) - 1, -1, -1):
tab = self.tabs[i]
- width = tab.tabWidth - self.inclination*2
+ width = tab.tabWidth - self.inclination * 2
pos -= width
if not tab.IsSelected():
tab.SetPosition((pos, self.containerHeight - self.height))
@@ -1281,7 +1277,7 @@ class PFTabsContainer(wx.Panel):
selpos = pos
if selected is not skipTab:
selected.SetPosition((selpos, self.containerHeight - self.height))
- self.addButton.SetPosition((round(tabsWidth) + self.inclination*2, self.containerHeight - self.height/2 - self.addButton.GetHeight()/3))
+ self.addButton.SetPosition((round(tabsWidth) + self.inclination * 2, self.containerHeight - self.height / 2 - self.addButton.GetHeight() / 3))
def OnLeaveWindow(self, event):
@@ -1306,17 +1302,15 @@ class PFTabsContainer(wx.Panel):
if not self.previewTab.GetSelected():
page = self.Parent.GetPage(self.GetTabIndex(self.previewTab))
if page.Snapshot():
- self.previewWnd = PFNotebookPagePreview(self, (mposx+3, mposy+3), page.Snapshot(), self.previewTab.text)
+ self.previewWnd = PFNotebookPagePreview(self, (mposx + 3, mposy + 3), page.Snapshot(), self.previewTab.text)
self.previewWnd.Show()
event.Skip()
+
class PFNotebookPagePreview(wx.Frame):
- def __init__ (self,parent, pos, bitmap, title):
- wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=pos, size=wx.DefaultSize, style=
- wx.NO_BORDER
- | wx.FRAME_NO_TASKBAR
- | wx.STAY_ON_TOP)
+ def __init__(self, parent, pos, bitmap, title):
+ wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=pos, size=wx.DefaultSize, style=wx.NO_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP)
self.title = title
self.bitmap = bitmap
@@ -1343,13 +1337,13 @@ class PFNotebookPagePreview(wx.Frame):
else:
width = bitmap.GetWidth()
- self.SetSize((width, bitmap.GetHeight()+16))
+ self.SetSize((width, bitmap.GetHeight() + 16))
self.SetTransparent(0)
self.Refresh()
def OnTimer(self, event):
- self.transp += 20*self.direction
+ self.transp += 20 * self.direction
if self.transp > 220:
self.transp = 220
@@ -1358,7 +1352,7 @@ class PFNotebookPagePreview(wx.Frame):
if self.transp < 0:
self.transp = 0
self.timer.Stop()
- wx.Frame.Show(self,False)
+ wx.Frame.Show(self, False)
self.Destroy()
return
self.SetTransparent(self.transp)
@@ -1382,8 +1376,7 @@ class PFNotebookPagePreview(wx.Frame):
self.direction = -1
self.timer.Start(10)
-
- def OnWindowEraseBk(self,event):
+ def OnWindowEraseBk(self, event):
pass
def OnWindowPaint(self, event):
@@ -1395,17 +1388,17 @@ class PFNotebookPagePreview(wx.Frame):
mdc.SetBackground(wx.Brush(color))
mdc.Clear()
- font = wx.Font(fonts.NORMAL, wx.SWISS, wx.NORMAL,wx.NORMAL, False)
+ font = wx.Font(fonts.NORMAL, wx.SWISS, wx.NORMAL, wx.NORMAL, False)
mdc.SetFont(font)
- x,y = mdc.GetTextExtent(self.title)
+ x, y = mdc.GetTextExtent(self.title)
mdc.SetBrush(wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOWTEXT)))
mdc.DrawRectangle(0, 0, rect.width, 16)
mdc.SetTextForeground(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
- mdc.DrawText(self.title, (rect.width - x)/2, (16 - y)/2)
+ mdc.DrawText(self.title, (rect.width - x) / 2, (16 - y) / 2)
mdc.DrawBitmap(self.bitmap, 0, 16)
diff --git a/gui/commandView.py b/gui/commandView.py
index 37caba85f..10f8fda1d 100644
--- a/gui/commandView.py
+++ b/gui/commandView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.display as d
@@ -34,29 +34,32 @@ class DummyItem:
self.name = txt
self.icon = None
+
class DummyEntry:
def __init__(self, txt):
self.item = DummyItem(txt)
-class CommandViewDrop(wx.PyDropTarget):
- def __init__(self, dropFn):
- wx.PyDropTarget.__init__(self)
- self.dropFn = dropFn
- # this is really transferring an EVE itemID
- self.dropData = wx.PyTextDataObject()
- self.SetDataObject(self.dropData)
- def OnData(self, x, y, t):
- if self.GetData():
- data = self.dropData.GetText().split(':')
- self.dropFn(x, y, data)
- return t
+class CommandViewDrop(wx.PyDropTarget):
+ def __init__(self, dropFn):
+ wx.PyDropTarget.__init__(self)
+ self.dropFn = dropFn
+ # this is really transferring an EVE itemID
+ self.dropData = wx.PyTextDataObject()
+ self.SetDataObject(self.dropData)
+
+ def OnData(self, x, y, t):
+ if self.GetData():
+ data = self.dropData.GetText().split(':')
+ self.dropFn(x, y, data)
+ return t
+
class CommandView(d.Display):
- DEFAULT_COLS = ["Base Name",]
+ DEFAULT_COLS = ["Base Name"]
def __init__(self, parent):
- d.Display.__init__(self, parent, style = wx.LC_SINGLE_SEL | wx.BORDER_NONE)
+ d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL | wx.BORDER_NONE)
self.lastFitId = None
@@ -68,7 +71,7 @@ class CommandView(d.Display):
self.droneView = gui.droneView.DroneView
- if "__WXGTK__" in wx.PlatformInfo:
+ if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
@@ -86,7 +89,7 @@ class CommandView(d.Display):
'''
pass
- def kbEvent(self,event):
+ def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
fitID = self.mainFrame.getActiveFit()
@@ -97,7 +100,7 @@ class CommandView(d.Display):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
def handleDrag(self, type, fitID):
- #Those are drags coming from pyfa sources, NOT builtin wx drags
+ # Those are drags coming from pyfa sources, NOT builtin wx drags
if type == "fit":
activeFit = self.mainFrame.getActiveFit()
if activeFit:
@@ -110,7 +113,7 @@ class CommandView(d.Display):
row = event.GetIndex()
if row != -1 and isinstance(self.get(row), es_Drone):
data = wx.PyTextDataObject()
- data.SetText("command:"+str(self.GetItemData(row)))
+ data.SetText("command:" + str(self.GetItemData(row)))
dropSource = wx.DropSource(self)
dropSource.SetData(data)
@@ -125,7 +128,7 @@ class CommandView(d.Display):
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
- #Clear list and get out if current fitId is None
+ # Clear list and get out if current fitId is None
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
@@ -184,11 +187,11 @@ class CommandView(d.Display):
menu = None
if sel != -1:
item = self.get(sel)
- if item is None: return
- sMkt = Market.getInstance()
+ if item is None:
+ return
fitSrcContext = "commandFit"
fitItemContext = item.name
- context = ((fitSrcContext,fitItemContext),)
+ context = ((fitSrcContext, fitItemContext),)
context = context + (("command",),)
menu = ContextMenu.getMenu((item,), *context)
elif sel == -1:
diff --git a/gui/contextMenu.py b/gui/contextMenu.py
index 61823ff3a..2a8033b44 100644
--- a/gui/contextMenu.py
+++ b/gui/contextMenu.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,16 +15,18 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import logging
+
logger = logging.getLogger(__name__)
+
class ContextMenu(object):
menus = []
- _ids = [] #[wx.NewId() for x in xrange(200)] # init with decent amount
+ _ids = [] # [wx.NewId() for x in xrange(200)] # init with decent amount
_idxid = -1
@classmethod
@@ -175,4 +177,4 @@ class ContextMenu(object):
return None
-from gui.builtinContextMenus import *
+from gui.builtinContextMenus import * # noqa
diff --git a/gui/copySelectDialog.py b/gui/copySelectDialog.py
index ea2e44620..659e01b5a 100644
--- a/gui/copySelectDialog.py
+++ b/gui/copySelectDialog.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Lucas Thode
#
# This file is part of pyfa.
@@ -15,11 +15,12 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
+
class CopySelectDialog(wx.Dialog):
copyFormatEft = 0
copyFormatEftImps = 1
@@ -29,7 +30,7 @@ class CopySelectDialog(wx.Dialog):
copyFormatMultiBuy = 5
def __init__(self, parent):
- wx.Dialog.__init__(self, parent, id = wx.ID_ANY, title = u"Select a format", size = (-1,-1), style = wx.DEFAULT_DIALOG_STYLE)
+ wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"Select a format", size=(-1, -1), style=wx.DEFAULT_DIALOG_STYLE)
mainSizer = wx.BoxSizer(wx.VERTICAL)
copyFormats = [u"EFT", u"EFT (Implants)", u"XML", u"DNA", u"CREST", u"MultiBuy"]
@@ -39,7 +40,7 @@ class CopySelectDialog(wx.Dialog):
CopySelectDialog.copyFormatDna: u"A one-line text format",
CopySelectDialog.copyFormatCrest: u"A JSON format used for EVE CREST",
CopySelectDialog.copyFormatMultiBuy: u"MultiBuy text format"}
- selector = wx.RadioBox(self, wx.ID_ANY, label = u"Copy to the clipboard using:", choices = copyFormats, style = wx.RA_SPECIFY_ROWS)
+ selector = wx.RadioBox(self, wx.ID_ANY, label=u"Copy to the clipboard using:", choices=copyFormats, style=wx.RA_SPECIFY_ROWS)
selector.Bind(wx.EVT_RADIOBOX, self.Selected)
for format, tooltip in copyFormatTooltips.iteritems():
selector.SetItemToolTip(format, tooltip)
@@ -47,21 +48,18 @@ class CopySelectDialog(wx.Dialog):
self.copyFormat = CopySelectDialog.copyFormatEft
selector.SetSelection(self.copyFormat)
- mainSizer.Add(selector,0,wx.EXPAND | wx.ALL, 5)
+ mainSizer.Add(selector, 0, wx.EXPAND | wx.ALL, 5)
buttonSizer = self.CreateButtonSizer(wx.OK | wx.CANCEL)
if (buttonSizer):
- mainSizer.Add(buttonSizer,0, wx.EXPAND | wx.ALL, 5)
+ mainSizer.Add(buttonSizer, 0, wx.EXPAND | wx.ALL, 5)
self.SetSizer(mainSizer)
self.Fit()
self.Center()
-
def Selected(self, event):
self.copyFormat = event.GetSelection()
def GetSelected(self):
return self.copyFormat
-
-
diff --git a/gui/display.py b/gui/display.py
index 707623581..2aebc1db7 100644
--- a/gui/display.py
+++ b/gui/display.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,19 +15,19 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import sys
import wx
import gui.mainFrame
-
from gui.viewColumn import ViewColumn
from gui.cachingImageList import CachingImageList
-class Display(wx.ListCtrl):
- def __init__(self, parent, size = wx.DefaultSize, style = 0):
- wx.ListCtrl.__init__(self, parent,size = size, style=wx.LC_REPORT | style )
+class Display(wx.ListCtrl):
+ def __init__(self, parent, size=wx.DefaultSize, style=0):
+
+ wx.ListCtrl.__init__(self, parent, size=size, style=wx.LC_REPORT | style)
self.imageList = CachingImageList(16, 16)
self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL)
self.activeColumns = []
@@ -110,15 +110,14 @@ class Display(wx.ListCtrl):
return (rowIndex, 0, -1)
-
- def OnEraseBk(self,event):
- if self.GetItemCount() >0:
+ def OnEraseBk(self, event):
+ if self.GetItemCount() > 0:
width, height = self.GetClientSize()
dc = event.GetDC()
dc.DestroyClippingRegion()
dc.SetClippingRegion(0, 0, width, height)
- x,y,w,h = dc.GetClippingBox()
+ x, y, w, h = dc.GetClippingBox()
topItem = self.GetTopItem()
bottomItem = topItem + self.GetCountPerPage()
@@ -129,10 +128,9 @@ class Display(wx.ListCtrl):
topRect = self.GetItemRect(topItem, wx.LIST_RECT_LABEL)
bottomRect = self.GetItemRect(bottomItem, wx.LIST_RECT_BOUNDS)
+ items_rect = wx.Rect(topRect.left, 0, bottomRect.right - topRect.left, bottomRect.bottom)
- items_rect = wx.Rect(topRect.left, 0, bottomRect.right - topRect.left, bottomRect.bottom )
-
- updateRegion = wx.Region(x,y,w,h)
+ updateRegion = wx.Region(x, y, w, h)
updateRegion.SubtractRect(items_rect)
dc.DestroyClippingRegion()
@@ -171,41 +169,37 @@ class Display(wx.ListCtrl):
# we veto header cell resize by default till we find a way
# to assure a minimal size for the resized header cell
column = event.GetColumn()
- wx.CallAfter(self.checkColumnSize,column)
+ wx.CallAfter(self.checkColumnSize, column)
event.Skip()
def resizeSkip(self, event):
column = event.GetColumn()
- if column > len (self.activeColumns)-1:
+ if column > len(self.activeColumns) - 1:
self.SetColumnWidth(column, 0)
event.Veto()
return
- colItem = self.activeColumns[column]
+ # colItem = self.activeColumns[column]
if self.activeColumns[column].maxsize != -1:
event.Veto()
else:
event.Skip()
- def checkColumnSize(self,column):
+ def checkColumnSize(self, column):
colItem = self.activeColumns[column]
if self.GetColumnWidth(column) < self.columnsMinWidth[column]:
- self.SetColumnWidth(column,self.columnsMinWidth[column])
+ self.SetColumnWidth(column, self.columnsMinWidth[column])
colItem.resized = True
- def getLastItem( self, state = wx.LIST_STATE_DONTCARE):
- lastFound = -1
- while True:
- index = self.GetNextItem(
- lastFound,
- wx.LIST_NEXT_ALL,
- state,
- )
- if index == -1:
- break
- else:
- lastFound = index
+ def getLastItem(self, state=wx.LIST_STATE_DONTCARE):
+ lastFound = -1
+ while True:
+ index = self.GetNextItem(lastFound, wx.LIST_NEXT_ALL, state)
+ if index == -1:
+ break
+ else:
+ lastFound = index
- return lastFound
+ return lastFound
def deselectItems(self):
sel = self.GetFirstSelected()
@@ -220,26 +214,25 @@ class Display(wx.ListCtrl):
stuffItemCount = len(stuff)
if listItemCount < stuffItemCount:
- for i in xrange(stuffItemCount - listItemCount):
- index = self.InsertStringItem(sys.maxint, "")
+ for i in range(stuffItemCount - listItemCount):
+ self.InsertStringItem(sys.maxint, "")
if listItemCount > stuffItemCount:
if listItemCount - stuffItemCount > 20 and stuffItemCount < 20:
self.DeleteAllItems()
- for i in xrange(stuffItemCount):
- index = self.InsertStringItem(sys.maxint, "")
+ for i in range(stuffItemCount):
+ self.InsertStringItem(sys.maxint, "")
else:
- for i in xrange(listItemCount - stuffItemCount):
+ for i in range(listItemCount - stuffItemCount):
self.DeleteItem(self.getLastItem())
self.Refresh()
-
def refresh(self, stuff):
- if stuff == None:
+ if stuff is None:
return
item = -1
- for id, st in enumerate(stuff):
+ for id_, st in enumerate(stuff):
item = self.GetNextItem(item)
@@ -270,11 +263,11 @@ class Display(wx.ListCtrl):
colItem.SetMask(mask)
self.SetItem(colItem)
- self.SetItemData(item, id)
+ self.SetItemData(item, id_)
-# self.Freeze()
+ # self.Freeze()
if 'wxMSW' in wx.PlatformInfo:
- for i,col in enumerate(self.activeColumns):
+ for i, col in enumerate(self.activeColumns):
if not col.resized:
self.SetColumnWidth(i, col.size)
else:
@@ -289,9 +282,7 @@ class Display(wx.ListCtrl):
self.SetColumnWidth(i, headerWidth)
else:
self.SetColumnWidth(i, col.size)
-# self.Thaw()
-
-
+ # self.Thaw()
def update(self, stuff):
self.populate(stuff)
diff --git a/gui/droneView.py b/gui/droneView.py
index 89dbc4dd4..4d389e8ea 100644
--- a/gui/droneView.py
+++ b/gui/droneView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
@@ -27,29 +27,33 @@ from gui.contextMenu import ContextMenu
from service.fit import Fit
from service.market import Market
-class DroneViewDrop(wx.PyDropTarget):
- def __init__(self, dropFn):
- wx.PyDropTarget.__init__(self)
- self.dropFn = dropFn
- # this is really transferring an EVE itemID
- self.dropData = wx.PyTextDataObject()
- self.SetDataObject(self.dropData)
- def OnData(self, x, y, t):
- if self.GetData():
- data = self.dropData.GetText().split(':')
- self.dropFn(x, y, data)
- return t
+class DroneViewDrop(wx.PyDropTarget):
+ def __init__(self, dropFn):
+ wx.PyDropTarget.__init__(self)
+ self.dropFn = dropFn
+ # this is really transferring an EVE itemID
+ self.dropData = wx.PyTextDataObject()
+ self.SetDataObject(self.dropData)
+
+ def OnData(self, x, y, t):
+ if self.GetData():
+ data = self.dropData.GetText().split(':')
+ self.dropFn(x, y, data)
+ return t
+
class DroneView(d.Display):
- DEFAULT_COLS = ["State",
- #"Base Icon",
- "Base Name",
- # "prop:droneDps,droneBandwidth",
- "Max Range",
- "Miscellanea",
- "attr:maxVelocity",
- "Price",]
+ DEFAULT_COLS = [
+ "State",
+ # "Base Icon",
+ "Base Name",
+ # "prop:droneDps,droneBandwidth",
+ "Max Range",
+ "Miscellanea",
+ "attr:maxVelocity",
+ "Price",
+ ]
def __init__(self, parent):
d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL | wx.BORDER_NONE)
@@ -67,12 +71,11 @@ class DroneView(d.Display):
self.Bind(wx.EVT_MOTION, self.OnMouseMove)
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)
- if "__WXGTK__" in wx.PlatformInfo:
+ if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
-
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
self.SetDropTarget(DroneViewDrop(self.handleDragDrop))
@@ -108,7 +111,6 @@ class DroneView(d.Display):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
row = self.GetFirstSelected()
- firstSel = row
if row != -1:
drone = self.drones[self.GetItemData(row)]
self.removeDrone(drone)
@@ -119,11 +121,11 @@ class DroneView(d.Display):
row = event.GetIndex()
if row != -1:
data = wx.PyTextDataObject()
- data.SetText("drone:"+str(row))
+ data.SetText("drone:" + str(row))
dropSource = wx.DropSource(self)
dropSource.SetData(data)
- res = dropSource.DoDragDrop()
+ dropSource.DoDragDrop()
def handleDragDrop(self, x, y, data):
'''
@@ -151,6 +153,7 @@ class DroneView(d.Display):
'Heavy Attack Drones', 'Sentry Drones', 'Fighters',
'Fighter Bombers', 'Combat Utility Drones',
'Electronic Warfare Drones', 'Logistic Drones', 'Mining Drones', 'Salvage Drones')
+
def droneKey(self, drone):
sMkt = Market.getInstance()
@@ -165,7 +168,7 @@ class DroneView(d.Display):
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
- #Clear list and get out if current fitId is None
+ # Clear list and get out if current fitId is None
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
@@ -178,7 +181,6 @@ class DroneView(d.Display):
if stuff is not None:
stuff.sort(key=self.droneKey)
-
if event.fitID != self.lastFitId:
self.lastFitId = event.fitID
@@ -192,7 +194,6 @@ class DroneView(d.Display):
self.update(stuff)
event.Skip()
-
def addItem(self, event):
sFit = Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
diff --git a/gui/fighterView.py b/gui/fighterView.py
index 63e7b3b22..56aeb73b1 100644
--- a/gui/fighterView.py
+++ b/gui/fighterView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py
index 7476d7d7f..1d3c6b38c 100644
--- a/gui/fleetBrowser.py
+++ b/gui/fleetBrowser.py
@@ -1,23 +1,18 @@
import wx
-import copy
-from gui.bitmapLoader import BitmapLoader
-import gui.mainFrame
-from gui.PFListPane import PFListPane
-import service.fleet
-from gui.utils.drawUtils import GetPartialText
-
from wx.lib.buttons import GenBitmapButton
+import service.fleet
+import gui.mainFrame
import gui.utils.colorUtils as colorUtils
-import gui.utils.drawUtils as drawUtils
-
import gui.sfBrowserItem as SFItem
+from gui.bitmapLoader import BitmapLoader
+from gui.PFListPane import PFListPane
+from gui.utils.drawUtils import GetPartialText
+
FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent()
FleetRenamed, EVT_FLEET_RENAMED = wx.lib.newevent.NewEvent()
FleetRemoved, EVT_FLEET_REMOVED = wx.lib.newevent.NewEvent()
-
-
FleetItemSelect, EVT_FLEET_ITEM_SELECT = wx.lib.newevent.NewEvent()
FleetItemDelete, EVT_FLEET_ITEM_DELETE = wx.lib.newevent.NewEvent()
FleetItemNew, EVT_FLEET_ITEM_NEW = wx.lib.newevent.NewEvent()
@@ -25,7 +20,6 @@ FleetItemCopy, EVT_FLEET_ITEM_COPY = wx.lib.newevent.NewEvent()
FleetItemRename, EVT_FLEET_ITEM_RENAME = wx.lib.newevent.NewEvent()
-
class FleetBrowser(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
@@ -38,8 +32,8 @@ class FleetBrowser(wx.Panel):
self.hpane = FleetBrowserHeader(self)
mainSizer.Add(self.hpane, 0, wx.EXPAND)
- self.m_sl2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_sl2, 0, wx.EXPAND, 0 )
+ self.m_sl2 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_sl2, 0, wx.EXPAND, 0)
self.fleetItemContainer = PFFleetItemContainer(self)
@@ -79,7 +73,7 @@ class FleetBrowser(wx.Panel):
fleet = self.sFleet.copyFleetByID(fleetID)
fleetName = fleet.name + " Copy"
- self.sFleet.renameFleet(fleet,fleetName)
+ self.sFleet.renameFleet(fleet, fleetName)
self.fleetIDMustEditName = fleet.ID
self.AddItem(fleet.ID, fleet.name, fleet.count())
@@ -94,27 +88,27 @@ class FleetBrowser(wx.Panel):
newFleetName = event.fleetName
self.sFleet.renameFleet(fleet, newFleetName)
- wx.PostEvent(self.mainFrame, FleetRenamed(fleetID = fleet.ID))
+ wx.PostEvent(self.mainFrame, FleetRenamed(fleetID=fleet.ID))
def DeleteFleetItem(self, event):
self.sFleet.deleteFleetByID(event.fleetID)
self.PopulateFleetList()
- wx.PostEvent(self.mainFrame, FleetRemoved(fleetID = event.fleetID))
+ wx.PostEvent(self.mainFrame, FleetRemoved(fleetID=event.fleetID))
- def AddItem (self, ID, name, count):
+ def AddItem(self, ID, name, count):
self.fleetItemContainer.AddWidget(FleetItem(self, ID, name, count))
widget = self.fleetItemContainer.GetWidgetByFleetID(ID)
self.fleetItemContainer.RefreshList(True)
self.fleetItemContainer.ScrollChildIntoView(widget)
- wx.PostEvent(self, FleetItemSelect(fleetID = ID))
+ wx.PostEvent(self, FleetItemSelect(fleetID=ID))
def PopulateFleetList(self):
self.Freeze()
- filter = self.filter
+ filter_ = self.filter
self.fleetItemContainer.RemoveAllChildren()
fleetList = self.sFleet.getFleetList()
for fleetID, fleetName, fleetCount in fleetList:
- if fleetName.lower().find(filter.lower()) != -1:
+ if fleetName.lower().find(filter_.lower()) != -1:
self.fleetItemContainer.AddWidget(FleetItem(self, fleetID, fleetName, fleetCount))
self.fleetItemContainer.RefreshList()
self.Thaw()
@@ -130,34 +124,34 @@ class FleetBrowser(wx.Panel):
event.Skip()
-class FleetBrowserHeader (wx.Panel):
+class FleetBrowserHeader(wx.Panel):
def __init__(self, parent):
- wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 24), style=wx.TAB_TRAVERSAL)
- self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) )
+ wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 24), style=wx.TAB_TRAVERSAL)
+ self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE))
- self.newBmp = BitmapLoader.getBitmap("fit_add_small","gui")
- bmpSize = (16,16)
+ self.newBmp = BitmapLoader.getBitmap("fit_add_small", "gui")
+ bmpSize = (16, 16)
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
if 'wxMac' in wx.PlatformInfo:
bgcolour = wx.Colour(0, 0, 0, 0)
else:
- bgcolour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE )
+ bgcolour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)
- self.fbNewFleet = PFGenBitmapButton( self, wx.ID_ANY, self.newBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE )
- mainSizer.Add(self.fbNewFleet, 0, wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL , 5)
- self.fbNewFleet.SetBackgroundColour( bgcolour )
+ self.fbNewFleet = PFGenBitmapButton(self, wx.ID_ANY, self.newBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE)
+ mainSizer.Add(self.fbNewFleet, 0, wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5)
+ self.fbNewFleet.SetBackgroundColour(bgcolour)
- self.sl1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL )
- mainSizer.Add( self.sl1, 0, wx.EXPAND |wx.LEFT, 5 )
+ self.sl1 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL)
+ mainSizer.Add(self.sl1, 0, wx.EXPAND | wx.LEFT, 5)
- self.tcFilter = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.tcFilter, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.tcFilter = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.tcFilter, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)
- self.stStatus = wx.StaticText( self, wx.ID_ANY, u"", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stStatus.Wrap( -1 )
- mainSizer.Add( self.stStatus, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5 )
+ self.stStatus = wx.StaticText(self, wx.ID_ANY, u"", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stStatus.Wrap(-1)
+ mainSizer.Add(self.stStatus, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)
self.SetSizer(mainSizer)
self.Layout()
@@ -178,7 +172,7 @@ class FleetBrowserHeader (wx.Panel):
event.Skip()
def OnNewFleetItem(self, event):
- wx.PostEvent(self.Parent, FleetItemNew(fleetName = "New Fleet"))
+ wx.PostEvent(self.Parent, FleetItemNew(fleetName="New Fleet"))
def fbNewEnterWindow(self, event):
self.stStatus.SetLabel("New fleet")
@@ -195,10 +189,9 @@ class FleetBrowserHeader (wx.Panel):
event.Skip()
-
class PFFleetItemContainer(PFListPane):
- def __init__(self,parent):
- PFListPane.__init__(self,parent)
+ def __init__(self, parent):
+ PFListPane.__init__(self, parent)
self.selectedWidget = -1
self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
@@ -236,7 +229,6 @@ class PFFleetItemContainer(PFListPane):
self.selectedWidget = -1
self._wList.remove(child)
-
def RemoveAllChildren(self):
for widget in self._wList:
widget.Destroy()
@@ -247,11 +239,12 @@ class PFFleetItemContainer(PFListPane):
def OnLeftUp(self, event):
event.Skip()
+
class FleetItem(SFItem.SFBrowserItem):
def __init__(self, parent, fleetID, fleetName, fleetCount,
id=wx.ID_ANY, pos=wx.DefaultPosition,
- size=(0,40), style=0):
- SFItem.SFBrowserItem.__init__(self, parent, size = size)
+ size=(0, 40), style=0):
+ SFItem.SFBrowserItem.__init__(self, parent, size=size)
self.fleetBrowser = self.Parent
self.fleetID = fleetID
@@ -260,13 +253,13 @@ class FleetItem(SFItem.SFBrowserItem):
self.padding = 4
- self.fontBig = wx.FontFromPixelSize((0,15),wx.SWISS, wx.NORMAL, wx.BOLD, False)
- self.fontNormal = wx.FontFromPixelSize((0,14),wx.SWISS, wx.NORMAL, wx.NORMAL, False)
- self.fontSmall = wx.FontFromPixelSize((0,12),wx.SWISS, wx.NORMAL, wx.NORMAL, False)
+ self.fontBig = wx.FontFromPixelSize((0, 15), wx.SWISS, wx.NORMAL, wx.BOLD, False)
+ self.fontNormal = wx.FontFromPixelSize((0, 14), wx.SWISS, wx.NORMAL, wx.NORMAL, False)
+ self.fontSmall = wx.FontFromPixelSize((0, 12), wx.SWISS, wx.NORMAL, wx.NORMAL, False)
self.copyBmp = BitmapLoader.getBitmap("fit_add_small", "gui")
self.renameBmp = BitmapLoader.getBitmap("fit_rename_small", "gui")
- self.deleteBmp = BitmapLoader.getBitmap("fit_delete_small","gui")
+ self.deleteBmp = BitmapLoader.getBitmap("fit_delete_small", "gui")
self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui")
self.fleetBmp = BitmapLoader.getBitmap("fleet_item_big", "gui")
@@ -284,7 +277,7 @@ class FleetItem(SFItem.SFBrowserItem):
self.toolbar.AddButton(self.deleteBmp, "Delete", self.DeleteFleetCB)
self.editWidth = 150
- self.tcFleetName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fleetName, wx.DefaultPosition, (self.editWidth,-1), wx.TE_PROCESS_ENTER)
+ self.tcFleetName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fleetName, wx.DefaultPosition, (self.editWidth, -1), wx.TE_PROCESS_ENTER)
if self.fleetBrowser.fleetIDMustEditName != self.fleetID:
self.tcFleetName.Show(False)
@@ -299,21 +292,20 @@ class FleetItem(SFItem.SFBrowserItem):
self.tcFleetName.Bind(wx.EVT_TEXT_ENTER, self.RenameFleet)
self.tcFleetName.Bind(wx.EVT_KEY_DOWN, self.EditCheckEsc)
-
self.animCount = 0
def MouseLeftUp(self, event):
if self.tcFleetName.IsShown():
self.RestoreEditButton()
else:
- wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID = self.fleetID))
+ wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID=self.fleetID))
def CopyFleetCB(self):
if self.tcFleetName.IsShown():
self.RestoreEditButton()
return
- wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID))
+ wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID=self.fleetID))
def RenameFleetCB(self):
@@ -341,14 +333,14 @@ class FleetItem(SFItem.SFBrowserItem):
self.tcFleetName.Show(False)
- wx.PostEvent(self.fleetBrowser, FleetItemRename(fleetID = self.fleetID, fleetName = self.fleetName))
+ wx.PostEvent(self.fleetBrowser, FleetItemRename(fleetID=self.fleetID, fleetName=self.fleetName))
self.Refresh()
def DeleteFleetCB(self):
if self.tcFleetName.IsShown():
self.RestoreEditButton()
return
- wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID))
+ wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID=self.fleetID))
def RestoreEditButton(self):
self.tcFleetName.Show(False)
@@ -392,14 +384,14 @@ class FleetItem(SFItem.SFBrowserItem):
mdc.SetFont(self.fontSmall)
- wlabel,hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
+ wlabel, hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
self.thoverx = self.toolbarx - self.padding - wlabel
- self.thovery = (rect.height - hlabel)/2
+ self.thovery = (rect.height - hlabel) / 2
self.thoverw = wlabel
def DrawItem(self, mdc):
- rect = self.GetRect()
+ # rect = self.GetRect()
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
textColor = colorUtils.GetSuitableColor(windowColor, 1)
@@ -410,13 +402,13 @@ class FleetItem(SFItem.SFBrowserItem):
self.toolbar.SetPosition((self.toolbarx, self.toolbary))
mdc.DrawBitmap(self.fleetEffBmp, self.fleetBmpx + 3, self.fleetBmpy + 2)
- mdc.DrawBitmap(self.fleetBmp, self.fleetBmpx,self.fleetBmpy)
+ mdc.DrawBitmap(self.fleetBmp, self.fleetBmpx, self.fleetBmpy)
mdc.SetFont(self.fontNormal)
- suffix = "%d ships" % self.fleetCount if self.fleetCount >1 else "%d ship" % self.fleetCount if self.fleetCount == 1 else "No ships"
+ suffix = "%d ships" % self.fleetCount if self.fleetCount > 1 else "%d ship" % self.fleetCount if self.fleetCount == 1 else "No ships"
fleetCount = "Fleet size: %s" % suffix
- fleetCount = drawUtils.GetPartialText(mdc, fleetCount, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
+ fleetCount = GetPartialText(mdc, fleetCount, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
mdc.DrawText(fleetCount, self.textStartx, self.fleetCounty)
@@ -425,7 +417,7 @@ class FleetItem(SFItem.SFBrowserItem):
mdc.SetFont(self.fontBig)
- pfname = drawUtils.GetPartialText(mdc, self.fleetName, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
+ pfname = GetPartialText(mdc, self.fleetName, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
mdc.DrawText(pfname, self.textStartx, self.fleetNamey)
if self.tcFleetName.IsShown():
@@ -435,13 +427,13 @@ class FleetItem(SFItem.SFBrowserItem):
fnEditSize = editCtl.GetSize()
wSize = self.GetSize()
fnEditPosX = end
- fnEditPosY = (wSize.height - fnEditSize.height)/2
+ fnEditPosY = (wSize.height - fnEditSize.height) / 2
if fnEditPosX < start:
- editCtl.SetSize((self.editWidth + fnEditPosX - start,-1))
- editCtl.SetPosition((start,fnEditPosY))
+ editCtl.SetSize((self.editWidth + fnEditPosX - start, -1))
+ editCtl.SetPosition((start, fnEditPosY))
else:
- editCtl.SetSize((self.editWidth,-1))
- editCtl.SetPosition((fnEditPosX,fnEditPosY))
+ editCtl.SetSize((self.editWidth, -1))
+ editCtl.SetPosition((fnEditPosX, fnEditPosY))
class PFGenBitmapButton(GenBitmapButton):
diff --git a/gui/gangView.py b/gui/gangView.py
index 57f7cffa0..ea422bc83 100644
--- a/gui/gangView.py
+++ b/gui/gangView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,111 +15,109 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
import wx
from wx.lib.scrolledpanel import ScrolledPanel
-import gui.mainFrame
-import gui.shipBrowser
-import gui.globalEvents as GE
-
from service.fit import Fit
from service.fleet import Fleet
from service.character import Character
from service.market import Market
+import gui.mainFrame
+import gui.shipBrowser
+import gui.globalEvents as GE
-from gui import characterEditor as CharEditor
-class GangView ( ScrolledPanel ):
-
- def __init__( self, parent ):
- ScrolledPanel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 100,20 ), style = wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL )
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+class GangView(ScrolledPanel):
+ def __init__(self, parent):
+ ScrolledPanel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(100, 20), style=wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL)
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
self.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.draggedFitID = None
- help = '''Set fit as booster to display in dropdown, or drag fitting from\nship browser to this window, or right click fit and select booster role.'''
- helpSizer = wx.BoxSizer( wx.HORIZONTAL )
- self.helpText = wx.StaticText( self, wx.ID_ANY, help, wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE )
- helpSizer.Add( self.helpText, 1, wx.ALL, 5 )
+ help_msg = '''Set fit as booster to display in dropdown, or drag fitting from\nship browser to this window, or right click fit and select booster role.'''
+ helpSizer = wx.BoxSizer(wx.HORIZONTAL)
+ self.helpText = wx.StaticText(self, wx.ID_ANY, help_msg, wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE)
+ helpSizer.Add(self.helpText, 1, wx.ALL, 5)
self.options = ["Fleet", "Wing", "Squad"]
self.fleet = {}
- for id, option in enumerate(self.options):
+ for id_, option in enumerate(self.options):
# set content for each commander
- self.fleet[id] = {}
- self.fleet[id]['stLabel'] = wx.StaticText( self, wx.ID_ANY, self.options[id]+':', wx.DefaultPosition, wx.DefaultSize, 0 )
- self.fleet[id]['stText'] = wx.StaticText( self, wx.ID_ANY, 'None', wx.DefaultPosition, wx.DefaultSize, 0 )
- self.fleet[id]['chFit'] = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [] )
- self.fleet[id]['chChar'] = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [] )
- self.fleet[id]['fitSizer'] = wx.BoxSizer( wx.VERTICAL )
+ self.fleet[id_] = {}
+ self.fleet[id_]['stLabel'] = wx.StaticText(self, wx.ID_ANY, self.options[id_] + ':', wx.DefaultPosition, wx.DefaultSize, 0)
+ self.fleet[id_]['stText'] = wx.StaticText(self, wx.ID_ANY, 'None', wx.DefaultPosition, wx.DefaultSize, 0)
+ self.fleet[id_]['chFit'] = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [])
+ self.fleet[id_]['chChar'] = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [])
+ self.fleet[id_]['fitSizer'] = wx.BoxSizer(wx.VERTICAL)
self.FitDNDPopupMenu = self.buildBoostermenu()
- contentFGSizer = wx.FlexGridSizer( 5, 3, 0, 0 )
- contentFGSizer.AddGrowableCol( 1 )
- contentFGSizer.SetFlexibleDirection( wx.BOTH )
- contentFGSizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
+ contentFGSizer = wx.FlexGridSizer(5, 3, 0, 0)
+ contentFGSizer.AddGrowableCol(1)
+ contentFGSizer.SetFlexibleDirection(wx.BOTH)
+ contentFGSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
- ### Header
- self.stBooster = wx.StaticText( self, wx.ID_ANY, u"Booster", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stBooster.Wrap( -1 )
- self.stBooster.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) )
- contentFGSizer.Add( self.stBooster, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
+ # Header
+ self.stBooster = wx.StaticText(self, wx.ID_ANY, u"Booster", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stBooster.Wrap(-1)
+ self.stBooster.SetFont(wx.Font(wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString))
+ contentFGSizer.Add(self.stBooster, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5)
- self.stFits = wx.StaticText( self, wx.ID_ANY, u"Fits", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stFits.Wrap( -1 )
- self.stFits.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) )
- contentFGSizer.Add( self.stFits, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
+ self.stFits = wx.StaticText(self, wx.ID_ANY, u"Fits", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stFits.Wrap(-1)
+ self.stFits.SetFont(wx.Font(wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString))
+ contentFGSizer.Add(self.stFits, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5)
- self.stCharacters = wx.StaticText( self, wx.ID_ANY, u"Characters", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.stCharacters.Wrap( -1 )
- self.stCharacters.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) )
- contentFGSizer.Add( self.stCharacters, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
+ self.stCharacters = wx.StaticText(self, wx.ID_ANY, u"Characters", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.stCharacters.Wrap(-1)
+ self.stCharacters.SetFont(wx.Font(wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString))
+ contentFGSizer.Add(self.stCharacters, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5)
- self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- contentFGSizer.Add( self.m_staticline2, 0, wx.EXPAND, 5 )
+ self.m_staticline2 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ contentFGSizer.Add(self.m_staticline2, 0, wx.EXPAND, 5)
- self.m_staticline3 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- contentFGSizer.Add( self.m_staticline3, 0, wx.EXPAND, 5 )
+ self.m_staticline3 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ contentFGSizer.Add(self.m_staticline3, 0, wx.EXPAND, 5)
- self.m_staticline4 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- contentFGSizer.Add( self.m_staticline4, 0, wx.EXPAND, 5 )
+ self.m_staticline4 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ contentFGSizer.Add(self.m_staticline4, 0, wx.EXPAND, 5)
- ### Content
- for id in self.fleet:
+ # Content
+ for id_ in self.fleet:
# set various properties
- self.fleet[id]['stLabel'].Wrap( -1 )
- self.fleet[id]['stLabel'].SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString ) )
- self.fleet[id]['stText'].Wrap( -1 )
+ self.fleet[id_]['stLabel'].Wrap(-1)
+ self.fleet[id_]['stLabel'].SetFont(wx.Font(wx.NORMAL_FONT.GetPointSize(), 70, 90, 92, False, wx.EmptyString))
+ self.fleet[id_]['stText'].Wrap(-1)
# bind text and choice events
- self.fleet[id]['stText'].Bind(wx.EVT_LEFT_DCLICK, self.RemoveBooster)
- self.fleet[id]['stText'].Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow)
- self.fleet[id]['stText'].Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)
- self.fleet[id]['stText'].SetToolTip(wx.ToolTip("Double click to remove booster"))
- self.fleet[id]['chChar'].Bind(wx.EVT_CHOICE, self.CharChanged)
- self.fleet[id]['chFit'].Bind(wx.EVT_CHOICE, self.OnFitChoiceSelected)
+ self.fleet[id_]['stText'].Bind(wx.EVT_LEFT_DCLICK, self.RemoveBooster)
+ self.fleet[id_]['stText'].Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow)
+ self.fleet[id_]['stText'].Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)
+ self.fleet[id_]['stText'].SetToolTip(wx.ToolTip("Double click to remove booster"))
+ self.fleet[id_]['chChar'].Bind(wx.EVT_CHOICE, self.CharChanged)
+ self.fleet[id_]['chFit'].Bind(wx.EVT_CHOICE, self.OnFitChoiceSelected)
# add fit text and choice to the fit sizer
- self.fleet[id]['fitSizer'].Add( self.fleet[id]['stText'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
- self.fleet[id]['fitSizer'].Add( self.fleet[id]['chFit'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 1 )
+ self.fleet[id_]['fitSizer'].Add(self.fleet[id_]['stText'], 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
+ self.fleet[id_]['fitSizer'].Add(self.fleet[id_]['chFit'], 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL | wx.EXPAND, 1)
# add everything to the content sizer
- contentFGSizer.Add( self.fleet[id]['stLabel'], 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
- contentFGSizer.Add( self.fleet[id]['fitSizer'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )
- contentFGSizer.Add( self.fleet[id]['chChar'], 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
+ contentFGSizer.Add(self.fleet[id_]['stLabel'], 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
+ contentFGSizer.Add(self.fleet[id_]['fitSizer'], 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL | wx.EXPAND, 5)
+ contentFGSizer.Add(self.fleet[id_]['chChar'], 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
- mainSizer.Add( contentFGSizer, 1, wx.EXPAND, 0 )
- mainSizer.Add( helpSizer, 0, wx.EXPAND, 0 )
+ mainSizer.Add(contentFGSizer, 1, wx.EXPAND, 0)
+ mainSizer.Add(helpSizer, 0, wx.EXPAND, 0)
- self.SetSizer( mainSizer )
+ self.SetSizer(mainSizer)
self.SetAutoLayout(True)
self.SetupScrolling()
@@ -134,7 +132,7 @@ class GangView ( ScrolledPanel ):
def buildBoostermenu(self):
menu = wx.Menu()
- for id, option in enumerate(self.options):
+ for option in self.options:
item = menu.Append(-1, option)
# We bind it to the mainFrame because it may be called from either this class or from FitItem via shipBrowser
self.mainFrame.Bind(wx.EVT_MENU, self.OnPopupItemSelected, item)
@@ -154,11 +152,12 @@ class GangView ( ScrolledPanel ):
''' Change booster character '''
chBooster = event.GetEventObject()
- type = -1
- for id in self.fleet:
- if chBooster == self.fleet[id]['chChar']: type = id
+ type_ = -1
+ for id_ in self.fleet:
+ if chBooster == self.fleet[id_]['chChar']:
+ type_ = id_
- if type == -1:
+ if type_ == -1:
event.Skip()
return
@@ -169,8 +168,8 @@ class GangView ( ScrolledPanel ):
activeFitID = self.mainFrame.getActiveFit()
fit = sFit.getFit(activeFitID)
- sChar = Character.getInstance()
- charList = sChar.getCharacterList()
+ # sChar = Character.getInstance()
+ # charList = sChar.getCharacterList()
if activeFitID:
commanders = fleetSrv.loadLinearFleet(fit)
@@ -179,21 +178,21 @@ class GangView ( ScrolledPanel ):
else:
fleetCom, wingCom, squadCom = commanders
- if type == 0:
+ if type_ == 0:
if fleetCom:
charID = chBooster.GetClientData(chBooster.GetSelection())
sFit.changeChar(fleetCom.ID, charID)
else:
chBooster.SetSelection(0)
- if type == 1:
+ if type_ == 1:
if wingCom:
charID = chBooster.GetClientData(chBooster.GetSelection())
sFit.changeChar(wingCom.ID, charID)
else:
chBooster.SetSelection(0)
- if type == 2:
+ if type_ == 2:
if squadCom:
charID = chBooster.GetClientData(chBooster.GetSelection())
sFit.changeChar(squadCom.ID, charID)
@@ -208,13 +207,14 @@ class GangView ( ScrolledPanel ):
def RemoveBooster(self, event):
activeFitID = self.mainFrame.getActiveFit()
- if not activeFitID:
+ if not activeFitID:
return
location = event.GetEventObject()
- for id in self.fleet:
- if location == self.fleet[id]['stText']: type = id
+ for id_ in self.fleet:
+ if location == self.fleet[id_]['stText']:
+ type_ = id_
sFit = Fit.getInstance()
boostee = sFit.getFit(activeFitID)
@@ -222,13 +222,16 @@ class GangView ( ScrolledPanel ):
fleetSrv = Fleet.getInstance()
- if type == 0: fleetSrv.setLinearFleetCom(boostee, booster)
- if type == 1: fleetSrv.setLinearWingCom(boostee, booster)
- if type == 2: fleetSrv.setLinearSquadCom(boostee, booster)
+ if type_ == 0:
+ fleetSrv.setLinearFleetCom(boostee, booster)
+ elif type_ == 1:
+ fleetSrv.setLinearWingCom(boostee, booster)
+ elif type_ == 2:
+ fleetSrv.setLinearSquadCom(boostee, booster)
# Hide stText and, default fit selection, and enable it
location.Hide()
- choice = self.fleet[type]['chFit']
+ choice = self.fleet[type_]['chFit']
choice.SetSelection(0)
choice.Show()
@@ -236,7 +239,7 @@ class GangView ( ScrolledPanel ):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID))
def fitRenamed(self, event):
- fleetSrv = Fleet.getInstance()
+ # fleetSrv = Fleet.getInstance()
activeFitID = self.mainFrame.getActiveFit()
if activeFitID:
@@ -259,27 +262,27 @@ class GangView ( ScrolledPanel ):
if activeFitID:
commanders = fleetSrv.loadLinearFleet(fit)
- for id in self.fleet:
+ for id_ in self.fleet:
# try...except here as we're trying 2 different criteria and want to fall back on the same code
try:
- commander = commanders[id]
+ commander = commanders[id_]
if not activeFitID or commander is None:
raise Exception()
- self.fleet[id]['stText'].SetLabel(commander.ship.item.name + ": " + commander.name)
- self.fleet[id]['chChar'].SetStringSelection(commander.character.name if commander.character is not None else "All 0")
- self.fleet[id]['chChar'].Enable()
- self.fleet[id]['chFit'].Hide()
- self.fleet[id]['stText'].Show()
+ self.fleet[id_]['stText'].SetLabel(commander.ship.item.name + ": " + commander.name)
+ self.fleet[id_]['chChar'].SetStringSelection(commander.character.name if commander.character is not None else "All 0")
+ self.fleet[id_]['chChar'].Enable()
+ self.fleet[id_]['chFit'].Hide()
+ self.fleet[id_]['stText'].Show()
except:
- #set defaults, disable char selection, and enable fit selection
- self.fleet[id]['stText'].SetLabel("None")
- self.fleet[id]['chChar'].SetStringSelection("All 0")
- self.fleet[id]['chChar'].Disable()
- self.fleet[id]['chFit'].SetSelection(0)
- self.fleet[id]['chFit'].Show()
- self.fleet[id]['stText'].Hide()
+ # set defaults, disable char selection, and enable fit selection
+ self.fleet[id_]['stText'].SetLabel("None")
+ self.fleet[id_]['chChar'].SetStringSelection("All 0")
+ self.fleet[id_]['chChar'].Disable()
+ self.fleet[id_]['chFit'].SetSelection(0)
+ self.fleet[id_]['chFit'].Show()
+ self.fleet[id_]['stText'].Hide()
if activeFitID:
self.Enable()
@@ -289,7 +292,7 @@ class GangView ( ScrolledPanel ):
self.Layout()
self.SendSizeEvent()
- def AddCommander(self, fitID, type = None):
+ def AddCommander(self, fitID, type=None):
''' Adds booster to a fit, then recalculates active fit '''
if type is None:
return
@@ -303,20 +306,23 @@ class GangView ( ScrolledPanel ):
fleetSrv = Fleet.getInstance()
- if type == 0: fleetSrv.setLinearFleetCom(boostee, booster)
- if type == 1: fleetSrv.setLinearWingCom(boostee, booster)
- if type == 2: fleetSrv.setLinearSquadCom(boostee, booster)
+ if type == 0:
+ fleetSrv.setLinearFleetCom(boostee, booster)
+ elif type == 1:
+ fleetSrv.setLinearWingCom(boostee, booster)
+ elif type == 2:
+ fleetSrv.setLinearSquadCom(boostee, booster)
sFit.recalc(boostee)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID))
- def RefreshBoosterFits(self, event = None):
+ def RefreshBoosterFits(self, event=None):
sFit = Fit.getInstance()
sMkt = Market.getInstance()
fitList = sFit.getBoosterFits()
- for id in self.fleet:
- choice = self.fleet[id]['chFit']
+ for id_ in self.fleet:
+ choice = self.fleet[id_]['chFit']
chCurrSelection = choice.GetSelection()
chCurrData = -1
if chCurrSelection != -1:
@@ -326,10 +332,10 @@ class GangView ( ScrolledPanel ):
currSelFound = False
choice.Append("None", -1)
for fit in fitList:
- id,name,type = fit
- ship = sMkt.getItem(type)
- choice.Append(ship.name+': '+name, id)
- if chCurrData == id:
+ fit_id, name, type_ = fit
+ ship = sMkt.getItem(type_)
+ choice.Append(ship.name + ': ' + name, fit_id)
+ if chCurrData == fit_id:
currSelFound = True
if chCurrSelection == -1:
@@ -340,11 +346,11 @@ class GangView ( ScrolledPanel ):
else:
choice.SetSelection(0)
- def RefreshCharacterList(self, event = None):
+ def RefreshCharacterList(self, event=None):
sChar = Character.getInstance()
charList = sChar.getCharacterList()
- for id in self.fleet:
- choice = self.fleet[id]['chChar']
+ for id_ in self.fleet:
+ choice = self.fleet[id_]['chChar']
chCurrSelection = choice.GetSelection()
chCurrData = -1
if chCurrSelection != -1:
@@ -367,7 +373,7 @@ class GangView ( ScrolledPanel ):
def handleDrag(self, type, fitID):
''' Handle dragging of fit to fleet interface '''
- #Those are drags coming from pyfa sources, NOT builtin wx drags
+ # Those are drags coming from pyfa sources, NOT builtin wx drags
self.draggedFitID = None
if type == "fit":
sFit = Fit.getInstance()
@@ -381,18 +387,17 @@ class GangView ( ScrolledPanel ):
self.PopupMenu(self.FitDNDPopupMenu, pos)
-
def OnPopupItemSelected(self, event):
''' Fired when booster popup item is selected '''
# Get menu selection ID via self.options
menuItem = event.EventObject.FindItemById(event.GetId())
- type = self.options.index(menuItem.GetText())
+ type_ = self.options.index(menuItem.GetText())
if self.draggedFitID:
sFit = Fit.getInstance()
draggedFit = sFit.getFit(self.draggedFitID)
- self.AddCommander(draggedFit.ID, type)
+ self.AddCommander(draggedFit.ID, type_)
self.mainFrame.additionsPane.select("Fleet")
def OnFitChoiceSelected(self, event):
@@ -403,15 +408,16 @@ class GangView ( ScrolledPanel ):
chFit = event.GetEventObject()
fitID = chFit.GetClientData(chFit.GetSelection())
- type = -1
- for id in self.fleet:
- if chFit == self.fleet[id]['chFit']: type = id
+ type_ = -1
+ for id_ in self.fleet:
+ if chFit == self.fleet[id_]['chFit']:
+ type_ = id_
- if type == -1 or fitID == -1:
+ if type_ == -1 or fitID == -1:
event.Skip()
return
fit = sFit.getFit(fitID)
- self.AddCommander(fit.ID, type)
+ self.AddCommander(fit.ID, type_)
self.mainFrame.additionsPane.select("Fleet")
diff --git a/gui/globalEvents.py b/gui/globalEvents.py
index 18f91d348..7b81b3218 100644
--- a/gui/globalEvents.py
+++ b/gui/globalEvents.py
@@ -1,5 +1,6 @@
import wx.lib.newevent
+
FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent()
CharListUpdated, CHAR_LIST_UPDATED = wx.lib.newevent.NewEvent()
CharChanged, CHAR_CHANGED = wx.lib.newevent.NewEvent()
diff --git a/gui/graph.py b/gui/graph.py
index 53d66f6a5..0b40902c2 100644
--- a/gui/graph.py
+++ b/gui/graph.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,8 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
class Graph(object):
views = []
@@ -33,4 +34,5 @@ class Graph(object):
def getIcons(self):
return None
-from gui.builtinGraphs import *
+
+from gui.builtinGraphs import * # noqa
diff --git a/gui/graphFrame.py b/gui/graphFrame.py
index fb3480b33..dc286af1b 100644
--- a/gui/graphFrame.py
+++ b/gui/graphFrame.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,21 +15,24 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
+import os
import wx
-import os
-from gui.bitmapLoader import BitmapLoader
-import gui.display
-import gui.globalEvents as GE
-from gui.graph import Graph
-import gui.mainFrame
from service.fit import Fit
+import gui.display
+import gui.mainFrame
+import gui.globalEvents as GE
+from gui.graph import Graph
+from gui.bitmapLoader import BitmapLoader
+
enabled = True
mplImported = False
+
class GraphFrame(wx.Frame):
def __init__(self, parent, style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE | wx.FRAME_FLOAT_ON_PARENT):
@@ -58,11 +61,11 @@ class GraphFrame(wx.Frame):
from matplotlib.figure import Figure
enabled = True
if mpl.__version__[0] != "1":
- print "pyfa: Found matplotlib version ",mpl.__version__, " - activating OVER9000 workarounds"
- print "pyfa: Recommended minimum matplotlib version is 1.0.0"
+ print("pyfa: Found matplotlib version ", mpl.__version__, " - activating OVER9000 workarounds")
+ print("pyfa: Recommended minimum matplotlib version is 1.0.0")
self.legendFix = True
except:
- print "Problems importing matplotlib; continuing without graphs"
+ print("Problems importing matplotlib; continuing without graphs")
enabled = False
return
@@ -91,19 +94,19 @@ class GraphFrame(wx.Frame):
self.figure = Figure(figsize=(4, 3))
- rgbtuple = wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ).Get()
- clr = [c/255. for c in rgbtuple]
- self.figure.set_facecolor( clr )
- self.figure.set_edgecolor( clr )
+ rgbtuple = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE).Get()
+ clr = [c / 255. for c in rgbtuple]
+ self.figure.set_facecolor(clr)
+ self.figure.set_edgecolor(clr)
self.canvas = Canvas(self, -1, self.figure)
- self.canvas.SetBackgroundColour( wx.Colour( *rgbtuple ) )
+ self.canvas.SetBackgroundColour(wx.Colour(*rgbtuple))
self.subplot = self.figure.add_subplot(111)
self.subplot.grid(True)
self.mainSizer.Add(self.canvas, 1, wx.EXPAND)
- self.mainSizer.Add(wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0 , wx.EXPAND)
+ self.mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND)
self.gridPanel = wx.Panel(self)
self.mainSizer.Add(self.gridPanel, 0, wx.EXPAND)
@@ -122,8 +125,8 @@ class GraphFrame(wx.Frame):
self.graphSelection.SetSelection(0)
self.fields = {}
self.select(0)
- self.sl1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- self.mainSizer.Add(self.sl1,0, wx.EXPAND)
+ self.sl1 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ self.mainSizer.Add(self.sl1, 0, wx.EXPAND)
self.mainSizer.Add(self.fitList, 0, wx.EXPAND)
self.fitList.fitList.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
@@ -160,13 +163,13 @@ class GraphFrame(wx.Frame):
self.gridPanel.DestroyChildren()
self.fields.clear()
- #Setup textboxes
+ # Setup textboxes
for field, defaultVal in view.getFields().iteritems():
textBox = wx.TextCtrl(self.gridPanel, wx.ID_ANY, style=0)
self.fields[field] = textBox
textBox.Bind(wx.EVT_TEXT, self.onFieldChanged)
- sizer.Add(textBox, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3)
+ sizer.Add(textBox, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3)
if defaultVal is not None:
if not isinstance(defaultVal, basestring):
defaultVal = ("%f" % defaultVal).rstrip("0")
@@ -204,7 +207,7 @@ class GraphFrame(wx.Frame):
try:
success, status = view.getPoints(fit, values)
if not success:
- #TODO: Add a pwetty statys bar to report errors with
+ # TODO: Add a pwetty statys bar to report errors with
self.SetStatusText(status)
return
@@ -218,15 +221,15 @@ class GraphFrame(wx.Frame):
return
if self.legendFix and len(legend) > 0:
- leg = self.subplot.legend(tuple(legend), "upper right" , shadow = False)
+ leg = self.subplot.legend(tuple(legend), "upper right", shadow=False)
for t in leg.get_texts():
t.set_fontsize('small')
for l in leg.get_lines():
l.set_linewidth(1)
- elif not self.legendFix and len(legend) >0:
- leg = self.subplot.legend(tuple(legend), "upper right" , shadow = False, frameon = False)
+ elif not self.legendFix and len(legend) > 0:
+ leg = self.subplot.legend(tuple(legend), "upper right", shadow=False, frameon=False)
for t in leg.get_texts():
t.set_fontsize('small')
@@ -269,10 +272,10 @@ class FitList(wx.Panel):
fitToolTip = wx.ToolTip("Drag a fit into this list to graph it")
self.fitList.SetToolTip(fitToolTip)
+
class FitDisplay(gui.display.Display):
DEFAULT_COLS = ["Base Icon",
"Base Name"]
def __init__(self, parent):
gui.display.Display.__init__(self, parent)
-
diff --git a/gui/implantView.py b/gui/implantView.py
index 85991cf24..3de27f1bc 100644
--- a/gui/implantView.py
+++ b/gui/implantView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.display as d
@@ -26,20 +26,21 @@ from gui.contextMenu import ContextMenu
import globalEvents as GE
from eos.types import ImplantLocation
from service.fit import Fit
+from service.market import Market
class ImplantView(wx.Panel):
def __init__(self, parent):
- wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL )
+ wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL)
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
mainSizer = wx.BoxSizer(wx.VERTICAL)
self.implantDisplay = ImplantDisplay(self)
- mainSizer.Add(self.implantDisplay, 1, wx.EXPAND, 0 )
+ mainSizer.Add(self.implantDisplay, 1, wx.EXPAND, 0)
radioSizer = wx.BoxSizer(wx.HORIZONTAL)
- radioSizer.AddSpacer(( 0, 0), 1, wx.EXPAND, 5)
+ radioSizer.AddSpacer((0, 0), 1, wx.EXPAND, 5)
self.rbFit = wx.RadioButton(self, id=wx.ID_ANY, label="Use Fit-specific Implants", style=wx.RB_GROUP)
self.rbChar = wx.RadioButton(self, id=wx.ID_ANY, label="Use Character Implants")
radioSizer.Add(self.rbFit, 0, wx.ALL, 5)
@@ -48,7 +49,7 @@ class ImplantView(wx.Panel):
mainSizer.Add(radioSizer, 0, wx.EXPAND, 5)
- self.SetSizer( mainSizer )
+ self.SetSizer(mainSizer)
self.SetAutoLayout(True)
self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioSelect, self.rbFit)
@@ -93,12 +94,12 @@ class ImplantDisplay(d.Display):
self.Bind(wx.EVT_LEFT_DOWN, self.click)
self.Bind(wx.EVT_KEY_UP, self.kbEvent)
- if "__WXGTK__" in wx.PlatformInfo:
+ if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
- def kbEvent(self,event):
+ def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
row = self.GetFirstSelected()
@@ -112,7 +113,7 @@ class ImplantDisplay(d.Display):
self.Parent.Parent.Parent.DisablePage(self.Parent, not fit or fit.isStructure)
- #Clear list and get out if current fitId is None
+ # Clear list and get out if current fitId is None
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
@@ -121,7 +122,8 @@ class ImplantDisplay(d.Display):
self.original = fit.implants if fit is not None else None
self.implants = stuff = fit.appliedImplants if fit is not None else None
- if stuff is not None: stuff.sort(key=lambda implant: implant.slot)
+ if stuff is not None:
+ stuff.sort(key=lambda implant: implant.slot)
if event.fitID != self.lastFitId:
self.lastFitId = event.fitID
diff --git a/gui/itemStats.py b/gui/itemStats.py
index 4942c67d6..fe56f3a09 100644
--- a/gui/itemStats.py
+++ b/gui/itemStats.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,39 +15,32 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
+import re
+import os
+import csv
+import sys
+import subprocess
import wx
-import re
-import gui.mainFrame
-from gui.bitmapLoader import BitmapLoader
-import sys
-import wx.lib.mixins.listctrl as listmix
import wx.html
-from eos.types import Fit, Ship, Citadel, Module, Skill, Booster, Implant, Drone, Mode, Fighter
-from gui.utils.numberFormatter import formatAmount
+import wx.lib.mixins.listctrl as listmix
+
import config
-from gui.contextMenu import ContextMenu
-from gui.utils.numberFormatter import formatAmount
-import csv
+from eos.types import Fit, Ship, Citadel, Module, Skill, Booster, Implant, Drone, Mode, Fighter
from service.market import Market
from service.attribute import Attribute
+import gui.mainFrame
+from gui.bitmapLoader import BitmapLoader
+from gui.utils.numberFormatter import formatAmount
+from gui.contextMenu import ContextMenu
-try:
- from collections import OrderedDict
-except ImportError:
- from utils.compat import OrderedDict
class ItemStatsDialog(wx.Dialog):
counter = 0
- def __init__(
- self,
- victim,
- fullContext=None,
- pos=wx.DefaultPosition,
- size=wx.DefaultSize,
- maximized = False
- ):
+
+ def __init__(self, victim, fullContext=None, pos=wx.DefaultPosition, size=wx.DefaultSize, maximized=False):
wx.Dialog.__init__(
self,
@@ -56,7 +49,7 @@ class ItemStatsDialog(wx.Dialog):
title="Item stats",
pos=pos,
size=size,
- style=wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER| wx.SYSTEM_MENU
+ style=wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU
)
empty = getattr(victim, "isEmpty", False)
@@ -78,26 +71,26 @@ class ItemStatsDialog(wx.Dialog):
victim = None
self.context = itmContext
if item.icon is not None:
- before,sep,after = item.icon.iconFile.rpartition("_")
- iconFile = "%s%s%s" % (before,sep,"0%s" % after if len(after) < 2 else after)
+ before, sep, after = item.icon.iconFile.rpartition("_")
+ iconFile = "%s%s%s" % (before, sep, "0%s" % after if len(after) < 2 else after)
itemImg = BitmapLoader.getBitmap(iconFile, "icons")
if itemImg is not None:
self.SetIcon(wx.IconFromBitmap(itemImg))
- self.SetTitle("%s: %s%s" % ("%s Stats" % itmContext if itmContext is not None else "Stats", item.name, " (%d)"%item.ID if config.debug else ""))
+ self.SetTitle("%s: %s%s" % ("%s Stats" % itmContext if itmContext is not None else "Stats", item.name, " (%d)" % item.ID if config.debug else ""))
self.SetMinSize((300, 200))
if "wxGTK" in wx.PlatformInfo: # GTK has huge tab widgets, give it a bit more room
self.SetSize((580, 500))
else:
self.SetSize((550, 500))
- #self.SetMaxSize((500, -1))
+ # self.SetMaxSize((500, -1))
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
self.container = ItemStatsContainer(self, victim, item, itmContext)
self.mainSizer.Add(self.container, 1, wx.EXPAND)
if "wxGTK" in wx.PlatformInfo:
- self.closeBtn = wx.Button( self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0 )
- self.mainSizer.Add( self.closeBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5 )
+ self.closeBtn = wx.Button(self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0)
+ self.mainSizer.Add(self.closeBtn, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.closeBtn.Bind(wx.EVT_BUTTON, self.closeEvent)
self.SetSizer(self.mainSizer)
@@ -113,13 +106,13 @@ class ItemStatsDialog(wx.Dialog):
counter = ItemStatsDialog.counter
dlgStep = 30
- if counter * dlgStep > ppos.x+psize.width-dlgsize.x or counter * dlgStep > ppos.y+psize.height-dlgsize.y:
+ if counter * dlgStep > ppos.x + psize.width - dlgsize.x or counter * dlgStep > ppos.y + psize.height - dlgsize.y:
ItemStatsDialog.counter = 1
dlgx = ppos.x + counter * dlgStep
dlgy = ppos.y + counter * dlgStep
if pos == wx.DefaultPosition:
- self.SetPosition((dlgx,dlgy))
+ self.SetPosition((dlgx, dlgy))
else:
self.SetPosition(pos)
if maximized:
@@ -139,26 +132,22 @@ class ItemStatsDialog(wx.Dialog):
def closeEvent(self, event):
- if self.dlgOrder==ItemStatsDialog.counter:
+ if self.dlgOrder == ItemStatsDialog.counter:
ItemStatsDialog.counter -= 1
self.parentWnd.UnregisterStatsWindow(self)
self.Destroy()
-###########################################################################
-## Class ItemStatsContainer
-###########################################################################
-class ItemStatsContainer ( wx.Panel ):
-
- def __init__( self, parent, stuff, item, context = None):
- wx.Panel.__init__ ( self, parent )
+class ItemStatsContainer(wx.Panel):
+ def __init__(self, parent, stuff, item, context=None):
+ wx.Panel.__init__(self, parent)
sMkt = Market.getInstance()
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.nbContainer = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.nbContainer, 1, wx.EXPAND |wx.ALL, 2 )
+ self.nbContainer = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.nbContainer, 1, wx.EXPAND | wx.ALL, 2)
if item.traits is not None:
self.traits = ItemTraits(self.nbContainer, stuff, item)
@@ -189,7 +178,7 @@ class ItemStatsContainer ( wx.Panel ):
self.SetSizer(mainSizer)
self.Layout()
- def __del__( self ):
+ def __del__(self):
pass
def mouseHit(self, event):
@@ -197,54 +186,36 @@ class ItemStatsContainer ( wx.Panel ):
if tab != -1:
self.nbContainer.SetSelection(tab)
-###########################################################################
-## Class AutoListCtrl
-###########################################################################
class AutoListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ListRowHighlighter):
-
- def __init__(self, parent, ID, pos=wx.DefaultPosition,
- size=wx.DefaultSize, style=0):
+ def __init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0):
wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
listmix.ListCtrlAutoWidthMixin.__init__(self)
listmix.ListRowHighlighter.__init__(self)
-###########################################################################
-## Class AutoListCtrl
-###########################################################################
class AutoListCtrlNoHighlight(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ListRowHighlighter):
-
- def __init__(self, parent, ID, pos=wx.DefaultPosition,
- size=wx.DefaultSize, style=0):
+ def __init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0):
wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
listmix.ListCtrlAutoWidthMixin.__init__(self)
-###########################################################################
-## Class ItemTraits
-###########################################################################
-
-class ItemTraits ( wx.Panel ):
+class ItemTraits(wx.Panel):
def __init__(self, parent, stuff, item):
- wx.Panel.__init__ (self, parent)
+ wx.Panel.__init__(self, parent)
mainSizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(mainSizer)
self.traits = wx.html.HtmlWindow(self)
self.traits.SetPage(item.traits.traitText)
- mainSizer.Add(self.traits, 1, wx.ALL|wx.EXPAND, 0)
+ mainSizer.Add(self.traits, 1, wx.ALL | wx.EXPAND, 0)
self.Layout()
-###########################################################################
-## Class ItemDescription
-###########################################################################
-
-class ItemDescription ( wx.Panel ):
+class ItemDescription(wx.Panel):
def __init__(self, parent, stuff, item):
- wx.Panel.__init__ (self, parent)
+ wx.Panel.__init__(self, parent)
mainSizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(mainSizer)
@@ -265,24 +236,18 @@ class ItemDescription ( wx.Panel ):
self.description.SetPage(desc)
- mainSizer.Add(self.description, 1, wx.ALL|wx.EXPAND, 0)
+ mainSizer.Add(self.description, 1, wx.ALL | wx.EXPAND, 0)
self.Layout()
-###########################################################################
-## Class ItemParams
-###########################################################################
class ItemParams (wx.Panel):
- def __init__(self, parent, stuff, item, context = None):
- wx.Panel.__init__ (self, parent)
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ def __init__(self, parent, stuff, item, context=None):
+ wx.Panel.__init__(self, parent)
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.paramList = AutoListCtrl(self, wx.ID_ANY,
- style = #wx.LC_HRULES |
- #wx.LC_NO_HEADER |
- wx.LC_REPORT |wx.LC_SINGLE_SEL |wx.LC_VRULES |wx.NO_BORDER)
- mainSizer.Add( self.paramList, 1, wx.ALL|wx.EXPAND, 0 )
- self.SetSizer( mainSizer )
+ self.paramList = AutoListCtrl(self, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER)
+ mainSizer.Add(self.paramList, 1, wx.ALL | wx.EXPAND, 0)
+ self.SetSizer(mainSizer)
self.toggleView = 1
self.stuff = stuff
@@ -291,29 +256,29 @@ class ItemParams (wx.Panel):
self.attrValues = {}
self._fetchValues()
- self.m_staticline = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_staticline, 0, wx.EXPAND)
- bSizer = wx.BoxSizer( wx.HORIZONTAL )
+ self.m_staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_staticline, 0, wx.EXPAND)
+ bSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.totalAttrsLabel = wx.StaticText( self, wx.ID_ANY, u" ", wx.DefaultPosition, wx.DefaultSize, 0 )
- bSizer.Add( self.totalAttrsLabel, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT)
+ self.totalAttrsLabel = wx.StaticText(self, wx.ID_ANY, u" ", wx.DefaultPosition, wx.DefaultSize, 0)
+ bSizer.Add(self.totalAttrsLabel, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT)
- self.toggleViewBtn = wx.ToggleButton( self, wx.ID_ANY, u"Toggle view mode", wx.DefaultPosition, wx.DefaultSize, 0 )
- bSizer.Add( self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL)
+ self.toggleViewBtn = wx.ToggleButton(self, wx.ID_ANY, u"Toggle view mode", wx.DefaultPosition, wx.DefaultSize, 0)
+ bSizer.Add(self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL)
- self.exportStatsBtn = wx.ToggleButton( self, wx.ID_ANY, u"Export Item Stats", wx.DefaultPosition, wx.DefaultSize, 0 )
- bSizer.Add( self.exportStatsBtn, 0, wx.ALIGN_CENTER_VERTICAL)
+ self.exportStatsBtn = wx.ToggleButton(self, wx.ID_ANY, u"Export Item Stats", wx.DefaultPosition, wx.DefaultSize, 0)
+ bSizer.Add(self.exportStatsBtn, 0, wx.ALIGN_CENTER_VERTICAL)
if stuff is not None:
- self.refreshBtn = wx.Button( self, wx.ID_ANY, u"Refresh", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
- bSizer.Add( self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL)
- self.refreshBtn.Bind( wx.EVT_BUTTON, self.RefreshValues )
+ self.refreshBtn = wx.Button(self, wx.ID_ANY, u"Refresh", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT)
+ bSizer.Add(self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL)
+ self.refreshBtn.Bind(wx.EVT_BUTTON, self.RefreshValues)
- mainSizer.Add( bSizer, 0, wx.ALIGN_RIGHT)
+ mainSizer.Add(bSizer, 0, wx.ALIGN_RIGHT)
self.PopulateList()
- self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON,self.ToggleViewMode)
+ self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode)
self.exportStatsBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ExportItemStats)
def _fetchValues(self):
@@ -349,7 +314,7 @@ class ItemParams (wx.Panel):
event.Skip()
def ToggleViewMode(self, event):
- self.toggleView *=-1
+ self.toggleView *= -1
self.UpdateList()
event.Skip()
@@ -413,17 +378,17 @@ class ItemParams (wx.Panel):
)
def PopulateList(self):
- self.paramList.InsertColumn(0,"Attribute")
- self.paramList.InsertColumn(1,"Current Value")
+ self.paramList.InsertColumn(0, "Attribute")
+ self.paramList.InsertColumn(1, "Current Value")
if self.stuff is not None:
- self.paramList.InsertColumn(2,"Base Value")
- self.paramList.SetColumnWidth(0,110)
- self.paramList.SetColumnWidth(1,90)
+ self.paramList.InsertColumn(2, "Base Value")
+ self.paramList.SetColumnWidth(0, 110)
+ self.paramList.SetColumnWidth(1, 90)
if self.stuff is not None:
- self.paramList.SetColumnWidth(2,90)
+ self.paramList.SetColumnWidth(2, 90)
self.paramList.setResizeColumn(0)
self.imageList = wx.ImageList(16, 16)
- self.paramList.SetImageList(self.imageList,wx.IMAGE_LIST_SMALL)
+ self.paramList.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL)
names = list(self.attrValues.iterkeys())
names.sort()
@@ -462,7 +427,6 @@ class ItemParams (wx.Panel):
else:
attrIcon = self.imageList.Add(BitmapLoader.getBitmap("7_15", "icons"))
-
index = self.paramList.InsertImageStringItem(sys.maxint, attrName, attrIcon)
idNameMap[idCount] = attrName
self.paramList.SetItemData(index, idCount)
@@ -486,11 +450,9 @@ class ItemParams (wx.Panel):
if self.stuff is not None:
self.paramList.SetStringItem(index, 2, valueUnitDefault)
-
-
self.paramList.SortItems(lambda id1, id2: cmp(idNameMap[id1], idNameMap[id2]))
self.paramList.RefreshRows()
- self.totalAttrsLabel.SetLabel("%d attributes. " %idCount)
+ self.totalAttrsLabel.SetLabel("%d attributes. " % idCount)
self.Layout()
def TranslateValueUnit(self, value, unitName, unitDisplayName):
@@ -506,31 +468,30 @@ class ItemParams (wx.Panel):
attribute = Attribute.getInstance().getAttributeInfo(value)
return "%s (%d)" % (attribute.name.capitalize(), value)
- trans = {"Inverse Absolute Percent": (lambda: (1-value)*100, unitName),
- "Inversed Modifier Percent": (lambda: (1-value) * 100, unitName),
+ trans = {"Inverse Absolute Percent": (lambda: (1 - value) * 100, unitName),
+ "Inversed Modifier Percent": (lambda: (1 - value) * 100, unitName),
"Modifier Percent": (lambda: ("%+.2f" if ((value - 1) * 100) % 1 else "%+d") % ((value - 1) * 100), unitName),
"Volume": (lambda: value, u"m\u00B3"),
"Sizeclass": (lambda: value, ""),
- "Absolute Percent": (lambda: (value * 100) , unitName),
+ "Absolute Percent": (lambda: (value * 100), unitName),
"Milliseconds": (lambda: value / 1000.0, unitName),
"typeID": (itemIDCallback, ""),
- "groupID": (groupIDCallback,""),
+ "groupID": (groupIDCallback, ""),
"attributeID": (attributeIDCallback, "")}
override = trans.get(unitDisplayName)
if override is not None:
-
- if type(override[0]()) == type(str()):
- fvalue = override[0]()
+ v = override[0]()
+ if isinstance(v, str):
+ fvalue = v
+ elif isinstance(v, (int, float, long)):
+ fvalue = formatAmount(v, 3, 0, 0)
else:
- v = override[0]()
- if isinstance(v, (int, float, long)):
- fvalue = formatAmount(v, 3, 0, 0)
- else:
- fvalue = v
- return "%s %s" % (fvalue , override[1])
+ fvalue = v
+ return "%s %s" % (fvalue, override[1])
else:
- return "%s %s" % (formatAmount(value, 3, 0),unitName)
+ return "%s %s" % (formatAmount(value, 3, 0), unitName)
+
class ItemCompare(wx.Panel):
def __init__(self, parent, stuff, item, items, context=None):
@@ -538,9 +499,7 @@ class ItemCompare(wx.Panel):
mainSizer = wx.BoxSizer(wx.VERTICAL)
self.paramList = AutoListCtrl(self, wx.ID_ANY,
- style= # wx.LC_HRULES |
- # wx.LC_NO_HEADER |
- wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER)
+ style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER)
mainSizer.Add(self.paramList, 1, wx.ALL | wx.EXPAND, 0)
self.SetSizer(mainSizer)
@@ -604,7 +563,7 @@ class ItemCompare(wx.Panel):
self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode)
self.Bind(wx.EVT_LIST_COL_CLICK, self.SortCompareCols)
- def SortCompareCols(self,event):
+ def SortCompareCols(self, event):
self.Freeze()
self.paramList.ClearAll()
self.PopulateList(event.Column)
@@ -628,7 +587,7 @@ class ItemCompare(wx.Panel):
def processPrices(self, prices):
for i, price in enumerate(prices):
- self.paramList.SetStringItem(i, len(self.attrs)+1, formatAmount(price.price, 3, 3, 9, currency=True))
+ self.paramList.SetStringItem(i, len(self.attrs) + 1, formatAmount(price.price, 3, 3, 9, currency=True))
def PopulateList(self, sort=None):
@@ -659,11 +618,11 @@ class ItemCompare(wx.Panel):
for i, attr in enumerate(self.attrs.keys()):
name = self.attrs[attr].displayName if self.attrs[attr].displayName else attr
- self.paramList.InsertColumn(i+1, name)
- self.paramList.SetColumnWidth(i+1, 120)
+ self.paramList.InsertColumn(i + 1, name)
+ self.paramList.SetColumnWidth(i + 1, 120)
- self.paramList.InsertColumn(len(self.attrs)+1, "Price")
- self.paramList.SetColumnWidth(len(self.attrs)+1, 60)
+ self.paramList.InsertColumn(len(self.attrs) + 1, "Price")
+ self.paramList.SetColumnWidth(len(self.attrs) + 1, 60)
sMkt = Market.getInstance()
sMkt.getPrices([x.ID for x in self.items], self.processPrices)
@@ -681,7 +640,7 @@ class ItemCompare(wx.Panel):
else:
valueUnit = formatAmount(value, 3, 0, 0)
- self.paramList.SetStringItem(i, x+1, valueUnit)
+ self.paramList.SetStringItem(i, x + 1, valueUnit)
self.paramList.RefreshRows()
self.Layout()
@@ -713,37 +672,30 @@ class ItemCompare(wx.Panel):
override = trans.get(unitDisplayName)
if override is not None:
-
- if type(override[0]()) == type(str()):
- fvalue = override[0]()
+ v = override[0]()
+ if isinstance(v, str):
+ fvalue = v
+ elif isinstance(v, (int, float, long)):
+ fvalue = formatAmount(v, 3, 0, 0)
else:
- v = override[0]()
- if isinstance(v, (int, float, long)):
- fvalue = formatAmount(v, 3, 0, 0)
- else:
- fvalue = v
+ fvalue = v
return "%s %s" % (fvalue, override[1])
else:
return "%s %s" % (formatAmount(value, 3, 0), unitName)
-###########################################################################
-## Class ItemRequirements
-###########################################################################
-
-class ItemRequirements ( wx.Panel ):
-
+class ItemRequirements(wx.Panel):
def __init__(self, parent, stuff, item):
- wx.Panel.__init__ (self, parent, style = wx.TAB_TRAVERSAL)
+ wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL)
- #itemId is set by the parent.
- self.romanNb = ["0","I","II","III","IV","V","VI","VII","VIII","IX","X"]
- self.skillIdHistory=[]
- mainSizer = wx.BoxSizer( wx.VERTICAL )
+ # itemId is set by the parent.
+ self.romanNb = ["0", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"]
+ self.skillIdHistory = []
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.reqTree = wx.TreeCtrl(self, style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER)
+ self.reqTree = wx.TreeCtrl(self, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER)
- mainSizer.Add(self.reqTree, 1, wx.ALL|wx.EXPAND, 0)
+ mainSizer.Add(self.reqTree, 1, wx.ALL | wx.EXPAND, 0)
self.SetSizer(mainSizer)
self.root = self.reqTree.AddRoot("WINRARZOR")
@@ -753,24 +705,20 @@ class ItemRequirements ( wx.Panel ):
self.reqTree.SetImageList(self.imageList)
skillBookId = self.imageList.Add(BitmapLoader.getBitmap("skill_small", "gui"))
- self.getFullSkillTree(item,self.root,skillBookId)
+ self.getFullSkillTree(item, self.root, skillBookId)
self.reqTree.ExpandAll()
self.Layout()
- def getFullSkillTree(self,parentSkill,parent,sbIconId):
+ def getFullSkillTree(self, parentSkill, parent, sbIconId):
for skill, level in parentSkill.requiredSkills.iteritems():
- child = self.reqTree.AppendItem(parent,"%s %s" %(skill.name,self.romanNb[int(level)]), sbIconId)
+ child = self.reqTree.AppendItem(parent, "%s %s" % (skill.name, self.romanNb[int(level)]), sbIconId)
if skill.ID not in self.skillIdHistory:
- self.getFullSkillTree(skill,child,sbIconId)
+ self.getFullSkillTree(skill, child, sbIconId)
self.skillIdHistory.append(skill.ID)
-###########################################################################
-## Class ItemEffects
-###########################################################################
-
class ItemEffects (wx.Panel):
def __init__(self, parent, stuff, item):
wx.Panel.__init__(self, parent)
@@ -778,11 +726,7 @@ class ItemEffects (wx.Panel):
mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.effectList = AutoListCtrl(self, wx.ID_ANY,
- style=
- # wx.LC_HRULES |
- # wx.LC_NO_HEADER |
- wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER)
+ self.effectList = AutoListCtrl(self, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER)
mainSizer.Add(self.effectList, 1, wx.ALL | wx.EXPAND, 0)
self.SetSizer(mainSizer)
@@ -794,17 +738,17 @@ class ItemEffects (wx.Panel):
def PopulateList(self):
- self.effectList.InsertColumn(0,"Name")
- self.effectList.InsertColumn(1,"Active")
+ self.effectList.InsertColumn(0, "Name")
+ self.effectList.InsertColumn(1, "Active")
self.effectList.InsertColumn(2, "Type")
if config.debug:
self.effectList.InsertColumn(3, "Run Time")
- self.effectList.InsertColumn(4,"ID")
+ self.effectList.InsertColumn(4, "ID")
- #self.effectList.SetColumnWidth(0,385)
+ # self.effectList.SetColumnWidth(0,385)
self.effectList.setResizeColumn(0)
- self.effectList.SetColumnWidth(1,50)
+ self.effectList.SetColumnWidth(1, 50)
self.effectList.SetColumnWidth(2, 80)
if config.debug:
self.effectList.SetColumnWidth(3, 65)
@@ -872,19 +816,17 @@ class ItemEffects (wx.Panel):
If effect file does not exist, create it
"""
- import os
- file = os.path.join(config.pyfaPath, "eos", "effects", "%s.py"%event.GetText().lower())
+ file_ = os.path.join(config.pyfaPath, "eos", "effects", "%s.py" % event.GetText().lower())
- if not os.path.isfile(file):
- open(file, 'a').close()
+ if not os.path.isfile(file_):
+ open(file_, 'a').close()
if 'wxMSW' in wx.PlatformInfo:
- os.startfile(file)
+ os.startfile(file_)
elif 'wxMac' in wx.PlatformInfo:
- os.system("open "+file)
+ os.system("open " + file_)
else:
- import subprocess
- subprocess.call(["xdg-open", file])
+ subprocess.call(["xdg-open", file_])
def RefreshValues(self, event):
self.Freeze()
@@ -895,13 +837,10 @@ class ItemEffects (wx.Panel):
self.Thaw()
event.Skip()
-###########################################################################
-## Class ItemAffectedBy
-###########################################################################
-
-class ItemAffectedBy (wx.Panel):
+class ItemAffectedBy(wx.Panel):
ORDER = [Fit, Ship, Citadel, Mode, Module, Drone, Fighter, Implant, Booster, Skill]
+
def __init__(self, parent, stuff, item):
wx.Panel.__init__(self, parent)
self.stuff = stuff
@@ -917,33 +856,33 @@ class ItemAffectedBy (wx.Panel):
mainSizer = wx.BoxSizer(wx.VERTICAL)
- self.affectedBy = wx.TreeCtrl(self, style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER)
- mainSizer.Add(self.affectedBy, 1, wx.ALL|wx.EXPAND, 0)
+ self.affectedBy = wx.TreeCtrl(self, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER)
+ mainSizer.Add(self.affectedBy, 1, wx.ALL | wx.EXPAND, 0)
- self.m_staticline = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
+ self.m_staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
- mainSizer.Add( self.m_staticline, 0, wx.EXPAND)
- bSizer = wx.BoxSizer( wx.HORIZONTAL )
+ mainSizer.Add(self.m_staticline, 0, wx.EXPAND)
+ bSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.toggleExpandBtn = wx.ToggleButton( self, wx.ID_ANY, u"Expand All", wx.DefaultPosition, wx.DefaultSize, 0 )
- bSizer.Add( self.toggleExpandBtn, 0, wx.ALIGN_CENTER_VERTICAL)
+ self.toggleExpandBtn = wx.ToggleButton(self, wx.ID_ANY, u"Expand All", wx.DefaultPosition, wx.DefaultSize, 0)
+ bSizer.Add(self.toggleExpandBtn, 0, wx.ALIGN_CENTER_VERTICAL)
- self.toggleNameBtn = wx.ToggleButton( self, wx.ID_ANY, u"Toggle Names", wx.DefaultPosition, wx.DefaultSize, 0 )
- bSizer.Add( self.toggleNameBtn, 0, wx.ALIGN_CENTER_VERTICAL)
+ self.toggleNameBtn = wx.ToggleButton(self, wx.ID_ANY, u"Toggle Names", wx.DefaultPosition, wx.DefaultSize, 0)
+ bSizer.Add(self.toggleNameBtn, 0, wx.ALIGN_CENTER_VERTICAL)
- self.toggleViewBtn = wx.ToggleButton( self, wx.ID_ANY, u"Toggle View", wx.DefaultPosition, wx.DefaultSize, 0 )
- bSizer.Add( self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL)
+ self.toggleViewBtn = wx.ToggleButton(self, wx.ID_ANY, u"Toggle View", wx.DefaultPosition, wx.DefaultSize, 0)
+ bSizer.Add(self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL)
if stuff is not None:
- self.refreshBtn = wx.Button( self, wx.ID_ANY, u"Refresh", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
- bSizer.Add( self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL)
- self.refreshBtn.Bind( wx.EVT_BUTTON, self.RefreshTree )
+ self.refreshBtn = wx.Button(self, wx.ID_ANY, u"Refresh", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT)
+ bSizer.Add(self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL)
+ self.refreshBtn.Bind(wx.EVT_BUTTON, self.RefreshTree)
- self.toggleNameBtn.Bind(wx.EVT_TOGGLEBUTTON,self.ToggleNameMode)
- self.toggleExpandBtn.Bind(wx.EVT_TOGGLEBUTTON,self.ToggleExpand)
- self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON,self.ToggleViewMode)
+ self.toggleNameBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleNameMode)
+ self.toggleExpandBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleExpand)
+ self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode)
- mainSizer.Add( bSizer, 0, wx.ALIGN_RIGHT)
+ mainSizer.Add(bSizer, 0, wx.ALIGN_RIGHT)
self.SetSizer(mainSizer)
self.PopulateTree()
self.Layout()
@@ -965,9 +904,9 @@ class ItemAffectedBy (wx.Panel):
# Skills are different in that they don't have itemModifiedAttributes,
# which is needed if we send the container to itemStats dialog. So
# instead, we send the item.
- type = stuff.__class__.__name__
- contexts.append(("itemStats", type))
- menu = ContextMenu.getMenu(stuff if type != "Skill" else stuff.item, *contexts)
+ type_ = stuff.__class__.__name__
+ contexts.append(("itemStats", type_))
+ menu = ContextMenu.getMenu(stuff if type_ != "Skill" else stuff.item, *contexts)
self.PopupMenu(menu)
def ExpandCollapseTree(self):
@@ -983,7 +922,7 @@ class ItemAffectedBy (wx.Panel):
self.Thaw()
- def ToggleExpand(self,event):
+ def ToggleExpand(self, event):
self.expand *= -1
self.ExpandCollapseTree()
@@ -1043,20 +982,22 @@ class ItemAffectedBy (wx.Panel):
return attr
def buildAttributeView(self, root):
- # We first build a usable dictionary of items. The key is either a fit
- # if the afflictions stem from a projected fit, or self.stuff if they
- # are local afflictions (everything else, even gang boosts at this time)
- # The value of this is yet another dictionary in the following format:
- #
- # "attribute name": {
- # "Module Name": [
- # class of affliction,
- # affliction item (required due to GH issue #335)
- # modifier type
- # amount of modification
- # whether this affliction was projected
- # ]
- # }
+ """
+ We first build a usable dictionary of items. The key is either a fit
+ if the afflictions stem from a projected fit, or self.stuff if they
+ are local afflictions (everything else, even gang boosts at this time)
+ The value of this is yet another dictionary in the following format:
+
+ "attribute name": {
+ "Module Name": [
+ class of affliction,
+ affliction item (required due to GH issue #335)
+ modifier type
+ amount of modification
+ whether this affliction was projected
+ ]
+ }
+ """
attributes = self.stuff.itemModifiedAttributes if self.item == self.stuff.item else self.stuff.chargeModifiedAttributes
container = {}
@@ -1168,20 +1109,21 @@ class ItemAffectedBy (wx.Panel):
treeItem = self.affectedBy.AppendItem(child, display, itemIcon)
self.affectedBy.SetPyData(treeItem, afflictor)
-
def buildModuleView(self, root):
- # We first build a usable dictionary of items. The key is either a fit
- # if the afflictions stem from a projected fit, or self.stuff if they
- # are local afflictions (everything else, even gang boosts at this time)
- # The value of this is yet another dictionary in the following format:
- #
- # "Module Name": [
- # class of affliction,
- # set of afflictors (such as 2 of the same module),
- # info on affliction (attribute name, modifier, and modification amount),
- # item that will be used to determine icon (required due to GH issue #335)
- # whether this affliction is actually used (unlearned skills are not used)
- # ]
+ """
+ We first build a usable dictionary of items. The key is either a fit
+ if the afflictions stem from a projected fit, or self.stuff if they
+ are local afflictions (everything else, even gang boosts at this time)
+ The value of this is yet another dictionary in the following format:
+
+ "Module Name": [
+ class of affliction,
+ set of afflictors (such as 2 of the same module),
+ info on affliction (attribute name, modifier, and modification amount),
+ item that will be used to determine icon (required due to GH issue #335)
+ whether this affliction is actually used (unlearned skills are not used)
+ ]
+ """
attributes = self.stuff.itemModifiedAttributes if self.item == self.stuff.item else self.stuff.chargeModifiedAttributes
container = {}
@@ -1294,7 +1236,7 @@ class ItemAffectedBy (wx.Panel):
attributes.append((attrName, (displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized, attrIcon))
- attrSorted = sorted(attributes, key = lambda attribName: attribName[0])
+ attrSorted = sorted(attributes, key=lambda attribName: attribName[0])
for attr in attrSorted:
attrName, displayName, attrModifier, attrAmount, penalized, attrIcon = attr
diff --git a/gui/mainFrame.py b/gui/mainFrame.py
index 4bad30a0a..f53f617c8 100644
--- a/gui/mainFrame.py
+++ b/gui/mainFrame.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import sys
import os.path
@@ -30,8 +30,6 @@ from wx._core import PyDeadObjectError
from wx.lib.wordwrap import wordwrap
import config
-import threading
-import webbrowser
import gui.aboutData
import gui.chromeTabs
@@ -74,29 +72,32 @@ from service.settings import HTMLExportSettings
from time import gmtime, strftime
-if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
+if 'wxMac' not in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0)):
from service.crest import CrestModes
from gui.crestFittings import CrestFittings, ExportToEve, CrestMgmt
try:
from gui.propertyEditor import AttributeEditor
disableOverrideEditor = False
- except ImportError, e:
- print "Error loading Attribute Editor: %s.\nAccess to Attribute Editor is disabled."%e.message
+ except ImportError as e:
+ print("Error loading Attribute Editor: %s.\nAccess to Attribute Editor is disabled." % e.message)
disableOverrideEditor = True
-#dummy panel(no paint no erasebk)
+
+# dummy panel(no paint no erasebk)
class PFPanel(wx.Panel):
- def __init__(self,parent):
- wx.Panel.__init__(self,parent)
+ def __init__(self, parent):
+ wx.Panel.__init__(self, parent)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnBkErase)
def OnPaint(self, event):
event.Skip()
+
def OnBkErase(self, event):
pass
+
class OpenFitsThread(threading.Thread):
def __init__(self, fits, callback):
threading.Thread.__init__(self)
@@ -121,34 +122,36 @@ class OpenFitsThread(threading.Thread):
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fits[-1], startup=2))
wx.CallAfter(self.callback)
+
class MainFrame(wx.Frame):
__instance = None
+
@classmethod
def getInstance(cls):
return cls.__instance if cls.__instance is not None else MainFrame()
def __init__(self, title):
- self.title=title
+ self.title = title
wx.Frame.__init__(self, None, wx.ID_ANY, self.title)
MainFrame.__instance = self
- #Load stored settings (width/height/maximized..)
+ # Load stored settings (width/height/maximized..)
self.LoadMainFrameAttribs()
- #Fix for msw (have the frame background color match panel color
+ # Fix for msw (have the frame background color match panel color
if 'wxMSW' in wx.PlatformInfo:
- self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) )
+ self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE))
- #Load and set the icon for pyfa main window
+ # Load and set the icon for pyfa main window
i = wx.IconFromBitmap(BitmapLoader.getBitmap("pyfa", "gui"))
self.SetIcon(i)
- #Create the layout and windows
+ # Create the layout and windows
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.browser_fitting_split = wx.SplitterWindow(self, style = wx.SP_LIVE_UPDATE)
- self.fitting_additions_split = wx.SplitterWindow(self.browser_fitting_split, style = wx.SP_LIVE_UPDATE)
+ self.browser_fitting_split = wx.SplitterWindow(self, style=wx.SP_LIVE_UPDATE)
+ self.fitting_additions_split = wx.SplitterWindow(self.browser_fitting_split, style=wx.SP_LIVE_UPDATE)
mainSizer.Add(self.browser_fitting_split, 1, wx.EXPAND | wx.LEFT, 2)
@@ -161,17 +164,17 @@ class MainFrame(wx.Frame):
shipBrowserImg = BitmapLoader.getImage("ship_small", "gui")
self.marketBrowser = MarketBrowser(self.notebookBrowsers)
- self.notebookBrowsers.AddPage(self.marketBrowser, "Market", tabImage = marketImg, showClose = False)
+ self.notebookBrowsers.AddPage(self.marketBrowser, "Market", tabImage=marketImg, showClose=False)
self.marketBrowser.splitter.SetSashPosition(self.marketHeight)
self.shipBrowser = ShipBrowser(self.notebookBrowsers)
- self.notebookBrowsers.AddPage(self.shipBrowser, "Fittings", tabImage = shipBrowserImg, showClose = False)
+ self.notebookBrowsers.AddPage(self.shipBrowser, "Fittings", tabImage=shipBrowserImg, showClose=False)
- #=======================================================================
+ # =====================================================================
# DISABLED FOR RC2 RELEASE
- #self.fleetBrowser = FleetBrowser(self.notebookBrowsers)
- #self.notebookBrowsers.AddPage(self.fleetBrowser, "Fleets", showClose = False)
- #=======================================================================
+ # self.fleetBrowser = FleetBrowser(self.notebookBrowsers)
+ # self.notebookBrowsers.AddPage(self.fleetBrowser, "Fleets", showClose = False)
+ # =====================================================================
self.notebookBrowsers.SetSelection(1)
@@ -196,7 +199,7 @@ class MainFrame(wx.Frame):
self.SetSizer(mainSizer)
- #Add menu
+ # Add menu
self.addPageId = wx.NewId()
self.closePageId = wx.NewId()
@@ -204,23 +207,23 @@ class MainFrame(wx.Frame):
self.SetMenuBar(MainMenuBar())
self.registerMenu()
- #Internal vars to keep track of other windows (graphing/stats)
+ # Internal vars to keep track of other windows (graphing/stats)
self.graphFrame = None
self.statsWnds = []
self.activeStatsWnd = None
self.Bind(wx.EVT_CLOSE, self.OnClose)
- #Show ourselves
+ # Show ourselves
self.Show()
self.LoadPreviousOpenFits()
- #Check for updates
+ # Check for updates
self.sUpdate = Update.getInstance()
self.sUpdate.CheckUpdate(self.ShowUpdateBox)
- if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
+ if 'wxMac' not in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0)):
self.Bind(GE.EVT_SSO_LOGIN, self.onSSOLogin)
self.Bind(GE.EVT_SSO_LOGOUT, self.onSSOLogout)
@@ -274,7 +277,7 @@ class MainFrame(wx.Frame):
def UpdateMainFrameAttribs(self):
if self.IsIconized():
return
- width,height = self.GetSize()
+ width, height = self.GetSize()
self.mainFrameAttribs["wnd_width"] = width
self.mainFrameAttribs["wnd_height"] = height
@@ -308,7 +311,7 @@ class MainFrame(wx.Frame):
return m() if m is not None else None
def getActiveView(self):
- sel = self.fitMultiSwitch.GetSelectedPage()
+ self.fitMultiSwitch.GetSelectedPage()
def CloseCurrentPage(self, evt):
ms = self.fitMultiSwitch
@@ -321,11 +324,11 @@ class MainFrame(wx.Frame):
self.UpdateMainFrameAttribs()
# save open fits
- self.prevOpenFits['pyfaOpenFits'] = [] # clear old list
+ self.prevOpenFits['pyfaOpenFits'] = [] # clear old list
for page in self.fitMultiSwitch.pages:
m = getattr(page, "getActiveFit", None)
if m is not None:
- self.prevOpenFits['pyfaOpenFits'].append(m())
+ self.prevOpenFits['pyfaOpenFits'].append(m())
# save all teh settingz
SettingsProvider.getInstance().saveAll()
@@ -342,37 +345,36 @@ class MainFrame(wx.Frame):
info.Name = "pyfa"
info.Version = gui.aboutData.versionString
info.Description = wordwrap(gui.aboutData.description + "\n\nDevelopers:\n\t" +
- "\n\t".join(gui.aboutData.developers) +
- "\n\nAdditional credits:\n\t" +
- "\n\t".join(gui.aboutData.credits) +
- "\n\nLicenses:\n\t" +
- "\n\t".join(gui.aboutData.licenses) +
- "\n\nEVE Data: \t" + eos.config.gamedata_version +
- "\nPython: \t\t" + '{}.{}.{}'.format(v.major, v.minor, v.micro) +
- "\nwxPython: \t" + wx.__version__ +
- "\nSQLAlchemy: \t" + sqlalchemy.__version__,
- 500, wx.ClientDC(self))
- if "__WXGTK__" in wx.PlatformInfo:
+ "\n\t".join(gui.aboutData.developers) +
+ "\n\nAdditional credits:\n\t" +
+ "\n\t".join(gui.aboutData.credits) +
+ "\n\nLicenses:\n\t" +
+ "\n\t".join(gui.aboutData.licenses) +
+ "\n\nEVE Data: \t" + eos.config.gamedata_version +
+ "\nPython: \t\t" + '{}.{}.{}'.format(v.major, v.minor, v.micro) +
+ "\nwxPython: \t" + wx.__version__ +
+ "\nSQLAlchemy: \t" + sqlalchemy.__version__,
+ 500, wx.ClientDC(self))
+ if "__WXGTK__" in wx.PlatformInfo:
forumUrl = "http://forums.eveonline.com/default.aspx?g=posts&t=466425"
else:
forumUrl = "http://forums.eveonline.com/default.aspx?g=posts&t=466425"
info.WebSite = (forumUrl, "pyfa thread at EVE Online forum")
wx.AboutBox(info)
-
def showCharacterEditor(self, event):
- dlg=CharacterEditor(self)
+ dlg = CharacterEditor(self)
dlg.Show()
def showAttrEditor(self, event):
- dlg=AttributeEditor(self)
+ dlg = AttributeEditor(self)
dlg.Show()
def showTargetResistsEditor(self, event):
ResistsEditorDlg(self)
def showDamagePatternEditor(self, event):
- dlg=DmgPatternEditorDlg(self)
+ dlg = DmgPatternEditorDlg(self)
dlg.ShowModal()
dlg.Destroy()
@@ -383,26 +385,28 @@ class MainFrame(wx.Frame):
""" Export active fit """
sFit = Fit.getInstance()
fit = sFit.getFit(self.getActiveFit())
- defaultFile = "%s - %s.xml"%(fit.ship.item.name, fit.name) if fit else None
+ defaultFile = "%s - %s.xml" % (fit.ship.item.name, fit.name) if fit else None
dlg = wx.FileDialog(self, "Save Fitting As...",
- wildcard = "EVE XML fitting files (*.xml)|*.xml",
- style = wx.FD_SAVE,
+ wildcard="EVE XML fitting files (*.xml)|*.xml",
+ style=wx.FD_SAVE,
defaultFile=defaultFile)
if dlg.ShowModal() == wx.ID_OK:
- format = dlg.GetFilterIndex()
+ format_ = dlg.GetFilterIndex()
path = dlg.GetPath()
- if format == 0:
+ if format_ == 0:
output = sFit.exportXml(None, self.getActiveFit())
if '.' not in os.path.basename(path):
path += ".xml"
else:
- print "oops, invalid fit format %d" % format
+ print("oops, invalid fit format %d" % format_)
dlg.Destroy()
return
- file = open(path, "w", encoding="utf-8")
- file.write(output)
- file.close()
+
+ with open(path, "w", encoding="utf-8") as openfile:
+ openfile.write(output)
+ openfile.close()
+
dlg.Destroy()
def showPreferenceDialog(self, event):
@@ -431,7 +435,7 @@ class MainFrame(wx.Frame):
self.Bind(wx.EVT_MENU, self.loadDatabaseDefaults, id=menuBar.importDatabaseDefaultsId)
# Widgets Inspector
if config.debug:
- self.Bind(wx.EVT_MENU, self.openWXInspectTool, id = self.widgetInspectMenuID)
+ self.Bind(wx.EVT_MENU, self.openWXInspectTool, id=self.widgetInspectMenuID)
# About
self.Bind(wx.EVT_MENU, self.ShowAboutBox, id=wx.ID_ABOUT)
# Char editor
@@ -459,32 +463,32 @@ class MainFrame(wx.Frame):
# Preference dialog
self.Bind(wx.EVT_MENU, self.showPreferenceDialog, id=wx.ID_PREFERENCES)
# User guide
- self.Bind(wx.EVT_MENU, self.goWiki, id = menuBar.wikiId)
+ self.Bind(wx.EVT_MENU, self.goWiki, id=menuBar.wikiId)
# EVE Forums
- self.Bind(wx.EVT_MENU, self.goForums, id = menuBar.forumId)
+ self.Bind(wx.EVT_MENU, self.goForums, id=menuBar.forumId)
# Save current character
- self.Bind(wx.EVT_MENU, self.saveChar, id = menuBar.saveCharId)
+ self.Bind(wx.EVT_MENU, self.saveChar, id=menuBar.saveCharId)
# Save current character as another character
- self.Bind(wx.EVT_MENU, self.saveCharAs, id = menuBar.saveCharAsId)
+ self.Bind(wx.EVT_MENU, self.saveCharAs, id=menuBar.saveCharAsId)
# Save current character
- self.Bind(wx.EVT_MENU, self.revertChar, id = menuBar.revertCharId)
+ self.Bind(wx.EVT_MENU, self.revertChar, id=menuBar.revertCharId)
# Browse fittings
- self.Bind(wx.EVT_MENU, self.eveFittings, id = menuBar.eveFittingsId)
+ self.Bind(wx.EVT_MENU, self.eveFittings, id=menuBar.eveFittingsId)
# Export to EVE
- self.Bind(wx.EVT_MENU, self.exportToEve, id = menuBar.exportToEveId)
+ self.Bind(wx.EVT_MENU, self.exportToEve, id=menuBar.exportToEveId)
# Handle SSO event (login/logout/manage characters, depending on mode and current state)
- self.Bind(wx.EVT_MENU, self.ssoHandler, id = menuBar.ssoLoginId)
+ self.Bind(wx.EVT_MENU, self.ssoHandler, id=menuBar.ssoLoginId)
# Open attribute editor
- self.Bind(wx.EVT_MENU, self.showAttrEditor, id = menuBar.attrEditorId)
+ self.Bind(wx.EVT_MENU, self.showAttrEditor, id=menuBar.attrEditorId)
# Toggle Overrides
- self.Bind(wx.EVT_MENU, self.toggleOverrides, id = menuBar.toggleOverridesId)
+ self.Bind(wx.EVT_MENU, self.toggleOverrides, id=menuBar.toggleOverridesId)
- #Clipboard exports
+ # Clipboard exports
self.Bind(wx.EVT_MENU, self.exportToClipboard, id=wx.ID_COPY)
- #Graphs
+ # Graphs
self.Bind(wx.EVT_MENU, self.openGraphFrame, id=menuBar.graphFrameId)
toggleSearchBoxId = wx.NewId()
@@ -494,11 +498,11 @@ class MainFrame(wx.Frame):
# Close Page
self.Bind(wx.EVT_MENU, self.CloseCurrentPage, id=self.closePageId)
- self.Bind(wx.EVT_MENU, self.HAddPage, id = self.addPageId)
- self.Bind(wx.EVT_MENU, self.toggleSearchBox, id = toggleSearchBoxId)
- self.Bind(wx.EVT_MENU, self.toggleShipMarket, id = toggleShipMarketId)
- self.Bind(wx.EVT_MENU, self.CTabNext, id = ctabnext)
- self.Bind(wx.EVT_MENU, self.CTabPrev, id = ctabprev)
+ self.Bind(wx.EVT_MENU, self.HAddPage, id=self.addPageId)
+ self.Bind(wx.EVT_MENU, self.toggleSearchBox, id=toggleSearchBoxId)
+ self.Bind(wx.EVT_MENU, self.toggleShipMarket, id=toggleShipMarketId)
+ self.Bind(wx.EVT_MENU, self.CTabNext, id=ctabnext)
+ self.Bind(wx.EVT_MENU, self.CTabPrev, id=ctabprev)
actb = [(wx.ACCEL_CTRL, ord('T'), self.addPageId),
(wx.ACCEL_CMD, ord('T'), self.addPageId),
@@ -531,30 +535,30 @@ class MainFrame(wx.Frame):
for i in range(0, self.additionsPane.notebook.GetPageCount()):
self.additionsSelect.append(wx.NewId())
self.Bind(wx.EVT_MENU, self.AdditionsTabSelect, id=self.additionsSelect[i])
- actb.append((wx.ACCEL_CMD, i+49, self.additionsSelect[i]))
- actb.append((wx.ACCEL_CTRL, i+49, self.additionsSelect[i]))
+ actb.append((wx.ACCEL_CMD, i + 49, self.additionsSelect[i]))
+ actb.append((wx.ACCEL_CTRL, i + 49, self.additionsSelect[i]))
# Alt+1-9 for market item selection
self.itemSelect = []
for i in range(0, 9):
self.itemSelect.append(wx.NewId())
- self.Bind(wx.EVT_MENU, self.ItemSelect, id = self.itemSelect[i])
+ self.Bind(wx.EVT_MENU, self.ItemSelect, id=self.itemSelect[i])
actb.append((wx.ACCEL_ALT, i + 49, self.itemSelect[i]))
atable = wx.AcceleratorTable(actb)
self.SetAcceleratorTable(atable)
def eveFittings(self, event):
- dlg=CrestFittings(self)
+ dlg = CrestFittings(self)
dlg.Show()
def updateTitle(self, event):
sCrest = Crest.getInstance()
char = sCrest.implicitCharacter
if char:
- t = time.gmtime(char.eve.expires-time.time())
+ t = time.gmtime(char.eve.expires - time.time())
sTime = time.strftime("%H:%M:%S", t if t >= 0 else 0)
- newTitle = "%s | %s - %s"%(self.title, char.name, sTime)
+ newTitle = "%s | %s - %s" % (self.title, char.name, sTime)
self.SetTitle(newTitle)
def onSSOLogin(self, event):
@@ -605,11 +609,11 @@ class MainFrame(wx.Frame):
uri = sCrest.startServer()
webbrowser.open(uri)
else:
- dlg=CrestMgmt(self)
+ dlg = CrestMgmt(self)
dlg.Show()
def exportToEve(self, event):
- dlg=ExportToEve(self)
+ dlg = ExportToEve(self)
dlg.Show()
def toggleOverrides(self, event):
@@ -653,7 +657,7 @@ class MainFrame(wx.Frame):
def CTabPrev(self, event):
self.fitMultiSwitch.PrevPage()
- def HAddPage(self,event):
+ def HAddPage(self, event):
self.fitMultiSwitch.AddPage()
def toggleShipMarket(self, event):
@@ -714,17 +718,19 @@ class MainFrame(wx.Frame):
CopySelectDict[selected]()
-
dlg.Destroy()
def exportSkillsNeeded(self, event):
""" Exports skills needed for active fit and active character """
sCharacter = Character.getInstance()
- saveDialog = wx.FileDialog(self, "Export Skills Needed As...",
- wildcard = "EVEMon skills training file (*.emp)|*.emp|" \
- "EVEMon skills training XML file (*.xml)|*.xml|" \
- "Text skills training file (*.txt)|*.txt",
- style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
+ saveDialog = wx.FileDialog(
+ self,
+ "Export Skills Needed As...",
+ wildcard=("EVEMon skills training file (*.emp)|*.emp|"
+ "EVEMon skills training XML file (*.xml)|*.xml|"
+ "Text skills training file (*.txt)|*.txt"),
+ style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT,
+ )
if saveDialog.ShowModal() == wx.ID_OK:
saveFmtInt = saveDialog.GetFilterIndex()
@@ -748,16 +754,21 @@ class MainFrame(wx.Frame):
def fileImportDialog(self, event):
"""Handles importing single/multiple EVE XML / EFT cfg fit files"""
sFit = Fit.getInstance()
- dlg = wx.FileDialog(self, "Open One Or More Fitting Files",
- wildcard = "EVE XML fitting files (*.xml)|*.xml|" \
- "EFT text fitting files (*.cfg)|*.cfg|" \
- "All Files (*)|*",
- style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE)
+ dlg = wx.FileDialog(
+ self,
+ "Open One Or More Fitting Files",
+ wildcard=("EVE XML fitting files (*.xml)|*.xml|"
+ "EFT text fitting files (*.cfg)|*.cfg|"
+ "All Files (*)|*"),
+ style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE
+ )
if (dlg.ShowModal() == wx.ID_OK):
self.progressDialog = wx.ProgressDialog(
- "Importing fits",
- " "*100, # set some arbitrary spacing to create width in window
- parent=self, style = wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME)
+ "Importing fits",
+ " " * 100, # set some arbitrary spacing to create width in window
+ parent=self,
+ style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME
+ )
self.progressDialog.message = None
sFit.importFitsThreaded(dlg.GetPaths(), self.fileImportCallback)
self.progressDialog.ShowModal()
@@ -765,12 +776,15 @@ class MainFrame(wx.Frame):
def backupToXml(self, event):
""" Back up all fits to EVE XML file """
- defaultFile = "pyfa-fits-%s.xml"%strftime("%Y%m%d_%H%M%S", gmtime())
+ defaultFile = "pyfa-fits-%s.xml" % strftime("%Y%m%d_%H%M%S", gmtime())
- saveDialog = wx.FileDialog(self, "Save Backup As...",
- wildcard = "EVE XML fitting file (*.xml)|*.xml",
- style = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT,
- defaultFile=defaultFile)
+ saveDialog = wx.FileDialog(
+ self,
+ "Save Backup As...",
+ wildcard="EVE XML fitting file (*.xml)|*.xml",
+ style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT,
+ defaultFile=defaultFile,
+ )
if saveDialog.ShowModal() == wx.ID_OK:
filePath = saveDialog.GetPath()
@@ -778,13 +792,15 @@ class MainFrame(wx.Frame):
filePath += ".xml"
sFit = Fit.getInstance()
- max = sFit.countAllFits()
-
- self.progressDialog = wx.ProgressDialog("Backup fits",
- "Backing up %d fits to: %s"%(max, filePath),
- maximum=max, parent=self,
- style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME)
+ max_ = sFit.countAllFits()
+ self.progressDialog = wx.ProgressDialog(
+ "Backup fits",
+ "Backing up %d fits to: %s" % (max_, filePath),
+ maximum=max_,
+ parent=self,
+ style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME,
+ )
Port.backupFits(filePath, self.backupCallback)
self.progressDialog.ShowModal()
@@ -793,21 +809,26 @@ class MainFrame(wx.Frame):
sFit = Fit.getInstance()
settings = HTMLExportSettings.getInstance()
- max = sFit.countAllFits()
+ max_ = sFit.countAllFits()
path = settings.getPath()
if not os.path.isdir(os.path.dirname(path)):
- dlg = wx.MessageDialog(self,
- "Invalid Path\n\nThe following path is invalid or does not exist: \n%s\n\nPlease verify path location pyfa's preferences."%path,
- "Error", wx.OK | wx.ICON_ERROR)
+ dlg = wx.MessageDialog(
+ self,
+ "Invalid Path\n\nThe following path is invalid or does not exist: \n%s\n\nPlease verify path location pyfa's preferences." % path,
+ "Error",
+ wx.OK | wx.ICON_ERROR
+ )
if dlg.ShowModal() == wx.ID_OK:
return
- self.progressDialog = wx.ProgressDialog("Backup fits",
- "Generating HTML file at: %s"%path,
- maximum=max, parent=self,
- style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME)
+ self.progressDialog = wx.ProgressDialog(
+ "Backup fits",
+ "Generating HTML file at: %s" % path,
+ maximum=max_, parent=self,
+ style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME
+ )
exportHtml.getInstance().refreshFittingHtml(True, self.backupCallback)
self.progressDialog.ShowModal()
@@ -844,7 +865,7 @@ class MainFrame(wx.Frame):
self._openAfterImport(data)
elif action == -2:
dlg = wx.MessageDialog(self,
- "The following error was generated\n\n%s\n\nBe aware that already processed fits were not saved"%data,
+ "The following error was generated\n\n%s\n\nBe aware that already processed fits were not saved" % data,
"Import Error", wx.OK | wx.ICON_ERROR)
if dlg.ShowModal() == wx.ID_OK:
return
@@ -869,10 +890,12 @@ class MainFrame(wx.Frame):
def importCharacter(self, event):
""" Imports character XML file from EVE API """
- dlg = wx.FileDialog(self, "Open One Or More Character Files",
- wildcard="EVE API XML character files (*.xml)|*.xml|" \
- "All Files (*)|*",
- style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE)
+ dlg = wx.FileDialog(
+ self,
+ "Open One Or More Character Files",
+ wildcard="EVE API XML character files (*.xml)|*.xml|All Files (*)|*",
+ style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE
+ )
if dlg.ShowModal() == wx.ID_OK:
self.waitDialog = wx.BusyInfo("Importing Character...")
@@ -906,4 +929,3 @@ class MainFrame(wx.Frame):
if not wnd:
wnd = self
InspectionTool().Show(wnd, True)
-
diff --git a/gui/mainMenuBar.py b/gui/mainMenuBar.py
index 88cc6de2e..2de7f4b80 100644
--- a/gui/mainMenuBar.py
+++ b/gui/mainMenuBar.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,20 +15,23 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
+
import config
-from gui.bitmapLoader import BitmapLoader
+from service.crest import Crest
+from service.character import Character
import gui.mainFrame
import gui.graphFrame
import gui.globalEvents as GE
-from service.crest import Crest
-from service.character import Character
+from gui.bitmapLoader import BitmapLoader
-if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
+
+if 'wxMac' not in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0)):
from service.crest import CrestModes
+
class MainMenuBar(wx.MenuBar):
def __init__(self):
self.characterEditorId = wx.NewId()
@@ -52,7 +55,7 @@ class MainMenuBar(wx.MenuBar):
self.toggleOverridesId = wx.NewId()
self.importDatabaseDefaultsId = wx.NewId()
- if 'wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0):
+ if 'wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0):
wx.ID_COPY = wx.NewId()
wx.ID_PASTE = wx.NewId()
@@ -81,8 +84,8 @@ class MainMenuBar(wx.MenuBar):
editMenu = wx.Menu()
self.Append(editMenu, "&Edit")
- #editMenu.Append(wx.ID_UNDO)
- #editMenu.Append(wx.ID_REDO)
+ # editMenu.Append(wx.ID_UNDO)
+ # editMenu.Append(wx.ID_REDO)
editMenu.Append(wx.ID_COPY, "To Clipboard\tCTRL+C", "Export a fit to the clipboard")
editMenu.Append(wx.ID_PASTE, "From Clipboard\tCTRL+V", "Import a fit from the clipboard")
@@ -116,11 +119,11 @@ class MainMenuBar(wx.MenuBar):
windowMenu.AppendItem(graphFrameItem)
preferencesShortCut = "CTRL+," if 'wxMac' in wx.PlatformInfo else "CTRL+P"
- preferencesItem = wx.MenuItem(windowMenu, wx.ID_PREFERENCES, "Preferences\t"+preferencesShortCut)
+ preferencesItem = wx.MenuItem(windowMenu, wx.ID_PREFERENCES, "Preferences\t" + preferencesShortCut)
preferencesItem.SetBitmap(BitmapLoader.getBitmap("preferences_small", "gui"))
windowMenu.AppendItem(preferencesItem)
- if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
+ if 'wxMac' not in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0)):
self.sCrest = Crest.getInstance()
# CREST Menu
@@ -155,7 +158,7 @@ class MainMenuBar(wx.MenuBar):
helpMenu.Append(wx.ID_ABOUT)
if config.debug:
- helpMenu.Append( self.mainFrame.widgetInspectMenuID, "Open Widgets Inspect tool", "Open Widgets Inspect tool")
+ helpMenu.Append(self.mainFrame.widgetInspectMenuID, "Open Widgets Inspect tool", "Open Widgets Inspect tool")
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
@@ -175,5 +178,3 @@ class MainMenuBar(wx.MenuBar):
self.Enable(self.revertCharId, char.isDirty)
event.Skip()
-
-
diff --git a/gui/marketBrowser.py b/gui/marketBrowser.py
index a06b89d39..33db5d501 100644
--- a/gui/marketBrowser.py
+++ b/gui/marketBrowser.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,23 +15,24 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
-import gui.display as d
-from gui.cachingImageList import CachingImageList
-from gui.contextMenu import ContextMenu
-import gui.PFSearchBox as SBox
from service.market import Market
from service.attribute import Attribute
-
+import gui.display as d
+import gui.PFSearchBox as SBox
+from gui.cachingImageList import CachingImageList
+from gui.contextMenu import ContextMenu
from gui.bitmapLoader import BitmapLoader
+
ItemSelected, ITEM_SELECTED = wx.lib.newevent.NewEvent()
RECENTLY_USED_MODULES = -2
MAX_RECENTLY_USED_MODULES = 20
+
class MarketBrowser(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
@@ -42,7 +43,7 @@ class MarketBrowser(wx.Panel):
self.search = SearchBox(self)
vbox.Add(self.search, 0, wx.EXPAND)
- self.splitter = wx.SplitterWindow(self, style = wx.SP_LIVE_UPDATE)
+ self.splitter = wx.SplitterWindow(self, style=wx.SP_LIVE_UPDATE)
vbox.Add(self.splitter, 1, wx.EXPAND)
# Grab market service instance and create child objects
@@ -103,16 +104,18 @@ class MarketBrowser(wx.Panel):
def jump(self, item):
self.marketView.jump(item)
+
class SearchBox(SBox.PFSearchBox):
def __init__(self, parent, **kwargs):
SBox.PFSearchBox.__init__(self, parent, **kwargs)
- cancelBitmap = BitmapLoader.getBitmap("fit_delete_small","gui")
- searchBitmap = BitmapLoader.getBitmap("fsearch_small","gui")
+ cancelBitmap = BitmapLoader.getBitmap("fit_delete_small", "gui")
+ searchBitmap = BitmapLoader.getBitmap("fsearch_small", "gui")
self.SetSearchBitmap(searchBitmap)
self.SetCancelBitmap(cancelBitmap)
self.ShowSearchButton()
self.ShowCancelButton()
+
class MarketTree(wx.TreeCtrl):
def __init__(self, parent, marketBrowser):
wx.TreeCtrl.__init__(self, parent, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT)
@@ -136,7 +139,7 @@ class MarketTree(wx.TreeCtrl):
# Add recently used modules node
rumIconId = self.addImage("market_small", "gui")
- self.AppendItem(self.root, "Recently Used Modules", rumIconId, data = wx.TreeItemData(RECENTLY_USED_MODULES))
+ self.AppendItem(self.root, "Recently Used Modules", rumIconId, data=wx.TreeItemData(RECENTLY_USED_MODULES))
# Bind our lookup method to when the tree gets expanded
self.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup)
@@ -185,10 +188,10 @@ class MarketTree(wx.TreeCtrl):
for id in sMkt.ROOT_MARKET_GROUPS:
if id in jumpList:
- jumpList = jumpList[:jumpList.index(id)+1]
+ jumpList = jumpList[:jumpList.index(id) + 1]
item = self.root
- for i in range(len(jumpList) -1, -1, -1):
+ for i in range(len(jumpList) - 1, -1, -1):
target = jumpList[i]
child, cookie = self.GetFirstChild(item)
while self.GetItemPyData(child) != target:
@@ -200,6 +203,7 @@ class MarketTree(wx.TreeCtrl):
self.SelectItem(item)
self.marketBrowser.itemView.selectionMade(forcedMetaSelect=metaId)
+
class ItemView(d.Display):
DEFAULT_COLS = ["Base Icon",
"Base Name",
@@ -242,12 +246,11 @@ class ItemView(d.Display):
if row != -1:
data = wx.PyTextDataObject()
- data.SetText("market:"+str(self.active[row].ID))
+ data.SetText("market:" + str(self.active[row].ID))
dropSource = wx.DropSource(self)
dropSource.SetData(data)
- res = dropSource.DoDragDrop()
-
+ dropSource.DoDragDrop()
def itemActivated(self, event=None):
# Check if something is selected, if so, spawn the menu for it
@@ -391,12 +394,12 @@ class ItemView(d.Display):
mktgrpid = sMkt.getMarketGroupByItem(item).ID
except AttributeError:
mktgrpid = None
- print "unable to find market group for", item.name
+ print("unable to find market group for", item.name)
parentname = sMkt.getParentItemByItem(item).name
# Get position of market group
metagrpid = sMkt.getMetaGroupIdByItem(item)
metatab = self.metaMap.get(metagrpid)
- metalvl = self.metalvls.get(item.ID, 0)
+ metalvl = self.metalvls.get(item.ID, 0)
return (catname, mktgrpid, parentname, metatab, metalvl, item.name)
def contextMenu(self, event):
@@ -442,7 +445,7 @@ class ItemView(d.Display):
for i, item in enumerate(items[:9]):
# set shortcut info for first 9 modules
- item.marketShortcut = i+1
+ item.marketShortcut = i + 1
d.Display.refresh(self, items)
diff --git a/gui/multiSwitch.py b/gui/multiSwitch.py
index 91532785d..766524a61 100644
--- a/gui/multiSwitch.py
+++ b/gui/multiSwitch.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import gui.chromeTabs
import gui.builtinViews.emptyView
@@ -24,7 +24,7 @@ import gui.builtinViews.emptyView
class MultiSwitch(gui.chromeTabs.PFNotebook):
def __init__(self, parent):
gui.chromeTabs.PFNotebook.__init__(self, parent)
- #self.AddPage() # now handled by mainFrame
+ # self.AddPage() # now handled by mainFrame
self.handlers = handlers = []
for type in TabSpawner.tabTypes:
handlers.append(type(self))
diff --git a/gui/notesView.py b/gui/notesView.py
index c8f648440..f607efb0b 100644
--- a/gui/notesView.py
+++ b/gui/notesView.py
@@ -1,9 +1,8 @@
import wx
-
+from service.fit import Fit
import gui.globalEvents as GE
import gui.mainFrame
-from service.fit import Fit
class NotesView(wx.Panel):
@@ -36,7 +35,7 @@ class NotesView(wx.Panel):
def onText(self, event):
# delay the save so we're not writing to sqlite on every keystroke
- self.saveTimer.Stop() # cancel the existing timer
+ self.saveTimer.Stop() # cancel the existing timer
self.saveTimer.Start(1000, True)
def delayedSave(self, event):
diff --git a/gui/patternEditor.py b/gui/patternEditor.py
index cbfb11207..8005d19aa 100644
--- a/gui/patternEditor.py
+++ b/gui/patternEditor.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,18 +15,15 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.bitmapLoader import BitmapLoader
from wx.lib.intctrl import IntCtrl
from gui.utils.clipboard import toClipboard, fromClipboard
-from service.damagePattern import ImportError
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
from service.damagePattern import DamagePattern, ImportError
-###########################################################################
-## Class DmgPatternEditorDlg
-###########################################################################
+
class DmgPatternTextValidor(BaseValidator):
def __init__(self):
@@ -47,7 +44,7 @@ class DmgPatternTextValidor(BaseValidator):
raise ValueError("Damage Profile name already in use, please choose another.")
return True
- except ValueError, e:
+ except ValueError as e:
wx.MessageBox(u"{}".format(e), "Error")
textCtrl.SetFocus()
return False
@@ -81,11 +78,12 @@ class DmgPatternEntityEditor(EntityEditor):
sDP = DamagePattern.getInstance()
sDP.deletePattern(entity)
+
class DmgPatternEditorDlg(wx.Dialog):
DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive")
def __init__(self, parent):
- wx.Dialog.__init__(self, parent, id = wx.ID_ANY, title = u"Damage Pattern Editor", size = wx.Size( 400,240 ))
+ wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"Damage Pattern Editor", size=wx.Size(400, 240))
self.block = False
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
@@ -111,11 +109,11 @@ class DmgPatternEditorDlg(wx.Dialog):
dmgeditSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
width = -1
- defSize = wx.Size(width,-1)
+ defSize = wx.Size(width, -1)
- for i, type in enumerate(self.DAMAGE_TYPES):
- bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big"%type, "gui"))
- if i%2:
+ for i, type_ in enumerate(self.DAMAGE_TYPES):
+ bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big" % type_, "gui"))
+ if i % 2:
style = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT | wx.LEFT
border = 20
else:
@@ -123,13 +121,13 @@ class DmgPatternEditorDlg(wx.Dialog):
border = 5
# set text edit
- setattr(self, "%sEdit"%type, IntCtrl(self, wx.ID_ANY, 0, wx.DefaultPosition, defSize))
- setattr(self, "%sPerc"%type, wx.StaticText(self, wx.ID_ANY, u"0%"))
- editObj = getattr(self, "%sEdit"%type)
+ setattr(self, "%sEdit" % type_, IntCtrl(self, wx.ID_ANY, 0, wx.DefaultPosition, defSize))
+ setattr(self, "%sPerc" % type_, wx.StaticText(self, wx.ID_ANY, u"0%"))
+ editObj = getattr(self, "%sEdit" % type_)
dmgeditSizer.Add(bmp, 0, style, border)
dmgeditSizer.Add(editObj, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
- dmgeditSizer.Add(getattr(self, "%sPerc"%type), 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)
+ dmgeditSizer.Add(getattr(self, "%sPerc" % type_), 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)
editObj.Bind(wx.EVT_TEXT, self.ValuesUpdated)
editObj.SetLimited(True)
@@ -147,7 +145,7 @@ class DmgPatternEditorDlg(wx.Dialog):
self.stNotice.Wrap(-1)
perSizer.Add(self.stNotice, 0, wx.BOTTOM | wx.TOP | wx.LEFT, 5)
- footerSizer.Add(perSizer, 1, wx.ALIGN_CENTER_VERTICAL, 5)
+ footerSizer.Add(perSizer, 1, wx.ALIGN_CENTER_VERTICAL, 5)
self.totSizer = wx.BoxSizer(wx.VERTICAL)
@@ -156,8 +154,8 @@ class DmgPatternEditorDlg(wx.Dialog):
mainSizer.Add(contentSizer, 1, wx.EXPAND, 0)
if "wxGTK" in wx.PlatformInfo:
- self.closeBtn = wx.Button( self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.closeBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5 )
+ self.closeBtn = wx.Button(self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.closeBtn, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.closeBtn.Bind(wx.EVT_BUTTON, self.closeEvent)
self.SetSizer(mainSizer)
@@ -169,13 +167,13 @@ class DmgPatternEditorDlg(wx.Dialog):
bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON)
btn = wx.BitmapButton(self, wx.ID_ANY, bitmap)
- btn.SetMinSize( btn.GetSize() )
- btn.SetMaxSize( btn.GetSize() )
+ btn.SetMinSize(btn.GetSize())
+ btn.SetMaxSize(btn.GetSize())
btn.Layout()
setattr(self, name, btn)
btn.Enable(True)
- btn.SetToolTipString("%s patterns %s clipboard" % (name, direction) )
+ btn.SetToolTipString("%s patterns %s clipboard" % (name, direction))
footerSizer.Add(btn, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_RIGHT)
btn.Bind(wx.EVT_BUTTON, getattr(self, "{}Patterns".format(name.lower())))
@@ -196,12 +194,12 @@ class DmgPatternEditorDlg(wx.Dialog):
return
p = self.entityEditor.getActiveEntity()
- total = sum(map(lambda attr: getattr(self, "%sEdit"%attr).GetValue(), self.DAMAGE_TYPES))
- for type in self.DAMAGE_TYPES:
- editObj = getattr(self, "%sEdit"%type)
- percObj = getattr(self, "%sPerc"%type)
- setattr(p, "%sAmount"%type, editObj.GetValue())
- percObj.SetLabel("%.1f%%"%(float(editObj.GetValue())*100/total if total > 0 else 0))
+ total = sum(map(lambda attr: getattr(self, "%sEdit" % attr).GetValue(), self.DAMAGE_TYPES))
+ for type_ in self.DAMAGE_TYPES:
+ editObj = getattr(self, "%sEdit" % type_)
+ percObj = getattr(self, "%sPerc" % type_)
+ setattr(p, "%sAmount" % type_, editObj.GetValue())
+ percObj.SetLabel("%.1f%%" % (float(editObj.GetValue()) * 100 / total if total > 0 else 0))
self.totSizer.Layout()
@@ -211,15 +209,15 @@ class DmgPatternEditorDlg(wx.Dialog):
DamagePattern.getInstance().saveChanges(p)
def restrict(self):
- for type in self.DAMAGE_TYPES:
- editObj = getattr(self, "%sEdit"%type)
+ for type_ in self.DAMAGE_TYPES:
+ editObj = getattr(self, "%sEdit" % type_)
editObj.Enable(False)
self.entityEditor.btnRename.Enable(False)
self.entityEditor.btnDelete.Enable(False)
def unrestrict(self):
- for type in self.DAMAGE_TYPES:
- editObj = getattr(self, "%sEdit"%type)
+ for type_ in self.DAMAGE_TYPES:
+ editObj = getattr(self, "%sEdit" % type_)
editObj.Enable()
self.entityEditor.btnRename.Enable()
self.entityEditor.btnDelete.Enable()
@@ -255,9 +253,9 @@ class DmgPatternEditorDlg(wx.Dialog):
try:
sDP.importPatterns(text)
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
- except ImportError, e:
+ except ImportError as e:
self.stNotice.SetLabel(str(e))
- except Exception, e:
+ except Exception:
self.stNotice.SetLabel("Could not import from clipboard: unknown errors")
finally:
self.entityEditor.refreshEntityList()
@@ -266,5 +264,5 @@ class DmgPatternEditorDlg(wx.Dialog):
def exportPatterns(self, event):
sDP = DamagePattern.getInstance()
- toClipboard( sDP.exportPatterns() )
+ toClipboard(sDP.exportPatterns())
self.stNotice.SetLabel("Patterns exported to clipboard")
diff --git a/gui/preferenceDialog.py b/gui/preferenceDialog.py
index ada936114..1d1146c85 100644
--- a/gui/preferenceDialog.py
+++ b/gui/preferenceDialog.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,14 +15,14 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.preferenceView import PreferenceView
from gui.bitmapLoader import BitmapLoader
-class PreferenceDialog(wx.Dialog):
+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")
@@ -33,22 +33,22 @@ class PreferenceDialog(wx.Dialog):
self.listbook = wx.Listbook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LB_DEFAULT)
self.listview = self.listbook.GetListView()
- #self.listview.SetMinSize((500, -1))
- #self.listview.SetSize((500, -1))
+ # self.listview.SetMinSize((500, -1))
+ # self.listview.SetSize((500, -1))
- self.imageList = wx.ImageList(32,32)
+ self.imageList = wx.ImageList(32, 32)
self.listbook.SetImageList(self.imageList)
- mainSizer.Add(self.listbook, 1, wx.EXPAND | wx.TOP|wx.BOTTOM|wx.LEFT, 5)
+ mainSizer.Add(self.listbook, 1, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5)
- self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- mainSizer.Add( self.m_staticline2, 0, wx.EXPAND, 5 )
+ self.m_staticline2 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL)
+ mainSizer.Add(self.m_staticline2, 0, wx.EXPAND, 5)
- btnSizer = wx.BoxSizer( wx.HORIZONTAL )
- btnSizer.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 )
- self.btnOK = wx.Button( self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0 )
- btnSizer.Add( self.btnOK, 0, wx.ALL, 5 )
- mainSizer.Add(btnSizer,0 , wx.EXPAND, 5)
+ btnSizer = wx.BoxSizer(wx.HORIZONTAL)
+ btnSizer.AddSpacer((0, 0), 1, wx.EXPAND, 5)
+ self.btnOK = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0)
+ btnSizer.Add(self.btnOK, 0, wx.ALL, 5)
+ mainSizer.Add(btnSizer, 0, wx.EXPAND, 5)
self.SetSizer(mainSizer)
self.Centre(wx.BOTH)
@@ -61,12 +61,12 @@ class PreferenceDialog(wx.Dialog):
else:
imgID = -1
prefView.populatePanel(page)
- self.listbook.AddPage(page, prefView.title, imageId = imgID)
+ self.listbook.AddPage(page, prefView.title, imageId=imgID)
# Set the height based on a condition. Can all the panels fit in the current height?
# If not, use the .GetBestVirtualSize() to ensure that all content is available.
minHeight = 360
- bestFit = self.GetBestVirtualSize()
+ bestFit = self.GetBestVirtualSize()
if minHeight > bestFit[1]:
self.SetSizeWH(450, minHeight)
else:
diff --git a/gui/preferenceView.py b/gui/preferenceView.py
index bf1ba76ed..9dd58c9e9 100644
--- a/gui/preferenceView.py
+++ b/gui/preferenceView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,14 +15,13 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
+
class PreferenceView(object):
views = []
- def __init__(self):
- pass
@classmethod
def register(cls):
@@ -37,5 +36,5 @@ class PreferenceView(object):
def getImage(self):
return wx.NullBitmap
-from gui.builtinPreferenceViews import *
+from gui.builtinPreferenceViews import * # noqa
diff --git a/gui/projectedView.py b/gui/projectedView.py
index 1e753bc77..8a3135121 100644
--- a/gui/projectedView.py
+++ b/gui/projectedView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
import gui.display as d
@@ -25,6 +25,7 @@ from gui.builtinViewColumns.state import State
from gui.contextMenu import ContextMenu
import eos.types
from service.fit import Fit
+from service.market import Market
class DummyItem:
@@ -32,23 +33,26 @@ class DummyItem:
self.name = txt
self.icon = None
+
class DummyEntry:
def __init__(self, txt):
self.item = DummyItem(txt)
-class ProjectedViewDrop(wx.PyDropTarget):
- def __init__(self, dropFn):
- wx.PyDropTarget.__init__(self)
- self.dropFn = dropFn
- # this is really transferring an EVE itemID
- self.dropData = wx.PyTextDataObject()
- self.SetDataObject(self.dropData)
- def OnData(self, x, y, t):
- if self.GetData():
- data = self.dropData.GetText().split(':')
- self.dropFn(x, y, data)
- return t
+class ProjectedViewDrop(wx.PyDropTarget):
+ def __init__(self, dropFn):
+ wx.PyDropTarget.__init__(self)
+ self.dropFn = dropFn
+ # this is really transferring an EVE itemID
+ self.dropData = wx.PyTextDataObject()
+ self.SetDataObject(self.dropData)
+
+ def OnData(self, x, y, t):
+ if self.GetData():
+ data = self.dropData.GetText().split(':')
+ self.dropFn(x, y, data)
+ return t
+
class ProjectedView(d.Display):
DEFAULT_COLS = ["State",
@@ -58,7 +62,7 @@ class ProjectedView(d.Display):
"Ammo"]
def __init__(self, parent):
- d.Display.__init__(self, parent, style = wx.LC_SINGLE_SEL | wx.BORDER_NONE)
+ d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL | wx.BORDER_NONE)
self.lastFitId = None
@@ -70,7 +74,7 @@ class ProjectedView(d.Display):
self.droneView = gui.droneView.DroneView
- if "__WXGTK__" in wx.PlatformInfo:
+ if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
@@ -96,7 +100,7 @@ class ProjectedView(d.Display):
sFit.project(fitID, int(data[1]))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
- def kbEvent(self,event):
+ def kbEvent(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
fitID = self.mainFrame.getActiveFit()
@@ -107,7 +111,7 @@ class ProjectedView(d.Display):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
def handleDrag(self, type, fitID):
- #Those are drags coming from pyfa sources, NOT builtin wx drags
+ # Those are drags coming from pyfa sources, NOT builtin wx drags
if type == "fit":
activeFit = self.mainFrame.getActiveFit()
if activeFit:
@@ -120,14 +124,14 @@ class ProjectedView(d.Display):
row = event.GetIndex()
if row != -1 and isinstance(self.get(row), es_Drone):
data = wx.PyTextDataObject()
- data.SetText("projected:"+str(self.GetItemData(row)))
+ data.SetText("projected:" + str(self.GetItemData(row)))
dropSource = wx.DropSource(self)
dropSource.SetData(data)
dropSource.DoDragDrop()
def mergeDrones(self, x, y, itemID):
- srcRow = self.FindItemData(-1,itemID)
+ srcRow = self.FindItemData(-1, itemID)
dstRow, _ = self.HitTest((x, y))
if srcRow != -1 and dstRow != -1:
self._merge(srcRow, dstRow)
@@ -140,7 +144,6 @@ class ProjectedView(d.Display):
if sFit.mergeDrones(fitID, self.get(src), dstDrone, True):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
-
def moduleSort(self, module):
return module.item.name
@@ -164,7 +167,7 @@ class ProjectedView(d.Display):
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
- #Clear list and get out if current fitId is None
+ # Clear list and get out if current fitId is None
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
@@ -245,7 +248,8 @@ class ProjectedView(d.Display):
menu = None
if sel != -1:
item = self.get(sel)
- if item is None: return
+ if item is None:
+ return
sMkt = Market.getInstance()
if isinstance(item, es_Drone):
srcContext = "projectedDrone"
@@ -269,7 +273,7 @@ class ProjectedView(d.Display):
else:
fitSrcContext = "projectedFit"
fitItemContext = item.name
- context = ((fitSrcContext,fitItemContext),)
+ context = ((fitSrcContext, fitItemContext),)
context = context + (("projected",),)
menu = ContextMenu.getMenu((item,), *context)
elif sel == -1:
diff --git a/gui/propertyEditor.py b/gui/propertyEditor.py
index 018edb579..dd257302d 100644
--- a/gui/propertyEditor.py
+++ b/gui/propertyEditor.py
@@ -1,3 +1,6 @@
+import csv
+import logging
+
import wx
try:
@@ -8,25 +11,21 @@ except:
else:
raise
-import gui.PFSearchBox as SBox
-from gui.marketBrowser import SearchBox
+import eos.db
+from service.market import Market
import gui.display as d
import gui.globalEvents as GE
+import gui.PFSearchBox as SBox
+from gui.marketBrowser import SearchBox
from gui.bitmapLoader import BitmapLoader
-import csv
-import eos.db
-
-import logging
-
-from service.market import Market
logger = logging.getLogger(__name__)
-class AttributeEditor( wx.Frame ):
- def __init__( self, parent ):
+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), style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT|wx.TAB_TRAVERSAL)
+ size=wx.Size(650, 600), style=wx.DEFAULT_FRAME_STYLE | wx.FRAME_FLOAT_ON_PARENT | wx.TAB_TRAVERSAL)
i = wx.IconFromBitmap(BitmapLoader.getBitmap("fit_rename_small", "gui"))
self.SetIcon(i)
@@ -46,7 +45,6 @@ class AttributeEditor( wx.Frame ):
self.Bind(wx.EVT_MENU, self.OnExport, fileExport)
self.Bind(wx.EVT_MENU, self.OnClear, fileClear)
-
i = wx.IconFromBitmap(BitmapLoader.getBitmap("fit_rename_small", "gui"))
self.SetIcon(i)
@@ -68,10 +66,10 @@ class AttributeEditor( wx.Frame ):
mainSizer.Add(leftPanel, 1, wx.ALL | wx.EXPAND, 5)
rightSizer = wx.BoxSizer(wx.VERTICAL)
- self.btnRemoveOverrides = wx.Button( panel, wx.ID_ANY, u"Remove Overides for Item", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.btnRemoveOverrides = wx.Button(panel, wx.ID_ANY, u"Remove Overides for Item", wx.DefaultPosition, wx.DefaultSize, 0)
self.pg = AttributeGrid(panel)
- rightSizer.Add(self.pg, 1, wx.ALL|wx.EXPAND, 5)
- rightSizer.Add(self.btnRemoveOverrides, 0, wx.ALL | wx.EXPAND, 5 )
+ rightSizer.Add(self.pg, 1, wx.ALL | wx.EXPAND, 5)
+ rightSizer.Add(self.btnRemoveOverrides, 0, wx.ALL | wx.EXPAND, 5)
self.btnRemoveOverrides.Bind(wx.EVT_BUTTON, self.pg.removeOverrides)
self.btnRemoveOverrides.Enable(False)
@@ -95,8 +93,8 @@ class AttributeEditor( wx.Frame ):
def OnImport(self, event):
dlg = wx.FileDialog(self, "Import pyfa override file",
- wildcard = "pyfa override file (*.csv)|*.csv",
- style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
+ wildcard="pyfa override file (*.csv)|*.csv",
+ style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
if (dlg.ShowModal() == wx.ID_OK):
path = dlg.GetPath()
with open(path, 'rb') as csvfile:
@@ -114,8 +112,8 @@ class AttributeEditor( wx.Frame ):
defaultFile = "pyfa_overrides.csv"
dlg = wx.FileDialog(self, "Save Overrides As...",
- wildcard = "pyfa overrides (*.csv)|*.csv",
- style = wx.FD_SAVE,
+ wildcard="pyfa overrides (*.csv)|*.csv",
+ style=wx.FD_SAVE,
defaultFile=defaultFile)
if dlg.ShowModal() == wx.ID_OK:
@@ -127,9 +125,12 @@ class AttributeEditor( wx.Frame ):
writer.writerow([item.ID, override.attrID, override.value])
def OnClear(self, event):
- dlg = wx.MessageDialog(self,
- "Are you sure you want to delete all overrides?",
- "Confirm Delete", wx.YES | wx.NO | wx.ICON_EXCLAMATION)
+ dlg = wx.MessageDialog(
+ self,
+ "Are you sure you want to delete all overrides?",
+ "Confirm Delete",
+ wx.YES | wx.NO | wx.ICON_EXCLAMATION
+ )
if dlg.ShowModal() == wx.ID_YES:
sMkt = Market.getInstance()
@@ -144,6 +145,7 @@ class AttributeEditor( wx.Frame ):
self.itemView.updateItems(True)
self.pg.Clear()
+
# This is literally a stripped down version of the market.
class ItemView(d.Display):
DEFAULT_COLS = ["Base Icon",
@@ -199,9 +201,8 @@ class ItemView(d.Display):
class AttributeGrid(wxpg.PropertyGrid):
-
def __init__(self, parent):
- wxpg.PropertyGrid.__init__(self, parent, style=wxpg.PG_HIDE_MARGIN|wxpg.PG_HIDE_CATEGORIES|wxpg.PG_BOLD_MODIFIED|wxpg.PG_TOOLTIPS)
+ wxpg.PropertyGrid.__init__(self, parent, style=wxpg.PG_HIDE_MARGIN | wxpg.PG_HIDE_CATEGORIES | wxpg.PG_BOLD_MODIFIED | wxpg.PG_TOOLTIPS)
self.SetExtraStyle(wxpg.PG_EX_HELP_AS_TOOLTIPS)
self.item = None
@@ -210,9 +211,9 @@ class AttributeGrid(wxpg.PropertyGrid):
self.btn = parent.Parent.btnRemoveOverrides
- self.Bind( wxpg.EVT_PG_CHANGED, self.OnPropGridChange )
- self.Bind( wxpg.EVT_PG_SELECTED, self.OnPropGridSelect )
- self.Bind( wxpg.EVT_PG_RIGHT_CLICK, self.OnPropGridRightClick )
+ self.Bind(wxpg.EVT_PG_CHANGED, self.OnPropGridChange)
+ self.Bind(wxpg.EVT_PG_SELECTED, self.OnPropGridSelect)
+ self.Bind(wxpg.EVT_PG_RIGHT_CLICK, self.OnPropGridRightClick)
self.itemView.Bind(wx.EVT_LIST_ITEM_SELECTED, self.itemActivated)
self.itemView.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemActivated)
@@ -233,14 +234,14 @@ class AttributeGrid(wxpg.PropertyGrid):
prop = wxpg.FloatProperty(key, value=default)
prop.SetClientData(item.attributes[key]) # set this so that we may access it later
- prop.SetHelpString("%s\n%s"%(item.attributes[key].displayName or key, "Default Value: %0.3f"%default))
+ prop.SetHelpString("%s\n%s" % (item.attributes[key].displayName or key, "Default Value: %0.3f" % default))
self.Append(prop)
def removeOverrides(self, event):
if self.item is None:
return
- for _, x in self.item.overrides.items():
+ for x in self.item.overrides.values():
self.item.deleteOverride(x.attr)
self.itemView.updateItems(True)
self.ClearModifiedStatus()
diff --git a/gui/pyfatogglepanel.py b/gui/pyfatogglepanel.py
index 765a07727..d34985115 100644
--- a/gui/pyfatogglepanel.py
+++ b/gui/pyfatogglepanel.py
@@ -1,65 +1,54 @@
-# -*- coding: utf-8 -*-
-
###########################################################################
-## pyfatogllepanel.py
-##
-## Author: Darriele - HomeWorld
-##
-## Project home: https://github.com/pyfa-org/Pyfa - pyfa project
-## Some portions of code are based on
-## AGW:pycollapsiblepane generic implementation of wx.CollapsiblePane
-## AGW:pycollapsiblepane credits ( from the original source file used ):
-## Andrea Gavana, @ 09 Aug 2007
-## Latest Revision: 12 Apr 2010, 12.00 GMT
-##
-## Module description:
-## TogglePanel class is a wx.collipsablepane like implementation that uses
-## some optimization from awg::pycollipsablepane to provide certain
-## features tailored for PYFA needs.
-##
-## This module is part of PYFA (PYthon Fitting Assitant) and it shares the same
-## licence ( read PYFA licence notice: gpl.txt )
-##
-## Notes: leave the commented code as it is, those line will be removed someday
+# pyfatogllepanel.py
+#
+# Author: Darriele - HomeWorld
+#
+# Project home: https://github.com/pyfa-org/Pyfa - pyfa project
+# Some portions of code are based on
+# AGW:pycollapsiblepane generic implementation of wx.CollapsiblePane
+# AGW:pycollapsiblepane credits ( from the original source file used ):
+# Andrea Gavana, @ 09 Aug 2007
+# Latest Revision: 12 Apr 2010, 12.00 GMT
+#
+# Module description:
+# TogglePanel class is a wx.collipsablepane like implementation that uses
+# some optimization from awg::pycollipsablepane to provide certain
+# features tailored for PYFA needs.
+#
+# This module is part of PYFA (PYthon Fitting Assitant) and it shares the same
+# licence ( read PYFA licence notice: gpl.txt )
+#
+# Notes: leave the commented code as it is, those line will be removed someday
###########################################################################
import wx
from gui.bitmapLoader import BitmapLoader
-###########################################################################
-## Class TogglePanel
-###########################################################################
-class TogglePanel ( wx.Panel ):
-
- def __init__( self, parent , forceLayout = -1):
- wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.TAB_TRAVERSAL )
+class TogglePanel(wx.Panel):
+ def __init__(self, parent, forceLayout=-1):
+ wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL)
self._toggle = 1
self.parent = parent
self.forceLayout = forceLayout
self.bkColour = self.GetBackgroundColour()
- # Create the main sizer of this panel
-
- self.mainSizer = wx.BoxSizer( wx.VERTICAL )
- self.SetSizer( self.mainSizer )
- parentSize = parent.GetMinSize()
-
- # Create the header panel
+ # Create the main sizer of this panel
+ self.mainSizer = wx.BoxSizer(wx.VERTICAL)
+ self.SetSizer(self.mainSizer)
+ # parentSize = parent.GetMinSize()
+ # Create the header panel
self.headerPanel = wx.Panel(self)
+ self.mainSizer.Add(self.headerPanel, 0, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.RIGHT, 1)
- self.mainSizer.Add(self.headerPanel,0,wx.EXPAND | wx.TOP|wx.BOTTOM|wx.RIGHT, 1)
+ # Load expanded/collapsed bitmaps from the icons folder
+ self.bmpExpanded = BitmapLoader.getBitmap("down-arrow2", "gui")
+ self.bmpCollapsed = BitmapLoader.getBitmap("up-arrow2", "gui")
- # Load expanded/collapsed bitmaps from the icons folder
-
- self.bmpExpanded = BitmapLoader.getBitmap("down-arrow2","gui")
- self.bmpCollapsed = BitmapLoader.getBitmap("up-arrow2","gui")
-
- # Make the bitmaps have the same color as window text
-
- sysTextColour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT )
+ # Make the bitmaps have the same color as window text
+ sysTextColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)
img = self.bmpExpanded.ConvertToImage()
img.Replace(0, 0, 0, sysTextColour[0], sysTextColour[1], sysTextColour[2])
@@ -69,55 +58,53 @@ class TogglePanel ( wx.Panel ):
img.Replace(0, 0, 0, sysTextColour[0], sysTextColour[1], sysTextColour[2])
self.bmpCollapsed = wx.BitmapFromImage(img)
- self.headerBmp = wx.StaticBitmap(self.headerPanel )
- self.headerBmp.SetBitmap( self.bmpExpanded)
+ self.headerBmp = wx.StaticBitmap(self.headerPanel)
+ self.headerBmp.SetBitmap(self.bmpExpanded)
- # Create the header sizer and add static bitmap and static text controls to it
+ # Create the header sizer and add static bitmap and static text controls to it
- headerSizer = wx.BoxSizer( wx.HORIZONTAL )
- self.headerPanel.SetSizer( headerSizer)
+ headerSizer = wx.BoxSizer(wx.HORIZONTAL)
+ self.headerPanel.SetSizer(headerSizer)
- hbmpSizer = wx.BoxSizer( wx.HORIZONTAL )
- hlblSizer = wx.BoxSizer( wx.HORIZONTAL )
- self.hcntSizer = wx.BoxSizer( wx.HORIZONTAL)
+ hbmpSizer = wx.BoxSizer(wx.HORIZONTAL)
+ hlblSizer = wx.BoxSizer(wx.HORIZONTAL)
+ self.hcntSizer = wx.BoxSizer(wx.HORIZONTAL)
- hbmpSizer.Add( self.headerBmp, 0,0, 5 )
+ hbmpSizer.Add(self.headerBmp, 0, 0, 5)
- self.headerLabel = wx.StaticText( self.headerPanel, wx.ID_ANY, u"PYFA", wx.DefaultPosition, wx.DefaultSize, 0 )
- hlblSizer.Add( self.headerLabel, 0, wx.EXPAND , 5 )
+ self.headerLabel = wx.StaticText(self.headerPanel, wx.ID_ANY, u"PYFA", wx.DefaultPosition, wx.DefaultSize, 0)
+ hlblSizer.Add(self.headerLabel, 0, wx.EXPAND, 5)
- headerSizer.Add( hbmpSizer, 0, wx.RIGHT, 5 )
- headerSizer.Add( hlblSizer, 0, wx.RIGHT, 5 )
- headerSizer.Add( self.hcntSizer, 0, wx.RIGHT, 5)
+ headerSizer.Add(hbmpSizer, 0, wx.RIGHT, 5)
+ headerSizer.Add(hlblSizer, 0, wx.RIGHT, 5)
+ headerSizer.Add(self.hcntSizer, 0, wx.RIGHT, 5)
- # Set the static text font weight to BOLD
+ # Set the static text font weight to BOLD
- headerFont=parent.GetFont()
+ headerFont = parent.GetFont()
headerFont.SetWeight(wx.BOLD)
self.headerLabel.SetFont(headerFont)
- # Create the content panel and its main sizer
+ # Create the content panel and its main sizer
- self.contentSizer = wx.BoxSizer( wx.VERTICAL )
+ self.contentSizer = wx.BoxSizer(wx.VERTICAL)
self.contentPanel = wx.Panel(self)
self.contentPanel.SetSizer(self.contentSizer)
- self.mainSizer.Add( self.contentPanel, 0, wx.EXPAND | wx.RIGHT | wx.LEFT , 5)
-
+ self.mainSizer.Add(self.contentPanel, 0, wx.EXPAND | wx.RIGHT | wx.LEFT, 5)
self.Layout()
- # Connect Events
+ # Connect Events
+ self.headerLabel.Bind(wx.EVT_LEFT_UP, self.toggleContent)
+ self.headerBmp.Bind(wx.EVT_LEFT_UP, self.toggleContent)
+ self.headerPanel.Bind(wx.EVT_LEFT_UP, self.toggleContent)
- self.headerLabel.Bind( wx.EVT_LEFT_UP, self.toggleContent )
- self.headerBmp.Bind( wx.EVT_LEFT_UP, self.toggleContent )
- self.headerPanel.Bind( wx.EVT_LEFT_UP, self.toggleContent )
-
- def __del__( self ):
+ def __del__(self):
pass
def AddToggleItem(self, hitem):
- hitem.Bind( wx.EVT_LEFT_UP, self.toggleContent )
+ hitem.Bind(wx.EVT_LEFT_UP, self.toggleContent)
def GetHeaderContentSizer(self):
return self.hcntSizer
@@ -126,7 +113,7 @@ class TogglePanel ( wx.Panel ):
return self.headerPanel
def InsertItemInHeader(self, item):
- self.hcntSizer.Add(item,0,0,0)
+ self.hcntSizer.Add(item, 0, 0, 0)
self.Layout()
def AddSizer(self, sizer):
diff --git a/gui/pygauge.py b/gui/pygauge.py
index b63f4fea8..0946e8727 100644
--- a/gui/pygauge.py
+++ b/gui/pygauge.py
@@ -13,7 +13,6 @@ It uses the easeOutQuad equation from caurina.transitions.Tweener to do the anim
import wx
import copy
-import math
from gui.utils import colorUtils
import gui.utils.drawUtils as drawUtils
@@ -22,6 +21,7 @@ import gui.utils.fonts as fonts
from service import fit
+
class PyGauge(wx.PyWindow):
"""
This class provides a visual alternative for `wx.Gauge`. It currently
@@ -29,7 +29,7 @@ class PyGauge(wx.PyWindow):
"""
def __init__(self, parent, id=wx.ID_ANY, range=100, pos=wx.DefaultPosition,
- size=(-1,30), style=0):
+ size=(-1, 30), style=0):
"""
Default class constructor.
@@ -46,8 +46,8 @@ class PyGauge(wx.PyWindow):
self._size = size
self._border_colour = wx.BLACK
- self._barColour = self._barColourSorted = [wx.Colour(212,228,255)]
- self._barGradient = self._barGradientSorted = None
+ self._barColour = self._barColourSorted = [wx.Colour(212, 228, 255)]
+ self._barGradient = self._barGradientSorted = None
self._border_padding = 0
self._range = range
@@ -67,10 +67,10 @@ class PyGauge(wx.PyWindow):
self._animDirection = 0
self.animEffect = animEffects.OUT_QUAD
- self.transitionsColors = [( wx.Colour(191, 191, 191, 255) , wx.Colour(96, 191, 0, 255) ),
- ( wx.Colour(191, 167, 96, 255) , wx.Colour(255, 191, 0, 255) ),
- ( wx.Colour(255, 191, 0, 255) , wx.Colour(255, 128, 0, 255) ),
- ( wx.Colour(255, 128, 0, 255) , wx.Colour(255, 0, 0, 255) )]
+ self.transitionsColors = [(wx.Colour(191, 191, 191, 255), wx.Colour(96, 191, 0, 255)),
+ (wx.Colour(191, 167, 96, 255), wx.Colour(255, 191, 0, 255)),
+ (wx.Colour(255, 191, 0, 255), wx.Colour(255, 128, 0, 255)),
+ (wx.Colour(255, 128, 0, 255), wx.Colour(255, 0, 0, 255))]
self.gradientEffect = -35
self._percentage = 0
@@ -79,8 +79,8 @@ class PyGauge(wx.PyWindow):
self.font = wx.Font(fonts.NORMAL, wx.SWISS, wx.NORMAL, wx.NORMAL, False)
- self.SetBarGradient((wx.Colour(119,119,119),wx.Colour(153,153,153)))
- self.SetBackgroundColour(wx.Colour(51,51,51))
+ self.SetBarGradient((wx.Colour(119, 119, 119), wx.Colour(153, 153, 153)))
+ self.SetBackgroundColour(wx.Colour(51, 51, 51))
self._tooltip = wx.ToolTip("")
self.SetToolTip(self._tooltip)
self._tooltip.SetTip("0.00/100.00")
@@ -107,7 +107,6 @@ class PyGauge(wx.PyWindow):
return wx.Size(self._size[0], self._size[1])
-
def GetBorderColour(self):
return self._border_colour
@@ -121,7 +120,7 @@ class PyGauge(wx.PyWindow):
return self._barColour[0]
def SetBarColour(self, colour):
- if type(colour) != type([]):
+ if not isinstance(colour, list):
self._barColour = [colour]
else:
self._barColour = list(colour)
@@ -130,31 +129,30 @@ class PyGauge(wx.PyWindow):
GetBarColor = GetBarColour
def SetFractionDigits(self, digits):
- self._fractionDigits=digits
+ self._fractionDigits = digits
def GetBarGradient(self):
""" Returns a tuple containing the gradient start and end colours. """
- if self._barGradient == None:
+ if self._barGradient is None:
return None
return self._barGradient[0]
- def SetBarGradient(self, gradient = None):
+ def SetBarGradient(self, gradient=None):
"""
Sets the bar gradient. This overrides the BarColour.
:param `gradient`: a tuple containing the gradient start and end colours.
"""
- if gradient == None:
+ if gradient is None:
self._barGradient = None
else:
- if type(gradient) != type([]):
+ if not isinstance(gradient, list):
self._barGradient = [gradient]
else:
self._barGradient = list(gradient)
-
def GetBorderPadding(self):
""" Gets the border padding. """
@@ -169,7 +167,6 @@ class PyGauge(wx.PyWindow):
self._border_padding = padding
-
def GetRange(self):
""" Returns the maximum value of the gauge. """
@@ -186,7 +183,7 @@ class PyGauge(wx.PyWindow):
self._animValue = self._percentage
self.Refresh()
- def SetRange(self, range, reinit = False):
+ def SetRange(self, range, reinit=False):
"""
Sets the range of the gauge. The gauge length is its
value as a proportion of the range.
@@ -197,16 +194,16 @@ class PyGauge(wx.PyWindow):
if self._range == range:
return
- range = float(range)
+ range_ = float(range)
- if range <= 0:
+ if range_ <= 0:
self._range = 0.01
else:
- self._range = range
+ self._range = range_
if reinit is False:
self._oldPercentage = self._percentage
- self._percentage = (self._value/self._range) * 100
+ self._percentage = (self._value / self._range) * 100
else:
self._oldPercentage = self._percentage
self._percentage = 0
@@ -214,9 +211,7 @@ class PyGauge(wx.PyWindow):
self.Animate()
-
- self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range if self._range >0.01 else 0))
-
+ self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range if self._range > 0.01 else 0))
def GetValue(self):
""" Returns the current position of the gauge. """
@@ -233,22 +228,22 @@ class PyGauge(wx.PyWindow):
self._value = value
if value < 0:
self._value = 0
- self._percentage = (self._value/self._range) * 100
+ self._percentage = (self._value / self._range) * 100
self.Animate()
self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range))
- def SetValueRange(self, value, range, reinit = False):
+ def SetValueRange(self, value, range, reinit=False):
if self._value == value and self._range == range:
return
- range = float(range)
+ range_ = float(range)
- if range <= 0:
+ if range_ <= 0:
self._range = 0.01
else:
- self._range = range
+ self._range = range_
value = float(value)
@@ -258,15 +253,14 @@ class PyGauge(wx.PyWindow):
if reinit is False:
self._oldPercentage = self._percentage
- self._percentage = (self._value/self._range) * 100
+ self._percentage = (self._value / self._range) * 100
else:
self._oldPercentage = self._percentage
self._percentage = 0
-
self.Animate()
- self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range if self._range >0.01 else 0))
+ self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range if self._range > 0.01 else 0))
def OnEraseBackground(self, event):
"""
@@ -308,7 +302,7 @@ class PyGauge(wx.PyWindow):
dc.SetPen(wx.Pen(self.GetBorderColour()))
dc.DrawRectangleRect(rect)
pad = 1 + self.GetBorderPadding()
- rect.Deflate(pad,pad)
+ rect.Deflate(pad, pad)
if self.GetBarGradient():
@@ -326,48 +320,48 @@ class PyGauge(wx.PyWindow):
# time on them if not needed. See GH issue #282
pv = value
- xv=1
+ xv = 1
transition = 0
if pv <= 100:
- xv = pv/100
+ xv = pv / 100
transition = 0
- elif pv <=101:
- xv = pv -100
+ elif pv <= 101:
+ xv = pv - 100
transition = 1
elif pv <= 103:
- xv = (pv -101)/2
+ xv = (pv - 101) / 2
transition = 2
elif pv <= 105:
- xv = (pv -103)/2
+ xv = (pv - 103) / 2
transition = 3
else:
pv = 106
- xv = pv -100
+ xv = pv - 100
transition = -1
if transition != -1:
- colorS,colorE = self.transitionsColors[transition]
+ colorS, colorE = self.transitionsColors[transition]
color = colorUtils.CalculateTransitionColor(colorS, colorE, xv)
else:
- color = wx.Colour(191,48,48)
+ color = wx.Colour(191, 48, 48)
if self.gradientEffect > 0:
- gcolor = colorUtils.BrightenColor(color, float(self.gradientEffect) / 100)
- gMid = colorUtils.BrightenColor(color, float(self.gradientEffect/2) / 100)
+ gcolor = colorUtils.BrightenColor(color, float(self.gradientEffect) / 100)
+ gMid = colorUtils.BrightenColor(color, float(self.gradientEffect / 2) / 100)
else:
- gcolor = colorUtils.DarkenColor(color, float(-self.gradientEffect) / 100)
- gMid = colorUtils.DarkenColor(color, float(-self.gradientEffect/2) / 100)
+ gcolor = colorUtils.DarkenColor(color, float(-self.gradientEffect) / 100)
+ gMid = colorUtils.DarkenColor(color, float(-self.gradientEffect / 2) / 100)
gBmp = drawUtils.DrawGradientBar(r.width, r.height, gMid, color, gcolor)
dc.DrawBitmap(gBmp, r.left, r.top)
else:
- colour=self.GetBarColour()
+ colour = self.GetBarColour()
dc.SetBrush(wx.Brush(colour))
dc.SetPen(wx.Pen(colour))
if value > 100:
@@ -381,14 +375,14 @@ class PyGauge(wx.PyWindow):
dc.SetFont(self.font)
r = copy.copy(rect)
- r.left +=1
- r.top +=1
+ r.left += 1
+ r.top += 1
if self._range == 0.01 and self._value > 0:
- formatStr = u'\u221e'
- dc.SetTextForeground(wx.Colour(80,80,80))
+ formatStr = u'\u221e'
+ dc.SetTextForeground(wx.Colour(80, 80, 80))
dc.DrawLabel(formatStr, r, wx.ALIGN_CENTER)
- dc.SetTextForeground(wx.Colour(255,255,255))
+ dc.SetTextForeground(wx.Colour(255, 255, 255))
dc.DrawLabel(formatStr, rect, wx.ALIGN_CENTER)
else:
if self.GetBarGradient() and self._showRemaining:
@@ -404,20 +398,20 @@ class PyGauge(wx.PyWindow):
else:
formatStr = "{0:." + str(self._fractionDigits) + "f}%"
- dc.SetTextForeground(wx.Colour(80,80,80))
+ dc.SetTextForeground(wx.Colour(80, 80, 80))
dc.DrawLabel(formatStr.format(value), r, wx.ALIGN_CENTER)
- dc.SetTextForeground(wx.Colour(255,255,255))
+ dc.SetTextForeground(wx.Colour(255, 255, 255))
dc.DrawLabel(formatStr.format(value), rect, wx.ALIGN_CENTER)
- def OnTimer(self,event):
+ def OnTimer(self, event):
"""
Handles the ``wx.EVT_TIMER`` event for L{PyfaGauge}.
:param `event`: a timer event
"""
- oldValue=self._oldPercentage
- value=self._percentage
+ oldValue = self._oldPercentage
+ value = self._percentage
start = 0
direction = 1 if oldValue < value else -1
@@ -436,13 +430,13 @@ class PyGauge(wx.PyWindow):
stop_timer = True
if direction == 1:
- if (oldValue+step) < value:
- self._animValue = oldValue+step
+ if (oldValue + step) < value:
+ self._animValue = oldValue + step
else:
stop_timer = True
else:
- if (oldValue-step) > value:
- self._animValue = oldValue-step
+ if (oldValue - step) > value:
+ self._animValue = oldValue - step
else:
stop_timer = True
@@ -451,4 +445,3 @@ class PyGauge(wx.PyWindow):
self._timer.Stop()
self.Refresh()
-
diff --git a/gui/resistsEditor.py b/gui/resistsEditor.py
index f28d370b1..83fb4327d 100644
--- a/gui/resistsEditor.py
+++ b/gui/resistsEditor.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2014 Ryan Holmes
#
# This file is part of pyfa.
@@ -15,14 +15,13 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
+from service.targetResists import TargetResists
from gui.bitmapLoader import BitmapLoader
from gui.utils.clipboard import toClipboard, fromClipboard
-from service.targetResists import ImportError
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
-from service.targetResists import TargetResists
class TargetResistsTextValidor(BaseValidator):
@@ -44,7 +43,7 @@ class TargetResistsTextValidor(BaseValidator):
raise ValueError("Target Resist Profile name already in use, please choose another.")
return True
- except ValueError, e:
+ except ValueError as e:
wx.MessageBox(u"{}".format(e), "Error")
textCtrl.SetFocus()
return False
@@ -78,12 +77,13 @@ class TargetResistsEntityEditor(EntityEditor):
sTR = TargetResists.getInstance()
sTR.deletePattern(entity)
+
class ResistsEditorDlg(wx.Dialog):
DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive")
def __init__(self, parent):
- wx.Dialog.__init__(self, parent, id = wx.ID_ANY, title = u"Target Resists Editor", size = wx.Size( 350,240 ))
+ wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"Target Resists Editor", size=wx.Size(350, 240))
self.block = False
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
@@ -104,24 +104,23 @@ class ResistsEditorDlg(wx.Dialog):
resistEditSizer.SetFlexibleDirection(wx.BOTH)
resistEditSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
- width = -1
- defSize = wx.Size(50,-1)
+ defSize = wx.Size(50, -1)
- for i, type in enumerate(self.DAMAGE_TYPES):
- if i%2:
+ for i, type_ in enumerate(self.DAMAGE_TYPES):
+ if i % 2:
style = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT | wx.LEFT
border = 25
else:
style = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT
border = 5
- bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big"%type, "gui"))
+ bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big" % type_, "gui"))
resistEditSizer.Add(bmp, 0, style, border)
# set text edit
- setattr(self, "%sEdit"%type, wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, defSize))
- editObj = getattr(self, "%sEdit"%type)
+ setattr(self, "%sEdit" % type_, wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, defSize))
+ editObj = getattr(self, "%sEdit" % type_)
resistEditSizer.Add(editObj, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
- resistEditSizer.Add(wx.StaticText( self, wx.ID_ANY, u"%", wx.DefaultPosition, wx.DefaultSize, 0 ), 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
+ resistEditSizer.Add(wx.StaticText(self, wx.ID_ANY, u"%", wx.DefaultPosition, wx.DefaultSize, 0), 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
editObj.Bind(wx.EVT_TEXT, self.ValuesUpdated)
# Color we use to reset invalid value color
@@ -138,7 +137,7 @@ class ResistsEditorDlg(wx.Dialog):
self.stNotice.Wrap(-1)
perSizer.Add(self.stNotice, 0, wx.BOTTOM | wx.TOP | wx.LEFT, 5)
- footerSizer.Add(perSizer, 1, wx.ALIGN_CENTER_VERTICAL, 5)
+ footerSizer.Add(perSizer, 1, wx.ALIGN_CENTER_VERTICAL, 5)
self.totSizer = wx.BoxSizer(wx.VERTICAL)
@@ -147,8 +146,8 @@ class ResistsEditorDlg(wx.Dialog):
mainSizer.Add(contentSizer, 1, wx.EXPAND, 0)
if "wxGTK" in wx.PlatformInfo:
- self.closeBtn = wx.Button( self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.closeBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5 )
+ self.closeBtn = wx.Button(self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.closeBtn, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.closeBtn.Bind(wx.EVT_BUTTON, self.closeEvent)
self.SetSizer(mainSizer)
@@ -160,13 +159,13 @@ class ResistsEditorDlg(wx.Dialog):
bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON)
btn = wx.BitmapButton(self, wx.ID_ANY, bitmap)
- btn.SetMinSize( btn.GetSize() )
- btn.SetMaxSize( btn.GetSize() )
+ btn.SetMinSize(btn.GetSize())
+ btn.SetMaxSize(btn.GetSize())
btn.Layout()
setattr(self, name, btn)
btn.Enable(True)
- btn.SetToolTipString("%s patterns %s clipboard" % (name, direction) )
+ btn.SetToolTipString("%s patterns %s clipboard" % (name, direction))
footerSizer.Add(btn, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_RIGHT)
btn.Bind(wx.EVT_BUTTON, getattr(self, "{}Patterns".format(name.lower())))
@@ -201,8 +200,8 @@ class ResistsEditorDlg(wx.Dialog):
try:
p = self.entityEditor.getActiveEntity()
- for type in self.DAMAGE_TYPES:
- editObj = getattr(self, "%sEdit"%type)
+ for type_ in self.DAMAGE_TYPES:
+ editObj = getattr(self, "%sEdit" % type_)
if editObj.GetValue() == "":
# if we are blank, overwrite with 0
@@ -215,7 +214,7 @@ class ResistsEditorDlg(wx.Dialog):
assert 0 <= value <= 100
# if everything checks out, set resist attribute
- setattr(p, "%sAmount"%type, value/100)
+ setattr(p, "%sAmount" % type_, value / 100)
editObj.SetForegroundColour(self.colorReset)
self.stNotice.SetLabel("")
@@ -250,13 +249,13 @@ class ResistsEditorDlg(wx.Dialog):
# Set new values
for field in self.DAMAGE_TYPES:
edit = getattr(self, "%sEdit" % field)
- amount = getattr(p, "%sAmount" % field)*100
+ amount = getattr(p, "%sAmount" % field) * 100
edit.ChangeValue(str(amount))
self.block = False
self.ValuesUpdated()
- def __del__( self ):
+ def __del__(self):
pass
def importPatterns(self, event):
@@ -268,9 +267,9 @@ class ResistsEditorDlg(wx.Dialog):
try:
sTR.importPatterns(text)
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
- except service.targetResists.ImportError, e:
+ except ImportError as e:
self.stNotice.SetLabel(str(e))
- except Exception, e:
+ except Exception:
self.stNotice.SetLabel("Could not import from clipboard: unknown errors")
finally:
self.entityEditor.refreshEntityList()
@@ -280,5 +279,5 @@ class ResistsEditorDlg(wx.Dialog):
def exportPatterns(self, event):
"Event fired when export to clipboard button is clicked"
sTR = TargetResists.getInstance()
- toClipboard( sTR.exportPatterns() )
+ toClipboard(sTR.exportPatterns())
self.stNotice.SetLabel("Patterns exported to clipboard")
diff --git a/gui/setEditor.py b/gui/setEditor.py
index 5ddac5f4c..380c7986a 100644
--- a/gui/setEditor.py
+++ b/gui/setEditor.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2016 Ryan Holmes
#
# This file is part of pyfa.
@@ -15,19 +15,19 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+import logging
import wx
-from gui.bitmapLoader import BitmapLoader
+
+from service.implantSet import ImplantSets
from gui.builtinViews.implantEditor import BaseImplantEditorView
from gui.utils.clipboard import toClipboard, fromClipboard
-from service.implantSet import ImportError
-import logging
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
-from service.implantSet import ImplantSets
logger = logging.getLogger(__name__)
+
class ImplantTextValidor(BaseValidator):
def __init__(self):
BaseValidator.__init__(self)
@@ -47,7 +47,7 @@ class ImplantTextValidor(BaseValidator):
raise ValueError("Imlplant Set name already in use, please choose another.")
return True
- except ValueError, e:
+ except ValueError as e:
wx.MessageBox(u"{}".format(e), "Error")
textCtrl.SetFocus()
return False
@@ -92,27 +92,27 @@ class ImplantSetEditor(BaseImplantEditorView):
def getImplantsFromContext(self):
sIS = ImplantSets.getInstance()
- set = self.Parent.entityEditor.getActiveEntity()
- if set:
- return sIS.getImplants(set.ID)
+ set_ = self.Parent.entityEditor.getActiveEntity()
+ if set_:
+ return sIS.getImplants(set_.ID)
return []
def addImplantToContext(self, item):
sIS = ImplantSets.getInstance()
- set = self.Parent.entityEditor.getActiveEntity()
+ set_ = self.Parent.entityEditor.getActiveEntity()
- sIS.addImplant(set.ID, item.ID)
+ sIS.addImplant(set_.ID, item.ID)
def removeImplantFromContext(self, implant):
sIS = ImplantSets.getInstance()
- set = self.Parent.entityEditor.getActiveEntity()
+ set_ = self.Parent.entityEditor.getActiveEntity()
+
+ sIS.removeImplant(set_.ID, implant)
- sIS.removeImplant(set.ID, implant)
class ImplantSetEditorDlg(wx.Dialog):
-
def __init__(self, parent):
- wx.Dialog.__init__(self, parent, id = wx.ID_ANY, title = u"Implant Set Editor", size = wx.Size(640, 600))
+ wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"Implant Set Editor", size=wx.Size(640, 600))
self.block = False
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
@@ -138,8 +138,8 @@ class ImplantSetEditorDlg(wx.Dialog):
footerSizer.Add(self.stNotice, 1, wx.BOTTOM | wx.TOP | wx.LEFT, 5)
if "wxGTK" in wx.PlatformInfo:
- self.closeBtn = wx.Button( self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0 )
- mainSizer.Add( self.closeBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5 )
+ self.closeBtn = wx.Button(self, wx.ID_ANY, u"Close", wx.DefaultPosition, wx.DefaultSize, 0)
+ mainSizer.Add(self.closeBtn, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.closeBtn.Bind(wx.EVT_BUTTON, self.closeEvent)
importExport = (("Import", wx.ART_FILE_OPEN, "from"),
@@ -149,13 +149,13 @@ class ImplantSetEditorDlg(wx.Dialog):
bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON)
btn = wx.BitmapButton(self, wx.ID_ANY, bitmap)
- btn.SetMinSize( btn.GetSize() )
- btn.SetMaxSize( btn.GetSize() )
+ btn.SetMinSize(btn.GetSize())
+ btn.SetMaxSize(btn.GetSize())
btn.Layout()
setattr(self, name, btn)
btn.Enable(True)
- btn.SetToolTipString("%s implant sets %s clipboard" % (name, direction) )
+ btn.SetToolTipString("%s implant sets %s clipboard" % (name, direction))
footerSizer.Add(btn, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_RIGHT)
mainSizer.Add(footerSizer, 0, wx.ALL | wx.EXPAND, 5)
@@ -183,7 +183,7 @@ class ImplantSetEditorDlg(wx.Dialog):
def closeEvent(self, event):
self.Destroy()
- def __del__( self ):
+ def __del__(self):
pass
def importPatterns(self, event):
@@ -196,9 +196,9 @@ class ImplantSetEditorDlg(wx.Dialog):
sIS.importSets(text)
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
self.showInput(False)
- except ImportError, e:
+ except ImportError as e:
self.stNotice.SetLabel(str(e))
- except Exception, e:
+ except Exception as e:
logging.exception("Unhandled Exception")
self.stNotice.SetLabel("Could not import from clipboard: unknown errors")
finally:
diff --git a/gui/sfBrowserItem.py b/gui/sfBrowserItem.py
index 81294cba3..9b12fcf01 100644
--- a/gui/sfBrowserItem.py
+++ b/gui/sfBrowserItem.py
@@ -1,5 +1,4 @@
import wx
-import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
SB_ITEM_NORMAL = 0
@@ -7,14 +6,14 @@ SB_ITEM_SELECTED = 1
SB_ITEM_HIGHLIGHTED = 2
SB_ITEM_DISABLED = 4
-BTN_NORMAL = 1
-BTN_PRESSED = 2
-BTN_HOVER = 4
+BTN_NORMAL = 1
+BTN_PRESSED = 2
+BTN_HOVER = 4
BTN_DISABLED = 8
class PFBaseButton(object):
- def __init__(self, normalBitmap = wx.NullBitmap,label = "", callback = None, hoverBitmap = None, disabledBitmap = None, show = True):
+ def __init__(self, normalBitmap=wx.NullBitmap, label="", callback=None, hoverBitmap=None, disabledBitmap=None, show=True):
self.normalBmp = normalBitmap
self.dropShadowOpacity = 0.2
@@ -48,7 +47,7 @@ class PFBaseButton(object):
if self.callback:
self.callback()
- def SetState(self, state = BTN_NORMAL):
+ def SetState(self, state=BTN_NORMAL):
self.state = state
def GetState(self):
@@ -57,7 +56,7 @@ class PFBaseButton(object):
def GetSize(self):
w = self.normalBmp.GetWidth()
h = self.normalBmp.GetHeight()
- return (w,h)
+ return (w, h)
def GetBitmap(self):
return self.normalBmp
@@ -70,22 +69,23 @@ class PFBaseButton(object):
return self.label
def GetHoverBitmap(self):
- if self.hoverBmp == None:
+ if self.hoverBmp is None:
return self.normalBmp
return self.hoverBmp
def GetDisabledBitmap(self):
- if self.disabledBmp == None:
+ if self.disabledBmp is None:
return self.normalBmp
return self.disabledBmp
def GetDropShadowBitmap(self):
return self.dropShadowBmp
+
class PFToolbar(object):
def __init__(self, parent):
self.Parent = parent
- self.buttons =[]
+ self.buttons = []
self.toolbarX = 0
self.toolbarY = 0
self.padding = 2
@@ -94,7 +94,7 @@ class PFToolbar(object):
def SetPosition(self, pos):
self.toolbarX, self.toolbarY = pos
- def AddButton(self, btnBitmap, label = "", clickCallback = None, hoverBitmap = None, disabledBitmap = None, show = True):
+ def AddButton(self, btnBitmap, label="", clickCallback=None, hoverBitmap=None, disabledBitmap=None, show=True):
btn = PFBaseButton(btnBitmap, label, clickCallback, hoverBitmap, disabledBitmap, show)
self.buttons.append(btn)
return btn
@@ -115,7 +115,7 @@ class PFToolbar(object):
continue
state = button.GetState()
- if self.HitTest( (bx, self.toolbarY), event.GetPosition(), button.GetSize()):
+ if self.HitTest((bx, self.toolbarY), event.GetPosition(), button.GetSize()):
changeCursor = True
if not state & BTN_HOVER:
button.SetState(state | BTN_HOVER)
@@ -135,7 +135,7 @@ class PFToolbar(object):
return doRefresh
def MouseClick(self, event):
- mx,my = event.GetPosition()
+ mx, my = event.GetPosition()
bx = self.toolbarX
for button in self.buttons:
if not button.IsVisible():
@@ -143,8 +143,8 @@ class PFToolbar(object):
state = button.GetState()
if state & BTN_PRESSED:
- button.SetState(state ^ BTN_PRESSED )
- if self.HitTest( (bx, self.toolbarY), event.GetPosition(), button.GetSize()):
+ button.SetState(state ^ BTN_PRESSED)
+ if self.HitTest((bx, self.toolbarY), event.GetPosition(), button.GetSize()):
return button
else:
return False
@@ -158,7 +158,7 @@ class PFToolbar(object):
state = button.GetState()
- if self.HitTest( (bx, self.toolbarY), event.GetPosition(), button.GetSize()):
+ if self.HitTest((bx, self.toolbarY), event.GetPosition(), button.GetSize()):
if event.LeftDown() or event.LeftDClick():
button.SetState(state | BTN_PRESSED)
@@ -230,14 +230,14 @@ class PFToolbar(object):
bmpWidth = bmp.GetWidth()
- pdc.DrawBitmap(dropShadowBmp,bx + self.padding / 2, self.toolbarY + self.padding / 2)
+ pdc.DrawBitmap(dropShadowBmp, bx + self.padding / 2, self.toolbarY + self.padding / 2)
pdc.DrawBitmap(bmp, tbx, by)
bx += bmpWidth + self.padding
class SFBrowserItem(wx.Window):
- def __init__(self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = (0,16), style = 0):
+ def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=(0, 16), style=0):
wx.Window.__init__(self, parent, id, pos, size, style)
self.highlighted = False
@@ -248,7 +248,6 @@ class SFBrowserItem(wx.Window):
self.toolbar = PFToolbar(self)
-
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
@@ -256,8 +255,7 @@ class SFBrowserItem(wx.Window):
if "wxMSW" in wx.PlatformInfo:
self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown)
-
- self.Bind(wx.EVT_LEFT_DOWN,self.OnLeftDown)
+ self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
self.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow)
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)
self.Bind(wx.EVT_MOTION, self.OnMotion)
@@ -271,7 +269,7 @@ class SFBrowserItem(wx.Window):
self.RenderBackground()
- mdc.DrawBitmap(self.bkBitmap, 0,0)
+ mdc.DrawBitmap(self.bkBitmap, 0, 0)
self.DrawItem(mdc)
self.toolbar.Render(mdc)
@@ -291,7 +289,7 @@ class SFBrowserItem(wx.Window):
def MouseMove(self, event):
pass
- def SetDraggable(self, mode = True):
+ def SetDraggable(self, mode=True):
self.canBeDragged = mode
def OnLeftUp(self, event):
@@ -302,14 +300,13 @@ class SFBrowserItem(wx.Window):
mposx, mposy = wx.GetMousePosition()
rect = self.GetRect()
rect.top = rect.left = 0
- cx,cy = self.ScreenToClient((mposx,mposy))
- if not rect.Contains((cx,cy)):
+ cx, cy = self.ScreenToClient((mposx, mposy))
+ if not rect.Contains((cx, cy)):
self.SetHighlighted(False)
self.toolbar.ClearState()
self.Refresh()
return
-
btn = self.toolbar.MouseClick(event)
if btn is not None:
@@ -323,7 +320,6 @@ class SFBrowserItem(wx.Window):
self.MouseLeftUp(event)
-
def OnLeftDown(self, event):
if not self.HasCapture():
self.CaptureMouse()
@@ -360,10 +356,10 @@ class SFBrowserItem(wx.Window):
def GetType(self):
return -1
- def SetSelected(self, select = True):
+ def SetSelected(self, select=True):
self.selected = select
- def SetHighlighted(self, highlight = True):
+ def SetHighlighted(self, highlight=True):
self.highlighted = highlight
def GetState(self):
@@ -373,7 +369,7 @@ class SFBrowserItem(wx.Window):
elif self.selected:
if self.highlighted:
- state = SB_ITEM_SELECTED | SB_ITEM_HIGHLIGHTED
+ state = SB_ITEM_SELECTED | SB_ITEM_HIGHLIGHTED
else:
state = SB_ITEM_SELECTED
else:
@@ -396,7 +392,7 @@ class SFBrowserItem(wx.Window):
mFactor = 0.45
eFactor = 0.30
- elif state == SB_ITEM_SELECTED | SB_ITEM_HIGHLIGHTED:
+ elif state == SB_ITEM_SELECTED | SB_ITEM_HIGHLIGHTED:
eFactor = 0.3
elif state == SB_ITEM_SELECTED:
eFactor = 0.15
@@ -405,7 +401,7 @@ class SFBrowserItem(wx.Window):
if self.bkBitmap:
if self.bkBitmap.eFactor == eFactor and self.bkBitmap.sFactor == sFactor and self.bkBitmap.mFactor == mFactor \
- and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight() :
+ and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight():
return
else:
del self.bkBitmap
diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py
index 95e84b86a..1a00089f9 100644
--- a/gui/shipBrowser.py
+++ b/gui/shipBrowser.py
@@ -1,27 +1,23 @@
-# -*- coding: utf-8 -*-
-import wx
import re
-import copy
-from gui.bitmapLoader import BitmapLoader
-import gui.mainFrame
-import gui.globalEvents as GE
import time
-from gui.PFListPane import PFListPane
+import wx
from wx.lib.buttons import GenBitmapButton
+from service.fit import Fit
+from service.market import Market
+import gui.mainFrame
+import gui.utils.fonts as fonts
+import gui.globalEvents as GE
+import gui.sfBrowserItem as SFItem
import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
import gui.utils.animUtils as animUtils
import gui.utils.animEffects as animEffects
-
-import gui.sfBrowserItem as SFItem
+from gui.PFListPane import PFListPane
from gui.contextMenu import ContextMenu
-import gui.utils.fonts as fonts
+from gui.bitmapLoader import BitmapLoader
-from service.fit import Fit
-from service.market import Market
-import gui.utils.fonts as fonts
FitRenamed, EVT_FIT_RENAMED = wx.lib.newevent.NewEvent()
FitSelected, EVT_FIT_SELECTED = wx.lib.newevent.NewEvent()
@@ -35,21 +31,22 @@ Stage3Selected, EVT_SB_STAGE3_SEL = wx.lib.newevent.NewEvent()
SearchSelected, EVT_SB_SEARCH_SEL = wx.lib.newevent.NewEvent()
ImportSelected, EVT_SB_IMPORT_SEL = wx.lib.newevent.NewEvent()
-class PFWidgetsContainer(PFListPane):
- def __init__(self,parent):
- PFListPane.__init__(self,parent)
- self.anim = animUtils.LoadAnimation(self,label = "", size=(100,12))
+class PFWidgetsContainer(PFListPane):
+ def __init__(self, parent):
+ PFListPane.__init__(self, parent)
+
+ self.anim = animUtils.LoadAnimation(self, label="", size=(100, 12))
self.anim.Stop()
self.anim.Show(False)
- def ShowLoading(self, mode = True):
+ def ShowLoading(self, mode=True):
if mode:
- aweight,aheight = self.anim.GetSize()
- cweight,cheight = self.GetSize()
- ax = (cweight - aweight)/2
- ay = (cheight - aheight)/2
- self.anim.SetPosition((ax,ay))
+ aweight, aheight = self.anim.GetSize()
+ cweight, cheight = self.GetSize()
+ ax = (cweight - aweight) / 2
+ ay = (cheight - aheight) / 2
+ self.anim.SetPosition((ax, ay))
self.anim.Show()
self.anim.Play()
else:
@@ -68,8 +65,8 @@ class PFWidgetsContainer(PFListPane):
class RaceSelector(wx.Window):
- def __init__ (self, parent, id = wx.ID_ANY, label = "", pos = wx.DefaultPosition, size = wx.DefaultSize, style = 0, layout = wx.VERTICAL, animate = False):
- wx.Window.__init__(self, parent, id, pos = pos, size = size, style = style)
+ def __init__(self, parent, id=wx.ID_ANY, label="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, layout=wx.VERTICAL, animate=False):
+ wx.Window.__init__(self, parent, id, pos=pos, size=size, style=style)
self.animTimerID = wx.NewId()
self.animTimer = wx.Timer(self, self.animTimerID)
@@ -92,7 +89,6 @@ class RaceSelector(wx.Window):
self.SetSize(wx.Size(-1, self.minHeight))
self.SetMinSize(wx.Size(-1, self.minHeight))
-
self.checkTimerID = wx.NewId()
self.checkTimer = wx.Timer(self, self.checkTimerID)
self.checkPeriod = 250
@@ -103,20 +99,20 @@ class RaceSelector(wx.Window):
self.hoveredItem = None
if layout == wx.VERTICAL:
- self.buttonsBarPos = (4,0)
+ self.buttonsBarPos = (4, 0)
else:
- self.buttonsBarPos = (0,4)
+ self.buttonsBarPos = (0, 4)
self.buttonsPadding = 4
if layout == wx.VERTICAL:
- self.bmpArrow = BitmapLoader.getBitmap("down-arrow2","gui")
+ self.bmpArrow = BitmapLoader.getBitmap("down-arrow2", "gui")
else:
- self.bmpArrow = BitmapLoader.getBitmap("up-arrow2","gui")
+ self.bmpArrow = BitmapLoader.getBitmap("up-arrow2", "gui")
- # Make the bitmaps have the same color as window text
+ # Make the bitmaps have the same color as window text
- sysTextColour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT )
+ sysTextColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)
img = self.bmpArrow.ConvertToImage()
if layout == wx.VERTICAL:
@@ -141,9 +137,9 @@ class RaceSelector(wx.Window):
self.Layout()
def OnMouseMove(self, event):
- mx,my = event.GetPosition()
+ mx, my = event.GetPosition()
- location = self.HitTest(mx,my)
+ location = self.HitTest(mx, my)
if location != self.hoveredItem:
self.hoveredItem = location
self.Refresh()
@@ -152,7 +148,7 @@ class RaceSelector(wx.Window):
else:
self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
- def OnSizeUpdate(self,event):
+ def OnSizeUpdate(self, event):
self.CalcButtonsBarPos()
self.Refresh()
@@ -176,9 +172,9 @@ class RaceSelector(wx.Window):
def OnLeftUp(self, event):
- mx,my = event.GetPosition()
+ mx, my = event.GetPosition()
- toggle = self.HitTest(mx,my)
+ toggle = self.HitTest(mx, my)
if toggle is not None:
self.Refresh()
@@ -189,11 +185,11 @@ class RaceSelector(wx.Window):
if stage == 2:
categoryID = self.shipBrowser.GetStageData(stage)
- wx.PostEvent(self.shipBrowser,Stage2Selected(categoryID=categoryID, back = True))
+ wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=True))
event.Skip()
- def HitTest(self, mx,my):
- x,y = self.buttonsBarPos
+ def HitTest(self, mx, my):
+ x, y = self.buttonsBarPos
padding = self.buttonsPadding
for bmp in self.raceBmps:
@@ -222,16 +218,15 @@ class RaceSelector(wx.Window):
rect = self.GetRect()
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
- bkColor = colorUtils.GetSuitableColor(windowColor, 0.1)
+ # bkColor = colorUtils.GetSuitableColor(windowColor, 0.1)
sepColor = colorUtils.GetSuitableColor(windowColor, 0.2)
mdc = wx.BufferedPaintDC(self)
bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, 0.1, 0.1, 0.2, 2)
- mdc.DrawBitmap(bkBitmap,0,0,True)
+ mdc.DrawBitmap(bkBitmap, 0, 0, True)
-
- x ,y = self.buttonsBarPos
+ x, y = self.buttonsBarPos
if self.direction == 1:
for raceBmp in self.raceBmps:
@@ -250,27 +245,25 @@ class RaceSelector(wx.Window):
if self.layout == wx.VERTICAL:
mdc.DrawBitmap(dropShadow, rect.width - self.buttonsPadding - bmp.GetWidth() + 1, y + 1)
mdc.DrawBitmap(bmp, rect.width - self.buttonsPadding - bmp.GetWidth(), y)
- y+=raceBmp.GetHeight() + self.buttonsPadding
- mdc.SetPen(wx.Pen(sepColor,1))
- mdc.DrawLine(rect.width - 1, 0, rect.width -1, rect.height)
+ y += raceBmp.GetHeight() + self.buttonsPadding
+ mdc.SetPen(wx.Pen(sepColor, 1))
+ mdc.DrawLine(rect.width - 1, 0, rect.width - 1, rect.height)
else:
mdc.DrawBitmap(dropShadow, x + 1, self.buttonsPadding + 1)
mdc.DrawBitmap(bmp, x, self.buttonsPadding)
- x+=raceBmp.GetWidth() + self.buttonsPadding
- mdc.SetPen(wx.Pen(sepColor,1))
+ x += raceBmp.GetWidth() + self.buttonsPadding
+ mdc.SetPen(wx.Pen(sepColor, 1))
mdc.DrawLine(0, 0, rect.width, 0)
if self.direction < 1:
if self.layout == wx.VERTICAL:
mdc.DrawBitmap(self.bmpArrow, -2, (rect.height - self.bmpArrow.GetHeight()) / 2)
else:
- mdc.SetPen(wx.Pen(sepColor,1))
+ mdc.SetPen(wx.Pen(sepColor, 1))
mdc.DrawLine(0, 0, rect.width, 0)
mdc.DrawBitmap(self.bmpArrow, (rect.width - self.bmpArrow.GetWidth()) / 2, -2)
-
-
- def OnTimer(self,event):
+ def OnTimer(self, event):
if event.GetId() == self.animTimerID:
start = 0
if self.layout == wx.VERTICAL:
@@ -298,7 +291,7 @@ class RaceSelector(wx.Window):
self.animTimer.Start(self.animPeriod)
def AdjustSize(self, delta):
- self.SetMinSize(wx.Size(delta,-1) if self.layout == wx.VERTICAL else wx.Size(-1, delta))
+ self.SetMinSize(wx.Size(delta, -1) if self.layout == wx.VERTICAL else wx.Size(-1, delta))
self.Parent.Layout()
self.Refresh()
@@ -327,19 +320,20 @@ class RaceSelector(wx.Window):
event.Skip()
+
class NavigationPanel(SFItem.SFBrowserItem):
- def __init__(self,parent, size = (-1, 24)):
- SFItem.SFBrowserItem.__init__(self,parent,size = size)
+ def __init__(self, parent, size=(-1, 24)):
+ SFItem.SFBrowserItem.__init__(self, parent, size=size)
- self.rewBmpH = BitmapLoader.getBitmap("frewind_small","gui")
- self.forwBmp = BitmapLoader.getBitmap("fforward_small","gui")
- self.searchBmpH = BitmapLoader.getBitmap("fsearch_small","gui")
- self.newBmpH = BitmapLoader.getBitmap("fit_add_small","gui")
- self.resetBmpH = BitmapLoader.getBitmap("freset_small","gui")
- self.switchBmpH = BitmapLoader.getBitmap("fit_switch_view_mode_small","gui")
+ self.rewBmpH = BitmapLoader.getBitmap("frewind_small", "gui")
+ self.forwBmp = BitmapLoader.getBitmap("fforward_small", "gui")
+ self.searchBmpH = BitmapLoader.getBitmap("fsearch_small", "gui")
+ self.newBmpH = BitmapLoader.getBitmap("fit_add_small", "gui")
+ self.resetBmpH = BitmapLoader.getBitmap("freset_small", "gui")
+ self.switchBmpH = BitmapLoader.getBitmap("fit_switch_view_mode_small", "gui")
- switchImg = BitmapLoader.getImage("fit_switch_view_mode_small","gui")
- switchImg = switchImg.AdjustChannels(1,1,1,0.4)
+ switchImg = BitmapLoader.getImage("fit_switch_view_mode_small", "gui")
+ switchImg = switchImg.AdjustChannels(1, 1, 1, 0.4)
self.switchBmpD = wx.BitmapFromImage(switchImg)
self.resetBmp = self.AdjustChannels(self.resetBmpH)
@@ -348,11 +342,11 @@ class NavigationPanel(SFItem.SFBrowserItem):
self.switchBmp = self.AdjustChannels(self.switchBmpH)
self.newBmp = self.AdjustChannels(self.newBmpH)
- self.toolbar.AddButton(self.resetBmp, "Ship groups", clickCallback = self.OnHistoryReset, hoverBitmap = self.resetBmpH)
- self.toolbar.AddButton(self.rewBmp, "Back", clickCallback = self.OnHistoryBack, hoverBitmap = self.rewBmpH)
- self.btnNew = self.toolbar.AddButton(self.newBmp, "New fitting", clickCallback = self.OnNewFitting, hoverBitmap = self.newBmpH, show = False)
- self.btnSwitch = self.toolbar.AddButton(self.switchBmpD, "Hide empty ship groups", clickCallback = self.ToggleEmptyGroupsView, hoverBitmap = self.switchBmpH, show = False)
- self.toolbar.AddButton(self.searchBmp, "Search fittings", clickCallback = self.ToggleSearchBox, hoverBitmap = self.searchBmpH)
+ self.toolbar.AddButton(self.resetBmp, "Ship groups", clickCallback=self.OnHistoryReset, hoverBitmap=self.resetBmpH)
+ self.toolbar.AddButton(self.rewBmp, "Back", clickCallback=self.OnHistoryBack, hoverBitmap=self.rewBmpH)
+ self.btnNew = self.toolbar.AddButton(self.newBmp, "New fitting", clickCallback=self.OnNewFitting, hoverBitmap=self.newBmpH, show=False)
+ self.btnSwitch = self.toolbar.AddButton(self.switchBmpD, "Hide empty ship groups", clickCallback=self.ToggleEmptyGroupsView, hoverBitmap=self.switchBmpH, show=False)
+ self.toolbar.AddButton(self.searchBmp, "Search fittings", clickCallback=self.ToggleSearchBox, hoverBitmap=self.searchBmpH)
self.padding = 4
self.lastSearch = ""
@@ -360,8 +354,8 @@ class NavigationPanel(SFItem.SFBrowserItem):
self.inSearch = False
self.fontSmall = wx.Font(fonts.SMALL, wx.SWISS, wx.NORMAL, wx.NORMAL)
- w,h = size
- self.BrowserSearchBox = wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, (-1, h - 2 if 'wxGTK' in wx.PlatformInfo else -1 ), wx.TE_PROCESS_ENTER | (wx.BORDER_NONE if 'wxGTK' in wx.PlatformInfo else 0))
+ w, h = size
+ self.BrowserSearchBox = wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, (-1, h - 2 if 'wxGTK' in wx.PlatformInfo else -1), wx.TE_PROCESS_ENTER | (wx.BORDER_NONE if 'wxGTK' in wx.PlatformInfo else 0))
self.BrowserSearchBox.Show(False)
self.BrowserSearchBox.Bind(wx.EVT_TEXT_ENTER, self.OnBrowserSearchBoxEnter)
@@ -381,8 +375,7 @@ class NavigationPanel(SFItem.SFBrowserItem):
realsearch = search.replace("*", "")
if len(realsearch) >= 3:
self.lastSearch = search
- wx.PostEvent(self.shipBrowser,SearchSelected(text=search, back = False))
-
+ wx.PostEvent(self.shipBrowser, SearchSelected(text=search, back=False))
def ToggleSearchBox(self):
if self.BrowserSearchBox.IsShown():
@@ -420,10 +413,10 @@ class NavigationPanel(SFItem.SFBrowserItem):
stage = self.shipBrowser.GetActiveStage()
if stage == 1:
- wx.PostEvent(self.shipBrowser,Stage1Selected())
+ wx.PostEvent(self.shipBrowser, Stage1Selected())
elif stage == 2:
categoryID = self.shipBrowser.GetStageData(stage)
- wx.PostEvent(self.shipBrowser,Stage2Selected(categoryID=categoryID, back = True))
+ wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=True))
def ShowNewFitButton(self, show):
self.btnNew.Show(show)
@@ -439,19 +432,19 @@ class NavigationPanel(SFItem.SFBrowserItem):
shipID = self.Parent.GetStageData(stage)
shipName = self.Parent.GetStage3ShipName()
sFit = Fit.getInstance()
- fitID = sFit.newFit(shipID, "%s fit" %shipName)
+ fitID = sFit.newFit(shipID, "%s fit" % shipName)
self.shipBrowser.fitIDMustEditName = fitID
- wx.PostEvent(self.Parent,Stage3Selected(shipID=shipID))
+ wx.PostEvent(self.Parent, Stage3Selected(shipID=shipID))
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
def OnHistoryReset(self):
if self.shipBrowser.browseHist:
self.shipBrowser.browseHist = []
- self.gotoStage(1,0)
+ self.gotoStage(1, 0)
def OnHistoryBack(self):
if len(self.shipBrowser.browseHist) > 0:
- stage,data = self.shipBrowser.browseHist.pop()
+ stage, data = self.shipBrowser.browseHist.pop()
self.gotoStage(stage, data)
def AdjustChannels(self, bitmap):
@@ -467,10 +460,10 @@ class NavigationPanel(SFItem.SFBrowserItem):
mdc.SetFont(self.fontSmall)
- wlabel,hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
+ wlabel, hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
self.thoverx = self.toolbar.GetWidth() + self.padding
- self.thovery = (rect.height - hlabel)/2
+ self.thovery = (rect.height - hlabel) / 2
self.thoverw = wlabel
self.browserBoxX = self.thoverx
@@ -495,8 +488,8 @@ class NavigationPanel(SFItem.SFBrowserItem):
self.toolbar.SetPosition((self.toolbarx, self.toolbary))
mdc.SetFont(self.fontSmall)
mdc.DrawText(self.toolbar.hoverLabel, self.thoverx, self.thovery)
- mdc.SetPen(wx.Pen(sepColor,1))
- mdc.DrawLine(0,rect.height - 1, rect.width, rect.height - 1)
+ mdc.SetPen(wx.Pen(sepColor, 1))
+ mdc.DrawLine(0, rect.height - 1, rect.width, rect.height - 1)
def RenderBackground(self):
rect = self.GetRect()
@@ -505,7 +498,7 @@ class NavigationPanel(SFItem.SFBrowserItem):
sFactor = 0.1
- shipGroupsFilter = getattr(self.shipBrowser,"filterShipsWithNoFits", None)
+ shipGroupsFilter = getattr(self.shipBrowser, "filterShipsWithNoFits", None)
if shipGroupsFilter:
sFactor = 0.15
mFactor = 0.25
@@ -516,7 +509,7 @@ class NavigationPanel(SFItem.SFBrowserItem):
if self.bkBitmap:
if self.bkBitmap.eFactor == eFactor and self.bkBitmap.sFactor == sFactor and self.bkBitmap.mFactor == mFactor \
- and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight() :
+ and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight():
return
else:
del self.bkBitmap
@@ -527,7 +520,6 @@ class NavigationPanel(SFItem.SFBrowserItem):
self.bkBitmap.eFactor = eFactor
self.bkBitmap.mFactor = mFactor
-
def gotoStage(self, stage, data=None):
if stage == 1:
wx.PostEvent(self.Parent, Stage1Selected())
@@ -546,16 +538,16 @@ class NavigationPanel(SFItem.SFBrowserItem):
class ShipBrowser(wx.Panel):
def __init__(self, parent):
- wx.Panel.__init__ (self, parent,style = 0)
+ wx.Panel.__init__(self, parent, style=0)
self._lastWidth = 0
self._activeStage = 1
self._lastStage = 0
self.browseHist = []
- self.lastStage = (0,0)
+ self.lastStage = (0, 0)
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
- self.categoryList=[]
+ self.categoryList = []
self.categoryFitCache = {}
self._stage1Data = -1
@@ -581,16 +573,16 @@ class ShipBrowser(wx.Panel):
layout = wx.HORIZONTAL
self.navpanel = NavigationPanel(self)
- mainSizer.Add(self.navpanel, 0 , wx.EXPAND)
- self.raceselect = RaceSelector(self, layout = layout, animate = False)
+ mainSizer.Add(self.navpanel, 0, wx.EXPAND)
+ self.raceselect = RaceSelector(self, layout=layout, animate=False)
container = wx.BoxSizer(wx.VERTICAL if layout == wx.HORIZONTAL else wx.HORIZONTAL)
if layout == wx.HORIZONTAL:
- container.Add(self.lpane,1,wx.EXPAND)
- container.Add(self.raceselect,0,wx.EXPAND)
+ container.Add(self.lpane, 1, wx.EXPAND)
+ container.Add(self.raceselect, 0, wx.EXPAND)
else:
- container.Add(self.raceselect,0,wx.EXPAND)
- container.Add(self.lpane,1,wx.EXPAND)
+ container.Add(self.raceselect, 0, wx.EXPAND)
+ container.Add(self.lpane, 1, wx.EXPAND)
mainSizer.Add(container, 1, wx.EXPAND)
self.SetSizer(mainSizer)
@@ -667,7 +659,7 @@ class ShipBrowser(wx.Panel):
self._lastStage = self._activeStage
self._activeStage = 1
self.lastdata = 0
- self.browseHist = [(1,0)]
+ self.browseHist = [(1, 0)]
self.navpanel.ShowNewFitButton(False)
self.navpanel.ShowSwitchEmptyGroupsButton(False)
@@ -731,7 +723,7 @@ class ShipBrowser(wx.Panel):
if ship.race not in racesList:
racesList.append(ship.race)
- for race,state in self.racesFilter.iteritems():
+ for race, state in self.racesFilter.iteritems():
if race in racesList:
subRacesFilter[race] = self.racesFilter[race]
@@ -744,18 +736,18 @@ class ShipBrowser(wx.Panel):
for ship in ships:
fits = sFit.countFitsWithShip(ship.ID)
t_fits += fits
- filter = subRacesFilter[ship.race] if ship.race else True
+ filter_ = subRacesFilter[ship.race] if ship.race else True
if override:
- filter = True
+ filter_ = True
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
-
+
if self.filterShipsWithNoFits:
- if fits>0:
- if filter:
+ if fits > 0:
+ if filter_:
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, fits), ship.race))
else:
- if filter:
+ if filter_:
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, fits), ship.race))
self.raceselect.RebuildRaces(racesList)
@@ -775,9 +767,8 @@ class ShipBrowser(wx.Panel):
self.Layout()
def stage2(self, event):
- back = event.back
-
- #if not back:
+ # back = event.back
+ # if not back:
# self.browseHist.append( (1,0) )
self._lastStage = self._activeStage
@@ -789,7 +780,6 @@ class ShipBrowser(wx.Panel):
self.lpane.RemoveAllChildren()
-
sMkt = Market.getInstance()
sMkt.getShipListDelayed(categoryID, self.stage2Callback)
@@ -831,9 +821,9 @@ class ShipBrowser(wx.Panel):
fitList = sFit.getFitsWithShip(shipID)
if len(fitList) == 0:
- stage,data = self.browseHist.pop()
+ stage, data = self.browseHist.pop()
self.lpane.Thaw()
- self.navpanel.gotoStage(stage,data)
+ self.navpanel.gotoStage(stage, data)
return
self.categoryFitCache[categoryID] = True
@@ -854,7 +844,7 @@ class ShipBrowser(wx.Panel):
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
for ID, name, booster, timestamp in fitList:
- self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp),shipID))
+ self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp), shipID))
self.lpane.RefreshList()
self.lpane.Thaw()
@@ -886,20 +876,20 @@ class ShipBrowser(wx.Panel):
if query:
ships = sMkt.searchShips(query)
fitList = sFit.searchFits(query)
-
+
for ship in ships:
- shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
+ shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, len(sFit.getFitsWithShip(ship.ID))), ship.race))
-
+
for ID, name, shipID, shipName, booster, timestamp in fitList:
ship = sMkt.getItem(shipID)
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp), shipID))
- if len(ships) == 0 and len(fitList) == 0 :
- self.lpane.AddWidget(PFStaticText(self.lpane, label = u"No matching results."))
- self.lpane.RefreshList(doFocus = False)
+ if len(ships) == 0 and len(fitList) == 0:
+ self.lpane.AddWidget(PFStaticText(self.lpane, label=u"No matching results."))
+ self.lpane.RefreshList(doFocus=False)
self.lpane.Thaw()
self.raceselect.RebuildRaces(self.RACE_ORDER)
@@ -935,13 +925,16 @@ class ShipBrowser(wx.Panel):
self.lpane.AddWidget(FitItem(
self.lpane,
- fit.ID, (
+ fit.ID,
+ (
fit.ship.item.name,
shipTrait,
fit.name,
fit.booster,
- fit.timestamp),
- fit.ship.item.ID))
+ fit.timestamp,
+ ),
+ fit.ship.item.ID,
+ ))
self.lpane.RefreshList(doFocus=False)
self.lpane.Thaw()
@@ -951,20 +944,23 @@ class ShipBrowser(wx.Panel):
self.raceselect.Show(False)
self.Layout()
+
class PFStaticText(wx.Panel):
def __init__(self, parent, label=wx.EmptyString):
- wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size = parent.GetSize())
+ wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=parent.GetSize())
self.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
mainSizer = wx.BoxSizer(wx.VERTICAL)
- text = wx.StaticText( self, wx.ID_ANY, label, wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE )
- text.Wrap( -1 )
- mainSizer.Add( text, 1, wx.ALL, 10 )
+ text = wx.StaticText(self, wx.ID_ANY, label, wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE)
+ text.Wrap(-1)
+ mainSizer.Add(text, 1, wx.ALL, 10)
self.SetSizer(mainSizer)
self.Layout()
+
def GetType(self):
return -1
+
class PFGenBitmapButton(GenBitmapButton):
def __init__(self, parent, id, bitmap, pos, size, style):
GenBitmapButton.__init__(self, parent, id, bitmap, pos, size, style)
@@ -976,14 +972,15 @@ class PFGenBitmapButton(GenBitmapButton):
def GetBackgroundBrush(self, dc):
return self.bgcolor
+
class CategoryItem(SFItem.SFBrowserItem):
- def __init__(self,parent, categoryID, fittingInfo, size = (0,16)):
- SFItem.SFBrowserItem.__init__(self,parent,size = size)
+ def __init__(self, parent, categoryID, fittingInfo, size=(0, 16)):
+ SFItem.SFBrowserItem.__init__(self, parent, size=size)
if categoryID:
- self.shipBmp = BitmapLoader.getBitmap("ship_small","gui")
+ self.shipBmp = BitmapLoader.getBitmap("ship_small", "gui")
else:
- self.shipBmp = wx.EmptyBitmap(16,16)
+ self.shipBmp = wx.EmptyBitmap(16, 16)
self.dropShadowBitmap = drawUtils.CreateDropShadowBitmap(self.shipBmp, 0.2)
@@ -1004,31 +1001,30 @@ class CategoryItem(SFItem.SFBrowserItem):
self.Bind(wx.EVT_TIMER, self.OnTimer)
- #=======================================================================
+ # =====================================================================
# Disabled - it will be added as an option to Preferences
self.animCount = 0
# self.animTimer.Start(self.animPeriod)
- #=======================================================================
-
+ # =====================================================================
def OnTimer(self, event):
step = self.OUT_QUAD(self.animStep, 0, 10, self.animDuration)
self.animCount = 10 - step
self.animStep += self.animPeriod
- if self.animStep > self.animDuration or self.animCount < 0 :
+ if self.animStep > self.animDuration or self.animCount < 0:
self.animCount = 0
self.animTimer.Stop()
self.Refresh()
- def OUT_QUAD (self, t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
+ def OUT_QUAD(self, t, b, c, d):
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
- t/=d
+ t /= d
- return -c *(t)*(t-2) + b
+ return -c * t * (t - 2) + b
def GetType(self):
return 1
@@ -1036,12 +1032,12 @@ class CategoryItem(SFItem.SFBrowserItem):
def MouseLeftUp(self, event):
categoryID = self.categoryID
- wx.PostEvent(self.shipBrowser,Stage2Selected(categoryID=categoryID, back=False))
+ wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=False))
def UpdateElementsPos(self, mdc):
rect = self.GetRect()
self.shipBmpx = self.padding
- self.shipBmpy = (rect.height-self.shipBmp.GetWidth())/2
+ self.shipBmpy = (rect.height - self.shipBmp.GetWidth()) / 2
self.shipBmpx -= self.animCount
@@ -1049,13 +1045,11 @@ class CategoryItem(SFItem.SFBrowserItem):
categoryName, fittings = self.fittingInfo
wtext, htext = mdc.GetTextExtent(categoryName)
-
self.catx = self.shipBmpx + self.shipBmp.GetWidth() + self.padding
self.caty = (rect.height - htext) / 2
def DrawItem(self, mdc):
- rect = self.GetRect()
-
+ # rect = self.GetRect()
self.UpdateElementsPos(mdc)
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
@@ -1063,7 +1057,7 @@ class CategoryItem(SFItem.SFBrowserItem):
mdc.SetTextForeground(textColor)
mdc.DrawBitmap(self.dropShadowBitmap, self.shipBmpx + 1, self.shipBmpy + 1)
- mdc.DrawBitmap(self.shipBmp,self.shipBmpx,self.shipBmpy,0)
+ mdc.DrawBitmap(self.shipBmp, self.shipBmpx, self.shipBmpy, 0)
mdc.SetFont(self.fontBig)
@@ -1071,7 +1065,7 @@ class CategoryItem(SFItem.SFBrowserItem):
mdc.DrawText(categoryName, self.catx, self.caty)
-#===============================================================================
+# =============================================================================
# Waiting for total #fits impl in eos/service
#
# mdc.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, False))
@@ -1090,14 +1084,14 @@ class CategoryItem(SFItem.SFBrowserItem):
# else:
# xtext, ytext = mdc.GetTextExtent(fformat)
# ypos = (rect.height - ytext)/2
-#===============================================================================
+# =============================================================================
class ShipItem(SFItem.SFBrowserItem):
- def __init__(self, parent, shipID=None, shipFittingInfo=("Test","TestTrait", 2), itemData=None,
+ def __init__(self, parent, shipID=None, shipFittingInfo=("Test", "TestTrait", 2), itemData=None,
id=wx.ID_ANY, pos=wx.DefaultPosition,
size=(0, 40), style=0):
- SFItem.SFBrowserItem.__init__(self, parent, size = size)
+ SFItem.SFBrowserItem.__init__(self, parent, size=size)
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
@@ -1124,7 +1118,7 @@ class ShipItem(SFItem.SFBrowserItem):
self.newBmp = BitmapLoader.getBitmap("fit_add_small", "gui")
self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui")
- self.shipEffBk = BitmapLoader.getBitmap("fshipbk_big","gui")
+ self.shipEffBk = BitmapLoader.getBitmap("fshipbk_big", "gui")
img = wx.ImageFromBitmap(self.shipEffBk)
img = img.Mirror(False)
@@ -1133,7 +1127,7 @@ class ShipItem(SFItem.SFBrowserItem):
self.raceBmp = BitmapLoader.getBitmap("race_%s_small" % self.shipRace, "gui")
if not self.raceBmp:
- self.raceBmp = BitmapLoader.getBitmap("fit_delete_small","gui")
+ self.raceBmp = BitmapLoader.getBitmap("fit_delete_small", "gui")
self.raceDropShadowBmp = drawUtils.CreateDropShadowBitmap(self.raceBmp, 0.2)
@@ -1144,11 +1138,10 @@ class ShipItem(SFItem.SFBrowserItem):
self.editWidth = 150
self.padding = 4
- self.tcFitName = wx.TextCtrl(self, wx.ID_ANY, "%s fit" % self.shipName, wx.DefaultPosition, (120,-1), wx.TE_PROCESS_ENTER)
+ self.tcFitName = wx.TextCtrl(self, wx.ID_ANY, "%s fit" % self.shipName, wx.DefaultPosition, (120, -1), wx.TE_PROCESS_ENTER)
self.tcFitName.Show(False)
-
- self.newBtn = self.toolbar.AddButton(self.newBmp,"New", self.newBtnCB)
+ self.newBtn = self.toolbar.AddButton(self.newBmp, "New", self.newBtnCB)
self.tcFitName.Bind(wx.EVT_TEXT_ENTER, self.createNewFit)
self.tcFitName.Bind(wx.EVT_KILL_FOCUS, self.editLostFocus)
@@ -1166,7 +1159,7 @@ class ShipItem(SFItem.SFBrowserItem):
self.marketInstance = Market.getInstance()
self.baseItem = self.marketInstance.getItem(self.shipID)
- #=======================================================================\
+ # =====================================================================
# DISABLED - it will be added as an option in PREFERENCES
self.animCount = 0
@@ -1176,8 +1169,7 @@ class ShipItem(SFItem.SFBrowserItem):
# self.animTimer.Start(self.animPeriod)
# else:
# self.animCount = 0
- #=======================================================================
-
+ # =====================================================================
def OnShowPopup(self, event):
pos = event.GetPosition()
@@ -1191,20 +1183,20 @@ class ShipItem(SFItem.SFBrowserItem):
step = self.OUT_QUAD(self.animStep, 0, 10, self.animDuration)
self.animCount = 10 - step
self.animStep += self.animPeriod
- if self.animStep > self.animDuration or self.animCount < 0 :
+ if self.animStep > self.animDuration or self.animCount < 0:
self.animCount = 0
self.animTimer.Stop()
self.Refresh()
- def OUT_QUAD (self, t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
+ def OUT_QUAD(self, t, b, c, d):
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
- t/=d
+ t /= d
- return -c *(t)*(t-2) + b
+ return -c * t * (t - 2) + b
def GetType(self):
return 2
@@ -1253,7 +1245,7 @@ class ShipItem(SFItem.SFBrowserItem):
sFit = Fit.getInstance()
fitID = sFit.newFit(self.shipID, self.tcFitName.GetValue())
- wx.PostEvent(self.shipBrowser,Stage3Selected(shipID=self.shipID, back=False))
+ wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID, back=False))
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
def UpdateElementsPos(self, mdc):
@@ -1264,18 +1256,18 @@ class ShipItem(SFItem.SFBrowserItem):
self.toolbarx = self.toolbarx + self.animCount
- self.shipEffx = self.padding + (rect.height - self.shipEffBk.GetWidth())/2
- self.shipEffy = (rect.height - self.shipEffBk.GetHeight())/2
+ self.shipEffx = self.padding + (rect.height - self.shipEffBk.GetWidth()) / 2
+ self.shipEffy = (rect.height - self.shipEffBk.GetHeight()) / 2
self.shipEffx = self.shipEffx - self.animCount
self.shipBmpx = self.padding + (rect.height - self.shipBmp.GetWidth()) / 2
self.shipBmpy = (rect.height - self.shipBmp.GetHeight()) / 2
- self.shipBmpx= self.shipBmpx - self.animCount
+ self.shipBmpx = self.shipBmpx - self.animCount
self.raceBmpx = self.shipEffx + self.shipEffBk.GetWidth() + self.padding
- self.raceBmpy = (rect.height - self.raceBmp.GetHeight())/2
+ self.raceBmpy = (rect.height - self.raceBmp.GetHeight()) / 2
self.textStartx = self.raceBmpx + self.raceBmp.GetWidth() + self.padding
@@ -1290,14 +1282,14 @@ class ShipItem(SFItem.SFBrowserItem):
mdc.SetFont(self.fontSmall)
- wlabel,hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
+ wlabel, hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
self.thoverx = self.toolbarx - self.padding - wlabel
- self.thovery = (rect.height - hlabel)/2
+ self.thovery = (rect.height - hlabel) / 2
self.thoverw = wlabel
def DrawItem(self, mdc):
- rect = self.GetRect()
+ # rect = self.GetRect()
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
textColor = colorUtils.GetSuitableColor(windowColor, 1)
@@ -1318,20 +1310,19 @@ class ShipItem(SFItem.SFBrowserItem):
mdc.DrawBitmap(self.shipBmp, self.shipBmpx, self.shipBmpy, 0)
mdc.DrawBitmap(self.raceDropShadowBmp, self.raceBmpx + 1, self.raceBmpy + 1)
- mdc.DrawBitmap(self.raceBmp,self.raceBmpx, self.raceBmpy)
+ mdc.DrawBitmap(self.raceBmp, self.raceBmpx, self.raceBmpy)
shipName, shipTrait, fittings = self.shipFittingInfo
- if fittings <1:
+ if fittings < 1:
fformat = "No fits"
+ elif fittings == 1:
+ fformat = "%d fit"
else:
- if fittings == 1:
- fformat = "%d fit"
- else:
- fformat = "%d fits"
+ fformat = "%d fits"
mdc.SetFont(self.fontNormal)
- mdc.DrawText(fformat %fittings if fittings >0 else fformat, self.textStartx, self.fittingsy)
+ mdc.DrawText(fformat % fittings if fittings > 0 else fformat, self.textStartx, self.fittingsy)
mdc.SetFont(self.fontSmall)
mdc.DrawText(self.toolbar.hoverLabel, self.thoverx, self.thovery)
@@ -1349,51 +1340,49 @@ class ShipItem(SFItem.SFBrowserItem):
fnEditSize = editCtl.GetSize()
wSize = self.GetSize()
fnEditPosX = end
- fnEditPosY = (wSize.height - fnEditSize.height)/2
+ fnEditPosY = (wSize.height - fnEditSize.height) / 2
if fnEditPosX < start:
- editCtl.SetSize((self.editWidth + fnEditPosX - start,-1))
- editCtl.SetPosition((start,fnEditPosY))
+ editCtl.SetSize((self.editWidth + fnEditPosX - start, -1))
+ editCtl.SetPosition((start, fnEditPosY))
else:
- editCtl.SetSize((self.editWidth,-1))
- editCtl.SetPosition((fnEditPosX,fnEditPosY))
+ editCtl.SetSize((self.editWidth, -1))
+ editCtl.SetPosition((fnEditPosX, fnEditPosY))
+
class PFBitmapFrame(wx.Frame):
- def __init__ (self, parent, pos, bitmap):
- wx.Frame.__init__(self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = pos, size = wx.DefaultSize, style =
- wx.NO_BORDER
- | wx.FRAME_NO_TASKBAR
- | wx.STAY_ON_TOP)
+ def __init__(self, parent, pos, bitmap):
+ wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=pos, size=wx.DefaultSize, style=wx.NO_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP)
img = bitmap.ConvertToImage()
img = img.ConvertToGreyscale()
bitmap = wx.BitmapFromImage(img)
self.bitmap = bitmap
self.SetSize((bitmap.GetWidth(), bitmap.GetHeight()))
- self.Bind(wx.EVT_PAINT,self.OnWindowPaint)
+ self.Bind(wx.EVT_PAINT, self.OnWindowPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnWindowEraseBk)
self.Bind(wx.EVT_TIMER, self.OnTimer)
- self.timer = wx.Timer(self,wx.ID_ANY)
+ self.timer = wx.Timer(self, wx.ID_ANY)
self.direction = 1
self.transp = 0
- self.SetSize((bitmap.GetWidth(),bitmap.GetHeight()))
+ self.SetSize((bitmap.GetWidth(), bitmap.GetHeight()))
self.SetTransparent(0)
self.Refresh()
def OnTimer(self, event):
- self.transp += 20*self.direction
+ self.transp += 20 * self.direction
if self.transp > 200:
self.transp = 200
self.timer.Stop()
if self.transp < 0:
self.transp = 0
self.timer.Stop()
- wx.Frame.Show(self,False)
+ wx.Frame.Show(self, False)
self.Destroy()
return
self.SetTransparent(self.transp)
- def Show(self, showWnd = True):
+ def Show(self, showWnd=True):
if showWnd:
wx.Frame.Show(self, showWnd)
self.Parent.SetFocus()
@@ -1403,33 +1392,33 @@ class PFBitmapFrame(wx.Frame):
self.direction = -1
self.timer.Start(5)
- def OnWindowEraseBk(self,event):
+ def OnWindowEraseBk(self, event):
pass
- def OnWindowPaint(self,event):
+ def OnWindowPaint(self, event):
rect = self.GetRect()
canvas = wx.EmptyBitmap(rect.width, rect.height)
mdc = wx.BufferedPaintDC(self)
mdc.SelectObject(canvas)
mdc.DrawBitmap(self.bitmap, 0, 0)
- mdc.SetPen( wx.Pen("#000000", width = 1 ) )
- mdc.SetBrush( wx.TRANSPARENT_BRUSH )
- mdc.DrawRectangle( 0,0,rect.width,rect.height)
+ mdc.SetPen(wx.Pen("#000000", width=1))
+ mdc.SetBrush(wx.TRANSPARENT_BRUSH)
+ mdc.DrawRectangle(0, 0, rect.width, rect.height)
class FitItem(SFItem.SFBrowserItem):
- def __init__(self, parent, fitID=None, shipFittingInfo=("Test", "TestTrait", "cnc's avatar", 0, 0 ), shipID = None, itemData=None,
+ def __init__(self, parent, fitID=None, shipFittingInfo=("Test", "TestTrait", "cnc's avatar", 0, 0), shipID=None, itemData=None,
id=wx.ID_ANY, pos=wx.DefaultPosition,
size=(0, 40), style=0):
- #===============================================================================
+ # =====================================================================
# animCount should be 10 if we enable animation in Preferences
- #===============================================================================
+ # =====================================================================
self.animCount = 0
self.selectedDelta = 0
- SFItem.SFBrowserItem.__init__(self,parent,size = size)
+ SFItem.SFBrowserItem.__init__(self, parent, size=size)
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
@@ -1446,10 +1435,10 @@ class FitItem(SFItem.SFBrowserItem):
self.deleted = False
if shipID:
- self.shipBmp = BitmapLoader.getBitmap(str(shipID),"renders")
+ self.shipBmp = BitmapLoader.getBitmap(str(shipID), "renders")
if not self.shipBmp:
- self.shipBmp = BitmapLoader.getBitmap("ship_no_image_big","gui")
+ self.shipBmp = BitmapLoader.getBitmap("ship_no_image_big", "gui")
self.shipFittingInfo = shipFittingInfo
self.shipName, self.shipTrait, self.fitName, self.fitBooster, self.timestamp = shipFittingInfo
@@ -1457,16 +1446,15 @@ class FitItem(SFItem.SFBrowserItem):
# see GH issue #62
# Disabling this due to change in gang boosts Nov 2016
- #if self.fitBooster is None: self.fitBooster = False
+ # if self.fitBooster is None: self.fitBooster = False
self.fitBooster = False
self.boosterBmp = BitmapLoader.getBitmap("fleet_fc_small", "gui")
- self.copyBmp = BitmapLoader.getBitmap("fit_add_small", "gui")
- self.renameBmp = BitmapLoader.getBitmap("fit_rename_small", "gui")
- self.deleteBmp = BitmapLoader.getBitmap("fit_delete_small","gui")
- self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui")
-
- self.shipEffBk = BitmapLoader.getBitmap("fshipbk_big","gui")
+ self.copyBmp = BitmapLoader.getBitmap("fit_add_small", "gui")
+ self.renameBmp = BitmapLoader.getBitmap("fit_rename_small", "gui")
+ self.deleteBmp = BitmapLoader.getBitmap("fit_delete_small", "gui")
+ self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui")
+ self.shipEffBk = BitmapLoader.getBitmap("fshipbk_big", "gui")
img = wx.ImageFromBitmap(self.shipEffBk)
img = img.Mirror(False)
@@ -1475,8 +1463,8 @@ class FitItem(SFItem.SFBrowserItem):
self.dragTLFBmp = None
self.bkBitmap = None
- if self.shipTrait != "": # show no tooltip if no trait available
- self.SetToolTip(wx.ToolTip(u'{}\n{}\n{}'.format(self.shipName, u'─'*20, self.shipTrait)))
+ if self.shipTrait != "": # show no tooltip if no trait available
+ self.SetToolTip(wx.ToolTip(u'{}\n{}\n{}'.format(self.shipName, u'─' * 20, self.shipTrait)))
self.padding = 4
self.editWidth = 150
@@ -1492,12 +1480,12 @@ class FitItem(SFItem.SFBrowserItem):
self.SetDraggable()
- self.boosterBtn = self.toolbar.AddButton(self.boosterBmp,"Booster", show=self.fitBooster)
- self.toolbar.AddButton(self.copyBmp,"Copy", self.copyBtnCB)
- self.renameBtn = self.toolbar.AddButton(self.renameBmp,"Rename", self.renameBtnCB)
+ self.boosterBtn = self.toolbar.AddButton(self.boosterBmp, "Booster", show=self.fitBooster)
+ self.toolbar.AddButton(self.copyBmp, "Copy", self.copyBtnCB)
+ self.renameBtn = self.toolbar.AddButton(self.renameBmp, "Rename", self.renameBtnCB)
self.toolbar.AddButton(self.deleteBmp, "Delete", self.deleteBtnCB)
- self.tcFitName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fitName, wx.DefaultPosition, (self.editWidth,-1), wx.TE_PROCESS_ENTER)
+ self.tcFitName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fitName, wx.DefaultPosition, (self.editWidth, -1), wx.TE_PROCESS_ENTER)
if self.shipBrowser.fitIDMustEditName != self.fitID:
self.tcFitName.Show(False)
@@ -1522,18 +1510,18 @@ class FitItem(SFItem.SFBrowserItem):
self.Bind(wx.EVT_TIMER, self.OnTimer)
- #=======================================================================
+ # =====================================================================
# DISABLED - it will be added as an option in PREFERENCES
# if self.shipBrowser.GetActiveStage() != 4 and self.shipBrowser.GetLastStage() !=3:
# self.animTimer.Start(self.animPeriod)
# else:
# self.animCount = 0
- #=======================================================================
+ # =====================================================================
self.selTimerID = wx.NewId()
- self.selTimer = wx.Timer(self,self.selTimerID)
+ self.selTimer = wx.Timer(self, self.selTimerID)
self.selTimer.Start(100)
self.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu)
@@ -1605,7 +1593,7 @@ class FitItem(SFItem.SFBrowserItem):
self.Bind(wx.EVT_MENU, self.OnProjectToFit, projectedItem)
commandItem = menu.Append(wx.ID_ANY, "Add Command Booster")
- self.Bind(wx.EVT_MENU, self.OnAddCommandFit, commandItem )
+ self.Bind(wx.EVT_MENU, self.OnAddCommandFit, commandItem)
self.PopupMenu(menu, pos)
@@ -1621,7 +1609,7 @@ class FitItem(SFItem.SFBrowserItem):
interval = 5
if ctimestamp < self.timestamp + interval:
delta = (ctimestamp - self.timestamp) / interval
- self.selectedDelta = self.CalculateDelta(0x0,self.maxDelta,delta)
+ self.selectedDelta = self.CalculateDelta(0x0, self.maxDelta, delta)
self.Refresh()
else:
self.selectedDelta = self.maxDelta
@@ -1631,23 +1619,23 @@ class FitItem(SFItem.SFBrowserItem):
step = self.OUT_QUAD(self.animStep, 0, 10, self.animDuration)
self.animCount = 10 - step
self.animStep += self.animPeriod
- if self.animStep > self.animDuration or self.animCount < 0 :
+ if self.animStep > self.animDuration or self.animCount < 0:
self.animCount = 0
self.animTimer.Stop()
self.Refresh()
def CalculateDelta(self, start, end, delta):
- return start + (end-start)*delta
+ return start + (end - start) * delta
- def OUT_QUAD (self, t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
+ def OUT_QUAD(self, t, b, c, d):
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
- t/=d
+ t /= d
- return -c *(t)*(t-2) + b
+ return -c * t * (t - 2) + b
def editLostFocus(self, event):
self.RestoreEditButton()
@@ -1670,7 +1658,7 @@ class FitItem(SFItem.SFBrowserItem):
sFit = Fit.getInstance()
fitID = sFit.copyFit(self.fitID)
self.shipBrowser.fitIDMustEditName = fitID
- wx.PostEvent(self.shipBrowser,Stage3Selected(shipID=self.shipID))
+ wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID))
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
def renameBtnCB(self):
@@ -1708,9 +1696,12 @@ class FitItem(SFItem.SFBrowserItem):
if wx.GetMouseState().ShiftDown() or wx.GetMouseState().MiddleDown():
self.deleteFit()
else:
- dlg = wx.MessageDialog(self,
- "Do you really want to delete this fit?",
- "Confirm Delete", wx.YES | wx.NO | wx.ICON_QUESTION)
+ dlg = wx.MessageDialog(
+ self,
+ "Do you really want to delete this fit?",
+ "Confirm Delete",
+ wx.YES | wx.NO | wx.ICON_QUESTION
+ )
if dlg.ShowModal() == wx.ID_YES:
self.deleteFit()
@@ -1727,8 +1718,8 @@ class FitItem(SFItem.SFBrowserItem):
sFit.deleteFit(self.fitID)
if self.shipBrowser.GetActiveStage() == 5:
- if fit in self.shipBrowser.lastdata: # remove fit from import cache
- self.shipBrowser.lastdata.remove(fit)
+ if fit in self.shipBrowser.lastdata: # remove fit from import cache
+ self.shipBrowser.lastdata.remove(fit)
wx.PostEvent(self.shipBrowser, ImportSelected(fits=self.shipBrowser.lastdata))
elif self.shipBrowser.GetActiveStage() == 4:
wx.PostEvent(self.shipBrowser, SearchSelected(text=self.shipBrowser.navpanel.lastSearch, back=True))
@@ -1793,9 +1784,9 @@ class FitItem(SFItem.SFBrowserItem):
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fitID))
def RestoreEditButton(self):
- self.tcFitName.Show(False)
- self.renameBtn.SetBitmap(self.renameBmp)
- self.Refresh()
+ self.tcFitName.Show(False)
+ self.renameBtn.SetBitmap(self.renameBmp)
+ self.Refresh()
def UpdateElementsPos(self, mdc):
rect = self.GetRect()
@@ -1805,15 +1796,15 @@ class FitItem(SFItem.SFBrowserItem):
self.toolbarx = self.toolbarx + self.animCount
- self.shipEffx = self.padding + (rect.height - self.shipEffBk.GetWidth())/2
- self.shipEffy = (rect.height - self.shipEffBk.GetHeight())/2
+ self.shipEffx = self.padding + (rect.height - self.shipEffBk.GetWidth()) / 2
+ self.shipEffy = (rect.height - self.shipEffBk.GetHeight()) / 2
self.shipEffx = self.shipEffx - self.animCount
self.shipBmpx = self.padding + (rect.height - self.shipBmp.GetWidth()) / 2
self.shipBmpy = (rect.height - self.shipBmp.GetHeight()) / 2
- self.shipBmpx= self.shipBmpx - self.animCount
+ self.shipBmpx = self.shipBmpx - self.animCount
self.textStartx = self.shipEffx + self.shipEffBk.GetWidth() + self.padding
@@ -1826,10 +1817,10 @@ class FitItem(SFItem.SFBrowserItem):
mdc.SetFont(self.fontSmall)
- wlabel,hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
+ wlabel, hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
self.thoverx = self.toolbarx - self.padding - wlabel
- self.thovery = (rect.height - hlabel)/2
+ self.thovery = (rect.height - hlabel) / 2
self.thoverw = wlabel
def DrawItem(self, mdc):
@@ -1858,7 +1849,7 @@ class FitItem(SFItem.SFBrowserItem):
mdc.SetFont(self.fontNormal)
fitDate = time.localtime(self.timestamp)
- fitLocalDate = "%d/%02d/%02d %02d:%02d" % ( fitDate[0], fitDate[1], fitDate[2], fitDate[3], fitDate[4])
+ fitLocalDate = "%d/%02d/%02d %02d:%02d" % (fitDate[0], fitDate[1], fitDate[2], fitDate[3], fitDate[4])
pfdate = drawUtils.GetPartialText(mdc, fitLocalDate, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
mdc.DrawText(pfdate, self.textStartx, self.timestampy)
@@ -1885,13 +1876,13 @@ class FitItem(SFItem.SFBrowserItem):
fnEditSize = editCtl.GetSize()
wSize = self.GetSize()
fnEditPosX = end
- fnEditPosY = (wSize.height - fnEditSize.height)/2
+ fnEditPosY = (wSize.height - fnEditSize.height) / 2
if fnEditPosX < start:
- editCtl.SetSize((self.editWidth + fnEditPosX - start,-1))
- editCtl.SetPosition((start,fnEditPosY))
+ editCtl.SetSize((self.editWidth + fnEditPosX - start, -1))
+ editCtl.SetPosition((start, fnEditPosY))
else:
- editCtl.SetSize((self.editWidth,-1))
- editCtl.SetPosition((fnEditPosX,fnEditPosY))
+ editCtl.SetSize((self.editWidth, -1))
+ editCtl.SetPosition((fnEditPosX, fnEditPosY))
def GetState(self):
activeFitID = self.mainFrame.getActiveFit()
@@ -1902,7 +1893,7 @@ class FitItem(SFItem.SFBrowserItem):
else:
if activeFitID == self.fitID:
if self.highlighted:
- state = SFItem.SB_ITEM_SELECTED | SFItem.SB_ITEM_HIGHLIGHTED
+ state = SFItem.SB_ITEM_SELECTED | SFItem.SB_ITEM_HIGHLIGHTED
else:
state = SFItem.SB_ITEM_SELECTED
else:
@@ -1914,8 +1905,7 @@ class FitItem(SFItem.SFBrowserItem):
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
- activeFitID = self.mainFrame.getActiveFit()
-
+ # activeFitID = self.mainFrame.getActiveFit()
state = self.GetState()
sFactor = 0.2
@@ -1926,18 +1916,18 @@ class FitItem(SFItem.SFBrowserItem):
mFactor = 0.45
eFactor = 0.30
- elif state == SFItem.SB_ITEM_SELECTED | SFItem.SB_ITEM_HIGHLIGHTED:
+ elif state == SFItem.SB_ITEM_SELECTED | SFItem.SB_ITEM_HIGHLIGHTED:
eFactor = 0.3
mFactor = 0.4
elif state == SFItem.SB_ITEM_SELECTED:
- eFactor = (self.maxDelta - self.selectedDelta)/100 + 0.25
+ eFactor = (self.maxDelta - self.selectedDelta) / 100 + 0.25
else:
sFactor = 0
if self.bkBitmap:
if self.bkBitmap.eFactor == eFactor and self.bkBitmap.sFactor == sFactor and self.bkBitmap.mFactor == mFactor \
- and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight() :
+ and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight():
return
else:
del self.bkBitmap
@@ -1947,4 +1937,3 @@ class FitItem(SFItem.SFBrowserItem):
self.bkBitmap.sFactor = sFactor
self.bkBitmap.eFactor = eFactor
self.bkBitmap.mFactor = mFactor
-
diff --git a/gui/statsPane.py b/gui/statsPane.py
index 0b0b27413..9645f06dd 100644
--- a/gui/statsPane.py
+++ b/gui/statsPane.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,22 +15,24 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
-from gui.statsView import StatsView
+
from service.fit import Fit
-from gui.pyfatogglepanel import TogglePanel
-import gui.builtinStatsViews
-from gui.contextMenu import ContextMenu
-#import gui.builtinViews.fittingView as fv
import gui.mainFrame
+import gui.builtinStatsViews
import gui.globalEvents as GE
+# import gui.builtinViews.fittingView as fv
+from gui.statsView import StatsView
+from gui.contextMenu import ContextMenu
+from gui.pyfatogglepanel import TogglePanel
+
class StatsPane(wx.Panel):
- DEFAULT_VIEWS = ["resourcesViewFull", "resistancesViewFull" ,"rechargeViewFull", "firepowerViewFull",
+ DEFAULT_VIEWS = ["resourcesViewFull", "resistancesViewFull", "rechargeViewFull", "firepowerViewFull",
"capacitorViewFull", "targetingmiscViewFull",
- "priceViewFull",]
+ "priceViewFull"]
def fitChanged(self, event):
sFit = Fit.getInstance()
@@ -44,7 +46,7 @@ class StatsPane(wx.Panel):
# Use 25% smaller fonts if MAC or force font size to 8 for msw/linux
- if "__WXMAC__" in wx.PlatformInfo :
+ if "__WXMAC__" in wx.PlatformInfo:
self.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
else:
standardFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
@@ -57,7 +59,7 @@ class StatsPane(wx.Panel):
self.views = []
self.nameViewMap = {}
maxviews = len(self.DEFAULT_VIEWS)
- i=0
+ i = 0
for viewName in self.DEFAULT_VIEWS:
tp = TogglePanel(self)
contentPanel = tp.GetContentPane()
@@ -80,18 +82,18 @@ class StatsPane(wx.Panel):
mainSizer.Add(tp, 0, wx.EXPAND | wx.LEFT, 3)
if i < maxviews - 1:
mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, style=wx.HORIZONTAL), 0, wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, 2)
- i+=1
+ i += 1
tp.OnStateChange(tp.GetBestSize())
- width,height = self.GetSize()
- self.SetMinSize((width+9,-1))
-
+ width, height = self.GetSize()
+ self.SetMinSize((width + 9, -1))
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
def contextHandler(self, contentPanel):
viewName = contentPanel.viewName
+
def handler(event):
menu = ContextMenu.getMenu(None, (viewName,))
if menu is not None:
diff --git a/gui/statsView.py b/gui/statsView.py
index 33e2a74e9..2cd8db548 100644
--- a/gui/statsView.py
+++ b/gui/statsView.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,10 +15,12 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
+
class StatsView(object):
views = {}
+
def __init__(self):
pass
@@ -39,4 +41,5 @@ class StatsView(object):
def refreshPanel(self, fit):
raise NotImplementedError()
-from gui.builtinStatsViews import *
\ No newline at end of file
+
+from gui.builtinStatsViews import * # noqa
diff --git a/gui/updateDialog.py b/gui/updateDialog.py
index 21ccb0197..29381558e 100644
--- a/gui/updateDialog.py
+++ b/gui/updateDialog.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
from gui.bitmapLoader import BitmapLoader
diff --git a/gui/utils/animEffects.py b/gui/utils/animEffects.py
index 519fe60c4..67605919a 100644
--- a/gui/utils/animEffects.py
+++ b/gui/utils/animEffects.py
@@ -1,83 +1,98 @@
import math
-def OUT_CIRC (t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
- t = t/d -1
- return c * math.sqrt(1 - t*t) + b;
+
+def OUT_CIRC(t, b, c, d):
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
+
+ t = t / d - 1
+
+ return c * math.sqrt(1 - t * t) + b
+
def OUT_QUART(t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
- t = t/d -1
- return -c * ((t)*t*t*t - 1) + b;
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
+
+ t = t / d - 1
+
+ return -c * (t * t * t * t - 1) + b
+
def INOUT_CIRC(t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
t1 = t / (d / 2)
- if ((t / (d/2)) < 1):
- return -c/2 * (math.sqrt(1 - (t/(d/2))**2) - 1) + b
- return c/2 * (math.sqrt(1 - (t1-2)**2) + 1) + b;
-
-def IN_CUBIC (t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
- t = t/d
- return c*t*t*t + b
-
-def OUT_QUAD (t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
-
- t/=d
-
- return -c *(t)*(t-2) + b
-
-def OUT_BOUNCE (t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
-
- t/=d
-
- if ((t) < (1/2.75)):
- return c*(7.5625*t*t) + b
+ if (t / (d / 2)) < 1:
+ return -c / 2 * (math.sqrt(1 - (t / (d / 2)) ** 2) - 1) + b
else:
- if (t < (2/2.75)):
- t-=(1.5/2.75)
- return c*(7.5625*t*t + .75) + b
- else:
- if (t < (2.5/2.75)):
- t-=(2.25/2.75)
- return c*(7.5625*(t)*t + .9375) + b
- else:
- t-=(2.625/2.75)
- return c*(7.5625*(t)*t + .984375) + b
+ return c / 2 * (math.sqrt(1 - (t1 - 2) ** 2) + 1) + b
+
+
+def IN_CUBIC(t, b, c, d):
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
+
+ t = t / d
+
+ return c * t * t * t + b
+
+
+def OUT_QUAD(t, b, c, d):
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
+
+ t /= d
+
+ return -c * t * (t - 2) + b
+
+
+def OUT_BOUNCE(t, b, c, d):
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
+
+ t /= d
+
+ if t < (1 / 2.75):
+ return c * (7.5625 * t * t) + b
+ elif t < (2 / 2.75):
+ t -= (1.5 / 2.75)
+ return c * (7.5625 * t * t + .75) + b
+ elif t < (2.5 / 2.75):
+ t -= (2.25 / 2.75)
+ return c * (7.5625 * t * t + .9375) + b
+ else:
+ t -= (2.625 / 2.75)
+ return c * (7.5625 * t * t + .984375) + b
+
def INOUT_EXP(t, b, c, d):
- t=float(t)
- b=float(b)
- c=float(c)
- d=float(d)
- t1 = t / (d/2)
- if t==0:
- return b
- if t==d:
- return b+c
- if (t1) < 1:
- return c/2 * math.pow(2, 10 * (t1 - 1)) + b - c * 0.0005
- return c/2 * 1.0005 * (-math.pow(2, -10 * (t1-1)) + 2) + b
+ t = float(t)
+ b = float(b)
+ c = float(c)
+ d = float(d)
+
+ t1 = t / (d / 2)
+
+ if t == 0:
+ return b
+ elif t == d:
+ return b + c
+ elif t1 < 1:
+ return c / 2 * math.pow(2, 10 * (t1 - 1)) + b - c * 0.0005
+ else:
+ return c / 2 * 1.0005 * (-math.pow(2, -10 * (t1 - 1)) + 2) + b
diff --git a/gui/utils/animUtils.py b/gui/utils/animUtils.py
index 9ee81b03a..cefd3938b 100644
--- a/gui/utils/animUtils.py
+++ b/gui/utils/animUtils.py
@@ -1,9 +1,10 @@
import wx
import gui.utils.colorUtils as colorUtils
+
class LoadAnimation(wx.Window):
- def __init__ (self, parent, id = wx.ID_ANY, label = "", pos = wx.DefaultPosition, size = wx.DefaultSize, style = 0):
- wx.Window.__init__(self, parent, id, pos = pos, size = size, style = style)
+ def __init__(self, parent, id=wx.ID_ANY, label="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=0):
+ wx.Window.__init__(self, parent, id, pos=pos, size=size, style=style)
self.label = label
@@ -16,7 +17,6 @@ class LoadAnimation(wx.Window):
self.bars = 10
self.padding = 2
-
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
self.Bind(wx.EVT_TIMER, self.OnTimer)
self.Bind(wx.EVT_PAINT, self.OnPaint)
@@ -64,14 +64,14 @@ class LoadAnimation(wx.Window):
x = self.padding
- for bar in xrange(self.bars):
+ for bar in range(self.bars):
if bar != self.animCount:
dc.SetPen(wx.Pen(shadeColor))
dc.SetBrush(wx.Brush(shadeColor))
bh = barHeight
y = self.padding
else:
- barColor = colorUtils.GetSuitableColor(barColor,float(self.animCount/2)/10)
+ barColor = colorUtils.GetSuitableColor(barColor, float(self.animCount / 2) / 10)
dc.SetPen(wx.Pen(barColor))
dc.SetBrush(wx.Brush(barColor))
bh = rect.height
@@ -82,17 +82,17 @@ class LoadAnimation(wx.Window):
textColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOWTEXT)
dc.SetTextForeground(textColor)
- dc.DrawLabel(self.label,rect,wx.ALIGN_CENTER)
+ dc.DrawLabel(self.label, rect, wx.ALIGN_CENTER)
+
class WaitDialog(wx.Dialog):
- def __init__(self, parent, title = "Processing"):
- wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title = title, size=(300,30),
+ def __init__(self, parent, title="Processing"):
+ wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=title, size=(300, 30),
style=wx.NO_BORDER)
- mainSizer = wx.BoxSizer( wx.HORIZONTAL )
+ mainSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.progress = LoadAnimation(self,label = title, size=(300,30))
- mainSizer.Add( self.progress, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0 )
- self.SetSizer( mainSizer )
+ self.progress = LoadAnimation(self, label=title, size=(300, 30))
+ mainSizer.Add(self.progress, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 0)
+ self.SetSizer(mainSizer)
self.Layout()
self.CenterOnParent()
-
diff --git a/gui/utils/clipboard.py b/gui/utils/clipboard.py
index 17427c6e3..4fa05e1f3 100644
--- a/gui/utils/clipboard.py
+++ b/gui/utils/clipboard.py
@@ -1,5 +1,6 @@
import wx
+
def toClipboard(text):
clip = wx.TheClipboard
clip.Open()
@@ -7,6 +8,7 @@ def toClipboard(text):
clip.SetData(data)
clip.Close()
+
def fromClipboard():
clip = wx.TheClipboard
clip.Open()
@@ -16,4 +18,4 @@ def fromClipboard():
return data.GetText()
else:
clip.Close()
- return None
\ No newline at end of file
+ return None
diff --git a/gui/utils/colorUtils.py b/gui/utils/colorUtils.py
index ccf42ec18..a8d560159 100644
--- a/gui/utils/colorUtils.py
+++ b/gui/utils/colorUtils.py
@@ -1,25 +1,26 @@
import wx
import math
-#Brightens a color (wx.Colour), factor = [0,1]
def BrightenColor(color, factor):
+ # Brightens a color (wx.Colour), factor = [0,1]
- r,g,b = color
+ r, g, b = color
a = color.Alpha()
factor = min(max(factor, 0), 1)
- r+=(255-r)*factor
- b+=(255-b)*factor
- g+=(255-g)*factor
+ r += (255 - r) * factor
+ b += (255 - b) * factor
+ g += (255 - g) * factor
- return wx.Colour(r,g,b,a)
+ return wx.Colour(r, g, b, a)
-#Darkens a color (wx.Colour), factor = [0, 1]
def DarkenColor(color, factor):
- bkR ,bkG , bkB = color
+ # Darkens a color (wx.Colour), factor = [0, 1]
+
+ bkR, bkG, bkB = color
alpha = color.Alpha()
@@ -30,50 +31,50 @@ def DarkenColor(color, factor):
g = float(bkG * factor)
b = float(bkB * factor)
- r = min(max(r,0),255)
- b = min(max(b,0),255)
- g = min(max(g,0),255)
+ r = min(max(r, 0), 255)
+ b = min(max(b, 0), 255)
+ g = min(max(g, 0), 255)
return wx.Colour(r, g, b, alpha)
-#Calculates the brightness of a color, different options
-
def GetBrightnessO1(color):
- r,g,b = color
- return (0.299*r + 0.587*g + 0.114*b)
+ # Calculates the brightness of a color, different options
+
+ r, g, b = color
+ return (0.299 * r + 0.587 * g + 0.114 * b)
+
def GetBrightnessO2(color):
- r,g,b = color
- return math.sqrt( 0.241 * r * r + 0.691 * g * g + 0.068 * b * b )
+ r, g, b = color
+ return math.sqrt(0.241 * r * r + 0.691 * g * g + 0.068 * b * b)
-
-#Calculates a suitable color based on original color (wx.Colour), its brightness, a factor=[0,1] (darken/brighten by factor depending on calculated brightness)
-
def GetSuitableColor(color, factor):
+ # Calculates a suitable color based on original color (wx.Colour), its brightness, a factor=[0,1] (darken/brighten by factor depending on calculated brightness)
brightness = GetBrightnessO1(color)
- if brightness >129:
+ if brightness > 129:
return DarkenColor(color, factor)
else:
return BrightenColor(color, factor)
-
-#Calculates the color between a given start and end colors, delta = [0,1]
-#Colors are wx.Colour objects
-
def CalculateTransitionColor(startColor, endColor, delta):
- sR,sG,sB = startColor
- eR,eG,eB = endColor
+ """
+ Calculates the color between a given start and end colors, delta = [0,1]
+ Colors are wx.Colour objects
+ """
+
+ sR, sG, sB = startColor
+ eR, eG, eB = endColor
alphaS = startColor.Alpha()
alphaE = endColor.Alpha()
- tR = sR + (eR - sR) * delta
- tG = sG + (eG - sG) * delta
- tB = sB + (eB - sB) * delta
+ tR = sR + (eR - sR) * delta
+ tG = sG + (eG - sG) * delta
+ tB = sB + (eB - sB) * delta
- return wx.Colour(tR, tG, tB, (alphaS + alphaE)/2)
+ return wx.Colour(tR, tG, tB, (alphaS + alphaE) / 2)
diff --git a/gui/utils/compat.py b/gui/utils/compat.py
index d8177973b..bf49eb4aa 100644
--- a/gui/utils/compat.py
+++ b/gui/utils/compat.py
@@ -237,7 +237,7 @@ class OrderedDict(dict):
'''
if isinstance(other, OrderedDict):
- return len(self)==len(other) and self.items() == other.items()
+ return len(self) == len(other) and self.items() == other.items()
return dict.__eq__(self, other)
def __ne__(self, other):
diff --git a/gui/utils/drawUtils.py b/gui/utils/drawUtils.py
index 91e60eb98..91af8444e 100644
--- a/gui/utils/drawUtils.py
+++ b/gui/utils/drawUtils.py
@@ -2,17 +2,17 @@ import wx
import gui.utils.colorUtils as colorUtils
-def RenderGradientBar(windowColor, width, height, sFactor, eFactor, mFactor = None , fillRatio = 2):
+def RenderGradientBar(windowColor, width, height, sFactor, eFactor, mFactor=None, fillRatio=2):
- if sFactor == 0 and eFactor == 0 and mFactor == None:
- return DrawFilledBitmap(width,height, windowColor)
+ if sFactor == 0 and eFactor == 0 and mFactor is None:
+ return DrawFilledBitmap(width, height, windowColor)
gStart = colorUtils.GetSuitableColor(windowColor, sFactor)
if mFactor:
gMid = colorUtils.GetSuitableColor(windowColor, mFactor)
else:
- gMid = colorUtils.GetSuitableColor(windowColor, sFactor + (eFactor - sFactor) / 2)
+ gMid = colorUtils.GetSuitableColor(windowColor, sFactor + (eFactor - sFactor) / 2)
gEnd = colorUtils.GetSuitableColor(windowColor, eFactor)
@@ -20,7 +20,7 @@ def RenderGradientBar(windowColor, width, height, sFactor, eFactor, mFactor = No
def DrawFilledBitmap(width, height, color):
- canvas = wx.EmptyBitmap(width,height)
+ canvas = wx.EmptyBitmap(width, height)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
@@ -32,10 +32,11 @@ def DrawFilledBitmap(width, height, color):
return canvas
-def DrawGradientBar(width, height, gStart, gEnd, gMid = None, fillRatio = 4):
+
+def DrawGradientBar(width, height, gStart, gEnd, gMid=None, fillRatio=4):
# we need to have dimensions to draw
- #assert width > 0 and height > 0
- canvas = wx.EmptyBitmap(width,height)
+ # assert width > 0 and height > 0
+ canvas = wx.EmptyBitmap(width, height)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
@@ -48,7 +49,7 @@ def DrawGradientBar(width, height, gStart, gEnd, gMid = None, fillRatio = 4):
mdc.GradientFillLinear(r, gStart, gMid, wx.SOUTH)
r.top = r.height
- r.height = height * (fillRatio - 1)/fillRatio + (1 if height % fillRatio != 0 else 0)
+ r.height = height * (fillRatio - 1) / fillRatio + (1 if height % fillRatio != 0 else 0)
mdc.GradientFillLinear(r, gMid, gEnd, wx.SOUTH)
@@ -57,48 +58,51 @@ def DrawGradientBar(width, height, gStart, gEnd, gMid = None, fillRatio = 4):
return canvas
-def GetPartialText(dc, text , maxWidth, defEllipsis = "..."):
- ellipsis = defEllipsis
+def GetPartialText(dc, text, maxWidth, defEllipsis="..."):
+ ellipsis = defEllipsis
+ base_w, h = dc.GetTextExtent(ellipsis)
+
+ lenText = len(text)
+ drawntext = text
+ w, dummy = dc.GetTextExtent(text)
+
+ while lenText > 0:
+
+ if w + base_w <= maxWidth:
+ break
+
+ w_c, h_c = dc.GetTextExtent(drawntext[-1])
+ drawntext = drawntext[0:-1]
+ lenText -= 1
+ w -= w_c
+
+ while len(ellipsis) > 0 and w + base_w > maxWidth:
+ ellipsis = ellipsis[0:-1]
base_w, h = dc.GetTextExtent(ellipsis)
+ if len(text) > lenText:
+ return drawntext + ellipsis
+ else:
+ return text
- lenText = len(text)
- drawntext = text
- w, dummy = dc.GetTextExtent(text)
- while lenText > 0:
-
- if w + base_w <= maxWidth:
- break
-
- w_c, h_c = dc.GetTextExtent(drawntext[-1])
- drawntext = drawntext[0:-1]
- lenText -= 1
- w -= w_c
-
- while len(ellipsis) > 0 and w + base_w > maxWidth:
- ellipsis = ellipsis[0:-1]
- base_w, h = dc.GetTextExtent(ellipsis)
- if len(text) > lenText:
- return drawntext + ellipsis
- else:
- return text
-
-def GetRoundBitmap( w, h, r ):
- maskColor = wx.Color(0,0,0)
- shownColor = wx.Color(5,5,5)
- b = wx.EmptyBitmap(w,h)
+def GetRoundBitmap(w, h, r):
+ maskColor = wx.Color(0, 0, 0)
+ shownColor = wx.Color(5, 5, 5)
+ b = wx.EmptyBitmap(w, h)
dc = wx.MemoryDC(b)
dc.SetBrush(wx.Brush(maskColor))
- dc.DrawRectangle(0,0,w,h)
+ dc.DrawRectangle(0, 0, w, h)
dc.SetBrush(wx.Brush(shownColor))
dc.SetPen(wx.Pen(shownColor))
- dc.DrawRoundedRectangle(0,0,w,h,r)
+ dc.DrawRoundedRectangle(0, 0, w, h, r)
dc.SelectObject(wx.NullBitmap)
b.SetMaskColour(maskColor)
return b
-def GetRoundShape( w, h, r ):
- return wx.RegionFromBitmap( GetRoundBitmap(w,h,r) )
+
+def GetRoundShape(w, h, r):
+ return wx.RegionFromBitmap(GetRoundBitmap(w, h, r))
+
def CreateDropShadowBitmap(bitmap, opacity):
img = wx.ImageFromBitmap(bitmap)
diff --git a/gui/utils/exportHtml.py b/gui/utils/exportHtml.py
index 432dae740..ed9e8bc2b 100644
--- a/gui/utils/exportHtml.py
+++ b/gui/utils/exportHtml.py
@@ -5,8 +5,10 @@ from service.settings import HTMLExportSettings
from service.fit import Fit
from service.market import Market
+
class exportHtml():
_instance = None
+
@classmethod
def getInstance(cls):
if cls._instance is None:
@@ -25,6 +27,7 @@ class exportHtml():
self.thread = exportHtmlThread(callback)
self.thread.start()
+
class exportHtmlThread(threading.Thread):
def __init__(self, callback=False):
@@ -45,35 +48,30 @@ class exportHtmlThread(threading.Thread):
sFit = Fit.getInstance()
settings = HTMLExportSettings.getInstance()
- timestamp = time.localtime(time.time())
- localDate = "%d/%02d/%02d %02d:%02d" % (timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4])
-
- minimal = settings.getMinimalEnabled();
+ minimal = settings.getMinimalEnabled()
dnaUrl = "https://o.smium.org/loadout/dna/"
if minimal:
- HTML = self.generateMinimalHTML(sMkt,sFit, dnaUrl)
+ HTML = self.generateMinimalHTML(sMkt, sFit, dnaUrl)
else:
- HTML = self.generateFullHTML(sMkt,sFit, dnaUrl)
+ HTML = self.generateFullHTML(sMkt, sFit, dnaUrl)
try:
FILE = open(settings.getPath(), "w")
FILE.write(HTML.encode('utf-8'))
FILE.close()
except IOError:
- print "Failed to write to " + settings.getPath()
+ print("Failed to write to " + settings.getPath())
pass
if self.callback:
wx.CallAfter(self.callback, -1)
-
-
- def generateFullHTML(self,sMkt,sFit,dnaUrl):
+ def generateFullHTML(self, sMkt, sFit, dnaUrl):
""" Generate the complete HTML with styling and javascript """
timestamp = time.localtime(time.time())
localDate = "%d/%02d/%02d %02d:%02d" % (timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4])
-
+
HTML = """
@@ -152,7 +150,7 @@ class exportHtmlThread(threading.Thread):
$('a[data-dna]').each(function( index ) {
var dna = $(this).data('dna');
if (typeof CCPEVE !== 'undefined') { // inside IGB
- $(this).attr('href', 'javascript:CCPEVE.showFitting("'+dna+'");');}
+ $(this).attr('href', 'javascript:CCPEVE.showFitting("'+dna+'");');}
else { // outside IGB
$(this).attr('href', '%s'+dna); }
});
@@ -194,8 +192,7 @@ class exportHtmlThread(threading.Thread):
fit = fits[0]
try:
dnaFit = sFit.exportDna(fit[0])
- HTMLgroup += (
- '
' + ship.name + ": " + fit[1] + '\n')
+ HTMLgroup += ' ' + ship.name + ": " + fit[1] + '\n'
except:
pass
finally:
@@ -205,9 +202,10 @@ class exportHtmlThread(threading.Thread):
else:
# Ship group header
HTMLship = (
- ' \n'
- ' ' + ship.name + ' '+str(len(fits))+'
\n'
- ' \n')
+ ' - \n'
+ '
' + ship.name + ' ' + str(len(fits)) + '
\n'
+ ' \n'
+ )
for fit in fits:
if self.stopRunning:
@@ -227,12 +225,12 @@ class exportHtmlThread(threading.Thread):
if groupFits > 0:
# Market group header
HTML += (
- ' - \n'
- '
' + group.groupName + ' '+str(groupFits)+'
\n'
- ' \n'
- ' ')
+ ' - \n'
+ '
' + group.groupName + ' ' + str(groupFits) + '
\n'
+ ' \n'
+ ' '
+ )
HTML += """
@@ -243,7 +241,7 @@ class exportHtmlThread(threading.Thread):
return HTML
- def generateMinimalHTML(self,sMkt,sFit,dnaUrl):
+ def generateMinimalHTML(self, sMkt, sFit, dnaUrl):
""" Generate a minimal HTML version of the fittings, without any javascript or styling"""
categoryList = list(sMkt.getShipRoot())
categoryList.sort(key=lambda ship: ship.name)
@@ -252,7 +250,6 @@ class exportHtmlThread(threading.Thread):
HTML = ''
for group in categoryList:
# init market group string to give ships something to attach to
-
ships = list(sMkt.getShipList(group.ID))
ships.sort(key=lambda ship: ship.name)
@@ -265,8 +262,8 @@ class exportHtmlThread(threading.Thread):
if self.stopRunning:
return
try:
- dnaFit = sFit.exportDna(fit[0])
- HTML += ''+ship.name +': '+ fit[1]+ '
\n'
+ dnaFit = sFit.exportDna(fit[0])
+ HTML += '' + ship.name + ': ' + fit[1] + '
\n'
except:
continue
finally:
diff --git a/gui/utils/fonts.py b/gui/utils/fonts.py
index eb2dd95f5..0ee52fb7f 100644
--- a/gui/utils/fonts.py
+++ b/gui/utils/fonts.py
@@ -5,9 +5,11 @@ different wxPython versions
import wx
+
if 'wxMac' in wx.PlatformInfo:
sizes = (10, 11, 12)
else:
sizes = (7, 8, 9)
+
SMALL, NORMAL, BIG = sizes
diff --git a/gui/utils/numberFormatter.py b/gui/utils/numberFormatter.py
index 8b64d6147..bb1ca210a 100644
--- a/gui/utils/numberFormatter.py
+++ b/gui/utils/numberFormatter.py
@@ -1,5 +1,6 @@
import math
+
def formatAmount(val, prec=3, lowest=0, highest=0, currency=False, forceSign=False):
"""
Add suffix to value, transform value to match new suffix and round it.
@@ -34,7 +35,7 @@ def formatAmount(val, prec=3, lowest=0, highest=0, currency=False, forceSign=Fal
for key in posOrders:
# Find first suitable suffix and check if it's not above highest order
if abs(val) >= 10**key and key <= highest:
- mantissa, suffix = val/float(10**key), posSuffixMap[key]
+ mantissa, suffix = val / float(10 ** key), posSuffixMap[key]
# Do additional step to eliminate results like 999999 => 1000k
# If we're already using our greatest order, we can't do anything useful
if posOrders.index(key) == 0:
@@ -53,7 +54,7 @@ def formatAmount(val, prec=3, lowest=0, highest=0, currency=False, forceSign=Fal
# or equal to multiplier
if roundToPrec(mantissa, prec) >= orderDiff:
# Divide mantissa and use suffix of greater order
- mantissa, suffix = mantissa/orderDiff, posSuffixMap[prevKey]
+ mantissa, suffix = mantissa / orderDiff, posSuffixMap[prevKey]
# Otherwise consider current results as acceptable
break
# Take numbers between 0 and 1, and matching/below highest possible negative suffix
@@ -67,7 +68,7 @@ def formatAmount(val, prec=3, lowest=0, highest=0, currency=False, forceSign=Fal
nextKey = 0
# Check if mantissa with next suffix is in range [1, 1000)
if abs(val) < 10**(nextKey) and key >= lowest:
- mantissa, suffix = val/float(10**key), negSuffixMap[key]
+ mantissa, suffix = val / float(10**key), negSuffixMap[key]
# Do additional step to eliminate results like 0.9999 => 1000m
# Check if the key we're potentially switching to is greater than our
# upper boundary
@@ -81,7 +82,7 @@ def formatAmount(val, prec=3, lowest=0, highest=0, currency=False, forceSign=Fal
if roundToPrec(mantissa, prec) >= orderDiff:
# Divide mantissa and use suffix of greater order
# Use special handling of zero key as it's not on the map
- mantissa, suffix = mantissa/orderDiff, posSuffixMap[nextKey] if nextKey != 0 else ""
+ mantissa, suffix = mantissa / orderDiff, posSuffixMap[nextKey] if nextKey != 0 else ""
# Otherwise consider current results as acceptable
break
# Round mantissa according to our prec variable
@@ -91,6 +92,7 @@ def formatAmount(val, prec=3, lowest=0, highest=0, currency=False, forceSign=Fal
result = u"{0}{1}{2}".format(sign, mantissa, suffix)
return result
+
def roundToPrec(val, prec):
# We're not rounding integers anyway
# Also make sure that we do not ask to calculate logarithm of zero
diff --git a/gui/viewColumn.py b/gui/viewColumn.py
index c2ffff612..9afca36e7 100644
--- a/gui/viewColumn.py
+++ b/gui/viewColumn.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,10 +15,11 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import wx
+
class ViewColumn(object):
'''
Abstract class that columns can inherit from.
@@ -26,6 +27,7 @@ class ViewColumn(object):
they can be used as columns in a view.
'''
columns = {}
+
def __init__(self, fittingView):
self.fittingView = fittingView
self.columnText = ""
@@ -62,4 +64,5 @@ class ViewColumn(object):
def delayedText(self, display, colItem):
raise NotImplementedError()
-from gui.builtinViewColumns import *
+
+from gui.builtinViewColumns import * # noqa
diff --git a/service/attribute.py b/service/attribute.py
index 535bb23a2..12b9b264b 100644
--- a/service/attribute.py
+++ b/service/attribute.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import eos.db
diff --git a/service/character.py b/service/character.py
index f99b79692..db7bba12a 100644
--- a/service/character.py
+++ b/service/character.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import copy
import itertools
@@ -37,6 +37,7 @@ from eos.saveddata.implant import Implant as es_Implant
from eos.saveddata.character import Character as es_Character
from eos.saveddata.module import Slot as es_Slot, Module as es_Module
from eos.saveddata.fighter import Fighter as es_Fighter
+from service.fit import Fit as es_Fit
logger = logging.getLogger(__name__)
@@ -54,7 +55,7 @@ class CharacterImportThread(threading.Thread):
# we try to parse api XML data first
with open(path, mode='r') as charFile:
sheet = ParseXML(charFile)
- char = sCharacter.new(sheet.name+" (imported)")
+ char = sCharacter.new(sheet.name + " (imported)")
sCharacter.apiUpdateCharSheet(char.ID, sheet.skills)
except:
# if it's not api XML data, try this
@@ -72,7 +73,7 @@ class CharacterImportThread(threading.Thread):
"typeID": int(skill.getAttribute("typeID")),
"level": int(skill.getAttribute("level")),
})
- char = sCharacter.new(name+" (EVEMon)")
+ char = sCharacter.new(name + " (EVEMon)")
sCharacter.apiUpdateCharSheet(char.ID, skills)
except Exception, e:
print e.message
@@ -91,6 +92,8 @@ class SkillBackupThread(threading.Thread):
def run(self):
path = self.path
sCharacter = Character.getInstance()
+ sFit = es_Fit.getInstance()
+ fit = sFit.getFit(self.activeFit)
backupData = ""
if self.saveFmt == "xml" or self.saveFmt == "emp":
backupData = sCharacter.exportXml()
@@ -123,7 +126,7 @@ class Character(object):
self.all5()
def exportText(self):
- data = "Pyfa exported plan for \""+self.skillReqsDict['charname']+"\"\n"
+ data = "Pyfa exported plan for \"" + self.skillReqsDict['charname'] + "\"\n"
data += "=" * 79 + "\n"
data += "\n"
item = ""
@@ -139,7 +142,7 @@ class Character(object):
def exportXml(self):
root = ElementTree.Element("plan")
- root.attrib["name"] = "Pyfa exported plan for "+self.skillReqsDict['charname']
+ root.attrib["name"] = "Pyfa exported plan for " + self.skillReqsDict['charname']
root.attrib["revision"] = config.evemonMinVersion
sorts = ElementTree.SubElement(root, "sorting")
@@ -150,7 +153,7 @@ class Character(object):
skillsSeen = set()
for s in self.skillReqsDict['skills']:
- skillKey = str(s["skillID"])+"::"+s["skill"]+"::"+str(int(s["level"]))
+ skillKey = str(s["skillID"]) + "::" + s["skill"] + "::" + str(int(s["level"]))
if skillKey in skillsSeen:
pass # Duplicate skills confuse EVEMon
else:
@@ -164,7 +167,7 @@ class Character(object):
notes = ElementTree.SubElement(entry, "notes")
notes.text = entry.attrib["skill"]
- tree = ElementTree.ElementTree(root)
+ # tree = ElementTree.ElementTree(root)
data = ElementTree.tostring(root, 'utf-8')
prettydata = minidom.parseString(data).toprettyxml(indent=" ")
@@ -362,7 +365,7 @@ class Character(object):
return char.implants
def checkRequirements(self, fit):
- toCheck = []
+ # toCheck = []
reqs = {}
for thing in itertools.chain(fit.modules, fit.drones, fit.fighters, (fit.ship,)):
if isinstance(thing, es_Module) and thing.slot == es_Slot.RIG:
diff --git a/service/conversions/releaseApril2016.py b/service/conversions/releaseApril2016.py
index a20914179..bd14944ee 100644
--- a/service/conversions/releaseApril2016.py
+++ b/service/conversions/releaseApril2016.py
@@ -42,4 +42,4 @@ CONVERSIONS = {
"Unit W-634's Modified Drone Control Unit": "Unit W-634's Modified Fighter Support Unit",
"Heavy Shadow Serpentis Stasis Grappler": "Shadow Serpentis Heavy Stasis Grappler",
"Heavy Domination Stasis Grappler": "Domination Heavy Stasis Grappler",
-}
\ No newline at end of file
+}
diff --git a/service/conversions/releaseDecember15.py b/service/conversions/releaseDecember15.py
index adcd9e552..456dedb59 100644
--- a/service/conversions/releaseDecember15.py
+++ b/service/conversions/releaseDecember15.py
@@ -96,4 +96,4 @@ CONVERSIONS = {
"Micro S95a Remote Shield Booster": "'Micro' Remote Shield Booster",
"Large 'Atonement' Remote Shield Booster": "Large Murky Compact Remote Shield Booster",
"E50 Prototype Energy Vampire": "Medium Knave Scoped Energy Nosferatu",
-}
\ No newline at end of file
+}
diff --git a/service/conversions/releaseFeb2016.py b/service/conversions/releaseFeb2016.py
index 4314ef173..9b2e8d838 100644
--- a/service/conversions/releaseFeb2016.py
+++ b/service/conversions/releaseFeb2016.py
@@ -7,4 +7,3 @@ CONVERSIONS = {
"Capital Coaxial Remote Armor Repairer Blueprint": "CONCORD Capital Remote Armor Repairer Blueprint",
"Capital Murky Remote Shield Booster Blueprint": "CONCORD Capital Remote Shield Booster Blueprint",
}
-
diff --git a/service/conversions/releaseJan2016.py b/service/conversions/releaseJan2016.py
index e5f9beba3..eb0763d6b 100644
--- a/service/conversions/releaseJan2016.py
+++ b/service/conversions/releaseJan2016.py
@@ -10,4 +10,4 @@ CONVERSIONS = {
"'Distributor' Guidance Disruptor I Blueprint": "'Distributor' Guidance Disruptor Blueprint",
"Highstroke Scoped Guidance Disruptor I": "Highstroke Scoped Guidance Disruptor",
"A-211 Enduring Guidance Disruptor I": "A-211 Enduring Guidance Disruptor",
-}
\ No newline at end of file
+}
diff --git a/service/conversions/releaseMar2016.py b/service/conversions/releaseMar2016.py
index 2af04e1af..da7591da5 100644
--- a/service/conversions/releaseMar2016.py
+++ b/service/conversions/releaseMar2016.py
@@ -358,4 +358,4 @@ CONVERSIONS = {
"Wavelength Signal Enhancer I": "F-89 Compact Signal Amplifier",
"Type-D Attenuation Signal Augmentation": "F-89 Compact Signal Amplifier",
"Indirect Scanning Dampening Unit I": "Phased Muon Scoped Sensor Dampener",
-}
\ No newline at end of file
+}
diff --git a/service/damagePattern.py b/service/damagePattern.py
index 2d1132d5a..ac5fc8b44 100644
--- a/service/damagePattern.py
+++ b/service/damagePattern.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import copy
@@ -24,6 +24,8 @@ from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern
class ImportError(Exception):
pass
+
+
class DamagePattern():
instance = None
@classmethod
@@ -79,7 +81,7 @@ class DamagePattern():
if lenImports == 0:
raise ImportError("No patterns found for import")
if lenImports != num:
- raise ImportError("%d patterns imported from clipboard; %d had errors"%(num, num-lenImports))
+ raise ImportError("%d patterns imported from clipboard; %d had errors" % (num, num - lenImports))
def exportPatterns(self):
patterns = self.getDamagePatternList()
diff --git a/service/eveapi.py b/service/eveapi.py
index 66c31f625..0b02f2159 100644
--- a/service/eveapi.py
+++ b/service/eveapi.py
@@ -1,4 +1,4 @@
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
# eveapi - EVE Online API access
#
# Copyright (c)2007-2014 Jamie "Entity" van den Berge
@@ -24,7 +24,7 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE
#
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
#
# Version: 1.3.0 - 27 May 2014
# - Added set_user_agent() module-level function to set the User-Agent header
@@ -145,10 +145,10 @@
# Requirements:
# Python 2.4+
#
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
# This eveapi has been modified for pyfa.
#
# Specifically, the entire network request/response has been substituted for
@@ -156,7 +156,7 @@
#
# Additionally, various other parts have been changed to support urllib2
# responses instead of httplib
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
import urlparse
@@ -174,7 +174,8 @@ proxySSL = False
_default_useragent = "eveapi.py/1.3"
_useragent = None # use set_user_agent() to set this.
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
+
def set_cast_func(func):
"""Sets an alternative value casting function for the XML parser.
@@ -185,25 +186,30 @@ def set_cast_func(func):
global _castfunc
_castfunc = _autocast if func is None else func
+
def set_user_agent(user_agent_string):
"""Sets a User-Agent for any requests sent by the library."""
global _useragent
_useragent = user_agent_string
-class Error(StandardError):
+class Error(Exception):
def __init__(self, code, message):
self.code = code
self.args = (message.rstrip("."),)
+
def __unicode__(self):
return u'%s [code=%s]' % (self.args[0], self.code)
+
class RequestError(Error):
pass
+
class AuthenticationError(Error):
pass
+
class ServerError(Error):
pass
@@ -303,19 +309,16 @@ def _ParseXML(response, fromContext, storeFunc):
return result
-
-
-
-
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
# API Classes
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
+
_listtypes = (list, tuple, dict)
_unspecified = []
-class _Context(object):
+class _Context(object):
def __init__(self, root, path, parentDict, newKeywords=None):
self._root = root or self
self._path = path
@@ -356,20 +359,18 @@ class _Context(object):
class _AuthContext(_Context):
-
def character(self, characterID):
# returns a copy of this connection object but for every call made
# through it, it will add the folder "/char" to the url, and the
# characterID to the parameters passed.
- return _Context(self._root, self._path + "/char", self.parameters, {"characterID":characterID})
+ return _Context(self._root, self._path + "/char", self.parameters, {"characterID": characterID})
def corporation(self, characterID):
# same as character except for the folder "/corp"
- return _Context(self._root, self._path + "/corp", self.parameters, {"characterID":characterID})
+ return _Context(self._root, self._path + "/corp", self.parameters, {"characterID": characterID})
class _RootContext(_Context):
-
def auth(self, **kw):
if len(kw) == 2 and (("keyID" in kw and "vCode" in kw) or ("userID" in kw and "apiKey" in kw)):
return _AuthContext(self._root, self._path, self.parameters, kw)
@@ -397,7 +398,7 @@ class _RootContext(_Context):
if response is None:
network = Network.getInstance()
- req = self._scheme+'://'+self._host+path
+ req = self._scheme + '://' + self._host + path
response = network.request(req, network.EVE, kw)
@@ -423,9 +424,11 @@ class _RootContext(_Context):
# implementor is not handling fallbacks...
return _ParseXML(response, True, store and (lambda obj: cache.store(self._host, path, kw, response, obj)))
-#-----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
# XML Parser
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
+
def _autocast(key, value):
# attempts to cast an XML string to the most probable type.
@@ -452,11 +455,11 @@ def _autocast(key, value):
# couldn't cast. return string unchanged.
return value
+
_castfunc = _autocast
class _Parser(object):
-
def Parse(self, data, isStream=False):
self.container = self.root = None
self._cdata = False
@@ -475,7 +478,6 @@ class _Parser(object):
p.Parse(data, True)
return self.root
-
def tag_cdatasection_enter(self):
# encountered an explicit CDATA tag.
self._cdata = True
@@ -501,21 +503,20 @@ class _Parser(object):
if name == "rowset":
# for rowsets, use the given name
try:
- columns = attributes[attributes.index('columns')+1].replace(" ", "").split(",")
+ columns = attributes[attributes.index('columns') + 1].replace(" ", "").split(",")
except ValueError:
# rowset did not have columns tag set (this is a bug in API)
# columns will be extracted from first row instead.
columns = []
try:
- priKey = attributes[attributes.index('key')+1]
+ priKey = attributes[attributes.index('key') + 1]
this = IndexRowset(cols=columns, key=priKey)
except ValueError:
this = Rowset(cols=columns)
-
- this._name = attributes[attributes.index('name')+1]
- this.__catch = "row" # tag to auto-add to rowset.
+ this._name = attributes[attributes.index('name') + 1]
+ this.__catch = "row" # tag to auto-add to rowset.
else:
this = Element()
this._name = name
@@ -528,7 +529,7 @@ class _Parser(object):
if name != "eveapi":
raise RuntimeError("Invalid API response")
try:
- this.version = attributes[attributes.index("version")+1]
+ this.version = attributes[attributes.index("version") + 1]
except KeyError:
raise RuntimeError("Invalid API response")
self.root = this
@@ -541,16 +542,18 @@ class _Parser(object):
# such as rawQuantity in the assets lists.
# In either case the tag is assumed to be correct and the rowset's
# columns are overwritten with the tag's version, if required.
- numAttr = len(attributes)/2
+ numAttr = len(attributes) / 2
numCols = len(self.container._cols)
if numAttr < numCols and (attributes[-2] == self.container._cols[-1]):
# the row data is missing attributes that were defined in the rowset.
# missing attributes' values will be set to None.
fixed = []
- row_idx = 0; hdr_idx = 0; numAttr*=2
+ row_idx = 0
+ hdr_idx = 0
+ numAttr *= 2
for col in self.container._cols:
if col == attributes[row_idx]:
- fixed.append(_castfunc(col, attributes[row_idx+1]))
+ fixed.append(_castfunc(col, attributes[row_idx + 1]))
row_idx += 2
else:
fixed.append(None)
@@ -560,7 +563,7 @@ class _Parser(object):
if not self.container._cols or (numAttr > numCols):
# the row data contains more attributes than were defined.
self.container._cols = attributes[0::2]
- self.container.append([_castfunc(attributes[i], attributes[i+1]) for i in xrange(0, len(attributes), 2)])
+ self.container.append([_castfunc(attributes[i], attributes[i + 1]) for i in xrange(0, len(attributes), 2)])
#
this._isrow = True
@@ -611,7 +614,7 @@ class _Parser(object):
if this is self.root:
del this._attributes
- #this.__dict__.pop("_attributes", None)
+ # this.__dict__.pop("_attributes", None)
return
# we're done with current tag, so we can pop it off. This means that
@@ -651,7 +654,7 @@ class _Parser(object):
e._name = this._name
setattr(self.container, this._name, e)
for i in xrange(0, len(attributes), 2):
- setattr(e, attributes[i], attributes[i+1])
+ setattr(e, attributes[i], attributes[i + 1])
else:
# tag of the form: , treat as empty string.
setattr(self.container, this._name, "")
@@ -663,7 +666,7 @@ class _Parser(object):
# multiples of some tag or attribute. Code below handles this case.
elif isinstance(sibling, Rowset):
# its doppelganger is a rowset, append this as a row to that.
- row = [_castfunc(attributes[i], attributes[i+1]) for i in xrange(0, len(attributes), 2)]
+ row = [_castfunc(attributes[i], attributes[i + 1]) for i in xrange(0, len(attributes), 2)]
row.extend([getattr(this, col) for col in attributes2])
sibling.append(row)
elif isinstance(sibling, Element):
@@ -672,11 +675,11 @@ class _Parser(object):
# into a Rowset, adding the sibling element and this one.
rs = Rowset()
rs.__catch = rs._name = this._name
- row = [_castfunc(attributes[i], attributes[i+1]) for i in xrange(0, len(attributes), 2)]+[getattr(this, col) for col in attributes2]
+ row = [_castfunc(attributes[i], attributes[i + 1]) for i in xrange(0, len(attributes), 2)] + [getattr(this, col) for col in attributes2]
rs.append(row)
- row = [getattr(sibling, attributes[i]) for i in xrange(0, len(attributes), 2)]+[getattr(sibling, col) for col in attributes2]
+ row = [getattr(sibling, attributes[i]) for i in xrange(0, len(attributes), 2)] + [getattr(sibling, col) for col in attributes2]
rs.append(row)
- rs._cols = [attributes[i] for i in xrange(0, len(attributes), 2)]+[col for col in attributes2]
+ rs._cols = [attributes[i] for i in xrange(0, len(attributes), 2)] + [col for col in attributes2]
setattr(self.container, this._name, rs)
else:
# something else must have set this attribute already.
@@ -685,29 +688,31 @@ class _Parser(object):
# Now fix up the attributes and be done with it.
for i in xrange(0, len(attributes), 2):
- this.__dict__[attributes[i]] = _castfunc(attributes[i], attributes[i+1])
+ this.__dict__[attributes[i]] = _castfunc(attributes[i], attributes[i + 1])
return
-
-
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
# XML Data Containers
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
# The following classes are the various container types the XML data is
# unpacked into.
#
# Note that objects returned by API calls are to be treated as read-only. This
# is not enforced, but you have been warned.
-#-----------------------------------------------------------------------------
+# -----------------------------------------------------------------------------
+
class Element(object):
# Element is a namespace for attributes and nested tags
def __str__(self):
return "" % self._name
+
_fmt = u"%s:%s".__mod__
+
+
class Row(object):
# A Row is a single database record associated with a Rowset.
# The fields in the record are accessed as attributes by their respective
@@ -750,7 +755,7 @@ class Row(object):
try:
return self._row[self._cols.index(this)]
except:
- raise AttributeError, this
+ raise AttributeError(this)
def __getitem__(self, this):
return self._row[self._cols.index(this)]
@@ -823,7 +828,6 @@ class Rowset(object):
for line in self._rows:
yield [line[x] for x in i]
-
# -------------
def __init__(self, cols=None, rows=None):
@@ -871,7 +875,6 @@ class Rowset(object):
self._cols, self._rows = state
-
class IndexRowset(Rowset):
# An IndexRowset is a Rowset that keeps an index on a column.
#
@@ -888,7 +891,7 @@ class IndexRowset(Rowset):
if row is None:
if default:
return default[0]
- raise KeyError, key
+ raise KeyError(key)
return Row(self._cols, row)
# -------------
@@ -960,7 +963,7 @@ class FilterRowset(object):
if id in items:
items[id][row[idfield2]] = row
else:
- items[id] = {row[idfield2]:row}
+ items[id] = {row[idfield2]: row}
self._cols = cols
self.key = key
diff --git a/service/fit.py b/service/fit.py
index aed843cfa..f4727dc3c 100644
--- a/service/fit.py
+++ b/service/fit.py
@@ -17,10 +17,14 @@
# along with pyfa. If not, see .
# ===============================================================================
-
+import locale
import copy
+import threading
import logging
import wx
+from codecs import open
+
+import xml.parsers.expat
import eos.db
from eos.types import State, Slot, Module, Drone, Fighter, Fit as FitType
@@ -80,8 +84,8 @@ class Fit(object):
"showMarketShortcuts": False,
"enableGaugeAnimation": True,
"exportCharges": True,
- "openFitInNew": False
- }
+ "openFitInNew": False,
+ }
self.serviceFittingOptions = SettingsProvider.getInstance().getSettings(
"pyfaServiceFittingOptions", serviceFittingDefaultOptions)
@@ -532,7 +536,7 @@ class Fit(object):
# Gather modules and convert Cargo item to Module, silently return if not a module
try:
- cargoP = Module(cargo.item)
+ cargoP = es_Module(cargo.item)
cargoP.owner = fit
if cargoP.isValidState(State.ACTIVE):
cargoP.state = State.ACTIVE
@@ -665,7 +669,7 @@ class Fit(object):
break
'''
if fighter is None:
- fighter = Fighter(item)
+ fighter = es_Fighter(item)
used = fit.getSlotsUsed(fighter.slot)
total = fit.getNumSlots(fighter.slot)
standardAttackActive = False
@@ -756,7 +760,7 @@ class Fit(object):
d.amount = amount
d.amountActive = amount if active else 0
- newD = Drone(d.item)
+ newD = es_Drone(d.item)
newD.amount = total - amount
newD.amountActive = newD.amount if active else 0
l.append(newD)
diff --git a/service/fleet.py b/service/fleet.py
index 68c344189..a3f255336 100644
--- a/service/fleet.py
+++ b/service/fleet.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import copy
import eos.db
diff --git a/service/implantSet.py b/service/implantSet.py
index dcf954be2..add0808cc 100644
--- a/service/implantSet.py
+++ b/service/implantSet.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2016 Ryan Holmes
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import copy
@@ -27,8 +27,9 @@ from eos.saveddata.implantSet import ImplantSet as es_ImplantSet
class ImportError(Exception):
pass
-class ImplantSets():
+class ImplantSets(object):
instance = None
+
@classmethod
def getInstance(cls):
if cls.instance is None:
@@ -43,8 +44,7 @@ class ImplantSets():
return eos.db.getImplantSet(name)
def getImplants(self, setID):
- set = eos.db.getImplantSet(setID)
- return set.implants
+ return eos.db.getImplantSet(setID).implants
def addImplant(self, setID, itemID):
set = eos.db.getImplantSet(setID)
@@ -53,30 +53,29 @@ class ImplantSets():
eos.db.commit()
def removeImplant(self, setID, implant):
- set = eos.db.getImplantSet(setID)
- set.implants.remove(implant)
+ eos.db.getImplantSet(setID).implants.remove(implant)
eos.db.commit()
def newSet(self, name):
- s = es_ImplantSet()
- s.name = name
- eos.db.save(s)
- return s
+ implant_set = es_ImplantSet()
+ implant_set.name = name
+ eos.db.save(implant_set)
+ return implant_set
- def renameSet(self, s, newName):
- s.name = newName
- eos.db.save(s)
+ def renameSet(self, implant_set, newName):
+ implant_set.name = newName
+ eos.db.save(implant_set)
- def deleteSet(self, s):
- eos.db.remove(s)
+ def deleteSet(self, implant_set):
+ eos.db.remove(implant_set)
- def copySet(self, s):
- newS = copy.deepcopy(s)
+ def copySet(self, implant_set):
+ newS = copy.deepcopy(implant_set)
eos.db.save(newS)
return newS
- def saveChanges(self, s):
- eos.db.save(s)
+ def saveChanges(self, implant_set):
+ eos.db.save(implant_set)
def importSets(self, text):
sMkt = Market.getInstance()
@@ -101,16 +100,16 @@ class ImplantSets():
errors += 1
continue
- for set in self.getImplantSetList():
- lookup[set.name] = set
+ for implant_set in self.getImplantSetList():
+ lookup[implant_set.name] = implant_set
- for set in newSets:
- if set.name in lookup:
- match = lookup[set.name]
- for implant in set.implants:
+ for implant_set in newSets:
+ if implant_set.name in lookup:
+ match = lookup[implant_set.name]
+ for implant in implant_set.implants:
match.implants.append(es_Implant(implant.item))
else:
- eos.db.save(set)
+ eos.db.save(implant_set)
eos.db.commit()
@@ -118,7 +117,8 @@ class ImplantSets():
if lenImports == 0:
raise ImportError("No patterns found for import")
if errors > 0:
- raise ImportError("%d sets imported from clipboard; %d errors"%(lenImports, errors))
+ raise ImportError("%d sets imported from clipboard; %d errors" %
+ (lenImports, errors))
def exportSets(self):
patterns = self.getImplantSetList()
diff --git a/service/network.py b/service/network.py
index 8923f8b57..48769a48b 100644
--- a/service/network.py
+++ b/service/network.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2014 Ryan Holmes
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import urllib2
@@ -54,6 +54,7 @@ class Network():
UPDATE = 8
_instance = None
+
@classmethod
def getInstance(cls):
if cls._instance is None:
@@ -63,7 +64,7 @@ class Network():
def request(self, url, type, data=None):
# URL is required to be https as of right now
- #print "Starting request: %s\n\tType: %s\n\tPost Data: %s"%(url,type,data)
+ # print "Starting request: %s\n\tType: %s\n\tPost Data: %s"%(url,type,data)
# Make sure request is enabled
access = NetworkSettings.getInstance().getAccess()
@@ -73,7 +74,7 @@ class Network():
# Set up some things for the request
versionString = "{0} {1} - {2} {3}".format(config.version, config.tag, config.expansionName, config.expansionVersion)
- headers = {"User-Agent" : "pyfa {0} (Python-urllib2)".format(versionString)}
+ headers = {"User-Agent": "pyfa {0} (Python-urllib2)".format(versionString)}
proxy = NetworkSettings.getInstance().getProxySettings()
if proxy is not None:
diff --git a/service/port.py b/service/port.py
index 38257fda8..3f2751b4f 100644
--- a/service/port.py
+++ b/service/port.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2014 Ryan Holmes
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import re
import os
@@ -31,13 +31,13 @@ from codecs import open
import xml.parsers.expat
from eos import db
+from service.fit import Fit
import wx
-from eos.types import Fit, State, Slot, Module, Cargo, Ship, Drone, Implant, Booster, Citadel
+from eos.types import State, Slot, Module, Cargo, Fit, Ship, Drone, Implant, Booster, Citadel
from service.crest import Crest
from service.market import Market
-from service.fit import Fit
logger = logging.getLogger("pyfa.service.port")
@@ -48,15 +48,17 @@ except ImportError:
EFT_SLOT_ORDER = [Slot.LOW, Slot.MED, Slot.HIGH, Slot.RIG, Slot.SUBSYSTEM]
INV_FLAGS = {
- Slot.LOW: 11,
- Slot.MED: 19,
- Slot.HIGH: 27,
- Slot.RIG: 92,
- Slot.SUBSYSTEM: 125}
+ Slot.LOW: 11,
+ Slot.MED: 19,
+ Slot.HIGH: 27,
+ Slot.RIG: 92,
+ Slot.SUBSYSTEM: 125
+}
INV_FLAG_CARGOBAY = 5
INV_FLAG_DRONEBAY = 87
+
class Port(object):
def backupFits(self, path, callback):
thread = FitBackupThread(path, callback)
@@ -185,7 +187,7 @@ class Port(object):
# max length is 50 characters
name = ofit.name[:47] + '...' if len(ofit.name) > 50 else ofit.name
fit['name'] = name
- fit['ship']['href'] = "%sinventory/types/%d/"%(eve._authed_endpoint, ofit.ship.item.ID)
+ fit['ship']['href'] = "%sinventory/types/%d/" % (eve._authed_endpoint, ofit.ship.item.ID)
fit['ship']['id'] = ofit.ship.item.ID
fit['ship']['name'] = ''
@@ -213,7 +215,7 @@ class Port(object):
slotNum[slot] += 1
item['quantity'] = 1
- item['type']['href'] = "%sinventory/types/%d/"%(eve._authed_endpoint, module.item.ID)
+ item['type']['href'] = "%sinventory/types/%d/" % (eve._authed_endpoint, module.item.ID)
item['type']['id'] = module.item.ID
item['type']['name'] = ''
fit['items'].append(item)
@@ -228,7 +230,7 @@ class Port(object):
item = nested_dict()
item['flag'] = INV_FLAG_CARGOBAY
item['quantity'] = cargo.amount
- item['type']['href'] = "%sinventory/types/%d/"%(eve._authed_endpoint, cargo.item.ID)
+ item['type']['href'] = "%sinventory/types/%d/" % (eve._authed_endpoint, cargo.item.ID)
item['type']['id'] = cargo.item.ID
item['type']['name'] = ''
fit['items'].append(item)
@@ -237,7 +239,7 @@ class Port(object):
item = nested_dict()
item['flag'] = INV_FLAG_CARGOBAY
item['quantity'] = amount
- item['type']['href'] = "%sinventory/types/%d/"%(eve._authed_endpoint, chargeID)
+ item['type']['href'] = "%sinventory/types/%d/" % (eve._authed_endpoint, chargeID)
item['type']['id'] = chargeID
item['type']['name'] = ''
fit['items'].append(item)
@@ -246,7 +248,7 @@ class Port(object):
item = nested_dict()
item['flag'] = INV_FLAG_DRONEBAY
item['quantity'] = drone.amount
- item['type']['href'] = "%sinventory/types/%d/"%(eve._authed_endpoint, drone.item.ID)
+ item['type']['href'] = "%sinventory/types/%d/" % (eve._authed_endpoint, drone.item.ID)
item['type']['id'] = drone.item.ID
item['type']['name'] = ''
fit['items'].append(item)
@@ -372,12 +374,12 @@ class Port(object):
except ValueError:
f.ship = Citadel(sMkt.getItem(int(info[0])))
f.name = "{0} - DNA Imported".format(f.ship.item.name)
- except UnicodeEncodeError as e:
+ except UnicodeEncodeError:
def logtransform(s):
if len(s) > 10:
return s[:10] + "..."
return s
- logger.exception("Couldn't import ship data %r", [ logtransform(s) for s in info ])
+ logger.exception("Couldn't import ship data %r", [logtransform(s) for s in info])
return None
moduleList = []
diff --git a/service/prefetch.py b/service/prefetch.py
index 30cec80a1..c3705dd54 100644
--- a/service/prefetch.py
+++ b/service/prefetch.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import threading
import os
@@ -35,16 +35,15 @@ class PrefetchThread(threading.Thread):
except:
pass
+
prefetch = PrefetchThread()
prefetch.daemon = True
prefetch.start()
-########
# The following code does not belong here, however until we rebuild skeletons
# to include modified pyfa.py, this is the best place to put it. See GH issue
# #176
# @ todo: move this to pyfa.py
-########
# Make sure the saveddata db exists
if config.savePath and not os.path.exists(config.savePath):
diff --git a/service/price.py b/service/price.py
index fc2bf9bbf..e3d39d734 100644
--- a/service/price.py
+++ b/service/price.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import time
@@ -24,12 +24,12 @@ from xml.dom import minidom
from eos import db
from service.network import Network, TimeoutError
-VALIDITY = 24*60*60 # Price validity period, 24 hours
-REREQUEST = 4*60*60 # Re-request delay for failed fetches, 4 hours
-TIMEOUT = 15*60 # Network timeout delay for connection issues, 15 minutes
+VALIDITY = 24 * 60 * 60 # Price validity period, 24 hours
+REREQUEST = 4 * 60 * 60 # Re-request delay for failed fetches, 4 hours
+TIMEOUT = 15 * 60 # Network timeout delay for connection issues, 15 minutes
-class Price():
+class Price(object):
@classmethod
def fetchPrices(cls, prices):
"""Fetch all prices passed to this method"""
@@ -65,7 +65,7 @@ class Price():
# Base request URL
baseurl = "https://eve-central.com/api/marketstat"
- data.append(("usesystem", 30000142)) # Use Jita for market
+ data.append(("usesystem", 30000142)) # Use Jita for market
for typeID in toRequest: # Add all typeID arguments
data.append(("typeid", typeID))
diff --git a/service/pycrest/__init__.py b/service/pycrest/__init__.py
index f51a5440e..f083e1f84 100644
--- a/service/pycrest/__init__.py
+++ b/service/pycrest/__init__.py
@@ -5,6 +5,7 @@ class NullHandler(logging.Handler):
def emit(self, record):
pass
+
logger = logging.getLogger('pycrest')
logger.addHandler(NullHandler())
diff --git a/service/pycrest/compat.py b/service/pycrest/compat.py
index 06320069b..7484b41dd 100644
--- a/service/pycrest/compat.py
+++ b/service/pycrest/compat.py
@@ -21,4 +21,4 @@ def text_(s, encoding='latin-1', errors='strict'): # pragma: no cover
def bytes_(s, encoding='latin-1', errors='strict'): # pragma: no cover
if isinstance(s, text_type):
return s.encode(encoding, errors)
- return s
\ No newline at end of file
+ return s
diff --git a/service/pycrest/errors.py b/service/pycrest/errors.py
index 33b9ca9ae..4216deabb 100644
--- a/service/pycrest/errors.py
+++ b/service/pycrest/errors.py
@@ -1,2 +1,2 @@
class APIException(Exception):
- pass
\ No newline at end of file
+ pass
diff --git a/service/pycrest/eve.py b/service/pycrest/eve.py
index 221389b79..a46ad6c91 100644
--- a/service/pycrest/eve.py
+++ b/service/pycrest/eve.py
@@ -243,19 +243,18 @@ class EVE(APIConnection):
def temptoken_authorize(self, access_token=None, expires_in=0, refresh_token=None):
self.set_auth_values({'access_token': access_token,
- 'refresh_token': refresh_token,
- 'expires_in': expires_in})
+ 'refresh_token': refresh_token,
+ 'expires_in': expires_in})
class AuthedConnection(EVE):
-
def __call__(self):
if not self._data:
self._data = APIObject(self.get(self._endpoint), self)
return self._data
def whoami(self):
- #if 'whoami' not in self._cache:
+ # if 'whoami' not in self._cache:
# print "Setting this whoami cache"
# self._cache['whoami'] = self.get("%s/verify" % self._oauth_endpoint)
return self.get("%s/verify" % self._oauth_endpoint)
@@ -275,6 +274,7 @@ class AuthedConnection(EVE):
self.refr_authorize(self.refresh_token)
return self._session.delete(resource, params=params)
+
class APIObject(object):
def __init__(self, parent, connection):
self._dict = {}
diff --git a/service/pycrest/weak_ciphers.py b/service/pycrest/weak_ciphers.py
index 13a09abba..ad0adec03 100644
--- a/service/pycrest/weak_ciphers.py
+++ b/service/pycrest/weak_ciphers.py
@@ -20,8 +20,7 @@ except:
from urllib3.packages.ssl_match_hostname import match_hostname
-class WeakCiphersHTTPSConnection(
- urllib3.connection.VerifiedHTTPSConnection): # pragma: no cover
+class WeakCiphersHTTPSConnection(urllib3.connection.VerifiedHTTPSConnection): # pragma: no cover
# Python versions >=2.7.9 and >=3.4.1 do not (by default) allow ciphers
# with MD5. Unfortunately, the CREST public server _only_ supports
@@ -74,16 +73,20 @@ class WeakCiphersHTTPSConnection(
# Wrap socket using verification with the root certs in
# trusted_root_certs
- self.sock = ssl_.ssl_wrap_socket(conn, self.key_file, self.cert_file,
- cert_reqs=resolved_cert_reqs,
- ca_certs=self.ca_certs,
- server_hostname=hostname,
- ssl_version=resolved_ssl_version,
- ciphers=self.ciphers)
+ self.sock = ssl_.ssl_wrap_socket(
+ conn,
+ self.key_file,
+ self.cert_file,
+ cert_reqs=resolved_cert_reqs,
+ ca_certs=self.ca_certs,
+ server_hostname=hostname,
+ ssl_version=resolved_ssl_version,
+ ciphers=self.ciphers,
+ )
if self.assert_fingerprint:
ssl_.assert_fingerprint(self.sock.getpeercert(binary_form=True),
- self.assert_fingerprint)
+ self.assert_fingerprint)
elif resolved_cert_reqs != ssl.CERT_NONE \
and self.assert_hostname is not False:
cert = self.sock.getpeercert()
@@ -96,8 +99,7 @@ class WeakCiphersHTTPSConnection(
)
match_hostname(cert, self.assert_hostname or hostname)
- self.is_verified = (resolved_cert_reqs == ssl.CERT_REQUIRED
- or self.assert_fingerprint is not None)
+ self.is_verified = (resolved_cert_reqs == ssl.CERT_REQUIRED or self.assert_fingerprint is not None)
class WeakCiphersHTTPSConnectionPool(
@@ -110,22 +112,24 @@ class WeakCiphersPoolManager(urllib3.poolmanager.PoolManager):
def _new_pool(self, scheme, host, port):
if scheme == 'https':
- return WeakCiphersHTTPSConnectionPool(host, port,
- **(self.connection_pool_kw))
- return super(WeakCiphersPoolManager, self)._new_pool(scheme, host,
- port)
+ return WeakCiphersHTTPSConnectionPool(host, port, **(self.connection_pool_kw))
+ return super(WeakCiphersPoolManager, self)._new_pool(scheme, host, port)
class WeakCiphersAdapter(HTTPAdapter):
""""Transport adapter" that allows us to use TLS_RSA_WITH_RC4_128_MD5."""
- def init_poolmanager(self, connections, maxsize, block=False,
- **pool_kwargs):
+ def init_poolmanager(self, connections, maxsize, block=False, **pool_kwargs):
# Rewrite of the requests.adapters.HTTPAdapter.init_poolmanager method
# to use WeakCiphersPoolManager instead of urllib3's PoolManager
self._pool_connections = connections
self._pool_maxsize = maxsize
self._pool_block = block
- self.poolmanager = WeakCiphersPoolManager(num_pools=connections,
- maxsize=maxsize, block=block, strict=True, **pool_kwargs)
+ self.poolmanager = WeakCiphersPoolManager(
+ num_pools=connections,
+ maxsize=maxsize,
+ block=block,
+ strict=True,
+ **pool_kwargs
+ )
diff --git a/service/server.py b/service/server.py
index f65729a89..49e193cee 100644
--- a/service/server.py
+++ b/service/server.py
@@ -57,6 +57,7 @@ else {
'''
+
# https://github.com/fuzzysteve/CREST-Market-Downloader/
class AuthHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
@@ -73,6 +74,7 @@ class AuthHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def log_message(self, format, *args):
return
+
# http://code.activestate.com/recipes/425210-simple-stoppable-server-using-socket-timeout/
class StoppableHTTPServer(BaseHTTPServer.HTTPServer):
@@ -102,7 +104,7 @@ class StoppableHTTPServer(BaseHTTPServer.HTTPServer):
self.run = False
def handle_timeout(self):
- #logger.debug("Number of tries: %d"%self.tries)
+ # logger.debug("Number of tries: %d"%self.tries)
self.tries += 1
if self.tries == self.max_tries:
logger.debug("Server timed out waiting for connection")
@@ -117,6 +119,7 @@ class StoppableHTTPServer(BaseHTTPServer.HTTPServer):
pass
self.server_close()
+
if __name__ == "__main__":
httpd = StoppableHTTPServer(('', 6461), AuthHandler)
thread.start_new_thread(httpd.serve, ())
diff --git a/service/settings.py b/service/settings.py
index 186193033..579d484c2 100644
--- a/service/settings.py
+++ b/service/settings.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import cPickle
import os.path
@@ -23,13 +23,15 @@ import urllib2
import config
-class SettingsProvider():
+
+class SettingsProvider(object):
BASE_PATH = os.path.join(config.savePath or ".", "settings")
settings = {}
_instance = None
+
@classmethod
def getInstance(cls):
- if cls._instance == None:
+ if cls._instance is None:
cls._instance = SettingsProvider()
return cls._instance
@@ -72,7 +74,8 @@ class SettingsProvider():
for settings in self.settings.itervalues():
settings.save()
-class Settings():
+
+class Settings(object):
def __init__(self, location, info):
self.location = location
self.info = info
@@ -112,7 +115,7 @@ class Settings():
return self.info.items()
-class NetworkSettings():
+class NetworkSettings(object):
_instance = None
# constants for serviceNetworkDefaultSettings["mode"] parameter
@@ -122,7 +125,7 @@ class NetworkSettings():
@classmethod
def getInstance(cls):
- if cls._instance == None:
+ if cls._instance is None:
cls._instance = NetworkSettings()
return cls._instance
@@ -190,12 +193,11 @@ class NetworkSettings():
proxy = None
proxAddr = proxPort = ""
proxydict = urllib2.ProxyHandler().proxies
- txt = "Auto-detected: "
validPrefixes = ("http", "https")
for prefix in validPrefixes:
- if not prefix in proxydict:
+ if prefix not in proxydict:
continue
proxyline = proxydict[prefix]
proto = "{0}://".format(prefix)
@@ -238,22 +240,21 @@ class NetworkSettings():
self.serviceNetworkSettings["password"] = password
-
-"""
-Settings used by the HTML export feature.
-"""
-class HTMLExportSettings():
+class HTMLExportSettings(object):
+ """
+ Settings used by the HTML export feature.
+ """
_instance = None
@classmethod
def getInstance(cls):
- if cls._instance == None:
+ if cls._instance is None:
cls._instance = HTMLExportSettings()
return cls._instance
def __init__(self):
- serviceHTMLExportDefaultSettings = {"enabled": False, "path": config.pyfaPath + os.sep + 'pyfaFits.html', "minimal": False }
+ serviceHTMLExportDefaultSettings = {"enabled": False, "path": config.pyfaPath + os.sep + 'pyfaFits.html', "minimal": False}
self.serviceHTMLExportSettings = SettingsProvider.getInstance().getSettings("pyfaServiceHTMLExportSettings", serviceHTMLExportDefaultSettings)
def getEnabled(self):
@@ -262,29 +263,28 @@ class HTMLExportSettings():
def setEnabled(self, enabled):
self.serviceHTMLExportSettings["enabled"] = enabled
-
def getMinimalEnabled(self):
return self.serviceHTMLExportSettings["minimal"]
def setMinimalEnabled(self, minimal):
self.serviceHTMLExportSettings["minimal"] = minimal
-
def getPath(self):
return self.serviceHTMLExportSettings["path"]
def setPath(self, path):
self.serviceHTMLExportSettings["path"] = path
-"""
-Settings used by update notification
-"""
-class UpdateSettings():
+
+class UpdateSettings(object):
+ """
+ Settings used by update notification
+ """
_instance = None
@classmethod
def getInstance(cls):
- if cls._instance == None:
+ if cls._instance is None:
cls._instance = UpdateSettings()
return cls._instance
@@ -294,7 +294,7 @@ class UpdateSettings():
# Updates are completely suppressed via network settings
# prerelease - If True, suppress prerelease notifications
# version - Set to release tag that user does not want notifications for
- serviceUpdateDefaultSettings = {"prerelease": True, 'version': None }
+ serviceUpdateDefaultSettings = {"prerelease": True, 'version': None}
self.serviceUpdateSettings = SettingsProvider.getInstance().getSettings("pyfaServiceUpdateSettings", serviceUpdateDefaultSettings)
def get(self, type):
@@ -303,7 +303,8 @@ class UpdateSettings():
def set(self, type, value):
self.serviceUpdateSettings[type] = value
-class CRESTSettings():
+
+class CRESTSettings(object):
_instance = None
@classmethod
diff --git a/service/targetResists.py b/service/targetResists.py
index b98ec8b16..dc208e78a 100644
--- a/service/targetResists.py
+++ b/service/targetResists.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2014 Ryan Holmes
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import copy
@@ -81,7 +81,7 @@ class TargetResists(object):
if lenImports == 0:
raise ImportError("No patterns found for import")
if lenImports != num:
- raise ImportError("%d patterns imported from clipboard; %d had errors"%(num, num-lenImports))
+ raise ImportError("%d patterns imported from clipboard; %d had errors" % (num, num - lenImports))
def exportPatterns(self):
patterns = self.getTargetResistsList()
diff --git a/service/update.py b/service/update.py
index 8f498e724..2b594bbf8 100644
--- a/service/update.py
+++ b/service/update.py
@@ -1,4 +1,4 @@
-#===============================================================================
+# =============================================================================
# Copyright (C) 2014 Ryan Holmes
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see .
-#===============================================================================
+# =============================================================================
import threading
import json
@@ -28,6 +28,7 @@ import config
from service.network import Network
from service.settings import UpdateSettings
+
class CheckUpdateThread(threading.Thread):
def __init__(self, callback):
threading.Thread.__init__(self)
@@ -49,7 +50,7 @@ class CheckUpdateThread(threading.Thread):
continue
# Handle use-case of updating to suppressed version
- if self.settings.get('version') == 'v'+config.version:
+ if self.settings.get('version') == 'v' + config.version:
self.settings.set('version', None)
# Suppress version
@@ -63,15 +64,15 @@ class CheckUpdateThread(threading.Thread):
rVersion = release['tag_name'].replace('v', '', 1)
if config.tag is 'git' and not release['prerelease'] and self.versiontuple(rVersion) >= self.versiontuple(config.version):
- wx.CallAfter(self.callback, release) # git (dev/Singularity) -> Stable
+ wx.CallAfter(self.callback, release) # git (dev/Singularity) -> Stable
elif config.expansionName is not "Singularity":
if release['prerelease']:
- wx.CallAfter(self.callback, release) # Stable -> Singularity
+ wx.CallAfter(self.callback, release) # Stable -> Singularity
elif self.versiontuple(rVersion) > self.versiontuple(config.version):
- wx.CallAfter(self.callback, release) # Stable -> Stable
+ wx.CallAfter(self.callback, release) # Stable -> Stable
else:
if release['prerelease'] and rVersion > config.expansionVersion:
- wx.CallAfter(self.callback, release) # Singularity -> Singularity
+ wx.CallAfter(self.callback, release) # Singularity -> Singularity
break
except:
pass
@@ -79,10 +80,9 @@ class CheckUpdateThread(threading.Thread):
def versiontuple(self, v):
return tuple(map(int, (v.split("."))))
+
class Update():
instance = None
- def __init__(self):
- pass
def CheckUpdate(self, callback):
thread = CheckUpdateThread(callback)
@@ -90,6 +90,6 @@ class Update():
@classmethod
def getInstance(cls):
- if cls.instance == None:
+ if cls.instance is None:
cls.instance = Update()
return cls.instance
diff --git a/utils/compat.py b/utils/compat.py
index d8177973b..bf49eb4aa 100644
--- a/utils/compat.py
+++ b/utils/compat.py
@@ -237,7 +237,7 @@ class OrderedDict(dict):
'''
if isinstance(other, OrderedDict):
- return len(self)==len(other) and self.items() == other.items()
+ return len(self) == len(other) and self.items() == other.items()
return dict.__eq__(self, other)
def __ne__(self, other):
diff --git a/utils/timer.py b/utils/timer.py
index c1ca87a8b..41b5f78b7 100644
--- a/utils/timer.py
+++ b/utils/timer.py
@@ -1,5 +1,6 @@
import time
+
class Timer():
def __init__(self, name='', logger=None):
self.name = name
@@ -9,11 +10,11 @@ class Timer():
@property
def elapsed(self):
- return (time.time() - self.start)*1000
+ return (time.time() - self.start) * 1000
@property
def last(self):
- return (time.time() - self.__last)*1000
+ return (time.time() - self.__last) * 1000
def checkpoint(self, name=''):
text = u'Timer - {timer} - {checkpoint} - {last:.2f}ms ({elapsed:.2f}ms elapsed)'.format(
@@ -26,7 +27,7 @@ class Timer():
if self.logger:
self.logger.debug(text)
else:
- print text
+ print(text)
def __enter__(self):
return self