draft of misc patches for main branch

This commit is contained in:
Maru Maru
2018-07-11 12:05:57 -04:00
parent da5893ac91
commit 7a078f433a
8 changed files with 152 additions and 12 deletions

View File

@@ -56,7 +56,7 @@ fits_table = Table("fits", saveddata_meta,
Column("booster", Boolean, nullable=False, index=True, default=0), Column("booster", Boolean, nullable=False, index=True, default=0),
Column("targetResistsID", ForeignKey("targetResists.ID"), nullable=True), Column("targetResistsID", ForeignKey("targetResists.ID"), nullable=True),
Column("modeID", Integer, nullable=True), Column("modeID", Integer, nullable=True),
Column("implantLocation", Integer, nullable=False, default=ImplantLocation.FIT), Column("implantLocation", Integer, nullable=True),
Column("notes", String, nullable=True), Column("notes", String, nullable=True),
Column("ignoreRestrictions", Boolean, default=0), Column("ignoreRestrictions", Boolean, default=0),
Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("created", DateTime, nullable=True, default=datetime.datetime.now),

View File

@@ -6,7 +6,7 @@ type = "passive"
def handler(fit, src, context): def handler(fit, src, context):
lvl = src.level lvl = src.level if "skill" in context else 1
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "hp", fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "hp",
src.getModifiedItemAttr("hullHpBonus") * lvl) src.getModifiedItemAttr("hullHpBonus") * lvl)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "armorHP", fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "armorHP",

View File

@@ -6,7 +6,7 @@ type = "passive"
def handler(fit, src, context): def handler(fit, src, context):
lvl = src.level lvl = src.level if "skill" in context else 1
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "damageMultiplier", fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "damageMultiplier",
src.getModifiedItemAttr("damageMultiplierBonus") * lvl) src.getModifiedItemAttr("damageMultiplierBonus") * lvl)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"),

View File

@@ -592,7 +592,7 @@ class Unit(EqBase):
lambda d: d * 1000.0, lambda d: d * 1000.0,
lambda u: u), lambda u: u),
"Boolean": ( "Boolean": (
lambda v, u: "Yes" if v == 1 else "No", lambda v: "Yes" if v == 1 else "No",
lambda d: 1.0 if d == "Yes" else 0.0, lambda d: 1.0 if d == "Yes" else 0.0,
lambda u: ""), lambda u: ""),
"typeID": ( "typeID": (

View File

@@ -34,6 +34,10 @@ class PFGeneralPref(PreferenceView):
self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) 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) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
self.cbDefaultCharImplants = wx.CheckBox(panel, wx.ID_ANY, "Have new fits default to character implants",
wx.DefaultPosition, wx.DefaultSize, 0)
mainSizer.Add(self.cbDefaultCharImplants, 0, wx.ALL | wx.EXPAND, 5)
self.cbGlobalChar = wx.CheckBox(panel, wx.ID_ANY, "Use global character", wx.DefaultPosition, wx.DefaultSize, self.cbGlobalChar = wx.CheckBox(panel, wx.ID_ANY, "Use global character", wx.DefaultPosition, wx.DefaultSize,
0) 0)
mainSizer.Add(self.cbGlobalChar, 0, wx.ALL | wx.EXPAND, 5) mainSizer.Add(self.cbGlobalChar, 0, wx.ALL | wx.EXPAND, 5)
@@ -118,6 +122,7 @@ class PFGeneralPref(PreferenceView):
self.sFit = Fit.getInstance() self.sFit = Fit.getInstance()
self.cbDefaultCharImplants.SetValue(self.sFit.serviceFittingOptions["useCharecterImplantsByDefault"])
self.cbGlobalChar.SetValue(self.sFit.serviceFittingOptions["useGlobalCharacter"]) self.cbGlobalChar.SetValue(self.sFit.serviceFittingOptions["useGlobalCharacter"])
self.cbGlobalDmgPattern.SetValue(self.sFit.serviceFittingOptions["useGlobalDamagePattern"]) self.cbGlobalDmgPattern.SetValue(self.sFit.serviceFittingOptions["useGlobalDamagePattern"])
self.cbFitColorSlots.SetValue(self.sFit.serviceFittingOptions["colorFitBySlot"] or False) self.cbFitColorSlots.SetValue(self.sFit.serviceFittingOptions["colorFitBySlot"] or False)
@@ -135,6 +140,7 @@ class PFGeneralPref(PreferenceView):
self.cbShowShipBrowserTooltip.SetValue(self.sFit.serviceFittingOptions["showShipBrowserTooltip"]) self.cbShowShipBrowserTooltip.SetValue(self.sFit.serviceFittingOptions["showShipBrowserTooltip"])
self.intDelay.SetValue(self.sFit.serviceFittingOptions["marketSearchDelay"]) self.intDelay.SetValue(self.sFit.serviceFittingOptions["marketSearchDelay"])
self.cbDefaultCharImplants.Bind(wx.EVT_CHECKBOX, self.OnCBDefaultCharImplantsStateChange)
self.cbGlobalChar.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalCharStateChange) self.cbGlobalChar.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalCharStateChange)
self.cbGlobalDmgPattern.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalDmgPatternStateChange) self.cbGlobalDmgPattern.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalDmgPatternStateChange)
self.cbFitColorSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalColorBySlot) self.cbFitColorSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalColorBySlot)
@@ -183,6 +189,10 @@ class PFGeneralPref(PreferenceView):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
event.Skip() event.Skip()
def OnCBDefaultCharImplantsStateChange(self, event):
self.sFit.serviceFittingOptions["useCharecterImplantsByDefault"] = self.cbDefaultCharImplants.GetValue()
event.Skip()
def OnCBGlobalCharStateChange(self, event): def OnCBGlobalCharStateChange(self, event):
self.sFit.serviceFittingOptions["useGlobalCharacter"] = self.cbGlobalChar.GetValue() self.sFit.serviceFittingOptions["useGlobalCharacter"] = self.cbGlobalChar.GetValue()
event.Skip() event.Skip()

View File

@@ -45,8 +45,15 @@ class CharacterSelection(wx.Panel):
# cache current selection to fall back in case we choose to open char editor # cache current selection to fall back in case we choose to open char editor
self.charCache = None self.charCache = None
self.charChoice = wx.Choice(self) #self.charChoice = wx.Choice(self)
mainSizer.Add(self.charChoice, 1, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 3) #self.charChoice.Append('blarg')
#self.charChoice = wx.Choice(self, wx.ID_ANY, wx.Point(-1,0), wx.DefaultSize, [], style=0, validator=wx.DefaultValidator, name='welp')
self.charChoice = wx.ComboBox(
self, id=wx.ID_ANY, value="", pos=wx.DefaultPosition,
size=wx.DefaultSize, choices=[], style=wx.CB_READONLY, validator=wx.DefaultValidator,
name='welp'
)
mainSizer.Add(self.charChoice, 1, wx.ALIGN_RIGHT | wx.RIGHT | wx.LEFT, 3)
self.refreshCharacterList() self.refreshCharacterList()
@@ -74,7 +81,8 @@ class CharacterSelection(wx.Panel):
self.skillReqsStaticBitmap.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu) self.skillReqsStaticBitmap.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu)
self.Bind(wx.EVT_CHOICE, self.charChanged) #self.Bind(wx.EVT_CHOICE, self.charChanged)
self.Bind(wx.EVT_COMBOBOX, self.charChanged)
self.mainFrame.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList) self.mainFrame.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList)
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
@@ -120,6 +128,91 @@ class CharacterSelection(wx.Panel):
selection = self.charChoice.GetCurrentSelection() selection = self.charChoice.GetCurrentSelection()
return self.charChoice.GetClientData(selection) if selection is not -1 else None return self.charChoice.GetClientData(selection) if selection is not -1 else None
def padChoice(self, ind):
return;
from logbook import Logger
pyfalog = Logger(__name__)
#sChar = Character.getInstance()
#activeChar = self.getActiveCharacter()
#charList = sorted(sChar.getCharacterList(), key=lambda c: (not c.ro, c.name))
charList = list(self.charChoice.GetItems())
selection = charList[ind]
maxOverallLength = max(map(lambda c: self.mainFrame.GetTextExtent(c).x, charList))
maxOverallLength = max(self.mainFrame.GetTextExtent("\u2015 Open Character Editor \u2015").x, maxOverallLength)
summedSizeO = sum([
self.btnRefresh.GetSize().x if 'btnRefresh' in dir(self) else 0,
self.skillReqsStaticBitmap.GetSize().x if 'skillReqsStaticBitmap' in dir(self) else 0,
self.mainFrame.GetTextExtent("Character: ").x,
self.charChoice.GetSize().x if 'charChoice' in dir(self) \
and self.charChoice is not None and 'GetSize' in dir(self.charChoice) else 0,
])
summedSize = sum([
self.btnRefresh.GetSize().x if 'btnRefresh' in dir(self) else 0,
self.skillReqsStaticBitmap.GetSize().x if 'skillReqsStaticBitmap' in dir(self) else 0,
self.mainFrame.GetTextExtent("Character: ").x,
self.charCache.GetSize().x if 'charCache' in dir(self) \
and self.charCache is not None and 'GetSize' in dir(self.charCache) else 0
])
realSize = self.GetSize().x
#sizeGap = summedSize - realSize
sizeGap = self.GetBestVirtualSize().x - realSize
paddedName = selection
maxFromContent = self.mainFrame.GetTextExtent(paddedName).x + sizeGap
maxLength = min(maxFromContent, maxOverallLength)
paddingOccured = False
while self.mainFrame.GetTextExtent(' ' + paddedName).x <= maxLength:
paddingOccured = True
paddedName = ' ' + paddedName
charIDRef = int(self.charChoice.GetClientData(ind))
pyfalog.error('wwwww')
pyfalog.error(paddedName)
pyfalog.error(self.mainFrame.GetTextExtent(paddedName).x)
pyfalog.error(maxFromContent)
pyfalog.error(maxOverallLength)
pyfalog.error('\n')
pyfalog.error(self.charChoice.GetContainingSizer().GetSize().x)
pyfalog.error(realSize)
pyfalog.error(self.GetBestSize().x)
pyfalog.error(self.GetBestVirtualSize().x)
pyfalog.error('\n')
pyfalog.error(summedSizeO)
pyfalog.error(summedSize)
pyfalog.error(
self.charChoice.GetSize().x if 'charChoice' in dir(self) \
and self.charChoice is not None and 'GetSize' in dir(self.charChoice) else 0
)
pyfalog.error(
self.charCache.GetSize().x if 'charCache' in dir(self) \
and self.charCache is not None and 'GetSize' in dir(self.charCache) else 0
)
pyfalog.error(charIDRef)
pyfalog.error(ind)
pyfalog.error(list(self.charChoice.GetItems()))
###
import re
for i in range(len(self.charChoice.GetItems())):
origStr = list(self.charChoice.GetItems())[i]
idStore = int(self.charChoice.GetClientData(i))
self.charChoice.Delete(i)
trimmedStr = ''
for n in range(len(origStr)):
if trimmedStr is not '' or origStr[n] != ' ':
trimmedStr += origStr[n]
possibleName = trimmedStr#re.split(" *", origStr)
pyfalog.error('uuu')
pyfalog.error(possibleName)
self.charChoice.Insert(possibleName, i, idStore)
if paddingOccured:
self.charChoice.Delete(ind)
pyfalog.error(list(self.charChoice.GetItems()))
self.charChoice.Insert(paddedName, ind, charIDRef)
self.charChoice.Select(ind)
pyfalog.error(list(self.charChoice.GetItems()))
pyfalog.error(int(self.charChoice.GetClientData(ind)))
pyfalog.error('wwwww')
def refreshCharacterList(self, event=None): def refreshCharacterList(self, event=None):
choice = self.charChoice choice = self.charChoice
sChar = Character.getInstance() sChar = Character.getInstance()
@@ -128,10 +221,30 @@ class CharacterSelection(wx.Panel):
choice.Clear() choice.Clear()
charList = sorted(sChar.getCharacterList(), key=lambda c: (not c.ro, c.name)) charList = sorted(sChar.getCharacterList(), key=lambda c: (not c.ro, c.name))
picked = False picked = False
from logbook import Logger
pyfalog = Logger(__name__)
maxOverallLength = max(map(lambda c: self.mainFrame.GetTextExtent(c.name).x, charList))
maxOverallLength = max(self.mainFrame.GetTextExtent("\u2015 Open Character Editor \u2015").x, maxOverallLength)
#summedSize = sum([
# self.btnRefresh.GetSize().x if 'btnRefresh' in dir(self) else 0,
# self.skillReqsStaticBitmap.GetSize().x if 'skillReqsStaticBitmap' in dir(self) else 0,
# self.mainFrame.GetTextExtent("Character: ").x,
# self.charCache.GetSize().x if 'charCache' in dir(self) and self.charCache is not None else 0,
# ])
#realSize = self.GetSize().x
#sizeGap = summedSize - realSize
for char in charList: for char in charList:
currId = choice.Append(char.name, char.ID) paddedName = char.name
#maxFromContent = self.mainFrame.GetTextExtent(paddedName).x + self.mainFrame.GetTextExtent("Character: ").x
#maxFromContent = self.mainFrame.GetTextExtent(paddedName).x + sizeGap
#maxLength = min(maxFromContent, maxOverallLength)
#while self.mainFrame.GetTextExtent(paddedName).x < maxLength:
# paddedName = ' ' + paddedName
#currId = choice.Append(str(maxFromContent) + ' ' + \
# str(self.mainFrame.GetTextExtent(paddedName).x) + ' ' + str(maxLength), char.ID)
currId = choice.Append(paddedName, char.ID)
if char.ID == activeChar: if char.ID == activeChar:
self.padChoice(currId)
choice.SetSelection(currId) choice.SetSelection(currId)
self.charChanged(None) self.charChanged(None)
picked = True picked = True
@@ -173,16 +286,27 @@ class CharacterSelection(wx.Panel):
if charID == -1: if charID == -1:
# revert to previous character # revert to previous character
self.padChoice(self.charCache)
pyfalog.error('GGG')
self.charChoice.SetSelection(self.charCache) self.charChoice.SetSelection(self.charCache)
pyfalog.error('GGG')
self.mainFrame.showCharacterEditor(event) self.mainFrame.showCharacterEditor(event)
pyfalog.error('GGG')
return return
self.padChoice(self.charChoice.GetCurrentSelection())
fitID = self.mainFrame.getActiveFit()
charID = self.getActiveCharacter()
pyfalog.error(self.getActiveCharacter())
self.toggleRefreshButton() self.toggleRefreshButton()
pyfalog.error('RRR')
sFit = Fit.getInstance() sFit = Fit.getInstance()
sFit.changeChar(fitID, charID) sFit.changeChar(fitID, charID)
self.charCache = self.charChoice.GetCurrentSelection() self.charCache = self.charChoice.GetCurrentSelection()
pyfalog.error('RRR')
pyfalog.error(fitID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
pyfalog.error('RRR')
def toggleRefreshButton(self): def toggleRefreshButton(self):
charID = self.getActiveCharacter() charID = self.getActiveCharacter()
@@ -199,6 +323,8 @@ class CharacterSelection(wx.Panel):
for i in range(numItems): for i in range(numItems):
id_ = choice.GetClientData(i) id_ = choice.GetClientData(i)
if id_ == charID: if id_ == charID:
print((list(choice.GetItems())[0]))
self.padChoice(i)
choice.SetSelection(i) choice.SetSelection(i)
return True return True

View File

@@ -102,7 +102,7 @@ class ItemStatsDialog(wx.Dialog):
if "wxGTK" in wx.PlatformInfo: if "wxGTK" in wx.PlatformInfo:
self.closeBtn = wx.Button(self, wx.ID_ANY, "Close", wx.DefaultPosition, wx.DefaultSize, 0) self.closeBtn = wx.Button(self, wx.ID_ANY, "Close", wx.DefaultPosition, wx.DefaultSize, 0)
self.mainSizer.Add(self.closeBtn, 0, wx.ALL | wx.ALIGN_RIGHT, 5) self.mainSizer.Add(self.closeBtn, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.closeBtn.Bind(wx.EVT_BUTTON, self.closeEvent) self.closeBtn.Bind(wx.EVT_BUTTON, (lambda e: self.Close()))
self.SetSizer(self.mainSizer) self.SetSizer(self.mainSizer)

View File

@@ -33,7 +33,7 @@ from eos.saveddata.fighter import Fighter as es_Fighter
from eos.saveddata.implant import Implant as es_Implant from eos.saveddata.implant import Implant as es_Implant
from eos.saveddata.ship import Ship as es_Ship from eos.saveddata.ship import Ship as es_Ship
from eos.saveddata.module import Module as es_Module, State, Slot from eos.saveddata.module import Module as es_Module, State, Slot
from eos.saveddata.fit import Fit as FitType from eos.saveddata.fit import Fit as FitType, ImplantLocation
from service.character import Character from service.character import Character
from service.damagePattern import DamagePattern from service.damagePattern import DamagePattern
from service.settings import SettingsProvider from service.settings import SettingsProvider
@@ -60,6 +60,7 @@ class Fit(object):
self.dirtyFitIDs = set() self.dirtyFitIDs = set()
serviceFittingDefaultOptions = { serviceFittingDefaultOptions = {
"useCharecterImplantsByDefault": True,
"useGlobalCharacter": False, "useGlobalCharacter": False,
"useGlobalDamagePattern": False, "useGlobalDamagePattern": False,
"defaultCharacter": self.character.ID, "defaultCharacter": self.character.ID,
@@ -147,6 +148,9 @@ class Fit(object):
fit.targetResists = self.targetResists fit.targetResists = self.targetResists
fit.character = self.character fit.character = self.character
fit.booster = self.booster fit.booster = self.booster
fit.implantLocation = ImplantLocation.CHARACTER if\
self.serviceFittingOptions["useCharecterImplantsByDefault"] else\
ImplantLocation.FIT
eos.db.save(fit) eos.db.save(fit)
self.recalc(fit) self.recalc(fit)
return fit.ID return fit.ID