Beispiel #1
0
    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()
Beispiel #2
0
    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()
Beispiel #3
0
    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()
Beispiel #5
0
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()
Beispiel #7
0
    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()