code cleanup

This commit is contained in:
blitzmann
2017-11-27 21:05:06 -05:00
parent 2365112292
commit 2936b88c3d
43 changed files with 193 additions and 172 deletions

1
.gitignore vendored
View File

@@ -118,3 +118,4 @@ ENV/
.idea
eos.iml
gitversion
.version

View File

@@ -1 +1 @@
v1.33.2-100-gc000b19
v1.33.2-104-g2365112

View File

@@ -48,6 +48,8 @@ def isFrozen():
return True
else:
return False
def __createDirs(path):
if not os.path.exists(path):
os.makedirs(path)
@@ -104,7 +106,7 @@ def defPaths(customSavePath=None):
__createDirs(savePath)
#if isFrozen():
# if isFrozen():
# os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(pyfaPath, "cacert.pem")
# os.environ["SSL_CERT_FILE"] = os.path.join(pyfaPath, "cacert.pem")
@@ -141,6 +143,7 @@ def defPaths(customSavePath=None):
from service.settings import EOSSettings
eos.config.settings = EOSSettings.getInstance().EOSSettings # this is kind of confusing, but whatever
def defLogging():
global debug
global logPath
@@ -230,6 +233,3 @@ class LoggerWriter(object):
# sys.stderr is the correct way to do it, but it seemed
# to work properly for me.
self.level(sys.stderr)

View File

@@ -756,7 +756,7 @@ class Fit(object):
# Loop through our run times here. These determine which effects are run in which order.
for runTime in ("early", "normal", "late"):
#pyfalog.debug("Run time: {0}", runTime)
# pyfalog.debug("Run time: {0}", runTime)
# Items that are unrestricted. These items are run on the local fit
# first and then projected onto the target fit it one is designated
u = [
@@ -795,7 +795,7 @@ class Fit(object):
# targetFit.register(item, origin=self)
item.calculateModifiedAttributes(targetFit, runTime, False, True)
#pyfalog.debug("Command Bonuses: {}".format(self.commandBonuses))
# pyfalog.debug("Command Bonuses: {}".format(self.commandBonuses))
# If we are calculating our local or projected fit and have command bonuses, apply them
if type != CalcType.COMMAND and self.commandBonuses:

View File

@@ -12,6 +12,7 @@ from service.market import Market
from service.attribute import Attribute
from gui.utils.numberFormatter import formatAmount
class ItemParams(wx.Panel):
def __init__(self, parent, stuff, item, context=None):
wx.Panel.__init__(self, parent)
@@ -226,7 +227,7 @@ class ItemParams(wx.Panel):
self.paramList.SetItem(index, 2, valueUnitDefault)
# @todo: pheonix, this lamda used cmp() which no longer exists in py3. Probably a better way to do this in the
# long run, take a look
self.paramList.SortItems(lambda id1, id2: (idNameMap[id1]>idNameMap[id2])-(idNameMap[id1]<idNameMap[id2]))
self.paramList.SortItems(lambda id1, id2: (idNameMap[id1] > idNameMap[id2]) - (idNameMap[id1] < idNameMap[id2]))
self.paramList.RefreshRows()
self.totalAttrsLabel.SetLabel("%d attributes. " % idCount)
self.Layout()
@@ -271,5 +272,3 @@ class ItemParams(wx.Panel):
return "%s %s" % (fvalue, override[1])
else:
return "%s %s" % (formatAmount(value, 3, 0), unitName)

View File

@@ -9,6 +9,7 @@ from service.market import Market
from service.attribute import Attribute
from gui.utils.numberFormatter import formatAmount
class ItemCompare(wx.Panel):
def __init__(self, parent, stuff, item, items, context=None):
# Start dealing with Price stuff to get that thread going
@@ -205,5 +206,3 @@ class ItemCompare(wx.Panel):
return "%s %s" % (fvalue, override[1])
else:
return "%s %s" % (formatAmount(value, 3, 0), unitName)

View File

@@ -51,5 +51,3 @@ class ItemDependents(wx.Panel):
itemIcon = -1
self.reqTree.AppendItem(child, "{}".format(item.name), itemIcon)

View File

@@ -5,7 +5,6 @@ import wx.html
import re
class ItemDescription(wx.Panel):
def __init__(self, parent, stuff, item):
wx.Panel.__init__(self, parent)
@@ -32,5 +31,3 @@ class ItemDescription(wx.Panel):
mainSizer.Add(self.description, 1, wx.ALL | wx.EXPAND, 0)
self.Layout()

View File

@@ -8,6 +8,7 @@ import wx
from .helpers import AutoListCtrl
class ItemEffects(wx.Panel):
def __init__(self, parent, stuff, item):
wx.Panel.__init__(self, parent)
@@ -127,5 +128,3 @@ class ItemEffects(wx.Panel):
self.Layout()
self.Thaw()
event.Skip()

View File

@@ -93,7 +93,7 @@ class ItemProperties(wx.Panel):
# We couldn't get a property for some reason. Skip it for now.
continue
self.paramList.SortItems(lambda id1, id2: (idNameMap[id1]>idNameMap[id2])-(idNameMap[id1]<idNameMap[id2]))
self.paramList.SortItems(lambda id1, id2: (idNameMap[id1] > idNameMap[id2]) - (idNameMap[id1] < idNameMap[id2]))
self.paramList.RefreshRows()
self.totalAttrsLabel.SetLabel("%d attributes. " % idCount)
self.Layout()

View File

@@ -37,5 +37,3 @@ class ItemRequirements(wx.Panel):
if skill.ID not in self.skillIdHistory:
self.getFullSkillTree(skill, child, sbIconId)
self.skillIdHistory.append(skill.ID)

View File

@@ -15,4 +15,3 @@ class ItemTraits(wx.Panel):
mainSizer.Add(self.traits, 1, wx.ALL | wx.EXPAND, 0)
self.Layout()

View File

@@ -9,7 +9,7 @@ from gui.utils.staticHelpers import DragDropHelper
from logbook import Logger
from gui.builtinMarketBrowser.events import *
from gui.builtinMarketBrowser.events import RECENTLY_USED_MODULES, MAX_RECENTLY_USED_MODULES, ItemSelected
pyfalog = Logger(__name__)

View File

@@ -1,7 +1,7 @@
import wx
from gui.cachingImageList import CachingImageList
from gui.builtinMarketBrowser.events import *
from gui.builtinMarketBrowser.events import RECENTLY_USED_MODULES
from logbook import Logger

View File

@@ -1,14 +1,13 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# noinspection PyPackageRequirements
import wx
import copy
from gui.preferenceView import PreferenceView
from gui.bitmap_loader import BitmapLoader
from gui.utils import color
from gui.utils.color import CalculateTransition
import gui.utils.draw as drawUtils
@@ -110,44 +109,45 @@ class PFGaugePreview(wx.Window):
self.Refresh()
def OnPaint(self, event):
rect = self.GetClientRect()
dc = wx.AutoBufferedPaintDC(self)
dc.SetBackground(wx.Brush(self.bkColor))
dc.Clear()
value = float(self.value)
if self.percS >= 100:
w = rect.width
else:
w = rect.width * (float(value) / 100)
r = copy.copy(rect)
r.width = w
color = color.CalculateTransitionColor(self.colorS, self.colorE, float(value) / 100)
if self.gradientStart > 0:
gcolor = color.BrightenColor(color, float(self.gradientStart) / 100)
gMid = color.BrightenColor(color, float(self.gradientStart / 2) / 100)
else:
gcolor = color.DarkenColor(color, float(-self.gradientStart) / 100)
gMid = color.DarkenColor(color, float(-self.gradientStart / 2) / 100)
gBmp = drawUtils.DrawGradientBar(r.width, r.height, gMid, color, gcolor)
dc.DrawBitmap(gBmp, 0, 0)
dc.SetFont(self.font)
r = copy.copy(rect)
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.DrawLabel(formatStr.format(value), r, wx.ALIGN_CENTER)
dc.SetTextForeground(wx.Colour(255, 255, 255))
dc.DrawLabel(formatStr.format(value), rect, wx.ALIGN_CENTER)
pass
# rect = self.GetClientRect()
# dc = wx.AutoBufferedPaintDC(self)
# dc.SetBackground(wx.Brush(self.bkColor))
# dc.Clear()
#
# value = float(self.value)
# if self.percS >= 100:
# w = rect.width
# else:
# w = rect.width * (float(value) / 100)
# r = copy.copy(rect)
# r.width = w
#
# color = CalculateTransitionColor(self.colorS, self.colorE, float(value) / 100)
# if self.gradientStart > 0:
# gcolor = color.BrightenColor(color, float(self.gradientStart) / 100)
# gMid = color.BrightenColor(color, float(self.gradientStart / 2) / 100)
# else:
# gcolor = color.DarkenColor(color, float(-self.gradientStart) / 100)
# gMid = color.DarkenColor(color, float(-self.gradientStart / 2) / 100)
#
# gBmp = drawUtils.DrawGradientBar(r.width, r.height, gMid, color, gcolor)
# dc.DrawBitmap(gBmp, 0, 0)
# dc.SetFont(self.font)
#
# r = copy.copy(rect)
# 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.DrawLabel(formatStr.format(value), r, wx.ALIGN_CENTER)
#
# dc.SetTextForeground(wx.Colour(255, 255, 255))
# dc.DrawLabel(formatStr.format(value), rect, wx.ALIGN_CENTER)
class PFGaugePref(PreferenceView):

View File

@@ -10,6 +10,7 @@ import gui.mainFrame
from service.settings import HTMLExportSettings
import wx.lib.agw.hyperlink
class PFHTMLExportPref(PreferenceView):
title = "HTML Export"
desc = ("HTML Export (File > Export HTML) allows you to export your entire fitting "

View File

@@ -8,7 +8,7 @@ import gui.utils.color as colorUtils
import gui.utils.draw as drawUtils
import gui.utils.fonts as fonts
from gui.bitmap_loader import BitmapLoader
from .events import *
from .events import Stage2Selected
pyfalog = Logger(__name__)

View File

@@ -13,7 +13,7 @@ import gui.mainFrame
import gui.utils.color as colorUtils
import gui.utils.draw as drawUtils
import gui.utils.fonts as fonts
from .events import *
from .events import ImportSelected, SearchSelected, FitSelected, BoosterListUpdated, Stage3Selected, FitRenamed, FitRemoved
from gui.bitmap_loader import BitmapLoader
from gui.builtinShipBrowser.pfBitmapFrame import PFBitmapFrame
from service.fit import Fit

View File

@@ -8,7 +8,7 @@ import gui.mainFrame
import gui.utils.color as colorUtils
import gui.utils.draw as drawUtils
import gui.utils.fonts as fonts
from .events import *
from .events import FitSelected, SearchSelected, ImportSelected, Stage1Selected, Stage2Selected, Stage3Selected
from gui.bitmap_loader import BitmapLoader
from service.fit import Fit
@@ -271,4 +271,3 @@ class NavigationPanel(SFItem.SFBrowserItem):
wx.PostEvent(self.Parent, ImportSelected(fits=data))
else:
wx.PostEvent(self.Parent, Stage1Selected())

View File

@@ -6,7 +6,7 @@ from logbook import Logger
import gui.utils.anim_effects as animEffects
import gui.utils.color as colorUtils
import gui.utils.draw as drawUtils
from .events import *
from .events import Stage2Selected
from gui.bitmap_loader import BitmapLoader
pyfalog = Logger(__name__)
@@ -270,4 +270,3 @@ class RaceSelector(wx.Window):
self.checkMaximize = False
event.Skip()

View File

@@ -8,7 +8,7 @@ import gui.mainFrame
import gui.utils.color as colorUtils
import gui.utils.draw as drawUtils
import gui.utils.fonts as fonts
from .events import *
from .events import Stage3Selected, Stage2Selected, Stage1Selected, FitSelected
from gui.bitmap_loader import BitmapLoader
from gui.contextMenu import ContextMenu
from service.fit import Fit

View File

@@ -24,7 +24,6 @@ from gui.utils.numberFormatter import formatAmount
from collections import OrderedDict
class TargetingMiscViewMinimal(StatsView):
name = "targetingMiscViewMinimal"

View File

@@ -25,7 +25,7 @@ import gui.mainFrame
from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED
import gui.display as d
from gui.contextMenu import ContextMenu
from gui.builtinShipBrowser.events import *
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED, EVT_FIT_REMOVED, FitSelected, EVT_FIT_SELECTED
import gui.multiSwitch
from eos.saveddata.mode import Mode
from eos.saveddata.module import Module, Slot, Rack
@@ -77,10 +77,10 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
self.multiSwitch.AddPage()
view = self.multiSwitch.GetSelectedPage()
if not isinstance(view, FittingView):
view = FittingView(self.multiSwitch)
print("###################### Created new view:"+repr(view))
print("###################### Created new view:" + repr(view))
self.multiSwitch.ReplaceActivePage(view)
view.fitSelected(event)
@@ -221,7 +221,7 @@ class FittingView(d.Display):
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
def Destroy(self):
print("+++++ Destroy "+repr(self))
print("+++++ Destroy " + repr(self))
print(self.parent.Unbind(EVT_NOTEBOOK_PAGE_CHANGED))
print(self.mainFrame.Unbind(GE.FIT_CHANGED))
print(self.mainFrame.Unbind(EVT_FIT_RENAMED))
@@ -312,7 +312,7 @@ class FittingView(d.Display):
event.Skip()
def fitSelected(self, event):
print('====== Fit Selected: '+repr(self)+str(bool(self)))
print('====== Fit Selected: ' + repr(self) + str(bool(self)))
if self.parent.IsActive(self):
fitID = event.fitID

View File

@@ -324,14 +324,14 @@ class SkillTreeView(wx.Panel):
tree.AppendColumn("Skill")
tree.AppendColumn("Level")
#tree.SetMainColumn(0)
# tree.SetMainColumn(0)
self.root = tree.GetRootItem()
# self.root = tree.AppendItem(root, "Skills")
#
# tree.SetItemText(self.root, 1, "Levels")
#tree.SetColumnWidth(0, 300)
# tree.SetColumnWidth(0, 300)
self.btnSecStatus = wx.Button(self, wx.ID_ANY, "Sec Status: {0:.2f}".format(char.secStatus or 0.0))
self.btnSecStatus.Bind(wx.EVT_BUTTON, self.onSecStatus)
@@ -622,7 +622,6 @@ class SkillTreeView(wx.Panel):
if parent[1] in dirtyGroups:
self.skillTreeListCtrl.SetItemImage(parentID, self.skillBookImageId)
event.Skip()

View File

@@ -27,6 +27,7 @@ import gui.globalEvents as GE
import gui.mainFrame
from service.character import Character
from service.fit import Fit
from gui.utils.clipboard import toClipboard
pyfalog = Logger(__name__)

View File

@@ -11,7 +11,7 @@
# tab index?). This will also help with finding close buttons.
# ToDo: Fix page preview code (PFNotebookPagePreview)
#
#===============================================================================
#= ==============================================================================
import wx
import wx.lib.newevent
@@ -28,6 +28,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
@@ -412,7 +413,7 @@ class _TabRenderer:
mdc.SelectObject(ebmp)
mdc.SetFont(self.font)
textSizeX, textSizeY = mdc.GetTextExtent(self.text)
totalSize = self.left_width + self.right_width + textSizeX + self.close_btn_width/2 + 16 + self.padding*2
totalSize = self.left_width + self.right_width + textSizeX + self.close_btn_width / 2 + 16 + self.padding* 2
mdc.SelectObject(wx.NullBitmap)
return totalSize, self.tab_height
@@ -512,7 +513,7 @@ class _TabRenderer:
x_offset = self.content_width \
+ self.left_width \
- self.ctab_close_bmp.GetWidth() / 2
y_offset = (self.tab_height - self.ctab_close_bmp.GetHeight())/2
y_offset = (self.tab_height - self.ctab_close_bmp.GetHeight()) / 2
self.close_region.Offset(x_offset, y_offset)
def InitColors(self):
@@ -580,8 +581,8 @@ class _TabRenderer:
mdc.DrawBitmap(
cbmp,
self.content_width + self.left_width - cbmp.GetWidth()/2,
(height - cbmp.GetHeight())/2)
self.content_width + self.left_width - cbmp.GetWidth() / 2,
(height - cbmp.GetHeight()) / 2)
mdc.SelectObject(wx.NullBitmap)
@@ -594,7 +595,6 @@ class _TabRenderer:
bmp = wx.Bitmap(img)
self.tab_bitmap = bmp
def __repr__(self):
return "_TabRenderer(text={}, disabled={}) at {}".format(
self.text, self.disabled, hex(id(self))
@@ -620,7 +620,7 @@ class _AddRenderer:
def GetPosition(self):
return self.position
def SetPosition(self,pos):
def SetPosition(self, pos):
self.position = pos
def GetSize(self):
@@ -869,7 +869,7 @@ class _TabsContainer(wx.Panel):
for tab in self.tabs:
if self.CheckTabClose(tab, mposx, mposy):
return
def DisableTab(self, tab, disabled=True):
tb_renderer = self.tabs[tab]
tb_renderer.disabled = disabled
@@ -1249,7 +1249,7 @@ class _TabsContainer(wx.Panel):
selected = None
for i in range(len(self.tabs) - 1, -1, -1):
tab = self.tabs[i]
width = tab.tab_width - self.inclination*2
width = tab.tab_width - self.inclination * 2
pos -= width
if not tab.IsSelected():
tab.SetPosition((pos, self.container_height - self.height))
@@ -1260,12 +1260,8 @@ class _TabsContainer(wx.Panel):
if selected is not skip_tab:
selected.SetPosition((selpos, self.container_height - self.height))
self.add_button.SetPosition((
round(tabsWidth)
+ self.inclination*2,
self.container_height
- self.height / 2
- self.add_button.GetHeight()/3))
self.add_button.SetPosition((round(tabsWidth) + self.inclination * 2,
self.container_height - self.height / 2 - self.add_button.GetHeight() / 3))
def OnLeaveWindow(self, event):
if self.start_drag and not self.dragging:
@@ -1292,7 +1288,7 @@ class _TabsContainer(wx.Panel):
if page.Snapshot():
self.preview_wnd = PFNotebookPagePreview(
self,
(mposx+3, mposy+3),
(mposx + 3, mposy + 3),
page.Snapshot(),
self.preview_tab.text)
self.preview_wnd.Show()
@@ -1332,13 +1328,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
@@ -1347,7 +1343,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)
@@ -1371,8 +1367,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):
@@ -1384,18 +1379,16 @@ class PFNotebookPagePreview(wx.Frame):
mdc.SetBackground(wx.Brush(color))
mdc.Clear()
font = wx.Font(10, wx.SWISS, wx.NORMAL,wx.NORMAL, False)
font = wx.Font(10, 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.DrawBitmap(self.bitmap, 0, 16)
mdc.SetPen(wx.Pen("#000000", width=1))

View File

@@ -16,10 +16,10 @@ import gui.globalEvents as GE
from logbook import Logger
import calendar
pyfalog = Logger(__name__)
from service.crest import Crest, CrestModes
pyfalog = Logger(__name__)
class CrestFittings(wx.Frame):
def __init__(self, parent):

View File

@@ -21,6 +21,11 @@
import wx
from logbook import Logger
import gc
import eos
import time
import threading
from gui.builtinShipBrowser.events import FitSelected
pyfalog = Logger(__name__)
@@ -48,14 +53,17 @@ class DevTools(wx.Dialog):
self.gcCollect.Bind(wx.EVT_BUTTON, self.gc_collect)
self.fitTest = wx.Button(self, wx.ID_ANY, "Test fits", wx.DefaultPosition, wx.DefaultSize, 0)
mainSizer.Add(self.fitTest, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
self.fitTest .Bind(wx.EVT_BUTTON, self.fit_test)
self.SetSizer(mainSizer)
self.Layout()
self.CenterOnParent()
self.Show()
def objects_by_id(self, evt):
input = self.id_get.GetValue()
if input.startswith("0x"):
@@ -77,3 +85,30 @@ class DevTools(wx.Dialog):
print(gc.collect())
print(gc.get_debug())
print(gc.get_stats())
def fit_test(self, evt):
fits = eos.db.getFitList()
self.thread = FitTestThread([x.ID for x in fits], self.Parent)
self.thread.start()
class FitTestThread(threading.Thread):
def __init__(self, fitIDs, mainFrame):
threading.Thread.__init__(self)
self.name = "FitTestThread"
self.mainFrame = mainFrame
self.stopRunning = False
self.fits = fitIDs
def stop(self):
self.stopRunning = True
def run(self):
# wait 1 second just in case a lot of modifications get made
if self.stopRunning:
return
for fit in self.fits:
time.sleep(1)
e = FitSelected(fitID=fit)
wx.PostEvent(self.mainFrame, e)

View File

@@ -39,7 +39,7 @@ class ErrorHandler(object):
with config.logging_setup.threadbound():
# Print the base level traceback
t = traceback.format_exception(exc_type, exc_value, exc_traceback)
pyfalog.critical("\n\n"+"".join(t))
pyfalog.critical("\n\n" + "".join(t))
if cls.__parent is None:
app = wx.App(False)
@@ -59,8 +59,6 @@ class ErrorHandler(object):
class ErrorFrame(wx.Frame):
def __init__(self, parent=None, error_title='Error!'):
v = sys.version_info
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title="pyfa error", pos=wx.DefaultPosition, size=wx.Size(500, 600),
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER | wx.STAY_ON_TOP)
@@ -98,7 +96,8 @@ class ErrorFrame(wx.Frame):
# mainSizer.AddSpacer((0, 5), 0, wx.EXPAND, 5)
self.errorTextCtrl = wx.TextCtrl(self, wx.ID_ANY, version_block.strip(), wx.DefaultPosition, (-1, 400), wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2 | wx.TE_DONTWRAP)
self.errorTextCtrl = wx.TextCtrl(self, wx.ID_ANY, version_block.strip(), wx.DefaultPosition,
(-1, 400), wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2 | wx.TE_DONTWRAP)
self.errorTextCtrl.SetFont(wx.Font(8, wx.FONTFAMILY_TELETYPE, wx.NORMAL, wx.NORMAL))
mainSizer.Add(self.errorTextCtrl, 0, wx.EXPAND | wx.ALL | wx.ALIGN_CENTER, 5)
self.errorTextCtrl.AppendText("\n")
@@ -113,9 +112,8 @@ class ErrorFrame(wx.Frame):
self.Show()
def OnClose(self, evt):
self.Hide()
def addException(self, text):
self.errorTextCtrl.AppendText("\n{}\n\n{}".format("#" * 20, text))
self.errorTextCtrl.AppendText("\n{}\n\n{}".format("#" * 20, text))

View File

@@ -137,6 +137,7 @@ class OpenFitsThread(threading.Thread):
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fits[-1], startup=2))
wx.CallAfter(self.callback)
# todo: include IPortUser again
class MainFrame(wx.Frame):
__instance = None
@@ -356,10 +357,9 @@ class MainFrame(wx.Frame):
event.Skip()
def ShowAboutBox(self, evt):
v = sys.version_info
info = wx.adv.AboutDialogInfo()
info.Name = "pyfa"
info.Version = config.getGitVersion() # gui.aboutData.versionString
info.Version = config.getGitVersion() # gui.aboutData.versionString
#
# try:
# import matplotlib

View File

@@ -28,11 +28,11 @@ import gui.globalEvents as GE
from gui.bitmap_loader import BitmapLoader
from logbook import Logger
pyfalog = Logger(__name__)
from service.crest import Crest
from service.crest import CrestModes
pyfalog = Logger(__name__)
class MainMenuBar(wx.MenuBar):
def __init__(self, mainFrame):

View File

@@ -1,4 +1,4 @@
#===============================================================================
# ===============================================================================
# PyfaGauge is a generic Gauge implementation tailored for pyfa (the Python
# Fitting Assistant). It uses the easeOutQuad equation from
# caurina.transitions.Tweener to do animations
@@ -11,7 +11,7 @@
# ToDo: possibly devise a way to determine transition percents on init
# (currently hardcoded)
#
#===============================================================================
# ===============================================================================
import copy
import wx
@@ -52,10 +52,10 @@ class PyGauge(wx.Window):
# transition colors used based on how full (or overfilled) the gauge is.
self.transition_colors = [
(wx.Colour(191, 191, 191), wx.Colour(96, 191, 0)), # < 0-100%
(wx.Colour(191, 167, 96), wx.Colour(255, 191, 0)), # < 100-101%
(wx.Colour(255, 191, 0), wx.Colour(255, 128, 0)), # < 101-103%
(wx.Colour(255, 128, 0), wx.Colour(255, 0, 0)) # < 103-105%
(wx.Colour(191, 191, 191), wx.Colour(96, 191, 0)), # < 0-100%
(wx.Colour(191, 167, 96), wx.Colour(255, 191, 0)), # < 100-101%
(wx.Colour(255, 191, 0), wx.Colour(255, 128, 0)), # < 101-103%
(wx.Colour(255, 128, 0), wx.Colour(255, 0, 0)) # < 103-105%
]
self.gradient_effect = -35
@@ -91,19 +91,18 @@ class PyGauge(wx.Window):
def GetBorderColour(self):
return self._border_colour
def SetBorderColour(self, colour: wx.Colour):
def SetBorderColour(self, colour):
self._border_colour = colour
def GetBarColour(self):
return self._bar_colour
def SetBarColour(self, colour: wx.Colour=None):
def SetBarColour(self, colour):
self._bar_colour = colour
def SetFractionDigits(self, digits):
self._fraction_digits = digits
def GetBarGradient(self):
if self._bar_gradient is None:
return None
@@ -119,7 +118,7 @@ class PyGauge(wx.Window):
else:
self._bar_gradient = list(gradient)
def GetBorderPadding(self) -> int:
def GetBorderPadding(self):
return self._border_padding
def SetBorderPadding(self, padding):
@@ -153,7 +152,7 @@ class PyGauge(wx.Window):
if reinit is False:
self._old_percentage = self._percentage
self._percentage = (self._value/self._max_range) * 100
self._percentage = (self._value / self._max_range) * 100
else:
self._old_percentage = self._percentage
self._percentage = 0
@@ -162,7 +161,7 @@ class PyGauge(wx.Window):
if animate:
self.Animate()
self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range if self._max_range >0.01 else 0))
self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range if self._max_range > 0.01 else 0))
def GetValue(self):
return self._value
@@ -178,7 +177,7 @@ class PyGauge(wx.Window):
if value < 0:
self._value = 0
self._percentage = (self._value/self._max_range) * 100
self._percentage = (self._value / self._max_range) * 100
if animate:
self.Animate()
@@ -270,16 +269,16 @@ class PyGauge(wx.Window):
# progress between the two transition ranges)
pv = value
if pv <= 100:
xv = pv/100
xv = pv / 100
transition = 0
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
@@ -301,7 +300,7 @@ class PyGauge(wx.Window):
gradient_mid = color_utils.Brighten(color, mid_factor)
else:
gradient_color = color_utils.Darken(color, color_factor * -1)
gradient_mid = color_utils.Darken(color, mid_factor * -1)
gradient_mid = color_utils.Darken(color, mid_factor * -1)
# draw bar
gradient_bitmap = draw.DrawGradientBar(
@@ -389,6 +388,7 @@ class PyGauge(wx.Window):
self.Refresh()
if __name__ == "__main__":
def frange(x, y, jump):
while x < y:
@@ -437,9 +437,7 @@ if __name__ == "__main__":
main_sizer.Add(panel)
self.SetSizer(main_sizer)
app = wx.App(redirect=False) # Error messages go to popup window
top = Frame("Test Chrome Tabs")
top.Show()
app.MainLoop()

View File

@@ -11,7 +11,7 @@ from gui.builtinShipBrowser.shipItem import ShipItem
from service.fit import Fit
from service.market import Market
from gui.builtinShipBrowser.events import *
from gui.builtinShipBrowser.events import EVT_SB_IMPORT_SEL, EVT_SB_STAGE1_SEL, EVT_SB_STAGE2_SEL, EVT_SB_STAGE3_SEL, EVT_SB_SEARCH_SEL
from gui.builtinShipBrowser.pfWidgetContainer import PFWidgetsContainer
from gui.builtinShipBrowser.navigationPanel import NavigationPanel
from gui.builtinShipBrowser.raceSelector import RaceSelector

View File

@@ -1,4 +1,4 @@
#===============================================================================
# ===============================================================================
# TogglePanel is based on PyCollapsiblePane - includes a few improvements
# such as adding items to header, lack of button implementation ("GTK
# expander" style is implemented with plain text with unicode arrows rather
@@ -10,7 +10,7 @@
#
# ToDo: Create animations for collapsing / expanding
#
#===============================================================================
# ===============================================================================
import wx
@@ -38,7 +38,7 @@ class TogglePanel (wx.Panel):
# Add arrow
self.header_arrow = wx.StaticText(self.header_panel, wx.ID_ANY,
"\u25bc", size=wx.Size((10, -1)))
header_sizer.Add(self.header_arrow, 0, wx.RIGHT, 5)
header_sizer.Add(self.header_arrow, 0, wx.RIGHT, 5)
# Add header text
self.header_label = wx.StaticText(self.header_panel, wx.ID_ANY, "")
@@ -120,7 +120,7 @@ class TogglePanel (wx.Panel):
self.parent.Fit()
def ToggleContent(self, event):
#self.Freeze()
# self.Freeze()
if self._toggled:
# If we are expanded, save previous size and collapse by setting
@@ -135,13 +135,14 @@ class TogglePanel (wx.Panel):
self._toggled = not self._toggled
#self.Thaw()
# self.Thaw()
if self.force_layout:
self.parent.Layout()
else:
self.OnStateChange(self.GetBestSize())
if __name__ == "__main__":
from wx.lib.inspection import InspectionTool
@@ -166,7 +167,7 @@ if __name__ == "__main__":
content_sizer = wx.BoxSizer(wx.HORIZONTAL)
header = wx.StaticText(content_panel, -1, "TogglePanel Test")
header.SetFont(wx.Font(10+(x*3), wx.SWISS, wx.NORMAL, wx.BOLD))
header.SetFont(wx.Font(10 + (x * 3), wx.SWISS, wx.NORMAL, wx.BOLD))
content_sizer.Add(header, 0, wx.ALL, 10)
content_panel.SetSizer(content_sizer)

View File

@@ -71,7 +71,6 @@ class UpdateDialog(wx.Dialog):
versionSizer.Add(self.versionText, 1, wx.ALL, 5)
mainSizer.Add(versionSizer, 0, wx.EXPAND, 0)
releaseDate = dateutil.parser.parse(self.releaseInfo['published_at'])

View File

@@ -2,7 +2,7 @@
import wx
def Brighten(color: wx.Colour, factor: [0, 1]):
def Brighten(color, factor):
""" Brightens a Color using a factor between 0 and 1"""
r, g, b, a = color
@@ -15,7 +15,7 @@ def Brighten(color: wx.Colour, factor: [0, 1]):
return wx.Colour(r, g, b, a)
def Darken(color: wx.Colour, factor: [0, 1]):
def Darken(color, factor):
""" Darkens a Color using a factor between 0 and 1"""
r, g, b, a = color
@@ -33,16 +33,16 @@ def Darken(color: wx.Colour, factor: [0, 1]):
return wx.Colour(r, g, b, a)
def _getBrightness(color: wx.Colour):
def _getBrightness(color):
"""
Calculates brightness of color
http://stackoverflow.com/a/596243/788054
"""
r, g, b, a = color
return 0.299*r + 0.587*g + 0.114*b
return 0.299 * r + 0.587 * g + 0.114 * b
def GetSuitable(color: wx.Colour, factor: [0, 1]):
def GetSuitable(color, factor: [0, 1]):
"""
Calculates a suitable color based on original color (wx.Colour), its
brightness, and a factor (darken/brighten by factor depending on
@@ -57,7 +57,7 @@ def GetSuitable(color: wx.Colour, factor: [0, 1]):
return Brighten(color, factor)
def CalculateTransition(s_color: wx.Colour, e_color: wx.Colour, delta: [0, 1]):
def CalculateTransition(s_color, e_color, delta):
"""
Calculates the color between a given start and end color using a delta
value between 0 and 1
@@ -70,4 +70,4 @@ def CalculateTransition(s_color: wx.Colour, e_color: wx.Colour, delta: [0, 1]):
tG = sG + (eG - sG) * delta
tB = sB + (eB - sB) * delta
return wx.Colour(tR, tG, tB, (sA + eA)/2)
return wx.Colour(tR, tG, tB, (sA + eA) / 2)

View File

@@ -6,14 +6,14 @@ from . import color
def RenderGradientBar(windowColor, width, height, sFactor, eFactor, mFactor=None , fillRatio=2):
if sFactor == 0 and eFactor == 0 and mFactor is None:
return DrawFilledBitmap(width,height, windowColor)
return DrawFilledBitmap(width, height, windowColor)
gStart = color.GetSuitable(windowColor, sFactor)
if mFactor:
gMid = color.GetSuitable(windowColor, mFactor)
else:
gMid = color.GetSuitable(windowColor, sFactor + (eFactor - sFactor) / 2)
gMid = color.GetSuitable(windowColor, sFactor + (eFactor - sFactor) / 2)
gEnd = color.GetSuitable(windowColor, eFactor)
@@ -21,7 +21,7 @@ def RenderGradientBar(windowColor, width, height, sFactor, eFactor, mFactor=None
def DrawFilledBitmap(width, height, color):
canvas = wx.Bitmap(width,height)
canvas = wx.Bitmap(width, height)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
@@ -33,8 +33,9 @@ def DrawFilledBitmap(width, height, color):
return canvas
def DrawGradientBar(width, height, gStart, gEnd, gMid=None, fillRatio=4):
canvas = wx.Bitmap(width,height)
canvas = wx.Bitmap(width, height)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
@@ -47,7 +48,7 @@ def DrawGradientBar(width, height, gStart, gEnd, gMid=None, fillRatio=4):
mdc.GradientFillLinear(r, gStart, gMid, wx.SOUTH)
r.SetTop(r.GetHeight())
r.SetHeight(height * (fillRatio - 1)/fillRatio + (1 if height % fillRatio != 0 else 0))
r.SetHeight(height * (fillRatio - 1) / fillRatio + (1 if height % fillRatio != 0 else 0))
mdc.GradientFillLinear(r, gMid, gEnd, wx.SOUTH)

14
pyfa.py
View File

@@ -28,22 +28,23 @@ import config
ascii_text = '''
++++++++++++++++++++++++++++++++++++++++++++++++++
__
/ _|
_ __ _ _ | |_ __ _
/ _|
_ __ _ _ | |
| '_ \ | | | || _|/ _` |
| |_) || |_| || | | (_| |
| .__/ \__, ||_| \__,_|
| | __/ |
|_| |___/
| | __/ |
|_| |___/
You are running a alpha/beta version of pyfa.
You are running a alpha/beta version of pyfa.
++++++++++++++++++++++++++++++++++++++++++++++++++
'''
print(ascii_text)
class PassThroughOptionParser(OptionParser):
"""
An unknown option pass-through implementation of OptionParser.
@@ -59,6 +60,7 @@ class PassThroughOptionParser(OptionParser):
# pyfalog.error("Bad startup option passed.")
largs.append(e.opt_str)
# Parse command line options
usage = "usage: %prog [--root]"
parser = PassThroughOptionParser(usage=usage)

View File

@@ -723,7 +723,8 @@ _fmt = "%s:%s".__mod__
def _cmp(self, a, b):
return (a>b)-(a<b)
return (a > b) - (a < b)
class Row(object):
# A Row is a single database record associated with a Rowset.
@@ -746,7 +747,6 @@ class Row(object):
def __eq__(self, other):
return self.__cmp__(other) == 0
def __cmp__(self, other):
if type(other) != type(self):
raise TypeError("Incompatible comparison type")

View File

@@ -18,8 +18,9 @@
# =============================================================================
import urllib.request, urllib.error, urllib.parse
import urllib.request, urllib.parse, urllib.error
import urllib.request
import urllib.error
import urllib.parse
import socket
from logbook import Logger

View File

@@ -50,9 +50,9 @@ from utils.strfunctions import sequential_rep, replace_ltgt
from abc import ABCMeta, abstractmethod
from service.crest import Crest
from collections import OrderedDict
pyfalog = Logger(__name__)
from collections import OrderedDict
EFT_SLOT_ORDER = [Slot.LOW, Slot.MED, Slot.HIGH, Slot.RIG, Slot.SUBSYSTEM]
INV_FLAGS = {

View File

@@ -5,9 +5,11 @@ import platform
version_block = ''
class PreCheckException(Exception):
pass
class PreCheckMessage():
def __init__(self, msg):
# wx may not be installed, in which case print to console. For all other prechecks, should pop up a MessageDialog
@@ -21,6 +23,7 @@ class PreCheckMessage():
finally:
print(msg)
def version_precheck():
global version_block
@@ -80,4 +83,4 @@ def version_precheck():
version_block += "\nDateutil version: {}".format(dateutil.__version__)
except:
msg = "pyfa requires the python-dateutil module. You can download python-dateutil form https://pypi.python.org/pypi/python-dateutil"
raise PreCheckException(msg)
raise PreCheckException(msg)

View File

@@ -19,7 +19,9 @@
import pickle
import os.path
import urllib.request, urllib.error, urllib.parse
import urllib.request
import urllib.error
import urllib.parse
import config
import eos.config