This repository has been archived on 2026-10-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
KNZ_GeoTrackLab/app/Mainui.py
T
KenanZhu111 f895b31a8e Update: 2024/10/28
1.  KNZ_GeoTrackLab: Fix some bug.
2.  KNZ_GeoTrackLab: Optimize code structure.
2024-10-28 14:37:23 +08:00

1600 lines
91 KiB
Python

import math
import threading
import time
import Trocor
from base64 import b64decode
from ctypes import *
from tkinter import colorchooser
from tkinter import messagebox
from tkinter import filedialog
from tkinter import ttk
from PIL import ImageTk
import tkinter.font as tkfont
import tkinter as tk
import matplotlib as mpl
import numpy as np
mpl.use('TkAgg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg, NavigationToolbar2Tk)
#
#
#
# Sat color
SatColor = ["#FF0000","#FFA500","#FFFF00","#00FF00","#00FFFF","#0000FF","#A020F0"]
# Color register part
enucolor = ["#0080FF","#0080FF","#0080FF"]
enucolormid = ["#0080FF","#0080FF","#0080FF"]
enulinew = [ "0.80", "0.80", "0.80"]
satncolor = ["#0080FF"]
satncolormid= ["#0080FF"]
satnlinew = [ "1.50"]
# Ion & tro register part
ioncormode = ['OFF', 'Ion-Free LC', 'Broadcast']
ioncorstate = 0
trocormode = ['OFF', 'Hopfield', 'Saastamoinen']
trocorstate = 0
#Sat system register part
satsysdict = {1: "G", 4:"R", 2:"C", 3:"E", 5:"S"}
satellite_system = 1
##Combox Count-er
ComboxObsCount = 0
Obsvalue = ('',)
ComboxNavCount = 0
Navvalue = ('',)
ComboxOutCount = 0
Outvalue = ('',)
#
version = 'ver 1.5.3.1'
#
#
#
def OptionsIN(hwnd):
OPTGUI(hwnd)
def ExecutIN(hwnd):
EXECUDUI(hwnd)
def ViewIN(hwnd):
VIEWGUI(hwnd)
def Abo_windows():
abo = tk.Toplevel(root)
abo.title("About")
abo.attributes('-toolwindow', 2)
abo.geometry('200x100')
abo.minsize(200, 100)
abo.maxsize(200, 100)
About = tk.Label(abo, text="\nKNZ_GeoTrackLab %s\n\nCopyright (c) 2024 by KenanZhu\nAll Right Reserved."%version)
About.pack(side=tk.TOP, expand=tk.YES)
class FUNCTION:
@staticmethod
def Colorchoose(i, label, mode):
# Brief # choice to change the color of draw
# Param # i : only for mode 1
# Param # label : match the label with the button
# Param # mode : color register type
# undo choice == 0 &
# middle choice store == 1 &
# final confirm == 3 &
# satn color == 4
# Return# none
global enucolor
if mode == 0:
enucolor = ["#0080FF", "#0080FF", "#0080FF"]
satncolor[0] = "#0080FF"
label.config(bg=enucolor[0])
elif mode == 1:
colorvalue = tk.colorchooser.askcolor()
enucolormid[i] = str(colorvalue[1])
label.config(bg=str(colorvalue[1]))
elif mode == 3:
enucolor[0] = enucolormid[0]
enucolor[1] = enucolormid[1]
enucolor[2] = enucolormid[2]
satncolor[0] = satncolormid[0]
elif mode == 4:
colorvalue = tk.colorchooser.askcolor()
satncolormid[0] = str(colorvalue[1])
label.config(bg=str(colorvalue[1]))
@staticmethod
def Linewchoose(entry0, entry1, entry2, mode):
# Brief # input to change the width of line
# Param # entry0 : the entry box of e
# Param # entry1 : the entry box of n
# Param # entry2 : the entry box of u
# Param # mode : width of line register type
# undo choice == 0 &
# final confirm == 1
# Return# none
global enulinew
if mode == 0:
enulinew = ["0.80", "0.80", "0.80"]
entry0.set(enulinew[0])
entry1.set(enulinew[1])
entry2.set(enulinew[2])
elif mode == 1:
if (0 < float(entry0.get()) <= 5 and
0 < float(entry1.get()) <= 5 and
0 < float(entry2.get()) <= 5):
enulinew[0] = entry0.get()
enulinew[1] = entry1.get()
enulinew[2] = entry2.get()
elif (float(entry0.get()) <= 0 or
float(entry1.get()) <= 0 or
float(entry2.get()) <= 0):
while not messagebox.showerror("ERROR !", "The line width value is invalid !"):
break
enulinew = ["0.80", "0.80", "0.80"]
entry0.set(enulinew[0])
entry1.set(enulinew[1])
entry2.set(enulinew[2])
elif (5 < float(entry0.get()) or
5 < float(entry1.get()) or
5 < float(entry2.get())):
msg = messagebox.askyesno("NOTICE", "The width of the line is too large\n"
"affecting the mapping.\n"
"Are you sure to continue ?")
if not msg:
enulinew = ["0.80", "0.80", "0.80"]
entry0.set(enulinew[0])
entry1.set(enulinew[1])
entry2.set(enulinew[2])
pass
elif msg:
enulinew[0] = entry0.get()
enulinew[1] = entry1.get()
enulinew[2] = entry2.get()
def Calcu_confirm(self, v, cboxi, cboxt):
# Brief # choice to change the ion & tro correction && confirm the sat system
# Param # v sat system radio button value
# Param # cboxi the combo box of ion correction
# Param # cboxt the combo box of tro correction
# Return# none
global ioncorstate
global trocorstate
global satellite_system
ioncorstate = self.Ion_and_Trocbox(cboxi, 0)
trocorstate = self.Ion_and_Trocbox(cboxt, 1)
satellite_system = self.Satsys_button(v)
print(ioncorstate, trocorstate, satellite_system)
@staticmethod
def Satsys_button(v):
# Brief # get the value of radio button of sat system
# Param # v : the value of radio button
# Return# the sat system code
Systemdict = {1: "1", 2: "2", 3: "3", 4: "4", 5: "5"}
return int(Systemdict.get(v.get()))
@staticmethod
def Ion_and_Trocbox(cbox, cortype):
# Brief # get the value of combo box
# Param # cortype: correction type of
# ion == 0 &
# tro == 1
# Param # cbox:
# Return# ion | tro state code
count = -1
if cortype == 0:
for ionmode in ioncormode:
count += 1
if cbox.get() == ionmode:
return count
elif cortype == 1:
for tromode in trocormode:
count += 1
if cbox.get() == tromode:
return count
@staticmethod
def GetObsFilePath(ObsFileSelectBox):
global ComboxObsCount
global Obsvalue
path = filedialog.askopenfilename(title='RINEX OBS File',
filetypes=[('RINEX OBS File(*.o*.*.*obs.*.*d)', '*.*o;*.*obs;*.*d'),
('All Files', '*.*')])
if path and path not in ObsFileSelectBox['value']:
Obsvalue += (path,)
ObsFileSelectBox['value'] += (path,)
ComboxObsCount += 1
ObsFileSelectBox.current(ComboxObsCount)
@staticmethod
def GetNavFilePath(NavFileSelectBox):
global ComboxNavCount
global Navvalue
path = filedialog.askopenfilename(title='RINEX NAV File',
filetypes=[('RINEX NAV File(*.*nav.*.hnav.*.gnav.*.qnav.*.*n.*.*g.*.*h.*.*q.*.*p)',
'*.*nav;*.hnav;*.gnav;*.qnav;*.*n;*.*g;*.*h;*.*q;*.*p'),
('All Files', '*.*')])
if path and path not in NavFileSelectBox['value']:
Navvalue += (path,)
NavFileSelectBox['value'] += (path,)
ComboxNavCount += 1
NavFileSelectBox.current(ComboxNavCount)
@staticmethod
def AskDirectory(AskDirectorySelectBox):
global ComboxOutCount
global Outvalue
path = filedialog.askdirectory()
if path and path not in AskDirectorySelectBox['value']:
Outvalue += (path,)
AskDirectorySelectBox['value'] += (path + "/*.sp",)
ComboxOutCount += 1
AskDirectorySelectBox.current(ComboxOutCount)
@staticmethod
def AskOrNotCheck(AskOrNotCheckVar,
AskDirectorySelectBox,
AskDirectorySelectButton):
if AskOrNotCheckVar.get() == 0:
AskDirectorySelectBox.config(state=tk.DISABLED)
AskDirectorySelectButton.config(state=tk.DISABLED)
else:
AskDirectorySelectBox.config(state=tk.NORMAL)
AskDirectorySelectButton.config(state=tk.NORMAL)
def ExecuteFile(self,ExecuteState,
ObsSelectBoxVar,
NavSelectBoxVar,
AskOrNotCheckVar,
DirectorySelectBoxVar):
obsfile = ""
res_path = ""
state3 = ["","",""]
statemsg = ""
if not ObsSelectBoxVar.get():
state3[0] = " obs file."
if not NavSelectBoxVar.get():
state3[1] = " nav file."
if not DirectorySelectBoxVar.get():
if AskOrNotCheckVar.get():
state3[2] = " solution directory."
for state in state3:
statemsg += state
if statemsg:
ExecuteState.config(text='No file: %s !'%statemsg)
return 0
obs_path = ObsSelectBoxVar.get()
nav_path = NavSelectBoxVar.get()
DirectoryOut = DirectorySelectBoxVar.get()
# Get the obs file name---------------------------#
obspath = len(obs_path)
while obspath > 0:
flag = obs_path[obspath - 1:obspath]
if flag == "/":
obsfile = satsysdict.get(satellite_system) + "-" + obs_path[obspath:-4]
break
obspath -= 1
# Get the file's father folder-------------------#
if DirectoryOut:
pathlon = len(DirectoryOut)
while pathlon - 3 > 0:
flag = DirectoryOut[pathlon - 3 - 1:pathlon - 3]
if flag == "/":
res_path = DirectoryOut[:pathlon - 3] + obsfile + ".sp"
break
pathlon -= 1
else:
res_path = obs_path[0:obspath] + obsfile + ".sp"
# -----------------------------------------------#
ExecuteState.config(text='Processing...... file : %s' % obs_path[obspath:])
dll = cdll.LoadLibrary('./brdm2pos.dll')
dll.brdm2pos.restype = c_double
match dll.brdm2pos(nav_path.encode(), obs_path.encode(), res_path.encode(), satellite_system):
case 0.0:
ExecuteState.config(text='Generated successfully ! file : %s' % obsfile + ".sp")
case -1.0:
ExecuteState.config(text='Error ! cant open nav file')
case -2.0:
ExecuteState.config(text='Error ! cant open obs file')
case -3.0:
ExecuteState.config(text='Error ! unsupported nav file')
case -4.0:
ExecuteState.config(text='Error ! no nav data')
case -5.0:
ExecuteState.config(text='Error ! unsupported obs file')
case -6.0:
ExecuteState.config(text='Error ! no obs data')
windll.kernel32.FreeLibrary('./brdm2pos.dll')
def _ExecuteFile(self,ExecuteState,
ObsSelectBoxVar,
NavSelectBoxVar,
AskOrNotCheckVar,
DirectorySelectBoxVar):
T = threading.Thread(target=lambda: self.ExecuteFile(ExecuteState,
ObsSelectBoxVar,
NavSelectBoxVar,
AskOrNotCheckVar,
DirectorySelectBoxVar))
T.start()
class MAINGUI:
def __init__(self, hwnd):
self.satvisb = None
self.sattrack = None
self.satn = None
self.canvas2 = None
self.canvas1 = None
self.canvas0 = None
self.ux = None
self.nx = None
self.ex = None
self.plotstate = None
self.initGUI(hwnd)
self.Drawcards = tk.ttk.Notebook(hwnd)
self.frmFigure0 = tk.Frame(hwnd)
self.frmFigure0.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
self.frmFigure1 = tk.Frame(hwnd)
self.frmFigure1.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
self.frmFigure2 = tk.Frame(hwnd)
self.frmFigure2.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
self.initTOPMENU(hwnd)
self.initPLOT()
self.Drawcards.add(self.frmFigure0, text='ENU-Draw')
self.Drawcards.add(self.frmFigure1, text='Sat Number')
self.Drawcards.add(self.frmFigure2, text='Sat Track')
self.Drawcards.pack(fill=tk.BOTH, expand=True, padx='2px', pady='0px')
hwnd.protocol("WM_DELETE_WINDOW", hwnd.quit)
hwnd.mainloop()
def initGUI(self, hwnd):
hwnd.title("KNZ_GeoTrackLab %s"%version)
hwnd.geometry('1200x700')
hwnd.minsize(1200, 700)
icon_img = (b'AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4xMTGQMDAwKgAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTE0MjIy7jMzM/8zMzPrMDAwLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLy8QMTExSAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAMTExNDIyMu4zMzP/MzMz/zMzM/8zMzPrMDAwLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALy8vEDIyMsoyMjLKAAAAAAAAAAAAAAAAAAAAADExMTQyMjLuMzMz/zIy'
b'MvsxMTGaMjIy/TMzM/8zMzPrMTExLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAyMjJRMjIy3TExMbgyMjLKMzMz/zIyMtkAAAAAMDAwOioqKgYAAAAAMTExszMzM/8yMjL7MDAwWQAAAAAxMTFhMjIy/TMz'
b'M/8zMzPrMTExLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMt0zMzP/MzMz/zMz'
b'M/8zMzP/MTExrjExMU0yMjL4MTExsyoqKgYqKioMMjIyvzAwMFkAAAAAAAAAAAAAAAAxMTFhMjIy/TMzM/8zMzPrMTExLgAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExuDMzM/8zMzP/MzMz/zMzM/8xMTGaMjIy+DMz'
b'M/8zMzP/MTExsyoqKgYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTFhMjIy/jMzM/8yMjLfAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vLxAyMjLKMzMz/zMzM/8zMzP/MzMz9TIyMvkzMzP/MzMz/zMzM/8zMzP/MTExsyoq'
b'KgYAAAAAAAAAAAAAAAAAAAAAAAAAADExMY8zMzP/MzMz/zMzM8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAvLy8QMjIyyjMzM/8zMzP/MzMz/zMzM/UyMjL+MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYAAAAAAAAAAAAA'
b'AAAxMTGPMzMz/zMzM/8yMjLTMDAwFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMUgyMjLKMjIy2DEx'
b'Ma4xMTGaMjIy+TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYAAAAAMTExbDMzM/8zMzP/MjIy0zAw'
b'MBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExTTIyMvgzMzP/MzMz/zMz'
b'M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYqKioMMzMzwzIyMtMwMDAVAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDoyMjL4MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz'
b'M/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYqKioMMDAwFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz'
b'M/8zMzP/MTExsyoqKgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyfgAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExNDExMbMqKioMKioqBjIy'
b'MrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8xMTGUAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDUyMjLvMzMz/zIyMsAAAAABKioqBjIyMrIzMzP/MzMz/zMz'
b'M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy3i0tLRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAwMDA1MjIy7zMzM/8yMjL7MDAwWQAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMz'
b'M/8zMzP/MzMz/zIyMt4zMzMeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwLzIy'
b'Mu8zMzP/MjIy+zAwMFkAAAAAAAAAAAAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLeMzMzHgAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTGQMzMz/zMzM/8zMzObAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MjIy3jMzMx4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMSkzMzPrMzMz/zIyMv0xMTFiAAAAAAAAAAAAAAAAAAAAADEx'
b'MWwqKioMKioqBjIyMrIzMzP/MzMz/zIyMt4zMzMeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4zMzPrMzMz/zIyMv0xMTFiAAAAAAAAAAAxMTGQMzMz/zMzM8MqKioMKioqBjIy'
b'Mn4xMTGULy8vGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAADExMS4zMzPrMzMz/zIyMv0xMTFiMTExkDMzM/8zMzP/MjIy0zAwMBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEx'
b'MS4zMzPrMzMz/zIyMv4zMzP/MzMz/zIyMtMwMDAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4zMzPrMzMz/zMz'
b'M/8yMjLTMDAwFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4yMjLfMTExxzAwMBUAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////'
b'/////////////////x////4P//58B//8eAP/4EhB/+AA4P/gAfD/wAHw/4AA4P+AAEH/8AAD/+AAB//gAA//8AAP/8AAD/+A'
b'AA//BgAf/g8AP/4fgH/+DwD//wYB//+AH///wD///+B////w//8=')
icon_img = b64decode(icon_img)
icon_img = ImageTk.PhotoImage(data=icon_img)
hwnd.tk.call('wm', 'iconphoto', hwnd._w, icon_img)
default_font = tkfont.nametofont("TkDefaultFont")
default_font.configure(family="Segoe UI", size=9)
stateframe = tk.Frame(hwnd)
stateframe.pack(side=tk.BOTTOM, fill=tk.X)
self.plotstate = ttk.Label(stateframe, text="None")
self.plotstate.pack(side=tk.LEFT, anchor='w')
def initTOPMENU(self, hwnd):
topmenu = tk.Menu(hwnd)
filemenu = tk.Menu(topmenu, tearoff=False)
openmenu = tk.Menu(filemenu, tearoff=False)
openmenu.add_command(label="Open Pos Solution",command=lambda :self.PO_openfile(hwnd), accelerator='Ctrl+S')
openmenu.add_command(label="Open Sat Solution", command=lambda: self._SPP_calculat(hwnd), accelerator='Ctrl+S')
openmenu.add_command(label="Open RINEX",command=lambda :ExecutIN(hwnd), accelerator='Ctrl+P')
filemenu.add_cascade(label="Open...", menu=openmenu)
filemenu.add_command(label="Clear", command=self.Clear_canvas)
filemenu.add_command(label="View", command=lambda :ViewIN(hwnd))
filemenu.add_command(label="Exit", command=hwnd.quit, accelerator='Ctrl+E')
topmenu.add_cascade(label="File", menu=filemenu)
optmenu = tk.Menu(topmenu, tearoff=False)
optmenu.add_cascade(label="Options...",command=lambda :OptionsIN(hwnd))
topmenu.add_cascade(label="Options", menu=optmenu)
helpmenu = tk.Menu(topmenu, tearoff=False)
helpmenu.add_command(label="About", command=Abo_windows)
topmenu.add_cascade(label="Help", menu=helpmenu)
hwnd.config(menu=topmenu)
def initPLOT(self):
# --------------------------------------------------------------------------------
plt.rc('font', family='Segoe UI')
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
fig, (self.ex, self.nx, self.ux) = plt.subplots(3, 1, figsize=(10, 0), sharex=True)
for spine in [ 'right', 'left']:
self.ex.spines[spine].set_visible(False)
self.ex.set_facecolor('#f5f5f5')
for spine in [ 'right', 'left']:
self.nx.spines[spine].set_visible(False)
self.nx.set_facecolor('#f5f5f5')
for spine in [ 'right', 'left']:
self.ux.spines[spine].set_visible(False)
self.ux.set_facecolor('#f5f5f5')
fig.subplots_adjust(left=0, bottom=0.040, right=1, top=1, hspace=0.0)
self.canvas0 = FigureCanvasTkAgg(fig, self.frmFigure0)
self.canvas0.draw()
self.canvas0.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
toolbar = NavigationToolbar2Tk(self.canvas0, self.frmFigure0, pack_toolbar=False)
toolbar.update()
toolbar.pack(side=tk.LEFT)
# --------------------------------------------------------------------------------
#--------------------------------------------------------------------------------
plt.rc('font', family='Segoe UI')
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
fig, (self.satn, self.satvisb) = plt.subplots(2, 1, figsize=(10, 0), sharex=True)
fig.subplots_adjust(left=0, bottom=0.045, right=1, top=0.95, hspace=0.0)
for spine in [ 'right', 'left']:
self.satn.spines[spine].set_visible(False)
self.satn.set_facecolor('#f5f5f5')
for spine in [ 'right', 'left']:
self.satvisb.spines[spine].set_visible(False)
self.satvisb.set_facecolor('#f5f5f5')
self.canvas1 = FigureCanvasTkAgg(fig, self.frmFigure1)
self.canvas1.draw()
self.canvas1.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
toolbar = NavigationToolbar2Tk(self.canvas1, self.frmFigure1, pack_toolbar=False)
toolbar.update()
toolbar.pack(side=tk.LEFT)
# --------------------------------------------------------------------------------
# --------------------------------------------------------------------------------
plt.rc('font', family='Segoe UI')
fig = plt.figure()
self.sattrack = fig.add_subplot(projection='3d')
fig.subplots_adjust(left=0, bottom=0, right=1, top=1)
for spine in ['right', 'left']:
self.sattrack.spines[spine].set_visible(False)
self.sattrack.set_facecolor('#f5f5f5')
self.canvas2 = FigureCanvasTkAgg(fig, self.frmFigure2)
self.canvas2.draw()
self.canvas2.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
toolbar = NavigationToolbar2Tk(self.canvas2, self.frmFigure2, pack_toolbar=False)
toolbar.update()
toolbar.pack(side=tk.TOP, anchor='w')
def Clear_canvas(self):
# Brief # clear the canvas
# Return# none
self.ex.clear()
self.nx.clear()
self.ux.clear()
self.satn.clear()
self.satvisb.clear()
self.sattrack.clear()
self.canvas0.draw()
self.canvas1.draw()
self.canvas2.draw()
self.plotstate.config(text="None")
root.update()
def PO_openfile(self, hwnd):
# Brief # read the .po file & draw in the canvas
# Return# none
ENU_O = np.empty((3, 0))
# Sat numbers register part
satnumnarry = np.empty((1, 0))
f_path = filedialog.askopenfilename(title='Pos Solution File',
filetypes=[('Pos Solution File(*.po)', '*.po'),
('All Files', '*.*')])
if not f_path.find(".po") >= 0:
self.plotstate.config(text="Error !: format is invalid.")
hwnd.update()
return
with open(f_path, 'r') as f:
while 1:
line = f.readline()
if line.find("X-rec") >= 0:
self.plotstate.config(text="Reading...")
hwnd.update()
while 1:
line = f.readline()
if line != "" and line[1:2] != "-":
E = float(line[45 + 22:55 + 22])
N = float(line[56 + 22:66 + 22])
U = float(line[67 + 22:77 + 22])
satnum = int(line[64:67])
ENU_O = np.hstack((ENU_O, [[E], [N], [U]]))
satnumnarry = np.hstack((satnumnarry, [[satnum]]))
if line[1:2] == "-":
ENU_O = np.hstack((ENU_O, [[0], [0], [0]]))
satnumnarry = np.hstack((satnumnarry, [[0]]))
if line == "":
self.ex.clear()
self.nx.clear()
self.ux.clear()
self.ex.plot(ENU_O[0, :], color=enucolor[0], linewidth=enulinew[0], marker='.', linestyle=':',
ms=enulinew[0])
self.ex.set_title(' E-W(m)', x=0.02, y=0, fontsize=8)
self.ex.grid(True, linestyle='--', alpha=0.7)
self.nx.plot(ENU_O[1, :], color=enucolor[1], linewidth=enulinew[1], marker='.', linestyle=':',
ms=enulinew[1])
self.nx.set_title(' N-S(m)', x=0.02, y=0, fontsize=8)
self.nx.grid(True, linestyle='--', alpha=0.7)
self.ux.plot(ENU_O[2, :], color=enucolor[2], linewidth=enulinew[2], marker='.', linestyle=':',
ms=enulinew[2])
self.ux.set_title(' U-D(m)', x=0.02, y=0, fontsize=8)
self.ux.grid(True, linestyle='--', alpha=0.7)
self.canvas0.draw()
self.satn.clear()
self.satn.plot(satnumnarry[0, :], marker='_', linestyle=None, color=satncolor[0], linewidth=0)
self.satn.set_title('Valid Sat Numbers', loc='left', fontsize=8)
self.satn.set_xlabel('Epochs')
self.satn.grid(True, linestyle='--', alpha=0.7)
self.canvas1.draw()
break
elif line == "":
self.plotstate.config(text="Plot form: %s" % f_path)
break
def SPP_calculat(self, hwnd):
# Brief # read .sp file & draw in the canvas & output the .po file
# Return# none
# Const define
self.sattrack.clear()
C_V = 299792458
f1 = 1575.42
f2 = 1227.60
match satsysdict.get(satellite_system):
case 'G':
f1 = 1575.42
f2 = 1227.60
case 'E':
f1 = 1575.42
f2 = 1278.75
case 'C':
f1 = 1561.098
f2 = 1207.140
ENU_O = np.empty((3, 0))
GDOP = np.empty((1, 0))
# Sat numbers register part
satnumnarry = np.empty((1, 0))
res_path = filedialog.askopenfilename(title='Sat Solution File',
filetypes=[('Sat Solution File(*.sp)', '*.sp'),
('All Files', '*.*')])
if not res_path.find(".sp") >= 0:
self.plotstate.config(text="Error !: format is invalid.")
hwnd.update()
return
with open(res_path, 'r') as f:
while 1:
line = f.readline()
if line.find("APPROX POSITION XYZ") >= 0:
apX = float(line[23:35])
apY = float(line[36:48])
apZ = float(line[49:61])
elif line.find("APPROX POSITION BLH") >= 0:
apB = float(line[23:35])
apL = float(line[36:48])
apH = float(line[49:61])
elif line.find("OBS FILE PATH") >= 0:
Obs = line[23:300]
elif line.find("NAV FILE PATH") >= 0:
pass
elif line.find("END OF HEADER") >= 0:
break
# Get the obs file name---------------------------#
obspath = len(Obs)
while obspath > 0:
flag = Obs[obspath - 1:obspath]
if flag == "/":
obsfile = satsysdict.get(satellite_system) + "-" + Obs[obspath:-4]
break
obspath -= 1
# Get the file's father folder-------------------#
pathlon = len(res_path)
while pathlon - 3 > 0:
flag = res_path[pathlon - 3 - 1:pathlon - 3]
if flag == "/":
o_path = res_path[:pathlon - 3] + obsfile + "po"
break
pathlon -= 1
# -----------------------------------------------#
# Generate the data header-----------------------#
with open(o_path, 'w+') as of: # Initialize-------#
of.close()
of = open(o_path, 'a+')
print("@ GENERATE PROGRAM : KNZ_GeoTrackLab %s\n"
"@ GENERATE TYPE : Receiver Station Position\n"
"@ GENERATE TIME : %s\n"
"@ GENERATE SYS : %s\n"
"@ IONOS OPT : %s\n"
"@ TROPO OPT : %s\n"
"@\n\n" % ( version
, time.asctime(time.localtime())
, satsysdict.get(satellite_system)
, ioncormode[ioncorstate]
, trocormode[trocorstate]), file=of)
print(
"GPST X-rec(m) Y-rec(m) Z-rec(m) Sn(n) dE(m) dN(m) dU(m) ",
file=of)
# Coordinate transformation matrix---------------#
S = np.array([
[-math.sin(apL), math.cos(apL), 0],
[-math.sin(apB) * math.cos(apL), -math.sin(apB) * math.sin(apL), math.cos(apB)],
[math.cos(apB) * math.cos(apL), math.cos(apB) * math.sin(apL), math.sin(apB)]
])
# -----------------------------------------------#
self.plotstate.config(text="Reading...")
hwnd.update()
global epoch_last
epoch_last = 0
while 1:
line = f.readline()
if line == "":
break
flag = line[0: 1]
if flag == ">":
satnum = 0
sPRN = []
satX = np.empty((1, 0))
satY = np.empty((1, 0))
satZ = np.empty((1, 0))
C1 = np.empty((1, 0))
C2 = np.empty((1, 0))
ma = np.empty((1, 0))
np.empty((1, 0))
Dt = np.empty((1, 0))
year = int(line[6:10])
month = int(line[11:13])
day = int(line[14:16])
hour = int(line[17:19])
min = int(line[20:22])
sec = float(line[23:30])
epoch = int(line[2:6])
count = 0
while count < epoch - epoch_last - 1:
ENU_O = np.hstack((ENU_O, [[0], [0], [0]]))
satnumnarry = np.hstack((satnumnarry, [[0]]))
print("------------ MISSING EPOCH DATA", file=of)
count += 1
epoch_last = epoch
while 1:
line = f.readline()
if line == "\n":
if epoch % 15 == 0:
self.sattrack.scatter(satX[0,:], satY[0,:], satZ[0,:], s=5, zdir='z', c=SatColor[6] )
satnumnarry = np.hstack((satnumnarry, [[satnum]]))
match satsysdict.get(satellite_system):
case 'G':
MINSAT = 4
case 'E':
MINSAT = 4
case 'R':
MINSAT = 5
case 'C':
MINSAT = 4
if satnum >= MINSAT:
stop = 0
Qtrace = 0
X = ap_X = apX
Y = ap_Y = apY
Z = ap_Z = apZ
while math.fabs(ap_X - X) > 1.0e-7 or ap_X == X:
stop += 1
if stop >= 4:
break
count = 0
ap_X = X
ap_Y = Y
ap_Z = Z
Ptem = []
B = np.empty((0, 4))
L = np.empty((0, 1))
while 1:
R = math.sqrt(
pow((satX[0, count] - ap_X), 2) + pow((satY[0, count] - ap_Y), 2) + pow(
(satZ[0, count] - ap_Z), 2))
l = -((satX[0, count] - ap_X) / R)
m = -((satY[0, count] - ap_Y) / R)
n = -((satZ[0, count] - ap_Z) / R)
B = np.vstack((B, [l, m, n, 1]))
Ptem.append(pow(math.sin(math.radians(ma[0, count])), 2))
Pl = 0
# Get the tropsphere correction
match trocorstate:
case 0:
Tro = 0
case 1:
Tro = Trocor.Hop_tro_cor(apH, ma[0, count])
case 2:
Tro = Trocor.Sas_tro_cor(apB, apH, ma[0, count])
pass
# Get the ionsphere correction
match ioncorstate:
case 0:
if C1[0, count] == 0 and C2[0, count] != 0:
Pl = C2[0, count]
elif C1[0, count] != 0 and C2[0, count] == 0:
Pl = C1[0, count]
case 1:
if C2[0, count] != 0 and C1[0, count] != 0:
Pl = (f1 * f1 * C1[0, count]) / (f1 * f1 - f2 * f2) - (
f2 * f2 * C2[0, count]) / (f1 * f1 - f2 * f2)
elif C1[0, count] == 0 and C2[0, count] != 0:
Pl = C2[0, count]
elif C1[0, count] != 0 and C2[0, count] == 0:
Pl = C1[0, count]
case 2:
pass
L = np.vstack(
( L, [Pl - R + C_V * Dt[0, count] - Tro] )
)
count += 1
if count == satnum:
break
P = np.diag(Ptem)
BTP = np.dot(np.transpose(B), P)
BTPB = np.dot(BTP, B)
Q = np.linalg.inv(BTPB)
Qtrace = np.trace(Q)
D_X = np.dot(np.dot(np.dot(Q, np.transpose(B)), P), L) # Coordinate correction
X = D_X[0, 0] + ap_X
Y = D_X[1, 0] + ap_Y
Z = D_X[2, 0] + ap_Z
DeltaXYZ = np.array([[X - apX], [Y - apY], [Z - apZ]])
ENU = S @ DeltaXYZ
#if math.fabs(ENU[0, 0]) > 25 or math.fabs(ENU[1, 0]) > 25 or math.fabs(ENU[2, 0]) > 50:
# ENU_O = np.hstack((ENU_O, [[0], [0], [0]]))
# print("------------ ANOMALY RESOLUTION", file=of)
#else:
ENU_O = np.hstack((ENU_O, [[ENU[0, 0]], [ENU[1, 0]], [ENU[2, 0]]]))
GDOP = np.hstack((GDOP, [ [math.sqrt(Qtrace)] ]))
print(
"%4d\\%02d\\%02d\\%02d\\%02d\\%04.1f %12.4f %12.4f %12.4f %3d %10.5f %10.5f %10.5f"
% (year, month, day, hour, min, sec, X, Y, Z, satnum,
float(ENU[0, 0]),
float(ENU[1, 0]),
float(ENU[2, 0]) ), file=of)
break
else:
break
flag = line[0:1]
if flag == satsysdict.get(satellite_system):
satnum += 1
sPRN.append(int(line[2:4]))
satX = np.hstack((satX, [[float(line[6:21])]]))
satY = np.hstack((satY, [[float(line[22:37])]]))
satZ = np.hstack((satZ, [[float(line[38:53])]]))
C1 = np.hstack((C1, [[float(line[55:69])]]))
C2 = np.hstack((C2, [[float(line[71:85])]]))
ma = np.hstack((ma, [[float(line[86:101])]]))
Dt = np.hstack((Dt, [[float(line[102:118])]]))
elif line.find("END") >= 0:
self.ex.clear()
self.nx.clear()
self.ux.clear()
self.ex.plot(ENU_O[0, :], color=enucolor[0], linewidth=enulinew[0], marker='.', linestyle=':',
ms=enulinew[0])
self.ex.plot( GDOP[0, :], color='#808080', alpha=0.5, linewidth=enulinew[0], marker='.', linestyle=':',
ms=enulinew[0])
self.ex.set_title(' E-W(m)', x=0.02, y=0, fontsize=8)
self.ex.grid(True, linestyle='--', alpha=0.7)
self.nx.plot(ENU_O[1, :], color=enucolor[1], linewidth=enulinew[1], marker='.', linestyle=':',
ms=enulinew[1])
self.nx.set_title(' N-S(m)', x=0.02, y=0, fontsize=8)
self.nx.grid(True, linestyle='--', alpha=0.7)
self.ux.plot(ENU_O[2, :], color=enucolor[2], linewidth=enulinew[2], marker='.', linestyle=':',
ms=enulinew[2])
self.ux.set_title(' U-D(m)', x=0.02, y=0, fontsize=8)
self.ux.grid(True, linestyle='--', alpha=0.7)
self.canvas0.draw()
self.satn.clear()
self.satn.plot(satnumnarry[0, :], marker='_', ms=10, linestyle=None, color=satncolor[0], linewidth=0)
self.satn.set_title('Valid Satellite Numbers',loc='left', fontsize=8)
self.satn.set_xlabel('Epochs')
self.satn.grid(True, linestyle='--', alpha=0.7)
self.canvas1.draw()
self.canvas2.draw()
f.close()
self.plotstate.config(text="Plot form: %s" % res_path)
break
def _SPP_calculat(self, hwnd: object) -> object:
T = threading.Thread(target=lambda :self.SPP_calculat(hwnd))
T.start()
class OPTGUI:
def __init__(self,hwnd):
self.ulinewidth = None
self.nlinewidth = None
self.elinewidth = None
self.Main2Frame0 = None
self.v = None
self.ctrobox = None
self.cionbox = None
self.Main1Frame0 = None
self.opthwnd = None
self.initGUI(hwnd)
self.Cmd = FUNCTION()
def initGUI(self,hwnd):
self.opthwnd = tk.Toplevel(hwnd)
self.opthwnd.title("Options")
self.opthwnd.resizable(0, 0)
self.opthwnd.geometry('320x250')
self.opthwnd.minsize(320, 250)
self.opthwnd.maxsize(320, 250)
icon_img2 = (b'AAABAAEAICAAAAAAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAADjsAAA47AAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'ABAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAACQAAABIAAAASAAAACQAAAAAAAAACAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABwAAAJAAAADqAAAA7gAAAO4AAADqAAAAk'
b'QAAAAcAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAACQAAAA/wAAAPw'
b'AAAD/AAAA/wAAAPwAAAD/AAAAkAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAADAAAAAQAAAAEAAAAAA'
b'AAACwAAAOMAAAD/AAAA/AAAAP4AAAD+AAAA/AAAAP8AAADjAAAACgAAAAAAAAABAAAAAQAAAAMA'
b'AAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAA'
b'AAAAAAAABAAAABQAAAAAAAAATAAAA7QAAAP8AAAD+AAAA/wAAAP8AAAD+AAAA/wAAAO0AAAATAA'
b'AAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AABAAAAAAAAABEAAABTAAAAUQAAAA8AAAAAAAAAAAAAAEQAAAD/AAAA/gAAAP8AAAD/AAAA/wAA'
b'AP8AAAD+AAAA/wAAAEQAAAAAAAAAAAAAAA8AAABRAAAAUwAAABEAAAAAAAAAAQAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAgAAAAAAAAAwAAAA5QAAAP8AAAD/AAAA4QAAAHYAAAB2AAAA6QAAAP8AAA'
b'D+AAAA/wAAAP8AAAD/AAAA/wAAAP4AAAD/AAAA6QAAAHYAAAB1AAAA4QAAAP8AAAD/AAAA5QAAA'
b'DAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAMoAAAD/AAAA+gAAAPwAAAD/AAAA'
b'/wAAAP8AAAD+AAAA/wAAAP8AAAD/AAAA/gAAAP4AAAD/AAAA/wAAAP8AAAD+AAAA/wAAAP8AAAD'
b'/AAAA/AAAAPoAAAD/AAAAywAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAABrAAAA/wAAAP'
b'oAAAD/AAAA/wAAAP0AAAD7AAAA+wAAAP4AAAD/AAAA/AAAAP0AAAD/AAAA/wAAAP0AAAD8AAAA/'
b'wAAAP4AAAD7AAAA+wAAAP0AAAD/AAAA/wAAAPoAAAD/AAAAawAAAAAAAAADAAAAAAAAAAEAAAAA'
b'AAAAAwAAANUAAAD/AAAA/QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP0AAAD/AAAA/wAAAPI'
b'AAADyAAAA/wAAAP8AAAD9AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAAP8AAADVAAAAAw'
b'AAAAAAAAABAAAAAQAAAAAAAAATAAAA7AAAAP8AAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9A'
b'AAA/wAAAK8AAAA8AAAAFQAAABUAAAA8AAAArgAAAP8AAAD9AAAA/wAAAP8AAAD/AAAA/wAAAP8A'
b'AAD+AAAA/wAAAOwAAAATAAAAAAAAAAEAAAAAAAAAAQAAAAAAAADBAAAA/wAAAPoAAAD/AAAA/wA'
b'AAP8AAAD/AAAA/QAAAP8AAAB3AAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAdwAAAP8AAAD9AA'
b'AA/wAAAP8AAAD/AAAA/wAAAPoAAAD/AAAAwQAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAADEAA'
b'ADmAAAA/wAAAP0AAAD/AAAA/wAAAPwAAAD/AAAAqwAAAAAAAAAEAAAAAwAAAAEAAAABAAAABAAA'
b'AAQAAAAAAAAArAAAAP8AAAD8AAAA/wAAAP8AAAD9AAAA/wAAAOYAAAAwAAAAAAAAAAIAAAAAAAA'
b'AAAAAAAAAAAABAAAAAAAAAA0AAACuAAAA/wAAAP0AAAD/AAAA/QAAAP8AAABCAAAAAAAAAAMAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAABCAAAA/wAAAP0AAAD/AAAA/QAAAP8AAACvAAAADQAAA'
b'AAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACAAAAD4AAAA/wAAAP0AAAD/AAAA'
b'8gAAABgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABgAAADyAAAA/wAAAP0AAAD'
b'/AAAA+AAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAIAAAAP'
b'gAAAD/AAAA/QAAAP8AAADyAAAAGAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAG'
b'AAAAPIAAAD/AAAA/QAAAP8AAAD4AAAAIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB'
b'AAAAAAAAAA0AAACuAAAA/wAAAP0AAAD/AAAA/QAAAP8AAABCAAAAAAAAAAMAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAwAAAAAAAABCAAAA/wAAAP0AAAD/AAAA/QAAAP8AAACuAAAADQAAAAAAAAABAAAAAA'
b'AAAAAAAAAAAAAAAgAAAAAAAAAxAAAA5gAAAP8AAAD9AAAA/wAAAP8AAAD8AAAA/wAAAKsAAAAAA'
b'AAABAAAAAMAAAABAAAAAQAAAAMAAAAEAAAAAAAAAKsAAAD/AAAA/AAAAP8AAAD/AAAA/QAAAP8A'
b'AADmAAAAMAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAMEAAAD/AAAA+gAAAP8AAAD/AAAA/wA'
b'AAP8AAAD9AAAA/wAAAHcAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAB3AAAA/wAAAP0AAAD/AA'
b'AA/wAAAP8AAAD/AAAA+gAAAP8AAADBAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAATAAAA7AAAAP8AA'
b'AD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAA/wAAAK4AAAA8AAAAFQAAABUAAAA8AAAArgAA'
b'AP8AAAD9AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAA/wAAAOwAAAATAAAAAAAAAAEAAAABAAA'
b'AAAAAAAMAAADWAAAA/wAAAP0AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAA/wAAAP8AAA'
b'DyAAAA8gAAAP8AAAD/AAAA/QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP0AAAD/AAAA1QAAA'
b'AMAAAAAAAAAAQAAAAAAAAADAAAAAAAAAGsAAAD/AAAA+gAAAP8AAAD/AAAA/QAAAPsAAAD7AAAA'
b'/gAAAP8AAAD8AAAA/QAAAP8AAAD/AAAA/QAAAPwAAAD/AAAA/gAAAPsAAAD7AAAA/QAAAP8AAAD'
b'/AAAA+gAAAP8AAABrAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAMsAAAD/AAAA+gAAAP'
b'wAAAD/AAAA/wAAAP8AAAD+AAAA/wAAAP8AAAD/AAAA/gAAAP4AAAD/AAAA/wAAAP8AAAD+AAAA/'
b'wAAAP8AAAD/AAAA/AAAAPoAAAD/AAAAywAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAA'
b'AAAAMQAAAOYAAAD/AAAA/wAAAOEAAAB2AAAAdgAAAOkAAAD/AAAA/gAAAP8AAAD/AAAA/wAAAP8'
b'AAAD+AAAA/wAAAOkAAAB2AAAAdgAAAOEAAAD/AAAA/wAAAOYAAAAxAAAAAAAAAAIAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEQAAAFQAAABRAAAADwAAAAAAAAAAAAAARAAAAP8AAAD+A'
b'AAA/wAAAP8AAAD/AAAA/wAAAP4AAAD/AAAARAAAAAAAAAAAAAAADwAAAFEAAABUAAAAEQAAAAAA'
b'AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAABAAAABQA'
b'AAAAAAAATAAAA7QAAAP8AAAD+AAAA/wAAAP8AAAD+AAAA/wAAAO0AAAATAAAAAAAAAAUAAAABAA'
b'AAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAA'
b'AAEAAAABAAAAAEAAAABAAAAAAAAAAsAAADjAAAA/wAAAPwAAAD+AAAA/gAAAPwAAAD/AAAA4wAA'
b'AAoAAAAAAAAAAQAAAAEAAAAEAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAJAAAAD/AAAA/AAAAP8AAA'
b'D/AAAA/AAAAP8AAACQAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA'
b'BwAAAJAAAADqAAAA7gAAAO4AAADqAAAAkQAAAAcAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAkAAAASAAAAEgAAAAoAAAAAAAAAAgAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAM'
b'AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9GL//'
b'+kJf//kAn//5AJ/+ggBBfTIATLqCAEFZAAAAkgAAAEIAAABEAAAAJAAAACIAQgBKAIEAVQClAKq'
b'AmQFagJkBVQClAKoAgQBSAEIARAAAACQAAAAiAAAAQgAAAEkAAACaggBBXTIATL6CAEF/+QCf//'
b'kAn//6Ql///Ri/8=')
icon_img2 = b64decode(icon_img2)
icon_img2 = ImageTk.PhotoImage(data=icon_img2)
self.opthwnd.tk.call('wm', 'iconphoto', self.opthwnd._w, icon_img2)
Optionscards = tk.ttk.Notebook(self.opthwnd)
self.initCARDCALCU()
self.initCARDDRAW()
Optionscards.add(self.Main1Frame0, text='Calc options')
Optionscards.add(self.Main2Frame0, text='Draw options')
Optionscards.pack(fill=tk.BOTH, expand=True, padx='2px', pady='0px')
self.initCONFIRM()
def initCARDCALCU(self):
self.Main1Frame0 = tk.Frame(self.opthwnd)
# ION correction#
TOP1Frame0 = ttk.Frame(self.Main1Frame0)
TOP1Frame0.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
ioncor = ttk.Label(TOP1Frame0, text='Ionosphere Correction')
ioncor.pack(side=tk.LEFT, anchor='w', padx='1px')
self.cionbox = ttk.Combobox(TOP1Frame0, width=15, height=4)
self.cionbox['state'] = 'readonly'
self.cionbox['value'] = ('OFF', 'Ion-Free LC', 'Broadcast')
self.cionbox.current(ioncorstate)
self.cionbox.pack(side=tk.RIGHT, anchor='e')
# TRO correction#
TOP2Frame0 = ttk.Frame(self.Main1Frame0)
TOP2Frame0.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
ioncor = ttk.Label(TOP2Frame0, text='Troposphere Correction')
ioncor.pack(side=tk.LEFT, anchor='w', padx='1px')
self.ctrobox = ttk.Combobox(TOP2Frame0, width=15, height=4)
self.ctrobox['state'] = 'readonly'
self.ctrobox['value'] = ('OFF', 'Hopfield', 'Saastamoinen')
self.ctrobox.current(trocorstate)
self.ctrobox.pack(side=tk.RIGHT, anchor='e')
# GNSS Options#
TOP5Frame0 = ttk.LabelFrame(self.Main1Frame0, text='Satellite system', labelanchor='nw')
TOP5Frame0.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
satsys = [("GPS", 1), ("GLO", 4), ("BeiDou", 2), ("Galileo", 3), ("SBAS", 5)]
self.v = tk.IntVar()
for sys, num in satsys:
radio_button = ttk.Radiobutton(TOP5Frame0, text=sys, variable=self.v, value=num)
radio_button.pack(side=tk.LEFT, padx='3px', anchor='w')
self.v.set(satellite_system)
def initCARDDRAW(self):
self.Main2Frame0 = tk.Frame(self.opthwnd)
self.initDRAWCOLOR()
self.initDRAWLINE()
def initDRAWLINE(self):
# Line's weight options#
Right2Frame1 = ttk.LabelFrame(self.Main2Frame0, text='Draw configs', labelanchor='nw')
Right2Frame1.pack(side=tk.RIGHT, expand=tk.YES, padx='1px', pady='1px', fill=tk.Y)
EFrameR2 = tk.Frame(Right2Frame1)
EFrameR2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
elinewopt = tk.Label(EFrameR2, text='Eline:', width=5, height=1)
elinewopt.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
self.elinewidth = ttk.Spinbox(EFrameR2, from_=0, to=10, increment=0.01, width=10)
self.elinewidth.set(enulinew[0])
self.elinewidth.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
NFrameR2 = tk.Frame(Right2Frame1)
NFrameR2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
nlinewopt = tk.Label(NFrameR2, text='Nline:', width=5, height=1)
nlinewopt.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
self.nlinewidth = ttk.Spinbox(NFrameR2, from_=0, to=10, increment=0.01, width=10)
self.nlinewidth.set(enulinew[1])
self.nlinewidth.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
UFrameR2 = tk.Frame(Right2Frame1)
UFrameR2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
ulinewopt = tk.Label(UFrameR2, text='Uline:', width=5, height=1)
ulinewopt.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
self.ulinewidth = ttk.Spinbox(UFrameR2, from_=0, to=10, increment=0.01, width=10)
self.ulinewidth.set(enulinew[2])
self.ulinewidth.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
LineConR2 = tk.Frame(Right2Frame1)
LineConR2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
linewre = ttk.Button(LineConR2, text='Undo', width=10,
command=lambda: self.Cmd.Linewchoose(self.elinewidth,
self.nlinewidth,
self.ulinewidth, 0))
linewre.pack(side=tk.LEFT, expand=tk.YES, padx='1px')
def initDRAWCOLOR(self):
# Satnum plot options#
Buttom1Frame1 = ttk.LabelFrame(self.Main2Frame0, text='Satn configs', labelanchor='nw')
Buttom1Frame1.pack(side=tk.BOTTOM, expand=tk.YES, padx='1px', pady='1px', fill=tk.BOTH)
SatnFrameB1 = tk.Frame(Buttom1Frame1)
SatnFrameB1.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
satncolopt = ttk.Button(SatnFrameB1, text='Satn Color', width=10,
command=lambda: self.Cmd.Colorchoose(0, satncollab, 4))
satncolopt.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
satncollab = tk.Label(SatnFrameB1, width=5, height=1, bg=satncolormid[0])
satncollab.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
LineConB1 = tk.Frame(Buttom1Frame1)
LineConB1.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
linewre = ttk.Button(LineConB1, text='Undo', width=10,
command=lambda: self.Cmd.Colorchoose(0, satncollab, 0))
linewre.pack(side=tk.LEFT, expand=tk.YES, padx='1px')
# Line's colors options#
Left2Frame1 = ttk.LabelFrame(self.Main2Frame0, text='ENU colors', labelanchor='nw')
Left2Frame1.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='1px', fill=tk.Y)
EFrameL2 = tk.Frame(Left2Frame1)
EFrameL2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
ecolopt = ttk.Button(EFrameL2, text='E Color', width=10,
command=lambda: self.Cmd.Colorchoose(0, ecollab, 1))
ecolopt.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
ecollab = tk.Label(EFrameL2, width=5, height=1, bg=enucolor[0])
ecollab.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
NFrameL2 = tk.Frame(Left2Frame1)
NFrameL2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
ncolopt = ttk.Button(NFrameL2, text='N Color', width=10,
command=lambda: self.Cmd.Colorchoose(1, ncollab, 1))
ncolopt.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
ncollab = tk.Label(NFrameL2, width=5, height=1, bg=enucolor[1])
ncollab.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
UFrameL2 = tk.Frame(Left2Frame1)
UFrameL2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
ucolopt = ttk.Button(UFrameL2, text='U Color', width=10,
command=lambda: self.Cmd.Colorchoose(2, ucollab, 1))
ucolopt.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
ucollab = tk.Label(UFrameL2, width=5, height=1, bg=enucolor[2])
ucollab.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
ColorConL2 = tk.Frame(Left2Frame1)
ColorConL2.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
colorcon = ttk.Button(ColorConL2, text='Undo', width=10,
command=lambda: [self.Cmd.Colorchoose(0, ecollab, 0)
, self.Cmd.Colorchoose(0, ncollab, 0)
, self.Cmd.Colorchoose(0, ucollab, 0)])
colorcon.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
def initCONFIRM(self):
# TOTAL Confirm#
Bottom0Frame0 = ttk.Frame(self.opthwnd)
Bottom0Frame0.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='0px', fill=tk.Y)
TotalCancel = ttk.Button(Bottom0Frame0, text='Cancel', width=10,
command=lambda: [self.opthwnd.destroy()])
TotalCancel.pack(side=tk.RIGHT, padx='1px', anchor='e')
TotalCon = ttk.Button(Bottom0Frame0, text='Confirm', width=10,
command=lambda: [self.Cmd.Colorchoose(0, None, 3),
self.Cmd.Linewchoose(self.elinewidth,
self.nlinewidth,
self.ulinewidth, 1),
self.Cmd.Calcu_confirm(self.v, self.cionbox, self.ctrobox),
self.opthwnd.destroy()])
TotalCon.pack(side=tk.RIGHT, padx='1px', anchor='e')
class EXECUDUI:
def __init__(self,hwnd):
self.exehwnd = None
self.initGUI(hwnd)
##Combox Var
self.ObsSelectBoxVar = tk.StringVar()
self.NavSelectBoxVar = tk.StringVar()
self.DirectorySelectBoxVar = tk.StringVar()
##CheckButton Var
self.AskOrNotCheckButtonVar = tk.IntVar()
self.initIO()
self.Cmd = FUNCTION()
def initGUI(self,hwnd):
self.exehwnd = tk.Toplevel(hwnd)
self.exehwnd.title("RINEX Processor")
self.exehwnd.resizable(0, 0)
self.exehwnd.geometry('400x215')
self.exehwnd.minsize(400, 215)
self.exehwnd.maxsize(400, 215)
global icon_img3
icon_img3 = (b'AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAADjsAAA47AAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAEAAAAAQ'
b'AAAAAAAAAAAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'QAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAADQAAAA0AAAABAAAA'
b'AAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAzAAAAlgAAANQAAADwAAAA8AAAANQAAACWAAAAMwAAAAAAAAADAA'
b'AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAgAAAARAAAAEAAAABAAAAAPAAAAAQAAAAAAAAAAA'
b'AAAAQAAAAAAAAAIAAAAlwAAAP4AAAD/AAAA/wAAAPcAAAD3AAAA/wAAAP8AAAD+AAAAlwAAAAgAAAAAAAAAAQAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAgAAAAAAAABRAAAA5gAAAPIAAADwAAAA9gAAAOIAAAAQAAAAAAAAAAIAAAAAAAAACAAAALsAAAD'
b'/AAAA8gAAAIsAAAAyAAAAFAAAABQAAAAyAAAAiwAAAPIAAAD/AAAAuwAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAA'
b'AAAAAABgAAANwAAAD/AAAA8QAAAPEAAAD2AAAA4gAAABAAAAAAAAAABAAAAAAAAACWAAAA/wAAAN0AAAAuAAAAAAAAAAIAA'
b'AAAAAAAAAAAAAIAAAAAAAAALgAAAN0AAAD/AAAAlgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAARAAAA8AAAAPEA'
b'AAAfAAAADAAAABIAAAAPAAAAAQAAAAIAAAAAAAAANgAAAP8AAAD2AAAAMwAAAAAAAAAHAAAAAgAAAAAAAAAFAAAABAAAAAY'
b'AAAAAAAAAMwAAAPYAAAD/AAAANgAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAABAAAADxAAAA8gAAABAAAAAAAAAAAQAAAA'
b'AAAAAAAAAABAAAAAAAAACSAAAA/wAAAIoAAAAAAAAAAAAAABUAAACiAAAAJwAAAAAAAAADAAAAAwAAAAYAAAAAAAAAigAAA'
b'P8AAACSAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAPIAAADyAAAAEQAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAA'
b'ANAAAAD/AAAANwAAAAAAAAAAAAAAEQAAAO8AAAD7AAAAfgAAAAgAAAAAAAAAAwAAAAAAAAA3AAAA/wAAANAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAQAAAAAAAAAQAAAA8gAAAPIAAAAQAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAOAAAA7QAAAPcAAAAWAAAAAA'
b'AAAAAAAAARAAAA6gAAAP8AAAD/AAAA5gAAAFYAAAAAAAAAAAAAABYAAAD3AAAA7QAAAA0AAAAAAAAAAQAAAAAAAAABAAAAA'
b'AAAABAAAADyAAAA8gAAABAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAA4AAADtAAAA9gAAABYAAAAAAAAAAAAAABEAAADqAAAA'
b'/wAAAP8AAADmAAAAVgAAAAAAAAAAAAAAFgAAAPcAAADtAAAADQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAEAAAAPIAAADyAAA'
b'AEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAANAAAAD/AAAANgAAAAAAAAAAAAAAEQAAAO8AAAD7AAAAfgAAAAgAAAAAAA'
b'AAAwAAAAAAAAA3AAAA/wAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAA8gAAAPIAAAAQAAAAAAAAAAEAAAAAA'
b'AAAAAAAAAQAAAAAAAAAkgAAAP8AAACJAAAAAAAAAAAAAAAVAAAAogAAACcAAAAAAAAAAwAAAAMAAAAGAAAAAAAAAIoAAAD/'
b'AAAAkwAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAABAAAADyAAAA8gAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAA'
b'2AAAA/wAAAPUAAAAyAAAAAAAAAAcAAAACAAAAAAAAAAUAAAAEAAAABgAAAAAAAAAyAAAA9gAAAP8AAAA2AAAAAAAAAAIAAA'
b'AAAAAAAAAAAAEAAAAAAAAAEAAAAPIAAADyAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAACWAAAA/wAAANwAA'
b'AAuAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAALgAAAN0AAAD/AAAAlgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAA'
b'AAAQAAAA8gAAAPIAAAAQAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAgAAAC7AAAA/wAAAPEAAACKAAAAMgAAABQ'
b'AAAAUAAAAMgAAAIoAAADyAAAA/wAAALsAAAAIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAABAAAADyAAAA8gAAAB'
b'AAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAgAAACXAAAA/wAAAP8AAAD/AAAA9gAAAPcAAAD/AAAA/wAAA'
b'P8AAACXAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAPIAAADyAAAAEQAAAAAAAAACAAAAAQAA'
b'AAEAAAABAAAAAQAAAAEAAAACAAAAAwAAAAAAAAA0AAAAlgAAANUAAADwAAAA8AAAANUAAACXAAAANAAAAAAAAAADAAAAAgA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAA8gAAAPIAAAAQAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAABAAAAAAAAABAAAADyAAAA8wAAAB8AAAAMAAAAEQAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAA'
b'EwAAABQAAAAQAAAADAAAAAwAAAAQAAAAFAAAABMAAAAQAAAAEgAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAA'
b'AEQAAAO4AAAD/AAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPMAAADzAA'
b'AA8wAAAPMAAADyAAAA8gAAAPEAAADyAAAA3QAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAARAAAA7gAAAP8AAADyA'
b'AAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADy'
b'AAAA8gAAAP8AAADuAAAAEQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAABAAAADyAAAA8wAAAB8AAAAMAAAAEQAAABAAAAA'
b'QAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEQAAAAwAAAAfAAAA8gAAAPEAAA'
b'AQAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAPIAAADyAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABAAAADyAAAA8gAAABAAAAAAAAAAAQAAAAAA'
b'AAAAAAAAAQAAAAAAAAAQAAAA8QAAAPIAAAAQAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAPIAAADxAAAAEAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAB'
b'EAAADwAAAA8QAAAB8AAAAMAAAAEQAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA'
b'BAAAAAQAAAAEQAAAAwAAAAfAAAA8QAAAPAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAABgAAANwAAAD/AAAA8QAA'
b'APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gA'
b'AAPEAAAD/AAAA3AAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAUgAAAOYAAADyAAAA8gAAAPIAAADyAAAA8g'
b'AAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAOYAAABSAAAAA'
b'AAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACAAAABEAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAA'
b'EAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAARAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB'
b'AAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//2Mb+gSYZfS9IBLqBgABZAUAAmgFCEIoAhIhKFIhEShGMFGoVDAwqFQwMKhW'
b'MFGoUiERKFISIShZCEIoWQACaFoABWhAIBJoX+hf6AAAAWgAAAFoAAABaAAAAWhf/6FoX/+haAAAAWgAAAFkAAACagAABXS'
b'//9L6AAAF/////8='
)
icon_img3 = b64decode(icon_img3)
icon_img3 = ImageTk.PhotoImage(data=icon_img3)
self.exehwnd.tk.call('wm', 'iconphoto', self.exehwnd._w, icon_img3)
def initIO(self):
MainFrame0 = tk.Frame(self.exehwnd)
MainFrame0.pack()
TopFrame1 = ttk.Frame(MainFrame0)
TopFrame1.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
# -----------------------------------------------------------------------------------
ObsInFrame3 = ttk.LabelFrame(TopFrame1, text='RINEX Obs File')
ObsInFrame3.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
ObsFileSelectBox = ttk.Combobox(ObsInFrame3, width=46, height=4, values=Obsvalue,
textvariable=self.ObsSelectBoxVar)
ObsFileSelectBox.current(ComboxObsCount)
ObsFileSelectBox.pack(side=tk.LEFT, anchor='w', padx='1px', pady='1px')
ObsFileSelectButton = ttk.Button(ObsInFrame3, text='...', width=3,
command=lambda: self.Cmd.GetObsFilePath(ObsFileSelectBox))
ObsFileSelectButton.pack(side=tk.RIGHT, anchor='e', padx='1px', pady='1px')
# -----------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------
NavInFrame3 = ttk.LabelFrame(TopFrame1, text='RINEX Nav File')
NavInFrame3.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
NavFileSelectBox = ttk.Combobox(NavInFrame3, width=46, height=4, values=Navvalue,
textvariable=self.NavSelectBoxVar)
NavFileSelectBox.current(ComboxNavCount)
NavFileSelectBox.pack(side=tk.LEFT, anchor='w', padx='1px', pady='1px')
NavFileSelectButton = ttk.Button(NavInFrame3, text='...', width=3,
command=lambda: self.Cmd.GetNavFilePath(NavFileSelectBox))
NavFileSelectButton.pack(side=tk.RIGHT, anchor='e', padx='1px', pady='1px')
# -----------------------------------------------------------------------------------
BottomFrame1 = ttk.Frame(MainFrame0)
BottomFrame1.pack(side=tk.BOTTOM, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
FileOutFrame3 = ttk.LabelFrame(BottomFrame1, text='Output Directory')
FileOutFrame3.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
## CheckButton Initialize
AskOrNotCheckButton = ttk.Checkbutton(FileOutFrame3, text='Directory',
variable=self.AskOrNotCheckButtonVar, onvalue=1, offvalue=0,
command=lambda: self.Cmd.AskOrNotCheck(
self.AskOrNotCheckButtonVar,
AskDirectorySelectBox,
AskDirectorySelectButton))
AskOrNotCheckButton.pack(side=tk.LEFT, anchor='w', padx='1px', pady='0px')
## SelectBox Initialize
AskDirectorySelectBox = ttk.Combobox(FileOutFrame3, width=36, height=4, values=Outvalue,
state=tk.DISABLED, textvariable=self.DirectorySelectBoxVar)
AskDirectorySelectBox.current(ComboxOutCount)
AskDirectorySelectBox.pack(side=tk.LEFT, anchor='w', padx='1px', pady='0px')
## SelectButton Initialize
AskDirectorySelectButton = ttk.Button(FileOutFrame3, text='...', width=3,
state=tk.DISABLED, command=lambda: self.Cmd.AskDirectory(AskDirectorySelectBox))
AskDirectorySelectButton.pack(side=tk.RIGHT, anchor='e', padx='2px', pady='0px')
ExeFrame3 = ttk.Frame(BottomFrame1)
ExeFrame3.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
ExitButton = ttk.Button(ExeFrame3, text='Exit', width=10,
command=self.exehwnd.destroy)
ExitButton.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
ExecuteButton = ttk.Button(ExeFrame3, text='Execute', width=10,
command=lambda :self.Cmd._ExecuteFile(ExecuteState,
self.ObsSelectBoxVar,
self.NavSelectBoxVar,
self.AskOrNotCheckButtonVar,
self.DirectorySelectBoxVar))
ExecuteButton.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
# Execute state bar
StateFrame = ttk.Frame(BottomFrame1)
StateFrame.pack(side=tk.TOP, fill=tk.X, padx='1px', pady='0px')
ExecuteState = ttk.Label(StateFrame, text="None")
ExecuteState.pack(side=tk.LEFT, anchor='nw')
def View_windowshow(text, view):
# Brief # get the file path of reading and show in the text ctr box
# Param # text : the show box of file of choice
# Param # view : the father window of text ctr box
# Return# none
f_path = filedialog.askopenfilename()
view.title('Viewing: %s' % f_path)
text.delete('1.0', 'end')
with open(f_path, 'r') as f:
fcon = f.read()
text.insert('insert', fcon)
text.config()
class VIEWGUI:
def __init__(self, hwnd):
self.initGUI(hwnd)
@staticmethod
def initGUI(hwnd):
view = tk.Toplevel(hwnd)
view.title("View")
view.geometry('900x600')
view.minsize(1000, 600)
global icon_img1
icon_img1 = (b'AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAAPY6AQD2OgEAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAA'
b'ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAQAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAACAAAAAgAAAAAAAAABAAAADQAAABIAAAARAAAAEQAAABEAAAARAAAAEQAAAB'
b'EAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAASAAAAD'
b'QAAAAEAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAACQAAAHEAAADMAAAA6wAAAO8'
b'AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7g'
b'AAAO4AAADuAAAA7gAAAO4AAADvAAAA6wAAAMwAAAByAAAACQAAAAAAAAACAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAA'
b'AAAdAAAAzwAAAP8AAAD9AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wA'
b'AAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP0AAAD/AA'
b'AA0AAAAB0AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAABAAAAAAAAAAgAAADMAAAA/wAAAPoAAAD6AAAA/gAAAP8AAAD/AAAA/wAA'
b'AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAA'
b'A/wAAAP8AAAD/AAAA/gAAAPoAAAD6AAAA/wAAAMwAAAAIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAHIAAAD/AAAA+QAAA'
b'P8AAAD/AAAA9wAAAO0AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA'
b'7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADtAAAA9wAAAP8AAAD/AAAA+QAAAP8AAAB'
b'xAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAABAAAAAAAAAMcAAAD/AAAA+gAAAP8AAACtAAAAGQAAABEAAAASAAAAEQAAABEAAAARAAAAE'
b'QAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAUAAAAFgAAABUAAAAR'
b'AAAAGQAAAK0AAAD/AAAA+gAAAP8AAADHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAADQAAAOgAAAD/AAAA/wAAAPkAAAAjAAAAAA'
b'AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAACMAAAD5AAAA/wAAAP8AAADnAAAADQAAAAAA'
b'AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgA'
b'AAO0AAAD/AAAA/wAAAO0AAAATAAAAAAAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAA'
b'AAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABQAAAAAAAAA/AAAAkwAAAE0AAAAAAAAAAAAAABQAA'
b'ADtAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAEAAAAAAAAAEQAAAO0AAAD/AAAA/wAAAO4AAAASAAAAAAAAAAEAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAQAAAAEAAAABAAAAAIAAAAFAAAAAAAAAFsAAA'
b'D/AAAA/gAAAP8AAABNAAAAAAAAABUAAADuAAAA/wAAAP8AAADtAAAAEQAAAAAAAAABAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA'
b'/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAIAAAAAAAAAXAAAAP8AAAD9AAAA9QAAAP8AAACIAAAAAAAAABUAAADuAAAA/wAAAP'
b'8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAgAAAAIAAAAAAAAAKgAAAGcAAAB7AAAAaAAAAB0AAABaAAAA/wAAAP0AAAD8AAAA/QAAAP8'
b'AAAA/AAAAAAAAABQAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARA'
b'AAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAABYAAACrAAAA/gAAAP8AAAD+AAAA/wAAAPcA'
b'AAD4AAAA/gAAAP0AAAD9AAAA/wAAAFwAAAAAAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgA'
b'AAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA'
b'AAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAGAAAANgAA'
b'AD/AAAA/QAAAPkAAAD2AAAA+QAAAP8AAAD9AAAA/gAAAP8AAAD/AAAAXAAAAAAAAAAFAAAAAAAA'
b'ABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAA'
b'AAAAAAAAAAAAIAAAAAAAAArAAAAP8AAAD5AAAA/QAAAP8AAAD/AAAA/wAAAP0AAAD+AAAA/wAAA'
b'P8AAABbAAAAAAAAAAUAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD'
b'/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAwAAAA/gAAAP0AAAD+AAAA/wAAAM'
b'YAAACAAAAAygAAAP8AAAD9AAAA/wAAAPoAAAAmAAAAAAAAAAIAAAABAAAAAAAAABEAAADuAAAA/'
b'wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAABAAAAAA'
b'AAABqAAAA/wAAAPkAAAD/AAAAxQAAAAMAAAAAAAAABgAAAMsAAAD/AAAA+QAAAP8AAABkAAAAAA'
b'AAAAQAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4A'
b'AAARAAAAAAAAAAEAAAAAAAAABAAAAAAAAAB/AAAA/wAAAPcAAAD/AAAAggAAAAAAAAASAAAAAAA'
b'AAIoAAAD/AAAA9wAAAP8AAAB4AAAAAAAAAAQAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAA'
b'AAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAA'
b'AAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAABAAAAAAAAABrAAAA/wAA'
b'APkAAAD/AAAAwQAAAAAAAAAAAAAAAwAAAMcAAAD/AAAA+QAAAP8AAABkAAAAAAAAAAQAAAABAAA'
b'AAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAA'
b'AEAAAAAAAAAAgAAAAAAAAAyAAAA/wAAAP0AAAD+AAAA/wAAAMEAAAB4AAAAxAAAAP8AAAD+AAAA'
b'/gAAAPwAAAArAAAAAAAAAAIAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAA'
b'BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO'
b'0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAsAAAAP8AAAD5AAAA/'
b'QAAAP8AAAD/AAAA/wAAAP0AAAD5AAAA/wAAAKkAAAAAAAAAAgAAAAAAAAABAAAAAAAAABEAAADu'
b'AAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAA'
b'AAAAEAAAAAAAAAHAAAAN0AAAD/AAAA/AAAAPgAAAD2AAAA+AAAAPwAAAD/AAAA2AAAABgAAAAAA'
b'AAAAQAAAAAAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wA'
b'AAO4AAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAABsAAAC0AAAA/wAAAP8AAAD+AA'
b'AA/wAAAP8AAACvAAAAGAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AA'
b'ADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAABAAA'
b'AAwAAAAIAAAAAAAAAMQAAAG8AAACEAAAAbgAAAC8AAAAAAAAAAgAAAAMAAAABAAAAAQAAAAAAAA'
b'ABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAA'
b'AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAA'
b'AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAE'
b'gAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAABAAAAEAAAABIAAAASAAAAEgAAABIAAAAS'
b'AAAAFAAAABYAAAAWAAAAFgAAABQAAAASAAAAEgAAABIAAAASAAAAEAAAAAEAAAABAAAAAAAAABE'
b'AAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAAAAAAQA'
b'AAA3QAAAPIAAADsAAAA7QAAAO0AAADtAAAA7QAAAO0AAADtAAAA7QAAAO0AAADtAAAA7QAAAOwA'
b'AADyAAAA3QAAABAAAAAAAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AA'
b'AA/wAAAO4AAAARAAAAAAAAAAAAAAASAAAA7QAAAP8AAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AA'
b'AD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAAD/AAAA7QAAABIAAAAAAAAAAAAAABEAAADuAAAA/wAA'
b'AP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAAAAAASAAAA7QAAAP8AAA'
b'D+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAAD/AAAA7QAAA'
b'BIAAAAAAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAA'
b'RAAAAAAAAAAAAAAAQAAAA3QAAAPIAAADtAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO'
b'4AAADuAAAA7gAAAO0AAADyAAAA3QAAABAAAAAAAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAE'
b'gAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA'
b'AAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAABAAAAEAAAABIAAAARAAAAEQAAABE'
b'AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAASAAAAEAAAAAEAAAABAAAAAA'
b'AAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AA'
b'AD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABEAAADuAAA'
b'A/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAEAAAABAAAAEAAAA'
b'BIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAA'
b'EAAAAAEAAAABAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO'
b'4AAAARAAAAAAAAAAAAAAAQAAAA3QAAAPIAAADsAAAA7QAAAO0AAADtAAAA7QAAAO0AAADtAAAA7'
b'QAAAO0AAADtAAAA7QAAAOwAAADyAAAA3QAAABAAAAAAAAAAAAAAABEAAADuAAAA/wAAAP8AAADt'
b'AAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE'
b'AAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAAAAAASAAAA7QAAAP8AAAD+AAAA/w'
b'AAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAAD/AAAA7QAAABIAAAAAA'
b'AAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/wAAAO4AAAARAAAAAAA'
b'AAAAAAAASAAAA7QAAAP8AAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AA'
b'AA/wAAAP4AAAD/AAAA7QAAABIAAAAAAAAAAAAAABEAAADuAAAA/wAAAP8AAADtAAAAEgAAAAAAA'
b'AABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAA'
b'AO0AAAD/AAAA/wAAAO4AAAARAAAAAAAAAAAAAAAQAAAA3QAAAPIAAADsAAAA7QAAAO0AAADtAAA'
b'A7QAAAO0AAADtAAAA7QAAAO0AAADtAAAA7QAAAOwAAADyAAAA3QAAABAAAAAAAAAAAAAAABEAAA'
b'DuAAAA/wAAAP8AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAEAAAAAAAAAEQAAAO0AAAD/AAAA/wAAAO4AAAASAAAAAAAAAAEAAAABAAAA'
b'EAAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAA'
b'SAAAAEAAAAAEAAAABAAAAAAAAABIAAADuAAAA/wAAAP8AAADtAAAAEQAAAAAAAAABAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEgAAAO0AAAD/AAAA/'
b'wAAAO0AAAATAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAABMAAADtAAAA/wAAAP8'
b'AAADtAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAEAAAAAAAAADQAAAOgAAAD/AAAA/wAAAPkAAAAjAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAACAAAAAAAAACMAAAD5AAAA/wAAAP8AAADnAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAMcAAAD/AAAA+gAAAP8AAACtAA'
b'AAGQAAABEAAAASAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAA'
b'AARAAAAEQAAABEAAAARAAAAEQAAABIAAAARAAAAGQAAAK0AAAD/AAAA+gAAAP8AAADHAAAAAAAA'
b'AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAA'
b'AAAAAAHIAAAD/AAAA+QAAAP8AAAD/AAAA9wAAAO0AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAA'
b'DuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADtAAAA9wAAA'
b'P8AAAD/AAAA+QAAAP8AAABxAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAgAAADMAAAA/wAAAPoAAAD6AAAA/gAAAP8AAAD'
b'/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP'
b'8AAAD/AAAA/wAAAP8AAAD/AAAA/gAAAPoAAAD5AAAA/wAAAMwAAAAIAAAAAAAAAAEAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAd'
b'AAAA0AAAAP8AAAD9AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8'
b'AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP0AAAD/AAAA0A'
b'AAAB0AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAACgAAAHIAAADNAAAA6wAAAO8AAADuAAAA7gAAAO4A'
b'AADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gA'
b'AAO4AAADvAAAA6wAAAM0AAAByAAAACgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAA'
b'AABAAAADQAAABIAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAA'
b'ABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAASAAAADQAAAAEAAAAAAAAAAgAAAAIAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
b'AAAAAAEAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Rf/'
b'/ov8AAP6QAAAJfwAA/UAAAAK/AAD+gAAAAX8AAPkAAAAAnwAA+QAAAACfAAD5AAAAAJ8AAPoF//'
b'+gXwAA+gQABGBfAAD6BegIIF8AAPoF0pAgXwAA+gWkACBfAAD6BVAAYF8AAPoFIACgXwAA+gUgA'
b'SBfAAD6BUABIF8AAPoFQIEgXwAA+gVBQSBfAAD6BUCBIF8AAPoFQAEgXwAA+gUgAiBfAAD6BSAC'
b'IF8AAPoFUAUgXwAA+gQEECBfAAD6Bf//oF8AAPoEAAAgXwAA+gYAAGBfAAD6BgAAYF8AAPoGAAB'
b'gXwAA+gYAAGBfAAD6BAAAIF8AAPoF//+gXwAA+gX//6BfAAD6BAAAIF8AAPoGAABgXwAA+gYAAG'
b'BfAAD6BgAAYF8AAPoGAABgXwAA+gQAACBfAAD6BF/6IF8AAPoF//+gXwAA+QAAAACfAAD5AAAAA'
b'J8AAPkAAAAAnwAA/oAAAAF/AAD9QAAAAr8AAP6QAAAJfwAA/0X//6L/AAA=')
icon_img1 = b64decode(icon_img1)
icon_img1 = ImageTk.PhotoImage(data=icon_img1)
view.tk.call('wm', 'iconphoto', view._w, icon_img1)
# View window's menu
topmenu = tk.Menu(view)
filemenu = tk.Menu(topmenu, tearoff=False)
filemenu.add_command(label="Open File",
command=lambda: View_windowshow(text, view), accelerator='Ctrl+F')
filemenu.add_command(label="Exit", command=view.destroy, accelerator='Ctrl+E')
topmenu.add_cascade(label="File", menu=filemenu)
view.config(menu=topmenu)
ybar = tk.Scrollbar(view)
ybar.pack(side=tk.RIGHT, fill=tk.Y)
xbar = tk.Scrollbar(view, orient=tk.HORIZONTAL)
xbar.pack(side=tk.BOTTOM, fill=tk.X)
text = tk.Text(view, xscrollcommand=xbar.set, yscrollcommand=ybar.set, height=500, width=1000, undo=True,
autoseparators=False, wrap='none')
text.pack(side=tk.TOP, fill=tk.BOTH)
ybar.config(command=text.yview)
xbar.config(command=text.xview)
if __name__ == "__main__":
# Main window
root = tk.Tk()
MAIN = MAINGUI(root)