Support EDTS format

This commit is contained in:
CMDR-Kiel42 committed 2019-08-18 14:42:28 +02:00
1 parent 20830536cc
commit b64f44f272
1 file changed
+61 -23
+61 -23
View File
@@ -8,6 +8,7 @@ import subprocess
import webbrowser import webbrowser
import json import json
import requests import requests
import re
import Tkinter as tk import Tkinter as tk
import tkFileDialog as filedialog import tkFileDialog as filedialog
import tkMessageBox as confirmDialog import tkMessageBox as confirmDialog
@@ -149,7 +150,8 @@ class SpanshRouter():
self.plot_gui_btn.grid_remove() self.plot_gui_btn.grid_remove()
self.file_route_button.grid_remove() self.file_route_button.grid_remove()
self.source_ac.grid() self.source_ac.grid()
self.source_ac.set_text(monitor.system) if monitor.system:
self.source_ac.set_text(monitor.system)
self.dest_ac.grid() self.dest_ac.grid()
self.range_entry.grid() self.range_entry.grid()
self.efficiency_slider.grid() self.efficiency_slider.grid()
@@ -256,14 +258,20 @@ class SpanshRouter():
self.cancel_plot.config(state=tk.DISABLED) self.cancel_plot.config(state=tk.DISABLED)
self.cancel_plot.update_idletasks() self.cancel_plot.update_idletasks()
def show_ftype_selection(self): def show_ftype_selection(self, show=True):
self.file_route_button.grid_remove() if show:
self.file_plot_button.grid() self.file_route_button.grid_remove()
theme = config.getint('theme') self.file_plot_button.grid()
for text, value in self.FILETYPES: theme = config.getint('theme')
#SUNKEN, RAISED, GROOVE, RIDGE, or FLAT for text, value in self.FILETYPES:
self.selected_ftype_rbuttons[value]['selectcolor'] = "black" if theme else "white" self.selected_ftype_rbuttons[value]['selectcolor'] = "black" if theme else "white"
self.selected_ftype_rbuttons[value].grid() self.selected_ftype_rbuttons[value].grid()
else:
self.file_plot_button.grid_remove()
self.file_route_button.grid()
for text, value in self.FILETYPES:
self.selected_ftype_rbuttons[value].grid_remove()
# -- END GUI part -- # -- END GUI part --
@@ -332,17 +340,20 @@ class SpanshRouter():
webbrowser.open(changelog_url) webbrowser.open(changelog_url)
def plot_file(self): def plot_file(self):
ftypes = [ self.show_ftype_selection(False)
('All supported files', '*.csv *.txt'), ftypes = {
('CSV files', '*.csv'), 'spansh': (('CSV files', '*.csv'),),
('Text files', '*.txt'), 'text': (('Text files', '*.txt'),),
] 'text_stations': (('Text files', '*.txt'),),
filename = filedialog.askopenfilename(filetypes = ftypes) 'edts': (('Text files', '*.txt'),),
}
filename = filedialog.askopenfilename(filetypes = ftypes[self.selected_ftype.get()])
if filename.__len__() > 0: if filename.__len__() > 0:
try: try:
ftype_supported = False ftype_supported = False
if filename.endswith(".csv"): if filename.endswith(".csv") and self.selected_ftype.get() == 'spansh':
ftype_supported = True ftype_supported = True
with open(filename, 'r') as csvfile: with open(filename, 'r') as csvfile:
route_reader = csv.reader(csvfile) route_reader = csv.reader(csvfile)
@@ -356,13 +367,20 @@ class SpanshRouter():
self.route.append([row[0].rstrip(), row[4]]) self.route.append([row[0].rstrip(), row[4]])
self.jumps_left += int(row[4]) self.jumps_left += int(row[4])
elif filename.endswith(".txt"): elif filename.endswith(".txt"):
ftype_supported = True if self.selected_ftype.get() == 'text':
with open(filename, 'r') as txtfile: ftype_supported = True
route_txt = txtfile.readlines() with open(filename, 'r') as txtfile:
self.clear_route(False) route_txt = txtfile.readlines()
for row in route_txt: self.clear_route(False)
if row not in (None, "", []): for row in route_txt:
self.route.append([row.rstrip(), 0]) if row not in (None, "", []):
self.route.append([row.rstrip(), 0])
elif self.selected_ftype.get() == 'text_stations':
ftype_supported = False
self.show_error("Coming soon")
elif self.selected_ftype.get() == 'edts':
ftype_supported = True
self.plot_edts(filename)
if ftype_supported: if ftype_supported:
self.offset = 0 self.offset = 0
@@ -379,6 +397,26 @@ class SpanshRouter():
self.enable_plot_gui(True) self.enable_plot_gui(True)
self.show_error("An error occured while reading the file.") self.show_error("An error occured while reading the file.")
def plot_edts(self, filename):
with open(filename, 'r') as txtfile:
route_txt = txtfile.readlines()
self.clear_route(False)
for row in route_txt:
if row not in (None, "", []):
if row.lstrip().startswith('==='):
jumps = int(re.findall("\d+ jump", row)[0].rstrip(' jumps'))
self.jumps_left += jumps
system = row[row.find('>') + 1:]
if ',' in system:
systems = system.split(',')
for system in systems:
self.route.append([system.strip(), jumps])
jumps = 1
self.jumps_left += jumps
else:
self.route.append([system.strip(), jumps])
def plot_route(self): def plot_route(self):
self.hide_error() self.hide_error()
try: try: