From c60c0483b45149908c14300b1bb9860b2a55d062 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Sat, 15 Jun 2024 22:13:34 -0400 Subject: [PATCH 1/9] [#2262] Initial SLEF Output --- coriolis-update-files.py | 3 +- inara.json | 267 +++++++++++++++++++++++++++++++++++++++ plugins/inara.py | 53 ++++++++ ships.json | 117 +++++++++++------ 4 files changed, 400 insertions(+), 40 deletions(-) create mode 100644 inara.json diff --git a/coriolis-update-files.py b/coriolis-update-files.py index f31a2e32..6dfcc0c9 100755 --- a/coriolis-update-files.py +++ b/coriolis-update-files.py @@ -51,7 +51,8 @@ if __name__ == "__main__": for m in list(data['Ships'].values()): name = coriolis_ship_map.get(m['properties']['name'], str(m['properties']['name'])) assert name in reverse_ship_map, name - ships[name] = {'hullMass': m['properties']['hullMass']} + ships[name] = {'hullMass': m['properties']['hullMass'], + 'reserveFuelCapacity': m['properties']['reserveFuelCapacity']} for i, bulkhead in enumerate(bulkheads): modules['_'.join([reverse_ship_map[name], 'armour', bulkhead])] = {'mass': m['bulkheads'][i]['mass']} diff --git a/inara.json b/inara.json new file mode 100644 index 00000000..1c5cba8a --- /dev/null +++ b/inara.json @@ -0,0 +1,267 @@ +{ + "header": { + "appName": "EDMarketConnector", + "appVersion": "5.11.1+85f5c328.DIRTY" + }, + "data": { + "FuelCapacity": { + "Main": 128, + "Reserve": 0.81 + }, + "Ship": "belugaliner", + "ShipName": "HSRV Guiding Light", + "ShipIdent": "NFC-23", + "HullValue": 69924158, + "ModulesValue": 96918434, + "Rebuy": 8342132, + "MaxJumpRange": 52.615143, + "UnladenMass": 1233.057983, + "CargoCapacity": 16, + "Modules": [ + { + "Slot": "TinyHardpoint1", + "Item": "hpt_heatsinklauncher_turret_tiny", + "ItemHealth": 1.0, + "On": true, + "Value": 3072 + }, + { + "Slot": "TinyHardpoint2", + "Item": "hpt_heatsinklauncher_turret_tiny", + "ItemHealth": 1.0, + "On": true, + "Value": 3413 + }, + { + "Slot": "TinyHardpoint3", + "Item": "hpt_heatsinklauncher_turret_tiny", + "ItemHealth": 1.0, + "On": true, + "Value": 3072 + }, + { + "Slot": "TinyHardpoint4", + "Item": "hpt_heatsinklauncher_turret_tiny", + "ItemHealth": 1.0, + "On": true, + "Value": 3072 + }, + { + "Slot": "PaintJob", + "Item": "paintjob_belugaliner_lrpo_azure", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "Armour", + "Item": "belugaliner_armour_grade1", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "PowerPlant", + "Item": "int_powerplant_size6_class5", + "ItemHealth": 1.0, + "On": true, + "Priority": 1, + "Value": 11382139 + }, + { + "Slot": "MainEngines", + "Item": "int_engine_size7_class2", + "ItemHealth": 1.0, + "On": true, + "Priority": 1, + "Value": 1666898 + }, + { + "Slot": "FrameShiftDrive", + "Item": "int_hyperdrive_size7_class5", + "ItemHealth": 1.0, + "On": true, + "Value": 45006196 + }, + { + "Slot": "LifeSupport", + "Item": "int_lifesupport_size8_class2", + "ItemHealth": 1.0, + "On": true, + "Value": 1530326 + }, + { + "Slot": "PowerDistributor", + "Item": "int_powerdistributor_size6_class5", + "ItemHealth": 1.0, + "On": true, + "Priority": 1, + "Value": 3049917 + }, + { + "Slot": "Radar", + "Item": "int_sensors_size5_class2", + "ItemHealth": 1.0, + "On": true, + "Priority": 1, + "Value": 69713 + }, + { + "Slot": "FuelTank", + "Item": "int_fueltank_size7_class3", + "ItemHealth": 1.0, + "On": true, + "Priority": 1, + "Value": 1562752 + }, + { + "Slot": "Decal1", + "Item": "decal_distantworlds2", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "Decal2", + "Item": "decal_distantworlds2", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "Decal3", + "Item": "decal_distantworlds2", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "ShipName0", + "Item": "nameplate_practical01_black", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "ShipName1", + "Item": "nameplate_practical01_black", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "ShipID0", + "Item": "nameplate_shipid_singleline_black", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "ShipID1", + "Item": "nameplate_shipid_singleline_black", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "Slot01_Size6", + "Item": "int_fuelscoop_size6_class5", + "ItemHealth": 1.0, + "On": true, + "Value": 25240068 + }, + { + "Slot": "Slot02_Size6", + "Item": "int_repairer_size6_class2", + "ItemHealth": 1.0, + "On": true, + "Value": 497429 + }, + { + "Slot": "Slot03_Size6", + "Item": "int_shieldgenerator_size5_class2", + "ItemHealth": 1.0, + "On": true, + "Value": 165879 + }, + { + "Slot": "Slot04_Size6", + "Item": "int_dronecontrol_repair_size5_class2", + "ItemHealth": 1.0, + "On": true, + "Value": 85293 + }, + { + "Slot": "Slot05_Size5", + "Item": "int_guardianfsdbooster_size5", + "ItemHealth": 1.0, + "On": true, + "Value": 5688921 + }, + { + "Slot": "Slot07_Size4", + "Item": "int_cargorack_size4_class1", + "ItemHealth": 1.0, + "On": true, + "Priority": 1, + "Value": 30124 + }, + { + "Slot": "Slot11_Size3", + "Item": "int_detailedsurfacescanner_tiny", + "ItemHealth": 1.0, + "On": true, + "Value": 219375 + }, + { + "Slot": "Slot12_Size1", + "Item": "int_repairer_size1_class5", + "ItemHealth": 1.0, + "On": false, + "Value": 710775 + }, + { + "Slot": "PlanetaryApproachSuite", + "Item": "int_planetapproachsuite_advanced", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "WeaponColour", + "Item": "weaponcustomisation_red", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "EngineColour", + "Item": "enginecustomisation_orange", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "VesselVoice", + "Item": "voicepack_verity", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "ShipCockpit", + "Item": "belugaliner_cockpit", + "ItemHealth": 1.0, + "On": true, + "Priority": 1 + }, + { + "Slot": "CargoHatch", + "Item": "modularcargobaydoor", + "ItemHealth": 1.0, + "On": false, + "Priority": 1 + } + ] + } +} \ No newline at end of file diff --git a/plugins/inara.py b/plugins/inara.py index f2c9830e..1cae5c64 100644 --- a/plugins/inara.py +++ b/plugins/inara.py @@ -35,6 +35,7 @@ import requests import edmc_data import killswitch import myNotebook as nb # noqa: N813 +from edshipyard import ships import plug import timeout_session from companion import CAPIData @@ -870,6 +871,7 @@ def journal_entry( # noqa: C901, CCR001 cur_ship['shipRebuyCost'] = state['Rebuy'] new_add_event('setCommanderShip', entry['timestamp'], cur_ship) + make_slef(state, entry) # Stored modules if event_name == 'StoredModules': @@ -1476,6 +1478,57 @@ def make_loadout(state: dict[str, Any]) -> dict[str, Any]: # noqa: CCR001 } +def make_slef(state: dict[str, Any], entry) -> None: + initial_dict = { + "header": {"appName": appname, "appVersion": str(appversion())} + } + data_dict = {} + loadout = make_loadout(state) + modules = loadout['shipLoadout'] + mod_dict = [] + for module in modules: + if module['slotName']: + builder = { + 'Slot': module['slotName'], + 'Item': module['itemName'] + } + if module.get('itemHealth'): + builder.update({'ItemHealth': module['itemHealth']}) + if module.get('isOn'): + builder.update({'On': True}) + elif not module.get('isOn'): + builder.update({'On': False}) + if module.get('itemPriority'): + builder.update({'Priority': module['itemPriority']}) + if module.get('itemValue'): + builder.update({'Value': module['itemValue']}) + if not module.get('itemValue'): + builder.update({'Value': 0}) + if module.get('slotName') == 'FuelTank': + cap = module['itemName'].split('size') + cap = cap[1].split('_') + cap = 2**int(cap[0]) + ship = edmc_data.ship_name_map[state["ShipType"]] + fuel = {'Main': cap, 'Reserve': ships[ship]['reserveFuelCapacity']} + data_dict.update({"FuelCapacity": fuel}) + mod_dict.append(builder) + data_dict.update({ + 'Ship': state["ShipType"], + 'ShipName': state['ShipName'], + 'ShipIdent': state['ShipIdent'], + 'HullValue': state['HullValue'], + 'ModulesValue': state['ModulesValue'], + 'Rebuy': state['Rebuy'], + 'MaxJumpRange': entry['MaxJumpRange'], + 'UnladenMass': entry['UnladenMass'], + 'CargoCapacity': entry['CargoCapacity'], + 'Modules': mod_dict, + }) + initial_dict.update({'data': data_dict}) + json.dump(initial_dict, open('inara.json', 'w'), indent=4) + return None + + def new_add_event( name: str, timestamp: str, diff --git a/ships.json b/ships.json index 65a2989e..ac05d5d8 100644 --- a/ships.json +++ b/ships.json @@ -1,119 +1,158 @@ { "Adder": { - "hullMass": 35 + "hullMass": 35, + "reserveFuelCapacity": 0.36 }, "Alliance Challenger": { - "hullMass": 450 + "hullMass": 450, + "reserveFuelCapacity": 0.77 }, "Alliance Chieftain": { - "hullMass": 400 + "hullMass": 400, + "reserveFuelCapacity": 0.77 }, "Alliance Crusader": { - "hullMass": 500 + "hullMass": 500, + "reserveFuelCapacity": 0.77 }, "Anaconda": { - "hullMass": 400 + "hullMass": 400, + "reserveFuelCapacity": 1.07 }, "Asp Explorer": { - "hullMass": 280 + "hullMass": 280, + "reserveFuelCapacity": 0.63 }, "Asp Scout": { - "hullMass": 150 + "hullMass": 150, + "reserveFuelCapacity": 0.47 }, "Beluga Liner": { - "hullMass": 950 + "hullMass": 950, + "reserveFuelCapacity": 0.81 }, "Cobra MkIII": { - "hullMass": 180 + "hullMass": 180, + "reserveFuelCapacity": 0.49 }, "Cobra MkIV": { - "hullMass": 210 + "hullMass": 210, + "reserveFuelCapacity": 0.51 }, "Diamondback Explorer": { - "hullMass": 260 + "hullMass": 260, + "reserveFuelCapacity": 0.52 }, "Diamondback Scout": { - "hullMass": 170 + "hullMass": 170, + "reserveFuelCapacity": 0.49 }, "Dolphin": { - "hullMass": 140 + "hullMass": 140, + "reserveFuelCapacity": 0.5 }, "Eagle": { - "hullMass": 50 + "hullMass": 50, + "reserveFuelCapacity": 0.34 }, "Federal Assault Ship": { - "hullMass": 480 + "hullMass": 480, + "reserveFuelCapacity": 0.72 }, "Federal Corvette": { - "hullMass": 900 + "hullMass": 900, + "reserveFuelCapacity": 1.13 }, "Federal Dropship": { - "hullMass": 580 + "hullMass": 580, + "reserveFuelCapacity": 0.83 }, "Federal Gunship": { - "hullMass": 580 + "hullMass": 580, + "reserveFuelCapacity": 0.82 }, "Fer-de-Lance": { - "hullMass": 250 + "hullMass": 250, + "reserveFuelCapacity": 0.67 }, "Hauler": { - "hullMass": 14 + "hullMass": 14, + "reserveFuelCapacity": 0.25 }, "Imperial Clipper": { - "hullMass": 400 + "hullMass": 400, + "reserveFuelCapacity": 0.74 }, "Imperial Courier": { - "hullMass": 35 + "hullMass": 35, + "reserveFuelCapacity": 0.41 }, "Imperial Cutter": { - "hullMass": 1100 + "hullMass": 1100, + "reserveFuelCapacity": 1.16 }, "Imperial Eagle": { - "hullMass": 50 + "hullMass": 50, + "reserveFuelCapacity": 0.37 }, "Keelback": { - "hullMass": 180 + "hullMass": 180, + "reserveFuelCapacity": 0.39 }, "Krait MkII": { - "hullMass": 320 + "hullMass": 320, + "reserveFuelCapacity": 0.63 }, "Krait Phantom": { - "hullMass": 270 + "hullMass": 270, + "reserveFuelCapacity": 0.63 }, "Mamba": { - "hullMass": 250 + "hullMass": 250, + "reserveFuelCapacity": 0.5 }, "Orca": { - "hullMass": 290 + "hullMass": 290, + "reserveFuelCapacity": 0.79 }, "Python": { - "hullMass": 350 + "hullMass": 350, + "reserveFuelCapacity": 0.83 }, "Python Mk II": { - "hullMass": 450 + "hullMass": 450, + "reserveFuelCapacity": 0.83 }, "Sidewinder": { - "hullMass": 25 + "hullMass": 25, + "reserveFuelCapacity": 0.3 }, "Type-10 Defender": { - "hullMass": 1200 + "hullMass": 1200, + "reserveFuelCapacity": 0.77 }, "Type-6 Transporter": { - "hullMass": 155 + "hullMass": 155, + "reserveFuelCapacity": 0.39 }, "Type-7 Transporter": { - "hullMass": 350 + "hullMass": 350, + "reserveFuelCapacity": 0.52 }, "Type-9 Heavy": { - "hullMass": 850 + "hullMass": 850, + "reserveFuelCapacity": 0.77 }, "Viper MkIII": { - "hullMass": 50 + "hullMass": 50, + "reserveFuelCapacity": 0.41 }, "Viper MkIV": { - "hullMass": 190 + "hullMass": 190, + "reserveFuelCapacity": 0.46 }, "Vulture": { - "hullMass": 230 + "hullMass": 230, + "reserveFuelCapacity": 0.57 } } \ No newline at end of file From d478a68bc61de1fdc20c6ca526e4c1740944e672 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Tue, 18 Jun 2024 21:15:11 -0400 Subject: [PATCH 2/9] [2262] Simplify SLEF Building --- plugins/inara.py | 55 +++++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/plugins/inara.py b/plugins/inara.py index 1cae5c64..3fd42f34 100644 --- a/plugins/inara.py +++ b/plugins/inara.py @@ -871,7 +871,7 @@ def journal_entry( # noqa: C901, CCR001 cur_ship['shipRebuyCost'] = state['Rebuy'] new_add_event('setCommanderShip', entry['timestamp'], cur_ship) - make_slef(state, entry) + make_slef(entry) # Stored modules if event_name == 'StoredModules': @@ -1478,51 +1478,30 @@ def make_loadout(state: dict[str, Any]) -> dict[str, Any]: # noqa: CCR001 } -def make_slef(state: dict[str, Any], entry) -> None: +def make_slef(entry) -> None: initial_dict = { "header": {"appName": appname, "appVersion": str(appversion())} } data_dict = {} - loadout = make_loadout(state) - modules = loadout['shipLoadout'] - mod_dict = [] - for module in modules: - if module['slotName']: - builder = { - 'Slot': module['slotName'], - 'Item': module['itemName'] - } - if module.get('itemHealth'): - builder.update({'ItemHealth': module['itemHealth']}) - if module.get('isOn'): - builder.update({'On': True}) - elif not module.get('isOn'): - builder.update({'On': False}) - if module.get('itemPriority'): - builder.update({'Priority': module['itemPriority']}) - if module.get('itemValue'): - builder.update({'Value': module['itemValue']}) - if not module.get('itemValue'): - builder.update({'Value': 0}) - if module.get('slotName') == 'FuelTank': - cap = module['itemName'].split('size') - cap = cap[1].split('_') - cap = 2**int(cap[0]) - ship = edmc_data.ship_name_map[state["ShipType"]] - fuel = {'Main': cap, 'Reserve': ships[ship]['reserveFuelCapacity']} - data_dict.update({"FuelCapacity": fuel}) - mod_dict.append(builder) + for module in entry['Modules']: + if module.get('Slot') == 'FuelTank': + cap = module['Item'].split('size') + cap = cap[1].split('_') + cap = 2 ** int(cap[0]) + ship = edmc_data.ship_name_map[entry["Ship"]] + fuel = {'Main': cap, 'Reserve': ships[ship]['reserveFuelCapacity']} + data_dict.update({"FuelCapacity": fuel}) data_dict.update({ - 'Ship': state["ShipType"], - 'ShipName': state['ShipName'], - 'ShipIdent': state['ShipIdent'], - 'HullValue': state['HullValue'], - 'ModulesValue': state['ModulesValue'], - 'Rebuy': state['Rebuy'], + 'Ship': entry["Ship"], + 'ShipName': entry['ShipName'], + 'ShipIdent': entry['ShipIdent'], + 'HullValue': entry['HullValue'], + 'ModulesValue': entry['ModulesValue'], + 'Rebuy': entry['Rebuy'], 'MaxJumpRange': entry['MaxJumpRange'], 'UnladenMass': entry['UnladenMass'], 'CargoCapacity': entry['CargoCapacity'], - 'Modules': mod_dict, + 'Modules': entry['Modules'], }) initial_dict.update({'data': data_dict}) json.dump(initial_dict, open('inara.json', 'w'), indent=4) From 0cc35db96b560f971a78b3d4f30003a37805bc18 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Tue, 18 Jun 2024 22:02:41 -0400 Subject: [PATCH 3/9] [2262] SLEF to this var --- plugins/inara.py | 6 +++++- ttkHyperlinkLabel.py | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/inara.py b/plugins/inara.py index 3fd42f34..c3f030c4 100644 --- a/plugins/inara.py +++ b/plugins/inara.py @@ -107,6 +107,7 @@ class This: self.fleet: list[dict[str, Any]] | None = None self.shipswap: bool = False # just swapped ship self.on_foot = False + self.SLEF: str | None = None self.timer_run = True @@ -1504,7 +1505,10 @@ def make_slef(entry) -> None: 'Modules': entry['Modules'], }) initial_dict.update({'data': data_dict}) - json.dump(initial_dict, open('inara.json', 'w'), indent=4) + output = json.dumps(initial_dict, indent=4) + this.SLEF = str(output) + print('set output') + print(type(this.SLEF)) return None diff --git a/ttkHyperlinkLabel.py b/ttkHyperlinkLabel.py index 6266d9fb..95ebd2e7 100644 --- a/ttkHyperlinkLabel.py +++ b/ttkHyperlinkLabel.py @@ -194,6 +194,11 @@ class HyperlinkLabel(tk.Label or ttk.Label): # type: ignore menu.add_command(label=tr.tl('Copy'), command=self.copy) # As in Copy and Paste if self.name == 'ship': + # TODO: Get SLEF from Inara + # print(self.SLEF) + # menu.add_command(label=tr.tl('Copy INARA SLEF'), command=lambda: self.copy_slef(self), state=tk.DISABLED) + # menu.entryconfigure(1, state=self.SLEF and tk.NORMAL or tk.DISABLED) + menu.add_separator() for url in plug.provides('shipyard_url'): menu.add_command( @@ -224,3 +229,8 @@ class HyperlinkLabel(tk.Label or ttk.Label): # type: ignore """Copy the current text to the clipboard.""" self.clipboard_clear() self.clipboard_append(self['text']) + + # def copy_slef(self, this) -> None: + # """Copy the current text to the clipboard.""" + # self.clipboard_clear() + # self.clipboard_append(this.SLEF) From 3b6259276a9fdfb606abbd59fd8aca488f1c32e3 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Sun, 23 Jun 2024 13:05:39 -0400 Subject: [PATCH 4/9] [2262] Move SLEF to Monitor --- inara.json | 267 ------------------------------------------- monitor.py | 34 +++++- plugins/inara.py | 35 ------ ttkHyperlinkLabel.py | 14 +-- 4 files changed, 39 insertions(+), 311 deletions(-) delete mode 100644 inara.json diff --git a/inara.json b/inara.json deleted file mode 100644 index 1c5cba8a..00000000 --- a/inara.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "header": { - "appName": "EDMarketConnector", - "appVersion": "5.11.1+85f5c328.DIRTY" - }, - "data": { - "FuelCapacity": { - "Main": 128, - "Reserve": 0.81 - }, - "Ship": "belugaliner", - "ShipName": "HSRV Guiding Light", - "ShipIdent": "NFC-23", - "HullValue": 69924158, - "ModulesValue": 96918434, - "Rebuy": 8342132, - "MaxJumpRange": 52.615143, - "UnladenMass": 1233.057983, - "CargoCapacity": 16, - "Modules": [ - { - "Slot": "TinyHardpoint1", - "Item": "hpt_heatsinklauncher_turret_tiny", - "ItemHealth": 1.0, - "On": true, - "Value": 3072 - }, - { - "Slot": "TinyHardpoint2", - "Item": "hpt_heatsinklauncher_turret_tiny", - "ItemHealth": 1.0, - "On": true, - "Value": 3413 - }, - { - "Slot": "TinyHardpoint3", - "Item": "hpt_heatsinklauncher_turret_tiny", - "ItemHealth": 1.0, - "On": true, - "Value": 3072 - }, - { - "Slot": "TinyHardpoint4", - "Item": "hpt_heatsinklauncher_turret_tiny", - "ItemHealth": 1.0, - "On": true, - "Value": 3072 - }, - { - "Slot": "PaintJob", - "Item": "paintjob_belugaliner_lrpo_azure", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "Armour", - "Item": "belugaliner_armour_grade1", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "PowerPlant", - "Item": "int_powerplant_size6_class5", - "ItemHealth": 1.0, - "On": true, - "Priority": 1, - "Value": 11382139 - }, - { - "Slot": "MainEngines", - "Item": "int_engine_size7_class2", - "ItemHealth": 1.0, - "On": true, - "Priority": 1, - "Value": 1666898 - }, - { - "Slot": "FrameShiftDrive", - "Item": "int_hyperdrive_size7_class5", - "ItemHealth": 1.0, - "On": true, - "Value": 45006196 - }, - { - "Slot": "LifeSupport", - "Item": "int_lifesupport_size8_class2", - "ItemHealth": 1.0, - "On": true, - "Value": 1530326 - }, - { - "Slot": "PowerDistributor", - "Item": "int_powerdistributor_size6_class5", - "ItemHealth": 1.0, - "On": true, - "Priority": 1, - "Value": 3049917 - }, - { - "Slot": "Radar", - "Item": "int_sensors_size5_class2", - "ItemHealth": 1.0, - "On": true, - "Priority": 1, - "Value": 69713 - }, - { - "Slot": "FuelTank", - "Item": "int_fueltank_size7_class3", - "ItemHealth": 1.0, - "On": true, - "Priority": 1, - "Value": 1562752 - }, - { - "Slot": "Decal1", - "Item": "decal_distantworlds2", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "Decal2", - "Item": "decal_distantworlds2", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "Decal3", - "Item": "decal_distantworlds2", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "ShipName0", - "Item": "nameplate_practical01_black", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "ShipName1", - "Item": "nameplate_practical01_black", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "ShipID0", - "Item": "nameplate_shipid_singleline_black", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "ShipID1", - "Item": "nameplate_shipid_singleline_black", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "Slot01_Size6", - "Item": "int_fuelscoop_size6_class5", - "ItemHealth": 1.0, - "On": true, - "Value": 25240068 - }, - { - "Slot": "Slot02_Size6", - "Item": "int_repairer_size6_class2", - "ItemHealth": 1.0, - "On": true, - "Value": 497429 - }, - { - "Slot": "Slot03_Size6", - "Item": "int_shieldgenerator_size5_class2", - "ItemHealth": 1.0, - "On": true, - "Value": 165879 - }, - { - "Slot": "Slot04_Size6", - "Item": "int_dronecontrol_repair_size5_class2", - "ItemHealth": 1.0, - "On": true, - "Value": 85293 - }, - { - "Slot": "Slot05_Size5", - "Item": "int_guardianfsdbooster_size5", - "ItemHealth": 1.0, - "On": true, - "Value": 5688921 - }, - { - "Slot": "Slot07_Size4", - "Item": "int_cargorack_size4_class1", - "ItemHealth": 1.0, - "On": true, - "Priority": 1, - "Value": 30124 - }, - { - "Slot": "Slot11_Size3", - "Item": "int_detailedsurfacescanner_tiny", - "ItemHealth": 1.0, - "On": true, - "Value": 219375 - }, - { - "Slot": "Slot12_Size1", - "Item": "int_repairer_size1_class5", - "ItemHealth": 1.0, - "On": false, - "Value": 710775 - }, - { - "Slot": "PlanetaryApproachSuite", - "Item": "int_planetapproachsuite_advanced", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "WeaponColour", - "Item": "weaponcustomisation_red", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "EngineColour", - "Item": "enginecustomisation_orange", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "VesselVoice", - "Item": "voicepack_verity", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "ShipCockpit", - "Item": "belugaliner_cockpit", - "ItemHealth": 1.0, - "On": true, - "Priority": 1 - }, - { - "Slot": "CargoHatch", - "Item": "modularcargobaydoor", - "ItemHealth": 1.0, - "On": false, - "Priority": 1 - } - ] - } -} \ No newline at end of file diff --git a/monitor.py b/monitor.py index 9d33f5eb..ae0f3ad7 100644 --- a/monitor.py +++ b/monitor.py @@ -21,9 +21,10 @@ from time import gmtime, localtime, mktime, sleep, strftime, strptime, time from typing import TYPE_CHECKING, Any, BinaryIO, MutableMapping import semantic_version import util_ships -from config import config -from edmc_data import edmc_suit_shortnames, edmc_suit_symbol_localised +from config import config, appname, appversion +from edmc_data import edmc_suit_shortnames, edmc_suit_symbol_localised, ship_name_map from EDMCLogging import get_main_logger +from edshipyard import ships if TYPE_CHECKING: import tkinter @@ -109,6 +110,7 @@ class EDLogs(FileSystemEventHandler): self.group: str | None = None self.cmdr: str | None = None self.started: int | None = None # Timestamp of the LoadGame event + self.slef: str | None = None self._navroute_retries_remaining = 0 self._last_navroute_journal_timestamp: float | None = None @@ -701,6 +703,34 @@ class EDLogs(FileSystemEventHandler): module.pop('AmmoInHopper') self.state['Modules'][module['Slot']] = module + # SLEF + initial_dict = { + "header": {"appName": appname, "appVersion": str(appversion())} + } + data_dict = {} + for module in entry['Modules']: + if module.get('Slot') == 'FuelTank': + cap = module['Item'].split('size') + cap = cap[1].split('_') + cap = 2 ** int(cap[0]) + ship = ship_name_map[entry["Ship"]] + fuel = {'Main': cap, 'Reserve': ships[ship]['reserveFuelCapacity']} + data_dict.update({"FuelCapacity": fuel}) + data_dict.update({ + 'Ship': entry["Ship"], + 'ShipName': entry['ShipName'], + 'ShipIdent': entry['ShipIdent'], + 'HullValue': entry['HullValue'], + 'ModulesValue': entry['ModulesValue'], + 'Rebuy': entry['Rebuy'], + 'MaxJumpRange': entry['MaxJumpRange'], + 'UnladenMass': entry['UnladenMass'], + 'CargoCapacity': entry['CargoCapacity'], + 'Modules': entry['Modules'], + }) + initial_dict.update({'data': data_dict}) + output = json.dumps(initial_dict, indent=4) + self.slef = str(output) elif event_type == 'modulebuy': self.state['Modules'][entry['Slot']] = { diff --git a/plugins/inara.py b/plugins/inara.py index c3f030c4..a4cc0e55 100644 --- a/plugins/inara.py +++ b/plugins/inara.py @@ -35,7 +35,6 @@ import requests import edmc_data import killswitch import myNotebook as nb # noqa: N813 -from edshipyard import ships import plug import timeout_session from companion import CAPIData @@ -872,7 +871,6 @@ def journal_entry( # noqa: C901, CCR001 cur_ship['shipRebuyCost'] = state['Rebuy'] new_add_event('setCommanderShip', entry['timestamp'], cur_ship) - make_slef(entry) # Stored modules if event_name == 'StoredModules': @@ -1479,39 +1477,6 @@ def make_loadout(state: dict[str, Any]) -> dict[str, Any]: # noqa: CCR001 } -def make_slef(entry) -> None: - initial_dict = { - "header": {"appName": appname, "appVersion": str(appversion())} - } - data_dict = {} - for module in entry['Modules']: - if module.get('Slot') == 'FuelTank': - cap = module['Item'].split('size') - cap = cap[1].split('_') - cap = 2 ** int(cap[0]) - ship = edmc_data.ship_name_map[entry["Ship"]] - fuel = {'Main': cap, 'Reserve': ships[ship]['reserveFuelCapacity']} - data_dict.update({"FuelCapacity": fuel}) - data_dict.update({ - 'Ship': entry["Ship"], - 'ShipName': entry['ShipName'], - 'ShipIdent': entry['ShipIdent'], - 'HullValue': entry['HullValue'], - 'ModulesValue': entry['ModulesValue'], - 'Rebuy': entry['Rebuy'], - 'MaxJumpRange': entry['MaxJumpRange'], - 'UnladenMass': entry['UnladenMass'], - 'CargoCapacity': entry['CargoCapacity'], - 'Modules': entry['Modules'], - }) - initial_dict.update({'data': data_dict}) - output = json.dumps(initial_dict, indent=4) - this.SLEF = str(output) - print('set output') - print(type(this.SLEF)) - return None - - def new_add_event( name: str, timestamp: str, diff --git a/ttkHyperlinkLabel.py b/ttkHyperlinkLabel.py index 95ebd2e7..5ca4feb4 100644 --- a/ttkHyperlinkLabel.py +++ b/ttkHyperlinkLabel.py @@ -195,9 +195,9 @@ class HyperlinkLabel(tk.Label or ttk.Label): # type: ignore if self.name == 'ship': # TODO: Get SLEF from Inara - # print(self.SLEF) - # menu.add_command(label=tr.tl('Copy INARA SLEF'), command=lambda: self.copy_slef(self), state=tk.DISABLED) - # menu.entryconfigure(1, state=self.SLEF and tk.NORMAL or tk.DISABLED) + print(bool(monitor.slef)) + menu.add_command(label=tr.tl('Copy INARA SLEF'), command=self.copy_slef, state=tk.DISABLED) + menu.entryconfigure(1, state=monitor.slef and tk.NORMAL or tk.DISABLED) menu.add_separator() for url in plug.provides('shipyard_url'): @@ -230,7 +230,7 @@ class HyperlinkLabel(tk.Label or ttk.Label): # type: ignore self.clipboard_clear() self.clipboard_append(self['text']) - # def copy_slef(self, this) -> None: - # """Copy the current text to the clipboard.""" - # self.clipboard_clear() - # self.clipboard_append(this.SLEF) + def copy_slef(self) -> None: + """Copy the current text to the clipboard.""" + self.clipboard_clear() + self.clipboard_append(monitor.slef) From 47192ce674375f4b87590167919547c25a070d92 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Sun, 23 Jun 2024 13:06:52 -0400 Subject: [PATCH 5/9] [2262] Remove Dev self.SLEF --- plugins/inara.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/inara.py b/plugins/inara.py index a4cc0e55..f2c9830e 100644 --- a/plugins/inara.py +++ b/plugins/inara.py @@ -106,7 +106,6 @@ class This: self.fleet: list[dict[str, Any]] | None = None self.shipswap: bool = False # just swapped ship self.on_foot = False - self.SLEF: str | None = None self.timer_run = True From d9f7b72e4655777b70ec4e1cfa0b4183231fe518 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Sun, 23 Jun 2024 13:09:13 -0400 Subject: [PATCH 6/9] [2262] Update Type Hinting --- monitor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitor.py b/monitor.py index ae0f3ad7..29970ec0 100644 --- a/monitor.py +++ b/monitor.py @@ -704,7 +704,7 @@ class EDLogs(FileSystemEventHandler): self.state['Modules'][module['Slot']] = module # SLEF - initial_dict = { + initial_dict: dict[str, dict[str, Any]] = { "header": {"appName": appname, "appVersion": str(appversion())} } data_dict = {} From 5a9970e6c7cf2191662ebde0bf9d0fa873d7acd6 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Sun, 23 Jun 2024 13:10:57 -0400 Subject: [PATCH 7/9] [2262] Remove Debug Code --- ttkHyperlinkLabel.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/ttkHyperlinkLabel.py b/ttkHyperlinkLabel.py index 5ca4feb4..6678530a 100644 --- a/ttkHyperlinkLabel.py +++ b/ttkHyperlinkLabel.py @@ -194,8 +194,6 @@ class HyperlinkLabel(tk.Label or ttk.Label): # type: ignore menu.add_command(label=tr.tl('Copy'), command=self.copy) # As in Copy and Paste if self.name == 'ship': - # TODO: Get SLEF from Inara - print(bool(monitor.slef)) menu.add_command(label=tr.tl('Copy INARA SLEF'), command=self.copy_slef, state=tk.DISABLED) menu.entryconfigure(1, state=monitor.slef and tk.NORMAL or tk.DISABLED) From 067bef628e64716c3bd655e52369d2de474f09ad Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Sun, 23 Jun 2024 13:14:41 -0400 Subject: [PATCH 8/9] [2262] Update Capitalizations and add Translations --- L10n/en.template | 3 +++ ttkHyperlinkLabel.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/L10n/en.template b/L10n/en.template index 1c1e110f..34734787 100644 --- a/L10n/en.template +++ b/L10n/en.template @@ -813,3 +813,6 @@ /* ttkHyperlinkLabel.py: Open Element In Selected Provider; */ "Open in {URL}" = "Open in {URL}"; + +/* ttkHyperlinkLabel.py: Copy the Inara SLEF Format of the active ship to the clipboard; */ +"Copy Inara SLEF" = "Copy Inara SLEF"; diff --git a/ttkHyperlinkLabel.py b/ttkHyperlinkLabel.py index 6678530a..9f445690 100644 --- a/ttkHyperlinkLabel.py +++ b/ttkHyperlinkLabel.py @@ -194,7 +194,8 @@ class HyperlinkLabel(tk.Label or ttk.Label): # type: ignore menu.add_command(label=tr.tl('Copy'), command=self.copy) # As in Copy and Paste if self.name == 'ship': - menu.add_command(label=tr.tl('Copy INARA SLEF'), command=self.copy_slef, state=tk.DISABLED) + # LANG: Copy the Inara SLEF Format of the active ship to the clipboard + menu.add_command(label=tr.tl('Copy Inara SLEF'), command=self.copy_slef, state=tk.DISABLED) menu.entryconfigure(1, state=monitor.slef and tk.NORMAL or tk.DISABLED) menu.add_separator() From 19c91511359812f7c1b8bb920e50014e26b564b6 Mon Sep 17 00:00:00 2001 From: David Sangrey Date: Sun, 23 Jun 2024 13:26:44 -0400 Subject: [PATCH 9/9] [2262] Format SLEF with Square Brackets --- monitor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitor.py b/monitor.py index 29970ec0..b11301b8 100644 --- a/monitor.py +++ b/monitor.py @@ -730,7 +730,7 @@ class EDLogs(FileSystemEventHandler): }) initial_dict.update({'data': data_dict}) output = json.dumps(initial_dict, indent=4) - self.slef = str(output) + self.slef = str(f"[{output}]") elif event_type == 'modulebuy': self.state['Modules'][entry['Slot']] = {