mirror of
https://github.com/norohind/EDMC_SpanshRouter.git
synced 2026-10-22 18:02:08 +03:00
Support EDTS format
This commit is contained in:
1 parent
20830536cc
commit
b64f44f272
1 file changed
+61
-23
@@ -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:
|
||||||
|
|||||||
Reference in new issue
Block a user