def apply(self): config.set( 'output', # (self.out_td.get() and config.OUT_MKT_TD) + # (self.out_csv.get() and config.OUT_MKT_CSV) + (0) + (self.out_ship.get() and config.OUT_SHIP) + (config.getint('output') & (config.OUT_MKT_EDDN | config.OUT_SYS_EDDN | config.OUT_SYS_DELAY))) #print(f"output {config.getint('output')} {self.out_ship.get()}") config.set( 'outdir', self.outdir.get().startswith('~') and join(config.home, self.outdir.get()[2:]) or self.outdir.get()) lang_codes = {v: k for k, v in self.languages.items()} # Codes by name config.set('language', lang_codes.get(self.lang.get()) or '') Translations.install(config.get('language') or None) config.set('always_ontop', self.always_ontop.get()) config.set('theme', self.theme.get()) config.set('dark_text', self.theme_colors[0]) config.set('dark_highlight', self.theme_colors[1]) theme.apply(self.parent) # Notify if self.callback: self.callback() plug.notify_prefs_changed(monitor.cmdr, monitor.is_beta) self._destroy()
def apply(self): config.set('output', (self.out_td.get() and config.OUT_MKT_TD) + (self.out_csv.get() and config.OUT_MKT_CSV) + (config.OUT_MKT_MANUAL if not self.out_auto.get() else 0) + (self.out_ship.get() and config.OUT_SHIP) + (config.getint('output') & (config.OUT_MKT_EDDN | config.OUT_SYS_EDDN | config.OUT_SYS_DELAY))) config.set( 'outdir', self.outdir.get().startswith('~') and join(config.home, self.outdir.get()[2:]) or self.outdir.get()) logdir = self.logdir.get() if config.default_journal_dir and logdir.lower( ) == config.default_journal_dir.lower(): config.set('journaldir', '') # default location else: config.set('journaldir', logdir) if platform in ['darwin', 'win32']: config.set('hotkey_code', self.hotkey_code) config.set('hotkey_mods', self.hotkey_mods) config.set('hotkey_always', int(not self.hotkey_only.get())) config.set('hotkey_mute', int(not self.hotkey_play.get())) config.set('shipyard_provider', self.shipyard_provider.get()) config.set('system_provider', self.system_provider.get()) config.set('station_provider', self.station_provider.get()) lang_codes = {v: k for k, v in self.languages.iteritems()} # Codes by name config.set('language', lang_codes.get(self.lang.get()) or '') Translations.install(config.get('language') or None) config.set('always_ontop', self.always_ontop.get()) config.set('theme', self.theme.get()) config.set('dark_text', self.theme_colors[0]) config.set('dark_highlight', self.theme_colors[1]) theme.apply(self.parent) # Notify if self.callback: self.callback() plug.notify_prefs_changed(monitor.cmdr, monitor.is_beta) self._destroy()
def apply(self): config.set('output', (self.out_td.get() and config.OUT_MKT_TD) + (self.out_csv.get() and config.OUT_MKT_CSV) + (config.OUT_MKT_MANUAL if not self.out_auto.get() else 0) + (self.out_ship.get() and config.OUT_SHIP) + (config.getint('output') & (config.OUT_MKT_EDDN | config.OUT_SYS_EDDN | config.OUT_SYS_DELAY))) config.set('outdir', self.outdir.get().startswith('~') and join(config.home, self.outdir.get()[2:]) or self.outdir.get()) logdir = self.logdir.get() if config.default_journal_dir and logdir.lower() == config.default_journal_dir.lower(): config.set('journaldir', '') # default location else: config.set('journaldir', logdir) if platform in ['darwin','win32']: config.set('hotkey_code', self.hotkey_code) config.set('hotkey_mods', self.hotkey_mods) config.set('hotkey_always', int(not self.hotkey_only.get())) config.set('hotkey_mute', int(not self.hotkey_play.get())) config.set('shipyard_provider', self.shipyard_provider.get()) config.set('system_provider', self.system_provider.get()) config.set('station_provider', self.station_provider.get()) lang_codes = { v: k for k, v in self.languages.iteritems() } # Codes by name config.set('language', lang_codes.get(self.lang.get()) or '') Translations.install(config.get('language') or None) config.set('always_ontop', self.always_ontop.get()) config.set('theme', self.theme.get()) config.set('dark_text', self.theme_colors[0]) config.set('dark_highlight', self.theme_colors[1]) theme.apply(self.parent) # Notify if self.callback: self.callback() plug.notify_prefs_changed(monitor.cmdr, monitor.is_beta) self._destroy()
# Browser invoked us directly with auth response. Forward the response to the other app instance. CoInitializeEx( 0, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE) ShowWindow( hWnd, SW_RESTORE ) # Wait for it to be responsive to avoid ShellExecute recursing ShellExecute(0, None, sys.argv[1], None, None, SW_RESTORE) else: ShowWindowAsync(hWnd, SW_RESTORE) SetForegroundWindow(hWnd) sys.exit(0) return True EnumWindows(enumwindowsproc, 0) if getattr(sys, 'frozen', False): # By default py2exe tries to write log to dirname(sys.executable) which fails when installed import tempfile sys.stdout = sys.stderr = open( join(tempfile.gettempdir(), '%s.log' % appname), 'wt', 0) # unbuffered print '%s %s %s' % (applongname, appversion, strftime('%Y-%m-%dT%H:%M:%S', localtime())) Translations.install(config.get('language') or None) # Can generate errors so wait til log set up root = tk.Tk(className=appname.lower()) app = AppWindow(root) root.mainloop()
import ttk import tkFileDialog import tkFont import tkMessageBox from ttkHyperlinkLabel import HyperlinkLabel if __debug__: from traceback import print_exc if platform != 'win32': import pdb import signal signal.signal(signal.SIGTERM, lambda sig, frame: pdb.Pdb().set_trace(frame)) from l10n import Translations Translations.install(config.get('language') or None) import companion import commodity from commodity import COMMODITY_CSV import td import stats import prefs import plug from hotkey import hotkeymgr from monitor import monitor from protocol import protocolhandler from dashboard import dashboard from theme import theme SERVER_RETRY = 5 # retry pause for Companion servers [s]
@ctypes.WINFUNCTYPE(BOOL, HWND, LPARAM) def enumwindowsproc(hWnd, lParam): # class name limited to 256 - https://msdn.microsoft.com/en-us/library/windows/desktop/ms633576 cls = ctypes.create_unicode_buffer(257) if GetClassName(hWnd, cls, 257) and cls.value == 'TkTopLevel' and WindowTitle(hWnd) == applongname and GetProcessHandleFromHwnd(hWnd): # If GetProcessHandleFromHwnd succeeds then the app is already running as this user if len(sys.argv) > 1 and sys.argv[1].startswith(protocolhandler.redirect): # Browser invoked us directly with auth response. Forward the response to the other app instance. CoInitializeEx(0, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE) ShowWindow(hWnd, SW_RESTORE) # Wait for it to be responsive to avoid ShellExecute recursing ShellExecute(0, None, sys.argv[1], None, None, SW_RESTORE) else: ShowWindowAsync(hWnd, SW_RESTORE) SetForegroundWindow(hWnd) sys.exit(0) return True EnumWindows(enumwindowsproc, 0) if getattr(sys, 'frozen', False): # By default py2exe tries to write log to dirname(sys.executable) which fails when installed import tempfile sys.stdout = sys.stderr = open(join(tempfile.gettempdir(), '%s.log' % appname), 'wt', 0) # unbuffered print '%s %s %s' % (applongname, appversion, strftime('%Y-%m-%dT%H:%M:%S', localtime())) Translations.install(config.get('language') or None) # Can generate errors so wait til log set up root = tk.Tk() app = AppWindow(root) root.mainloop()
def apply(self): if self.cmdr: if self.password.get().strip(): config.set_password(self.username.get().strip(), self.password.get().strip() ) # Can fail if keyring not unlocked else: config.delete_password(self.username.get().strip( )) # user may have cleared the password field if not config.get('cmdrs'): config.set('cmdrs', [self.cmdr]) config.set('fdev_usernames', [self.username.get().strip()]) else: idx = config.get('cmdrs').index( self.cmdr) if self.cmdr in config.get('cmdrs') else -1 _putfirst('cmdrs', idx, self.cmdr) _putfirst('fdev_usernames', idx, self.username.get().strip()) config.set('token', self.token.get().strip()) config.set('output', (self.out_td.get() and config.OUT_MKT_TD) + (self.out_csv.get() and config.OUT_MKT_CSV) + (config.OUT_MKT_MANUAL if not self.out_auto.get() else 0) + (self.out_ship.get() and config.OUT_SHIP) + (config.getint('output') & (config.OUT_MKT_EDDN | config.OUT_SYS_EDDN | config.OUT_SYS_DELAY))) config.set( 'outdir', self.outdir.get().startswith('~') and join(config.home, self.outdir.get()[2:]) or self.outdir.get()) logdir = self.logdir.get() if config.default_journal_dir and logdir.lower( ) == config.default_journal_dir.lower(): config.set('journaldir', '') # default location else: config.set('journaldir', logdir) if platform in ['darwin', 'win32']: config.set('hotkey_code', self.hotkey_code) config.set('hotkey_mods', self.hotkey_mods) config.set('hotkey_always', int(not self.hotkey_only.get())) config.set('hotkey_mute', int(not self.hotkey_play.get())) config.set('shipyard_provider', self.shipyard_provider.get()) config.set('system_provider', self.system_provider.get()) config.set('station_provider', self.station_provider.get()) lang_codes = {v: k for k, v in self.languages.iteritems()} # Codes by name config.set('language', lang_codes.get(self.lang.get()) or '') Translations.install(config.get('language') or None) config.set('always_ontop', self.always_ontop.get()) config.set('theme', self.theme.get()) config.set('dark_text', self.theme_colors[0]) config.set('dark_highlight', self.theme_colors[1]) theme.apply(self.parent) config.set('anonymous', self.out_anon.get()) # Notify if self.callback: self.callback() plug.notify_prefs_changed(monitor.cmdr, monitor.is_beta) self._destroy()