1+ import wx
2+
3+ import gui .fitCommands as cmd
4+ import gui .mainFrame
5+ from gui .contextMenu import ContextMenuSingle
6+ from service .fit import Fit
7+ from eos .saveddata .cargo import Cargo
8+
9+ _t = wx .GetTranslation
10+
11+
12+ class FillCargoWithItem (ContextMenuSingle ):
13+ def __init__ (self ):
14+ self .mainFrame = gui .mainFrame .MainFrame .getInstance ()
15+
16+ def display (self , callingWindow , srcContext , mainItem ):
17+ if srcContext not in ("marketItemGroup" , "marketItemMisc" , "cargoItem" ):
18+ return False
19+
20+ if mainItem is None :
21+ return False
22+
23+ if self .mainFrame .getActiveFit () is None :
24+ return False
25+
26+ if srcContext in ("marketItemGroup" , "marketItemMisc" ):
27+ if not (mainItem .isCharge or mainItem .isCommodity ):
28+ return False
29+
30+ return True
31+
32+ def getText (self , callingWindow , itmContext , mainItem ):
33+ return _t ("Fill Cargo With {0}" ).format (itmContext )
34+
35+ def activate (self , callingWindow , fullContext , mainItem , i ):
36+ fitID = self .mainFrame .getActiveFit ()
37+ fit = Fit .getInstance ().getFit (fitID )
38+
39+ if isinstance (mainItem , Cargo ):
40+ itemVolume = mainItem .item .attributes ['volume' ].value
41+ itemID = mainItem .itemID
42+ else :
43+ itemVolume = mainItem .attributes ['volume' ].value
44+ itemID = int (mainItem .ID )
45+
46+ if itemVolume is None or itemVolume <= 0 :
47+ return
48+
49+ # Calculate how many items can fit in the cargo
50+ cargoCapacity = fit .ship .getModifiedItemAttr ("capacity" )
51+ currentCargoVolume = fit .cargoBayUsed
52+ availableVolume = cargoCapacity - currentCargoVolume
53+
54+ if availableVolume <= 0 :
55+ return
56+
57+ # Calculate maximum amount that can fit
58+ maxAmount = int (availableVolume / itemVolume )
59+ if maxAmount <= 0 :
60+ return
61+
62+ # Add the items to cargo
63+ command = cmd .GuiAddCargoCommand (fitID = fitID , itemID = itemID , amount = maxAmount )
64+ if self .mainFrame .command .Submit (command ):
65+ self .mainFrame .additionsPane .select ("Cargo" , focus = False )
66+
67+
68+ FillCargoWithItem .register ()
0 commit comments