Adding Option to Change "total price" calculation Statview

Hint for module and total price provide detail informations
This commit is contained in:
Indiction
2019-03-16 12:56:10 +01:00
committed by DarkPhoenix
parent 54277ebbda
commit c02cccf415
3 changed files with 108 additions and 15 deletions

View File

@@ -3,7 +3,7 @@ import wx
from gui.preferenceView import PreferenceView from gui.preferenceView import PreferenceView
from gui.bitmap_loader import BitmapLoader from gui.bitmap_loader import BitmapLoader
from service.settings import StatViewSettings from service.settings import StatViewSettings, PriceMenuSettings
class PFStatViewPref(PreferenceView): class PFStatViewPref(PreferenceView):
@@ -12,6 +12,7 @@ class PFStatViewPref(PreferenceView):
def __init__(self): def __init__(self):
self.dirtySettings = False self.dirtySettings = False
self.settings = StatViewSettings.getInstance() self.settings = StatViewSettings.getInstance()
self.priceSettings = PriceMenuSettings.getInstance()
def refreshPanel(self, fit): def refreshPanel(self, fit):
pass pass
@@ -99,6 +100,28 @@ class PFStatViewPref(PreferenceView):
self.rbOutgoing.SetSelection(self.settings.get('outgoing')) self.rbOutgoing.SetSelection(self.settings.get('outgoing'))
rbSizerRow3.Add(self.rbOutgoing, 1, wx.TOP | wx.RIGHT, 5) rbSizerRow3.Add(self.rbOutgoing, 1, wx.TOP | wx.RIGHT, 5)
self.rbOutgoing.Bind(wx.EVT_RADIOBOX, self.OnOutgoingChange) self.rbOutgoing.Bind(wx.EVT_RADIOBOX, self.OnOutgoingChange)
self.tbTotalPriceBox = wx.StaticBoxSizer(wx.VERTICAL, panel, "Total Price Includes")
self.tbTotalPriceDrones = wx.CheckBox(panel, -1, "Drones", wx.DefaultPosition, wx.DefaultSize, 1)
self.tbTotalPriceDrones.SetValue(self.priceSettings.get("drones"))
self.tbTotalPriceCargo = wx.CheckBox(panel, -1, "Cargo", wx.DefaultPosition, wx.DefaultSize, 1)
self.tbTotalPriceCargo.SetValue(self.priceSettings.get("cargo"))
self.tbTotalPriceImplant = wx.CheckBox(panel, -1, "Implants", wx.DefaultPosition, wx.DefaultSize, 1)
self.tbTotalPriceImplant.SetValue(self.priceSettings.get("character")) #TODO: Value sometimes loaded wrong
self.tbTotalPriceBox.AddSpacer(5)
self.tbTotalPriceBox.Add(self.tbTotalPriceDrones)
self.tbTotalPriceBox.AddSpacer(10)
self.tbTotalPriceBox.Add(self.tbTotalPriceCargo)
self.tbTotalPriceBox.AddSpacer(10)
self.tbTotalPriceBox.Add(self.tbTotalPriceImplant)
self.tbTotalPriceBox.RecalcSizes()
rbSizerRow3.Add(self.tbTotalPriceBox, 1, wx.TOP | wx.RIGHT, 5)
self.tbTotalPriceDrones.Bind(wx.EVT_CHECKBOX, self.OnTotalPriceDroneChange)
self.tbTotalPriceCargo.Bind(wx.EVT_CHECKBOX, self.OnTotalPriceCargoChange)
self.tbTotalPriceImplant.Bind(wx.EVT_CHECKBOX, self.OnTotalPriceImplantChange)
mainSizer.Add(rbSizerRow3, 1, wx.ALL | wx.EXPAND, 0)
# We don't have views for these.....yet # We don't have views for these.....yet
''' '''
self.rbMining = wx.RadioBox(panel, -1, "Mining", wx.DefaultPosition, wx.DefaultSize, self.rbMining = wx.RadioBox(panel, -1, "Mining", wx.DefaultPosition, wx.DefaultSize,
@@ -114,8 +137,6 @@ class PFStatViewPref(PreferenceView):
self.rbDrones.Bind(wx.EVT_RADIOBOX, self.OnDroneChange) self.rbDrones.Bind(wx.EVT_RADIOBOX, self.OnDroneChange)
''' '''
mainSizer.Add(rbSizerRow3, 1, wx.ALL | wx.EXPAND, 0)
panel.SetSizer(mainSizer) panel.SetSizer(mainSizer)
panel.Layout() panel.Layout()
@@ -149,6 +170,16 @@ class PFStatViewPref(PreferenceView):
def OnDroneChange(self, event): def OnDroneChange(self, event):
self.settings.set('drones', event.GetInt()) self.settings.set('drones', event.GetInt())
def OnTotalPriceDroneChange(self, event):
self.priceSettings.set('drones', event.GetInt())
def OnTotalPriceCargoChange(self, event):
self.priceSettings.set('cargo', event.GetInt())
def OnTotalPriceImplantChange(self, event):
self.priceSettings.set('character', event.GetInt())
def getImage(self): def getImage(self):
return BitmapLoader.getBitmap("settings_stats", "gui") return BitmapLoader.getBitmap("settings_stats", "gui")

View File

@@ -24,6 +24,7 @@ from gui.bitmap_loader import BitmapLoader
from gui.utils.numberFormatter import formatAmount from gui.utils.numberFormatter import formatAmount
from service.price import Fit, Price from service.price import Fit, Price
from service.settings import PriceMenuSettings from service.settings import PriceMenuSettings
from eos.const import FittingSlot
class PriceViewFull(StatsView): class PriceViewFull(StatsView):
@@ -90,6 +91,13 @@ class PriceViewFull(StatsView):
ship_price = 0 ship_price = 0
module_price = 0 module_price = 0
module_slot_price = {
FittingSlot.HIGH: 0,
FittingSlot.MED: 0,
FittingSlot.LOW: 0,
FittingSlot.RIG: 0,
FittingSlot.SUBSYSTEM: 0
}
drone_price = 0 drone_price = 0
fighter_price = 0 fighter_price = 0
cargo_price = 0 cargo_price = 0
@@ -103,6 +111,8 @@ class PriceViewFull(StatsView):
for module in fit.modules: for module in fit.modules:
if not module.isEmpty: if not module.isEmpty:
module_price += module.item.price.price module_price += module.item.price.price
if module.slot in module_slot_price:
module_slot_price[module.slot] += module.item.price.price
if fit.drones: if fit.drones:
for drone in fit.drones: for drone in fit.drones:
@@ -138,23 +148,45 @@ class PriceViewFull(StatsView):
total_price += booster_price + implant_price total_price += booster_price + implant_price
self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True)) self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True))
self.labelPriceShip.SetToolTip(wx.ToolTip('{:,.2f}'.format(ship_price))) self.labelPriceShip.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(ship_price)))
self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(module_price, 3, 3, 9, currency=True)) self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(module_price, 3, 3, 9, currency=True))
self.labelPriceFittings.SetToolTip(wx.ToolTip('{:,.2f}'.format(module_price))) self.labelPriceFittings.SetToolTip(wx.ToolTip('Highs:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.HIGH])+
'Meds:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.MED]) +
self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(total_price, 3, 3, 9, currency=True)) 'Lows:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.LOW]) +
self.labelPriceTotal.SetToolTip(wx.ToolTip('{:,.2f}'.format(total_price))) 'Rigs:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.RIG]) +
'Subsystems:\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.SUBSYSTEM])+
'Total:\t\t{:,.2f} ISK \n'.format(module_price)))
self.labelPriceDrones.SetLabel("%s ISK" % formatAmount(drone_price + fighter_price, 3, 3, 9, currency=True)) self.labelPriceDrones.SetLabel("%s ISK" % formatAmount(drone_price + fighter_price, 3, 3, 9, currency=True))
self.labelPriceDrones.SetToolTip(wx.ToolTip('{:,.2f}'.format(drone_price + fighter_price))) self.labelPriceDrones.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(drone_price + fighter_price)))
self.labelPriceCargobay.SetLabel("%s ISK" % formatAmount(cargo_price, 3, 3, 9, currency=True)) self.labelPriceCargobay.SetLabel("%s ISK" % formatAmount(cargo_price, 3, 3, 9, currency=True))
self.labelPriceCargobay.SetToolTip(wx.ToolTip('{:,.2f}'.format(cargo_price))) self.labelPriceCargobay.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(cargo_price)))
self.labelPriceCharacter.SetLabel( self.labelPriceCharacter.SetLabel(
"%s ISK" % formatAmount(booster_price + implant_price, 3, 3, 9, currency=True)) "%s ISK" % formatAmount(booster_price + implant_price, 3, 3, 9, currency=True))
self.labelPriceCharacter.SetToolTip(wx.ToolTip('{:,.2f}'.format(booster_price + implant_price))) self.labelPriceCharacter.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(booster_price + implant_price)))
self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(total_price, 3, 3, 9, currency=True))
self.labelPriceTotal.SetToolTip(wx.ToolTip('Ship + Modules:\t{:,.2f} ISK \n'.format(ship_price +
module_price) +
'+ Drones:\t{:,.2f} ISK \n'.format(ship_price +
module_price +
drone_price +
fighter_price) +
'+ Cargo:\t\t{:,.2f} ISK \n'.format(ship_price +
module_price +
drone_price +
fighter_price +
cargo_price) +
'+ Implants:\t{:,.2f} ISK'.format(ship_price +
module_price +
drone_price +
fighter_price +
cargo_price +
implant_price)))
def processPrices(self, prices): def processPrices(self, prices):
self.refreshPanelPrices(self.fit) self.refreshPanelPrices(self.fit)

View File

@@ -24,6 +24,7 @@ from gui.bitmap_loader import BitmapLoader
from gui.utils.numberFormatter import formatAmount from gui.utils.numberFormatter import formatAmount
from service.price import Fit, Price from service.price import Fit, Price
from service.settings import PriceMenuSettings from service.settings import PriceMenuSettings
from eos.const import FittingSlot
class PriceViewMinimal(StatsView): class PriceViewMinimal(StatsView):
@@ -84,6 +85,13 @@ class PriceViewMinimal(StatsView):
ship_price = 0 ship_price = 0
module_price = 0 module_price = 0
module_slot_price = {
FittingSlot.HIGH: 0,
FittingSlot.MED: 0,
FittingSlot.LOW: 0,
FittingSlot.RIG: 0,
FittingSlot.SUBSYSTEM: 0
}
drone_price = 0 drone_price = 0
fighter_price = 0 fighter_price = 0
cargo_price = 0 cargo_price = 0
@@ -97,6 +105,8 @@ class PriceViewMinimal(StatsView):
for module in fit.modules: for module in fit.modules:
if not module.isEmpty: if not module.isEmpty:
module_price += module.item.price.price module_price += module.item.price.price
if module.slot in module_slot_price:
module_slot_price[module.slot] += module.item.price.price
if fit.drones: if fit.drones:
for drone in fit.drones: for drone in fit.drones:
@@ -134,14 +144,34 @@ class PriceViewMinimal(StatsView):
total_price += booster_price + implant_price total_price += booster_price + implant_price
self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True)) self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True))
self.labelPriceShip.SetToolTip(wx.ToolTip('{:,.2f}'.format(ship_price))) self.labelPriceShip.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(ship_price)))
self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(fitting_price, 3, 3, 9, currency=True)) self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(fitting_price, 3, 3, 9, currency=True))
self.labelPriceFittings.SetToolTip(wx.ToolTip('{:,.2f}'.format(fitting_price))) self.labelPriceFittings.SetToolTip(wx.ToolTip('Highs:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.HIGH])+
'Meds:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.MED]) +
'Lows:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.LOW]) +
'Rigs:\t\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.RIG]) +
'Subsystems:\t{:,.2f} ISK \n'.format(module_slot_price[FittingSlot.SUBSYSTEM])+
'Total:\t\t{:,.2f} ISK \n'.format(fitting_price)))
self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(total_price, 3, 3, 9, currency=True)) self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(total_price, 3, 3, 9, currency=True))
self.labelPriceTotal.SetToolTip(wx.ToolTip('{:,.2f}'.format(total_price))) self.labelPriceTotal.SetToolTip(wx.ToolTip('Ship + Modules:\t{:,.2f} ISK \n'.format(ship_price +
module_price) +
'+ Drones:\t{:,.2f} ISK \n'.format(ship_price +
module_price +
drone_price +
fighter_price) +
'+ Cargo:\t\t{:,.2f} ISK \n'.format(ship_price +
module_price +
drone_price +
fighter_price +
cargo_price) +
'+ Implants:\t{:,.2f} ISK \n'.format(ship_price +
module_price +
drone_price +
fighter_price +
cargo_price +
implant_price)))
def processPrices(self, prices): def processPrices(self, prices):
self.refreshPanelPrices(self.fit) self.refreshPanelPrices(self.fit)