mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-16 09:10:35 +03:00
parent
a4e38f7c63
commit
b0c88b59c7
@ -171,10 +171,10 @@ class AppWindow:
|
||||
hotkeymgr.register(self.w, config.getint('hotkey_code'), config.getint('hotkey_mods'))
|
||||
|
||||
# Install log monitoring
|
||||
monitor.set_callback(self.system_change)
|
||||
self.w.bind_all('<<Jump>>', self.system_change) # user-generated
|
||||
if (config.getint('output') & config.OUT_LOG_AUTO) and (config.getint('output') & (config.OUT_LOG_AUTO|config.OUT_LOG_EDSM)):
|
||||
monitor.enable_logging()
|
||||
monitor.start()
|
||||
monitor.start(self.w)
|
||||
|
||||
# call after credentials have changed
|
||||
def login(self):
|
||||
@ -369,7 +369,14 @@ class AppWindow:
|
||||
except:
|
||||
pass
|
||||
|
||||
def system_change(self, timestamp, system):
|
||||
def system_change(self, event):
|
||||
|
||||
if not monitor.last_event:
|
||||
if __debug__: print 'spurious system_change', event # eh?
|
||||
return
|
||||
|
||||
timestamp, system = monitor.last_event # would like to use event user_data to carry this, but not accessible in Tkinter
|
||||
|
||||
if self.system['text'] != system:
|
||||
try:
|
||||
self.system['text'] = system
|
||||
|
6
edsm.py
6
edsm.py
@ -36,6 +36,8 @@ class EDSM:
|
||||
elif known:
|
||||
self.result = { 'img': EDSM._IMG_KNOWN, 'url': 'http://www.edsm.net/needed-distances?systemName=%s' % urllib.quote(system_name), 'done': True } # default URL
|
||||
self.thread = threading.Thread(target = self.known, name = 'EDSM worker', args = (system_name, self.result))
|
||||
self.thread.daemon = True
|
||||
self.thread.start()
|
||||
else:
|
||||
self.result = { 'img': '', 'url': 'http://www.edsm.net/needed-distances?systemName=%s' % urllib.quote(system_name), 'done': True } # default URL
|
||||
r = requests.get('http://www.edsm.net/api-v1/system?sysname=%s&coords=1' % urllib.quote(system_name), timeout=EDSM._TIMEOUT)
|
||||
@ -48,6 +50,8 @@ class EDSM:
|
||||
elif data.get('coords'):
|
||||
self.result['img'] = EDSM._IMG_KNOWN
|
||||
self.thread = threading.Thread(target = self.known, name = 'EDSM worker', args = (system_name, self.result))
|
||||
self.thread.daemon = True
|
||||
self.thread.start()
|
||||
else:
|
||||
self.result['img'] = EDSM._IMG_UNKNOWN
|
||||
|
||||
@ -60,6 +64,8 @@ class EDSM:
|
||||
elif known:
|
||||
self.result = { 'img': EDSM._IMG_KNOWN, 'url': 'http://www.edsm.net/needed-distances?systemName=%s' % urllib.quote(system_name), 'done': True } # default URL
|
||||
self.thread = threading.Thread(target = self.known, name = 'EDSM worker', args = (system_name, self.result))
|
||||
self.thread.daemon = True
|
||||
self.thread.start()
|
||||
else:
|
||||
self.result = { 'img': '', 'url': 'http://www.edsm.net/needed-distances?systemName=%s' % urllib.quote(system_name), 'done': False } # default URL
|
||||
self.thread = threading.Thread(target = self.worker, name = 'EDSM worker', args = (system_name, self.result))
|
||||
|
16
monitor.py
16
monitor.py
@ -63,14 +63,12 @@ elif platform=='win32':
|
||||
class EDLogs:
|
||||
|
||||
def __init__(self):
|
||||
self.root = None
|
||||
self.logdir = self._logdir()
|
||||
self.logging_enabled = self._logging_enabled
|
||||
self._restart_required = False
|
||||
self.observer = None
|
||||
self.callback = None
|
||||
|
||||
def set_callback(self, callback):
|
||||
self.callback = callback
|
||||
self.last_event = None
|
||||
|
||||
def enable_logging(self):
|
||||
if self.logging_enabled():
|
||||
@ -132,8 +130,9 @@ class EDLogs:
|
||||
if __debug__: print_exc()
|
||||
return False
|
||||
|
||||
def start(self):
|
||||
if not self.logdir or not self.callback:
|
||||
def start(self, root):
|
||||
self.root = root
|
||||
if not self.logdir:
|
||||
self.stop()
|
||||
return False
|
||||
if self.running():
|
||||
@ -145,6 +144,7 @@ class EDLogs:
|
||||
|
||||
def stop(self):
|
||||
self.observer = None # Orphan the worker thread
|
||||
self.last_event = None
|
||||
|
||||
def running(self):
|
||||
return self.observer and self.observer.is_alive()
|
||||
@ -193,7 +193,9 @@ class EDLogs:
|
||||
# Crossed midnight between timestamp and poll
|
||||
now = localtime(time()-12*60%60) # yesterday
|
||||
time_struct = datetime(now.tm_year, now.tm_mon, now.tm_mday, visited_struct.tm_hour, visited_struct.tm_min, visited_struct.tm_sec).timetuple() # still local time
|
||||
self.callback(mktime(time_struct), system)
|
||||
# Tk on Windows doesn't like to be called outside of an event handler, so generate an event
|
||||
self.last_event = (mktime(time_struct), system)
|
||||
self.root.event_generate('<<Jump>>', when="tail")
|
||||
|
||||
sleep(10) # New system gets posted to log file before hyperspace ends, so don't need to poll too often
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user