diff --git a/EDMarketConnector.py b/EDMarketConnector.py index 3499b85e..7d3f1ef5 100755 --- a/EDMarketConnector.py +++ b/EDMarketConnector.py @@ -366,10 +366,22 @@ class AppWindow: if not self.status['text']: self.status['text'] = _('Logging in...') self.button['state'] = self.theme_button['state'] = tk.DISABLED + if platform == 'darwin': + self.view_menu.entryconfigure(0, state=tk.DISABLED) # Status + self.file_menu.entryconfigure(0, state=tk.DISABLED) # Save Raw Data + else: + self.file_menu.entryconfigure(0, state=tk.DISABLED) # Status + self.file_menu.entryconfigure(1, state=tk.DISABLED) # Save Raw Data self.w.update_idletasks() try: if companion.session.login(monitor.cmdr, monitor.is_beta): self.status['text'] = _('Authentication successful') # Successfully authenticated with the Frontier website + if platform == 'darwin': + self.view_menu.entryconfigure(0, state=tk.NORMAL) # Status + self.file_menu.entryconfigure(0, state=tk.NORMAL) # Save Raw Data + else: + self.file_menu.entryconfigure(0, state=tk.NORMAL) # Status + self.file_menu.entryconfigure(1, state=tk.NORMAL) # Save Raw Data except (companion.CredentialsError, companion.ServerError, companion.ServerLagging) as e: self.status['text'] = unicode(e) except Exception as e: @@ -386,6 +398,11 @@ class AppWindow: if not monitor.cmdr or not monitor.mode or monitor.state['Captain'] or not monitor.system: return # In CQC or on crew - do nothing + if companion.session.state == companion.Session.STATE_AUTH: + # Attempt another Auth + self.login() + return + if not retrying: if time() < self.holdofftime: # Was invoked by key while in cooldown self.status['text'] = '' @@ -557,8 +574,7 @@ class AppWindow: if entry['event'] in [None, 'StartUp', 'NewCommander', 'LoadGame'] and monitor.cmdr: if not config.get('cmdrs') or monitor.cmdr not in config.get('cmdrs'): config.set('cmdrs', (config.get('cmdrs') or []) + [monitor.cmdr]) - if config.getint('output') & config.OUT_MKT_EDDN: - self.login() + self.login() if not entry['event'] or not monitor.mode: return # Startup or in CQC @@ -579,8 +595,8 @@ class AppWindow: if not config.getint('hotkey_mute'): hotkeymgr.play_bad() - # Auto-Update after docking - if entry['event'] in ['StartUp', 'Location', 'Docked'] and monitor.station and not config.getint('output') & config.OUT_MKT_MANUAL and config.getint('output') & config.OUT_STATION_ANY: + # Auto-Update after docking, but not if auth callback is pending + if entry['event'] in ['StartUp', 'Location', 'Docked'] and monitor.station and not config.getint('output') & config.OUT_MKT_MANUAL and config.getint('output') & config.OUT_STATION_ANY and companion.session.state != companion.Session.STATE_AUTH: self.w.after(int(SERVER_RETRY * 1000), self.getandsend) # cAPI auth @@ -588,6 +604,12 @@ class AppWindow: try: companion.session.auth_callback() self.status['text'] = _('Authentication successful') # Successfully authenticated with the Frontier website + if platform == 'darwin': + self.view_menu.entryconfigure(0, state=tk.NORMAL) # Status + self.file_menu.entryconfigure(0, state=tk.NORMAL) # Save Raw Data + else: + self.file_menu.entryconfigure(0, state=tk.NORMAL) # Status + self.file_menu.entryconfigure(1, state=tk.NORMAL) # Save Raw Data except companion.ServerError as e: self.status['text'] = unicode(e) except Exception as e: