Skip to content

Commit cc1fddd

Browse files
Merge branch 'pyfa-org:master' into master
2 parents e314ecf + bb53e75 commit cc1fddd

File tree

94 files changed

+23755
-1765
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+23755
-1765
lines changed

config.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,22 @@
6666

6767
CATALOG = 'lang'
6868

69+
70+
slotColourMapDark = {
71+
FittingSlot.LOW: wx.Colour(44, 36, 19), # yellow = low slots 24/13
72+
FittingSlot.MED: wx.Colour(28, 39, 51), # blue = mid slots 8.1/9.5
73+
FittingSlot.HIGH: wx.Colour(53, 31, 34), # red = high slots 6.5/11.5
74+
FittingSlot.RIG: '',
75+
FittingSlot.SUBSYSTEM: ''}
76+
errColorDark = wx.Colour(70, 20, 20)
6977
slotColourMap = {
7078
FittingSlot.LOW: wx.Colour(250, 235, 204), # yellow = low slots
7179
FittingSlot.MED: wx.Colour(188, 215, 241), # blue = mid slots
7280
FittingSlot.HIGH: wx.Colour(235, 204, 209), # red = high slots
7381
FittingSlot.RIG: '',
74-
FittingSlot.SUBSYSTEM: ''
75-
}
82+
FittingSlot.SUBSYSTEM: ''}
83+
errColor = wx.Colour(204, 51, 51)
84+
7685

7786
def getClientSecret():
7887
return clientHash

dist_assets/linux/AppImageBuilder.yml

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ AppDir:
3131
- libgtk-3-0
3232
- librsvg2-common # GTK3 recommendation; without it, search in char editor crashes
3333
- libwebkit2gtk-4.0-37 # Needed for wx's HTML lib
34+
# Unknown
35+
- libpcre2-32-0 # https://github.com/pyfa-org/Pyfa/issues/2572
3436
exclude:
3537
- hicolor-icon-theme
3638
- humanity-icon-theme

eos/db/migrations/upgrade1.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
loaded as they no longer exist in the database. We therefore replace these
88
modules with their new replacements
99
10-
Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-oceanus/
10+
Based on https://www.eveonline.com/news/view/patch-notes-for-oceanus
1111
and output of itemDiff.py
1212
"""
1313

eos/db/migrations/upgrade25.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Migration 25
33
44
- Converts T3C fitting configurations based on the spreadsheet noted here:
5-
https://community.eveonline.com/news/patch-notes/patch-notes-for-july-2017-release
5+
https://www.eveonline.com/news/view/patch-notes-for-july-2017-release
66
77
(csv copies can be found on the pyfa repo in case the official documents are deleted)
88
@@ -4228,8 +4228,8 @@ def upgrade(saveddata_engine):
42284228
# We don't have a conversion for this. I don't think this will ever happen, but who knows
42294229
continue
42304230

4231-
# It doesn't actully matter which old module is replaced with which new module, so we don't have to worry
4232-
# about module position or anything like that. Just doe a straight up record UPDATE
4231+
# It doesn't actually matter which old module is replaced with which new module, so we don't have to worry
4232+
# about module position or anything like that. Just do a straight up record UPDATE
42334233
for i, old in enumerate(oldModules[:4]):
42344234
saveddata_engine.execute("UPDATE modules SET itemID = ? WHERE ID = ?", (newModules[i], old[0]))
42354235

eos/db/migrations/upgrade4.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from database), which causes pyfa to crash. We therefore replace these
77
modules with their new replacements
88
9-
Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-proteus/
9+
Based on https://www.eveonline.com/news/view/patch-notes-for-proteus
1010
and output of itemDiff.py
1111
"""
1212

eos/effects.py

+22-118
Original file line numberDiff line numberDiff line change
@@ -1304,7 +1304,6 @@ class Effect446(BaseEffect):
13041304
Implants named like: Festival only 'Rock' SH Dose (4 of 4)
13051305
Implants named like: Halcyon G Booster (5 of 5)
13061306
Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3)
1307-
Implants named like: Wightstorm Nirvana Booster (4 of 4)
13081307
Implants named like: Zainou 'Gnome' Shield Management SM (6 of 6)
13091308
Modules named like: Core Defense Field Extender (8 of 8)
13101309
Implant: AIR Nirvana Booster II
@@ -1329,7 +1328,6 @@ class Effect485(BaseEffect):
13291328
Implants named like: Halcyon G Booster (5 of 5)
13301329
Implants named like: Halcyon R Booster (5 of 5)
13311330
Implants named like: Inherent Implants 'Squire' Capacitor Systems Operation EO (6 of 6)
1332-
Implants named like: Wightstorm Rapture Booster (4 of 4)
13331331
Implants named like: grade Rapture (15 of 18)
13341332
Modules named like: Capacitor Control Circuit (8 of 8)
13351333
Implant: AIR Overclocker Booster III
@@ -3271,24 +3269,6 @@ def handler(fit, ship, context, projectionRange, **kwargs):
32713269
skill='Caldari Cruiser', **kwargs)
32723270

32733271

3274-
class Effect1025(BaseEffect):
3275-
"""
3276-
shipMissileLightVelocityBonusCC2
3277-
3278-
Used by:
3279-
Ship: Caracal
3280-
Ship: Osprey Navy Issue
3281-
"""
3282-
3283-
type = 'passive'
3284-
3285-
@staticmethod
3286-
def handler(fit, ship, context, projectionRange, **kwargs):
3287-
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
3288-
'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'),
3289-
skill='Caldari Cruiser', **kwargs)
3290-
3291-
32923272
class Effect1030(BaseEffect):
32933273
"""
32943274
remoteArmorSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringRemoteArmorSystems
@@ -6819,7 +6799,6 @@ class Effect2296(BaseEffect):
68196799

68206800
Used by:
68216801
Implants named like: Halcyon Y Booster (5 of 5)
6822-
Implants named like: Tetrimon Resistance Booster (4 of 4)
68236802
"""
68246803

68256804
type = 'passive'
@@ -7017,7 +6996,6 @@ class Effect2432(BaseEffect):
70176996
Implants named like: Halcyon Y Booster (5 of 5)
70186997
Implants named like: Inherent Implants 'Squire' Capacitor Management EM (6 of 6)
70196998
Implants named like: Mindflood Booster (4 of 4)
7020-
Implants named like: Tetrimon Capacitor Booster (4 of 4)
70216999
Modules named like: Semiconductor Memory Cell (8 of 8)
70227000
Implant: Antipharmakon Aeolis
70237001
Implant: Basic Capsuleer Engineering Augmentation Chip
@@ -7642,7 +7620,6 @@ class Effect2696(BaseEffect):
76427620
maxRangeBonusEffectLasers
76437621

76447622
Used by:
7645-
Implants named like: Tetrimon Precision Booster (4 of 4)
76467623
Modules named like: Energy Locus Coordinator (8 of 8)
76477624
"""
76487625

@@ -8393,8 +8370,6 @@ class Effect2803(BaseEffect):
83938370
energyWeaponDamageMultiplyPassive
83948371

83958372
Used by:
8396-
Implants named like: Harvest Damage Booster (4 of 4)
8397-
Implants named like: Wightstorm Vitarka Booster (4 of 4)
83988373
Modules named like: Energy Collision Accelerator (8 of 8)
83998374
Implant: Wisdom of Gheinok
84008375
"""
@@ -9670,7 +9645,6 @@ class Effect3196(BaseEffect):
96709645
thermodynamicsSkillDamageBonus
96719646

96729647
Used by:
9673-
Implants named like: Wightstorm Sunyata Booster (4 of 4)
96749648
Skill: Thermodynamics
96759649
"""
96769650

@@ -10100,23 +10074,6 @@ def handler(fit, ship, context, projectionRange, **kwargs):
1010010074
skill='Heavy Interdiction Cruisers', **kwargs)
1010110075

1010210076

10103-
class Effect3357(BaseEffect):
10104-
"""
10105-
eliteBonusHeavyInterdictorLightMissileVelocityBonus
10106-
10107-
Used by:
10108-
Ship: Onyx
10109-
"""
10110-
10111-
type = 'passive'
10112-
10113-
@staticmethod
10114-
def handler(fit, ship, context, projectionRange, **kwargs):
10115-
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
10116-
'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'),
10117-
skill='Heavy Interdiction Cruisers', **kwargs)
10118-
10119-
1012010077
class Effect3366(BaseEffect):
1012110078
"""
1012210079
shipRemoteSensorDampenerCapNeedGF
@@ -17365,9 +17322,10 @@ class Effect5069(BaseEffect):
1736517322

1736617323
@staticmethod
1736717324
def handler(fit, module, context, projectionRange, **kwargs):
17368-
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Mercoxit Processing'),
17369-
'specializationAsteroidYieldMultiplier',
17370-
module.getModifiedItemAttr('miningAmountBonus'), **kwargs)
17325+
fit.modules.filteredChargeBoost(
17326+
lambda mod: mod.charge.requiresSkill('Mercoxit Ore Processing'),
17327+
'specializationAsteroidYieldMultiplier',
17328+
module.getModifiedItemAttr('miningAmountBonus'), **kwargs)
1737117329

1737217330

1737317331
class Effect5079(BaseEffect):
@@ -18050,8 +18008,6 @@ class Effect5189(BaseEffect):
1805018008
trackingSpeedBonusEffectLasers
1805118009

1805218010
Used by:
18053-
Implants named like: Tetrimon Precision Booster (4 of 4)
18054-
Implants named like: Wightstorm Manasikara Booster (4 of 4)
1805518011
Modules named like: Energy Metastasis Adjuster (8 of 8)
1805618012
"""
1805718013

@@ -31615,7 +31571,7 @@ class Effect6783(BaseEffect):
3161531571
Used by:
3161631572
Ships from group: Carrier (4 of 4)
3161731573
Ships from group: Combat Battlecruiser (20 of 20)
31618-
Ships from group: Command Ship (4 of 8)
31574+
Ships from group: Command Ship (8 of 8)
3161931575
Ships from group: Force Auxiliary (6 of 6)
3162031576
Ships from group: Supercarrier (6 of 6)
3162131577
Ships from group: Titan (8 of 8)
@@ -37692,64 +37648,12 @@ def handler(fit, ship, context, projectionRange, **kwargs):
3769237648
skill='Industrial Command Ships', **kwargs)
3769337649

3769437650

37695-
class Effect8267(BaseEffect):
37696-
"""
37697-
weaponDisruptorResistanceBonusPassive
37698-
37699-
Used by:
37700-
Implants named like: Harvest Anti Disruptor Booster (4 of 4)
37701-
"""
37702-
37703-
type = 'passive'
37704-
37705-
@staticmethod
37706-
def handler(fit, container, context, projectionRange, **kwargs):
37707-
fit.ship.boostItemAttr(
37708-
'weaponDisruptionResistance',
37709-
container.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs)
37710-
37711-
37712-
class Effect8268(BaseEffect):
37713-
"""
37714-
nosferatuDurationBonusPassive
37715-
37716-
Used by:
37717-
Implants named like: Harvest Nosferatu Booster (4 of 4)
37718-
"""
37719-
37720-
type = 'passive'
37721-
37722-
@staticmethod
37723-
def handler(fit, module, context, projectionRange, **kwargs):
37724-
fit.modules.filteredItemBoost(
37725-
lambda mod: mod.item.group.name == 'Energy Nosferatu', 'duration',
37726-
module.getModifiedItemAttr('durationBonus'), **kwargs)
37727-
37728-
37729-
class Effect8269(BaseEffect):
37730-
"""
37731-
stasisWebifierMaxRangeAddPassive
37732-
37733-
Used by:
37734-
Implants named like: Harvest Webifier Booster (4 of 4)
37735-
"""
37736-
37737-
type = 'passive'
37738-
37739-
@staticmethod
37740-
def handler(fit, module, context, projectionRange, **kwargs):
37741-
fit.modules.filteredItemIncrease(
37742-
lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange',
37743-
module.getModifiedItemAttr('stasisWebRangeAdd'), **kwargs)
37744-
37745-
3774637651
class Effect8270(BaseEffect):
3774737652
"""
3774837653
capacitorWarfareResistanceBonusPassive
3774937654

3775037655
Used by:
3775137656
Implants named like: Halcyon Y Booster (5 of 5)
37752-
Implants named like: Tetrimon Anti Drain Booster (4 of 4)
3775337657
"""
3775437658

3775537659
type = 'passive'
@@ -37812,23 +37716,6 @@ def handler(fit, ship, context, projectionRange, **kwargs):
3781237716
skill='Industrial Command Ships', **kwargs)
3781337717

3781437718

37815-
class Effect8291(BaseEffect):
37816-
"""
37817-
afterburnerSpeedBoostBonusPassive
37818-
37819-
Used by:
37820-
Implants named like: Wightstorm Cetana Booster (4 of 4)
37821-
"""
37822-
37823-
type = 'passive'
37824-
37825-
@staticmethod
37826-
def handler(fit, booster, context, projectionRange, **kwargs):
37827-
fit.modules.filteredItemBoost(
37828-
lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor',
37829-
booster.getModifiedItemAttr('speedFBonus'), **kwargs)
37830-
37831-
3783237719
class Effect8294(BaseEffect):
3783337720
"""
3783437721
industrialCommandBonusDroneOreMiningYield
@@ -40539,3 +40426,20 @@ def handler(fit, booster, context, projectionRange, **kwargs):
4053940426
fit.modules.filteredItemBoost(
4054040427
lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'speed',
4054140428
booster.getModifiedItemAttr('turretSpeeBonus'), **kwargs)
40429+
40430+
40431+
class Effect12038(BaseEffect):
40432+
"""
40433+
shipBonusSPTFalloffMF3
40434+
40435+
Used by:
40436+
Ship: Republic Fleet Firetail
40437+
"""
40438+
40439+
type = 'passive'
40440+
40441+
@staticmethod
40442+
def handler(fit, ship, context, projectionRange, **kwargs):
40443+
fit.modules.filteredItemBoost(
40444+
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff',
40445+
ship.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate', **kwargs)

gui/builtinItemStatsViews/helpers.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
# noinspection PyPackageRequirements
55
import wx.lib.mixins.listctrl as listmix
66

7+
from gui.utils.dark import isDark
8+
79

810
class AutoListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ListRowHighlighter):
911
def __init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0):
1012
wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
1113
listmix.ListCtrlAutoWidthMixin.__init__(self)
1214
listmix.ListRowHighlighter.__init__(self)
13-
if wx.SystemSettings.GetAppearance().IsDark():
15+
if isDark():
1416
listcol = wx.SystemSettings.GetColour(wx.SYS_COLOUR_LISTBOX)
1517
highlight = listcol.ChangeLightness(110)
1618
listmix.ListRowHighlighter.SetHighlightColor(self, highlight)

gui/builtinViews/fittingView.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@
3939
from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED
4040
from gui.contextMenu import ContextMenu
4141
from gui.utils.staticHelpers import DragDropHelper
42+
from gui.utils.dark import isDark
4243
from service.fit import Fit
4344
from service.market import Market
44-
from config import slotColourMap
45+
from config import slotColourMap, slotColourMapDark, errColor, errColorDark
4546
from gui.fitCommands.helpers import getSimilarModPositions
4647

4748
pyfalog = Logger(__name__)
@@ -729,7 +730,10 @@ def click(self, event):
729730
event.Skip()
730731

731732
def slotColour(self, slot):
732-
return slotColourMap.get(slot) or self.GetBackgroundColour()
733+
if isDark():
734+
return slotColourMapDark.get(slot) or self.GetBackgroundColour()
735+
else:
736+
return slotColourMap.get(slot) or self.GetBackgroundColour()
733737

734738
def refresh(self, stuff):
735739
"""
@@ -774,7 +778,7 @@ def refresh(self, stuff):
774778

775779

776780
if slotMap[mod.slot] or hasRestrictionOverriden: # Color too many modules as red
777-
self.SetItemBackgroundColour(i, wx.Colour(204, 51, 51))
781+
self.SetItemBackgroundColour(i, errColorDark if isDark() else errColor)
778782
elif sFit.serviceFittingOptions["colorFitBySlot"]: # Color by slot it enabled
779783
self.SetItemBackgroundColour(i, self.slotColour(mod.slot))
780784

gui/utils/dark.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import wx
2+
3+
4+
def isDark():
5+
if 'wxMSW' in wx.PlatformInfo:
6+
return False
7+
try:
8+
return wx.SystemSettings.GetAppearance().IsDark()
9+
except (KeyboardInterrupt, SystemExit):
10+
raise
11+
except:
12+
return False

imgs/icons/[email protected]

-17 Bytes

imgs/icons/[email protected]

-53 Bytes

imgs/icons/[email protected]

17 Bytes

imgs/icons/[email protected]

53 Bytes

imgs/icons/[email protected]

-24 Bytes

imgs/icons/[email protected]

-75 Bytes

imgs/icons/[email protected]

24 Bytes

imgs/icons/[email protected]

75 Bytes

imgs/icons/[email protected]

-8 Bytes

imgs/icons/[email protected]

-82 Bytes

imgs/icons/[email protected]

8 Bytes

imgs/icons/[email protected]

82 Bytes

imgs/icons/[email protected]

-15 Bytes

imgs/icons/[email protected]

-111 Bytes

imgs/icons/[email protected]

15 Bytes

imgs/icons/[email protected]

111 Bytes

imgs/icons/[email protected]

-23 Bytes

imgs/icons/[email protected]

-15 Bytes

imgs/icons/[email protected]

23 Bytes

imgs/icons/[email protected]

15 Bytes

imgs/icons/[email protected]

-14 Bytes

imgs/icons/[email protected]

-49 Bytes

imgs/icons/[email protected]

14 Bytes

imgs/icons/[email protected]

49 Bytes

imgs/icons/[email protected]

-780 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.13 KB
Binary file not shown.

imgs/icons/[email protected]

-829 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.25 KB
Binary file not shown.

imgs/icons/[email protected]

-821 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.29 KB
Binary file not shown.

imgs/icons/[email protected]

-824 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.31 KB
Binary file not shown.

imgs/icons/[email protected]

-784 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.17 KB
Binary file not shown.

imgs/icons/[email protected]

-808 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.26 KB
Binary file not shown.

imgs/icons/[email protected]

-829 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.31 KB
Binary file not shown.

imgs/icons/[email protected]

-833 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.32 KB
Binary file not shown.

imgs/icons/[email protected]

-783 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.13 KB
Binary file not shown.

imgs/icons/[email protected]

-814 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.23 KB
Binary file not shown.

imgs/icons/[email protected]

-825 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.29 KB
Binary file not shown.

imgs/icons/[email protected]

-821 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.29 KB
Binary file not shown.

imgs/icons/[email protected]

-782 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.14 KB
Binary file not shown.

imgs/icons/[email protected]

-816 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.26 KB
Binary file not shown.

imgs/icons/[email protected]

-823 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.29 KB
Binary file not shown.

imgs/icons/[email protected]

-814 Bytes
Binary file not shown.

imgs/icons/[email protected]

-2.31 KB
Binary file not shown.

imgs/renders/[email protected]

9 Bytes

imgs/renders/[email protected]

-107 Bytes

imgs/renders/[email protected]

71 Bytes

imgs/renders/[email protected]

135 Bytes

imgs/renders/[email protected]

-18 Bytes

imgs/renders/[email protected]

-155 Bytes

imgs/renders/[email protected]

-5 Bytes

imgs/renders/[email protected]

13 Bytes

imgs/renders/[email protected]

-1 Bytes

imgs/renders/[email protected]

-1 Bytes

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ matplotlib==3.8.2
55
python-dateutil==2.8.2
66
requests==2.31.0
77
sqlalchemy==1.4.50
8-
cryptography==41.0.7
8+
cryptography==42.0.2
99
markdown2==2.4.11
1010
packaging==23.2
1111
roman==4.1

0 commit comments

Comments
 (0)