From 29c059c27590395d2473084f0af228492384897d Mon Sep 17 00:00:00 2001 From: Athanasius <github@miggy.org> Date: Tue, 13 Apr 2021 15:26:41 +0100 Subject: [PATCH] Suit: Label and text now properly aligned, and toggling * There was a 'hidden' padx/pady thing going on, not applying because we were hidden/not gridded, so apply in toggle/show. * Make that padx=5 all over use a common constant. * Set Suit text if most recent CAPI data contains the relevant data. If it's not present then hide the Suit row. --- EDMarketConnector.py | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/EDMarketConnector.py b/EDMarketConnector.py index b695545a..b3e1e1cf 100755 --- a/EDMarketConnector.py +++ b/EDMarketConnector.py @@ -316,6 +316,8 @@ class AppWindow(object): EVENT_BUTTON = 4 EVENT_VIRTUAL = 35 + PADX = 5 + def __init__(self, master: tk.Tk): # noqa: C901, CCR001 # TODO - can possibly factor something out self.holdofftime = config.get_int('querytime', default=0) + companion.holdoff @@ -354,7 +356,7 @@ class AppWindow(object): self.ship_label = tk.Label(frame) self.ship = HyperlinkLabel(frame, compound=tk.RIGHT, url=self.shipyard_url, name='ship') self.suit_label = tk.Label(frame) - self.suit = tk.Label(frame) + self.suit = tk.Label(frame, compound=tk.RIGHT, anchor=tk.W, name='suit') self.system_label = tk.Label(frame) self.system = HyperlinkLabel(frame, compound=tk.RIGHT, url=self.system_url, popup_copy=True, name='system') self.station_label = tk.Label(frame) @@ -369,17 +371,19 @@ class AppWindow(object): self.cmdr_label.grid(row=ui_row, column=0, sticky=tk.W) self.cmdr.grid(row=ui_row, column=1, sticky=tk.EW) ui_row += 1 + self.ship_label.grid(row=ui_row, column=0, sticky=tk.W) self.ship.grid(row=ui_row, column=1, sticky=tk.EW) ui_row += 1 + self.suit_grid_row = ui_row - # self.suit_label.grid(row=self.suit_grid_row, column=0, sticky=tk.W) - # self.suit.grid(row=self.suit_grid_row, column=1, sticky=tk.EW) self.suit_shown = False ui_row += 1 + self.system_label.grid(row=ui_row, column=0, sticky=tk.W) self.system.grid(row=ui_row, column=1, sticky=tk.EW) ui_row += 1 + self.station_label.grid(row=ui_row, column=0, sticky=tk.W) self.station.grid(row=ui_row, column=1, sticky=tk.EW) ui_row += 1 @@ -411,7 +415,7 @@ class AppWindow(object): theme.button_bind(self.theme_button, self.getandsend) for child in frame.winfo_children(): - child.grid_configure(padx=5, pady=(platform != 'win32' or isinstance(child, tk.Frame)) and 2 or 0) + child.grid_configure(padx=self.PADX, pady=(platform != 'win32' or isinstance(child, tk.Frame)) and 2 or 0) # The type needs defining for adding the menu entry, but won't be # properly set until later @@ -508,7 +512,7 @@ class AppWindow(object): theme_close.grid(row=0, column=4, padx=2) theme.button_bind(theme_close, self.onexit, image=self.theme_close) self.theme_file_menu = tk.Label(self.theme_menubar, anchor=tk.W) - self.theme_file_menu.grid(row=1, column=0, padx=5, sticky=tk.W) + self.theme_file_menu.grid(row=1, column=0, padx=self.PADX, sticky=tk.W) theme.button_bind(self.theme_file_menu, lambda e: self.file_menu.tk_popup(e.widget.winfo_rootx(), e.widget.winfo_rooty() @@ -525,7 +529,7 @@ class AppWindow(object): lambda e: self.help_menu.tk_popup(e.widget.winfo_rootx(), e.widget.winfo_rooty() + e.widget.winfo_height())) - tk.Frame(self.theme_menubar, highlightthickness=1).grid(columnspan=5, padx=5, sticky=tk.EW) + tk.Frame(self.theme_menubar, highlightthickness=1).grid(columnspan=5, padx=self.PADX, sticky=tk.EW) theme.register(self.theme_minimize) # images aren't automatically registered theme.register(self.theme_close) self.blank_menubar = tk.Frame(frame) @@ -598,6 +602,7 @@ class AppWindow(object): config.delete('logdir', suppress=True) self.postprefs(False) # Companion login happens in callback from monitor + self.toggle_suit_row(visible=False) def toggle_suit_row(self, visible: Optional[bool] = None) -> None: """ @@ -612,8 +617,15 @@ class AppWindow(object): self.suit_shown = True if not self.suit_shown: - self.suit_label.grid(row=self.suit_grid_row, column=0, sticky=tk.W) - self.suit.grid(row=self.suit_grid_row, column=1, sticky=tk.EW) + if platform != 'win32': + pady = 2 + + else: + + pady = 0 + + self.suit_label.grid(row=self.suit_grid_row, column=0, sticky=tk.W, padx=self.PADX, pady=pady) + self.suit.grid(row=self.suit_grid_row, column=1, sticky=tk.EW, padx=self.PADX, pady=pady) self.suit_shown = True else: @@ -890,6 +902,13 @@ class AppWindow(object): self.ship.configure(state=True) if monitor.state.get('SuitCurrent') is not None: + if (loadout := data.get('loadout')) is not None: + if (suit := loadout.get('suit')) is not None: + if (suitname := suit.get('locName')) is not None: + # We've been paranoid about loadout->suit->suitname, now just assume loadouts is there + loadout_name = data['loadouts'][f"{loadout['loadoutSlotId']}"]['name'] + self.suit['text'] = f'{suitname} ({loadout_name})' + self.toggle_suit_row(visible=True) else: