Archived
Modify:
Restruct ui code
This commit is contained in:
1 parent
b28dd3e28d
commit
d4db845cb3
7 files changed
+2000
No files matched your search
@@ -0,0 +1,100 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------------#
|
||||||
|
from configparser import ConfigParser
|
||||||
|
|
||||||
|
class Configinit:
|
||||||
|
def __init__(self, config_filepath):
|
||||||
|
# init
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.config = ConfigParser()
|
||||||
|
self.config_filepath = config_filepath### Config file path
|
||||||
|
|
||||||
|
def load_config(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
try:
|
||||||
|
with open(self.config_filepath, 'r'):
|
||||||
|
pass
|
||||||
|
except FileNotFoundError:
|
||||||
|
self.create_config()
|
||||||
|
|
||||||
|
def get_config(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.config.read(self.config_filepath)
|
||||||
|
return self.config
|
||||||
|
|
||||||
|
def create_config(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
### Config for software info
|
||||||
|
self.config.add_section('INFO')
|
||||||
|
self.config.set('INFO', 'Version','1.5.4.1')
|
||||||
|
self.config.add_section('Options_Calc')
|
||||||
|
### Config for calculate param
|
||||||
|
self.config.set('Options_Calc', 'Iono_model', '0')
|
||||||
|
self.config.set('Options_Calc', 'Trop_model', '0')
|
||||||
|
self.config.set('Options_Calc', 'Elev_angle', '0')
|
||||||
|
self.config.set('Options_Calc', 'Sat_system', '0')
|
||||||
|
### Config for plot param
|
||||||
|
self.config.add_section('Options_Draw')
|
||||||
|
self.config.set('Options_Draw', 'E_Color', '#0080FF')
|
||||||
|
self.config.set('Options_Draw', 'N_Color', '#0080FF')
|
||||||
|
self.config.set('Options_Draw', 'U_Color', '#0080FF')
|
||||||
|
self.config.set('Options_Draw', 'E_Line', '0.80')
|
||||||
|
self.config.set('Options_Draw', 'N_Line', '0.80')
|
||||||
|
self.config.set('Options_Draw', 'U_Line', '0.80')
|
||||||
|
self.config.set('Options_Draw', 'Sat_Amount_Color', '#0080FF')
|
||||||
|
### Config for input path
|
||||||
|
self.config.add_section('Input_Obs_Path')
|
||||||
|
self.config.set('Input_Obs_Path', '0', '')
|
||||||
|
self.config.add_section('Input_Nav_Path')
|
||||||
|
self.config.set('Input_Nav_Path', '0', '')
|
||||||
|
### Config for output path
|
||||||
|
self.config.add_section('Output_Path')
|
||||||
|
self.config.set('Output_Path','0','')
|
||||||
|
|
||||||
|
with open(self.config_filepath, 'w') as configfile:
|
||||||
|
self.config.write(configfile)
|
||||||
|
return
|
||||||
|
|
||||||
|
def save_config(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
with open(self.config_filepath, 'w') as configfile:
|
||||||
|
self.config.write(configfile)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,359 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------------#
|
||||||
|
|
||||||
|
### Std
|
||||||
|
import threading
|
||||||
|
|
||||||
|
import ctypes as ct
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
|
from tkinter import filedialog
|
||||||
|
from tkinter import colorchooser
|
||||||
|
|
||||||
|
class CALLBACK:
|
||||||
|
def __init__(self, cfg, cfg_get):
|
||||||
|
self.cfg = cfg
|
||||||
|
self.cfg_get = cfg_get
|
||||||
|
|
||||||
|
self.system = {1:'G',2:'C',3:'E',4:'R',5:'S'}
|
||||||
|
self.ioncormode = {'OFF':'0', 'Ion-Free LC':'1', 'Broadcast':'2'}
|
||||||
|
self.trocormode = {'OFF':'0', 'Hopfield':'1', 'Saastamoinen':'2'}
|
||||||
|
|
||||||
|
self.colorvalue = [
|
||||||
|
self.cfg_get['Options_Draw']['e_color'],
|
||||||
|
self.cfg_get['Options_Draw']['n_color'],
|
||||||
|
self.cfg_get['Options_Draw']['u_color'],
|
||||||
|
self.cfg_get['Options_Draw']['sat_amount_color']
|
||||||
|
]
|
||||||
|
self.linewidth = [
|
||||||
|
self.cfg_get['Options_Draw']['e_line'],
|
||||||
|
self.cfg_get['Options_Draw']['n_line'],
|
||||||
|
self.cfg_get['Options_Draw']['u_line']
|
||||||
|
]
|
||||||
|
|
||||||
|
self.obsvar = ('',)
|
||||||
|
self.navvar = ('',)
|
||||||
|
self.outvar = ('',)
|
||||||
|
|
||||||
|
self.outdir = dict(self.cfg_get.items('Output_Path'))
|
||||||
|
self.obspath = dict(self.cfg_get.items('Input_Obs_Path'))
|
||||||
|
self.navpath = dict(self.cfg_get.items('Input_Nav_Path'))
|
||||||
|
|
||||||
|
for i in self.obspath:
|
||||||
|
if self.obspath.get(i):
|
||||||
|
self.obsvar += (self.obspath.get(i),)
|
||||||
|
|
||||||
|
for i in self.navpath:
|
||||||
|
if self.navpath.get(i):
|
||||||
|
self.navvar += (self.navpath.get(i),)
|
||||||
|
|
||||||
|
for i in self.outdir:
|
||||||
|
if self.outdir.get(i):
|
||||||
|
self.outvar += (self.outdir.get(i),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def Move_center(hwnd, win_x, win_y):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param :
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
position_x = int((hwnd.winfo_screenwidth() - win_x) / 2)
|
||||||
|
position_y = int((hwnd.winfo_screenheight() - win_y) / 2)
|
||||||
|
hwnd.geometry(f'{win_x}x{win_y}+{position_x}+{position_y}')
|
||||||
|
|
||||||
|
def Calcuconfirm(self, cionbox, ctrobox, canglebox, systemv):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param :
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
self.cfg_get.set('Options_Calc', 'Iono_model', self.ioncormode.get(cionbox.get()))
|
||||||
|
self.cfg_get.set('Options_Calc', 'Trop_model', self.trocormode.get(ctrobox.get()))
|
||||||
|
self.cfg_get.set('Options_Calc', 'Elev_angle', canglebox.get())
|
||||||
|
self.cfg_get.set('Options_Calc', 'Sat_system', str(systemv.get()))
|
||||||
|
self.cfg.save_config()
|
||||||
|
|
||||||
|
def Colorchoose(self, hwndparent, i, colorlab, mode):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param : hwndparent :
|
||||||
|
# i : 0==e & 1==n & 2==u & 3==satn
|
||||||
|
# colorlab :
|
||||||
|
# mode :
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
match mode:
|
||||||
|
case 0:
|
||||||
|
if not i==3:
|
||||||
|
self.colorvalue = [
|
||||||
|
self.cfg_get['Options_Draw']['e_color'],
|
||||||
|
self.cfg_get['Options_Draw']['n_color'],
|
||||||
|
self.cfg_get['Options_Draw']['u_color'],
|
||||||
|
self.colorvalue[3]
|
||||||
|
]
|
||||||
|
colorlab.config(bg=self.colorvalue[i])
|
||||||
|
else:
|
||||||
|
self.colorvalue = [
|
||||||
|
self.colorvalue[0],
|
||||||
|
self.colorvalue[1],
|
||||||
|
self.colorvalue[2],
|
||||||
|
self.cfg_get['Options_Draw']['sat_amount_color']
|
||||||
|
]
|
||||||
|
colorlab.config(bg=self.colorvalue[i])
|
||||||
|
case 1:
|
||||||
|
colorvalue = tk.colorchooser.askcolor(parent=hwndparent)
|
||||||
|
if colorvalue[1]:
|
||||||
|
self.colorvalue[i] = str(colorvalue[1])
|
||||||
|
colorlab.config(bg=self.colorvalue[i])
|
||||||
|
case 2:
|
||||||
|
self.cfg_get.set('Options_Draw', 'E_Color', str(self.colorvalue[0]))
|
||||||
|
self.cfg_get.set('Options_Draw', 'N_Color', str(self.colorvalue[1]))
|
||||||
|
self.cfg_get.set('Options_Draw', 'U_Color', str(self.colorvalue[2]))
|
||||||
|
self.cfg_get.set('Options_Draw', 'Sat_Amount_Color', str(self.colorvalue[3]))
|
||||||
|
self.cfg.save_config()
|
||||||
|
|
||||||
|
def Linewchoose(self, entry0, entry1, entry2, mode):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param : entry0 : spinbox handle
|
||||||
|
# entry1 : spinbox handle
|
||||||
|
# entry2 : spinbox handle
|
||||||
|
# mode : 0==undo & 1==confirm
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
match mode:
|
||||||
|
case 0:
|
||||||
|
entry0.set(self.cfg_get['Options_Draw']['e_line'])
|
||||||
|
entry1.set(self.cfg_get['Options_Draw']['n_line'])
|
||||||
|
entry2.set(self.cfg_get['Options_Draw']['u_line'])
|
||||||
|
case 1:
|
||||||
|
self.cfg_get.set('Options_Draw', 'E_Line', str(entry0.get()))
|
||||||
|
self.cfg_get.set('Options_Draw', 'N_Line', str(entry1.get()))
|
||||||
|
self.cfg_get.set('Options_Draw', 'U_Line', str(entry2.get()))
|
||||||
|
self.cfg.save_config()
|
||||||
|
|
||||||
|
def Dir_or_name_get(self, path, mode):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param : path :
|
||||||
|
# mode : 0==get file name & 1==get file dir
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
global nameend, filename, filedir
|
||||||
|
match mode:
|
||||||
|
case 0:
|
||||||
|
path_len = len(path)
|
||||||
|
while path_len > 0:
|
||||||
|
sig = path[path_len - 1:path_len]
|
||||||
|
if sig == '.':
|
||||||
|
nameend = path_len
|
||||||
|
if sig == '\\' or sig == '/':
|
||||||
|
filename = path[path_len:nameend]
|
||||||
|
return filename
|
||||||
|
path_len -= 1
|
||||||
|
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
path_len = len(path)
|
||||||
|
while path_len > 0:
|
||||||
|
sig = path[path_len - 1:path_len]
|
||||||
|
if sig == '\\' or sig == '/':
|
||||||
|
filedir = path[:path_len]
|
||||||
|
return filedir
|
||||||
|
path_len -= 1
|
||||||
|
|
||||||
|
def GetObsFilePath(self, hwndparent, ObsFileSelectBox):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param :
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
path = filedialog.askopenfilename(
|
||||||
|
parent=hwndparent,
|
||||||
|
title='RINEX OBS File',
|
||||||
|
filetypes=[('RINEX OBS File(*.o*.*.*obs.*.*d)', '*.*o;*.*obs;*.*d'),
|
||||||
|
('All Files', '*.*')]
|
||||||
|
)
|
||||||
|
if path and path not in ObsFileSelectBox['value']:
|
||||||
|
ObsFileSelectBox['value'] += (path,)
|
||||||
|
ObsFileSelectBox.current(len(ObsFileSelectBox['value']) - 1)
|
||||||
|
self.obsvar += (path,)
|
||||||
|
self.cfg_get.set('Input_Obs_Path', '%s'
|
||||||
|
% str(len(ObsFileSelectBox['value']) - 1),
|
||||||
|
path)
|
||||||
|
self.cfg.save_config()
|
||||||
|
|
||||||
|
def GetNavFilePath(self, hwndparent, NavFileSelectBox):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param :
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
path = filedialog.askopenfilename(
|
||||||
|
parent=hwndparent,
|
||||||
|
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']:
|
||||||
|
NavFileSelectBox['value'] += (path,)
|
||||||
|
NavFileSelectBox.current(len(NavFileSelectBox['value']) - 1)
|
||||||
|
self.navvar += (path,)
|
||||||
|
self.cfg_get.set('Input_Nav_Path', '%s'
|
||||||
|
% str(len(NavFileSelectBox['value']) - 1),
|
||||||
|
path)
|
||||||
|
self.cfg.save_config()
|
||||||
|
|
||||||
|
def AskDirectory(self, hwndparent, AskDirectorySelectBox):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param :
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
path = filedialog.askdirectory(parent=hwndparent)
|
||||||
|
if path and path not in AskDirectorySelectBox['value']:
|
||||||
|
AskDirectorySelectBox['value'] += (path + '/*.sp',)
|
||||||
|
AskDirectorySelectBox.current(len(AskDirectorySelectBox['value']) - 1)
|
||||||
|
self.outvar += (path + '/*.sp',)
|
||||||
|
self.cfg_get.set('Output_Path', '%s'
|
||||||
|
% str(len(AskDirectorySelectBox['value']) - 1),
|
||||||
|
path + '/*.sp')
|
||||||
|
self.cfg.save_config()
|
||||||
|
|
||||||
|
def AskOrNotCheck(self,
|
||||||
|
AskOrNotCheckVar,
|
||||||
|
AskDirectorySelectBox,
|
||||||
|
AskDirectorySelectButton):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param :
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
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):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Param :
|
||||||
|
#
|
||||||
|
# Return:
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
statemsg = ""
|
||||||
|
state3 = ["","",""]
|
||||||
|
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
|
||||||
|
|
||||||
|
obspath = ObsSelectBoxVar.get()
|
||||||
|
navpath = NavSelectBoxVar.get()
|
||||||
|
directory = obspath
|
||||||
|
if AskOrNotCheckVar.get():
|
||||||
|
directory = DirectorySelectBoxVar.get()
|
||||||
|
|
||||||
|
directory = self.Dir_or_name_get(directory, 1)
|
||||||
|
syssign = self.system.get(int(self.cfg_get['Options_Calc']['sat_system']))
|
||||||
|
resname = syssign + '-' + self.Dir_or_name_get(obspath,0) + 'sp'
|
||||||
|
respath = (directory + resname)
|
||||||
|
|
||||||
|
ExecuteState.config(text='Processing...... file : %s' %resname)
|
||||||
|
|
||||||
|
dll = ct.cdll.LoadLibrary('./brdm2pos.dll')
|
||||||
|
dll.brdm2pos.restype = ct.c_double
|
||||||
|
match dll.brdm2pos(
|
||||||
|
navpath.encode(),
|
||||||
|
obspath.encode(),
|
||||||
|
respath.encode(),
|
||||||
|
int(self.cfg_get['Options_Calc']['sat_system']),
|
||||||
|
int(self.cfg_get['Options_Calc']['elev_angle'])
|
||||||
|
):
|
||||||
|
case 0.0:
|
||||||
|
ExecuteState.config(text='Generated successfully ! file : %s' %resname)
|
||||||
|
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')
|
||||||
|
ct.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()
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------------#
|
||||||
|
|
||||||
|
### Std
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
|
class ABODUI:
|
||||||
|
def __init__(self, hwndparent, cfg_get):
|
||||||
|
# init
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.cfg_get = cfg_get
|
||||||
|
self.hwndparent = hwndparent
|
||||||
|
|
||||||
|
self.initGUI()
|
||||||
|
|
||||||
|
def initGUI(self):
|
||||||
|
abo = tk.Toplevel(self.hwndparent)
|
||||||
|
abo.title("About")
|
||||||
|
abo.attributes('-toolwindow', 2)
|
||||||
|
self.func.Move_center(abo, 200, 100)
|
||||||
|
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."
|
||||||
|
% self.cfg_get['INFO']['Version']
|
||||||
|
)
|
||||||
|
About.pack(side=tk.TOP, expand=tk.YES)
|
||||||
+477
@@ -0,0 +1,477 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------------#
|
||||||
|
|
||||||
|
### Self
|
||||||
|
import Ui_view as vie
|
||||||
|
import Ui_about as abo
|
||||||
|
import Ui_options as opt
|
||||||
|
import Ui_processor as pro
|
||||||
|
import Config_file as config
|
||||||
|
import Func_callback as func
|
||||||
|
|
||||||
|
### Std
|
||||||
|
from tkinter import ttk
|
||||||
|
from PIL import ImageTk
|
||||||
|
from base64 import b64decode
|
||||||
|
from matplotlib.backends.backend_tkagg import (
|
||||||
|
FigureCanvasTkAgg, NavigationToolbar2Tk)
|
||||||
|
|
||||||
|
import tkinter as tk
|
||||||
|
import tkinter.font as tkfont
|
||||||
|
import matplotlib as mpl
|
||||||
|
mpl.use('TkAgg')
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
def instanceOPT(hwndparent, cfg_get_, func_):
|
||||||
|
opt.OPTGUI(hwndparent, cfg_get_, func_)
|
||||||
|
|
||||||
|
def instancePRO(hwndparent, cfg_get_, func_):
|
||||||
|
pro.EXECUDUI(hwndparent, cfg_get_, func_)
|
||||||
|
|
||||||
|
def instanceVIE(hwndparent, func_):
|
||||||
|
vie.VIEWGUI(hwndparent, func_)
|
||||||
|
|
||||||
|
def instanceABO(hwndparemt, cfg_get_):
|
||||||
|
abo.ABODUI(hwndparemt, cfg_get_)
|
||||||
|
|
||||||
|
class MAINGUI:
|
||||||
|
def __init__(self, hwnd_, func_):
|
||||||
|
# init
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.func = func_
|
||||||
|
self.hwnd = hwnd_
|
||||||
|
|
||||||
|
self.ux = None
|
||||||
|
self.nx = None
|
||||||
|
self.ex = None
|
||||||
|
|
||||||
|
self.satn = None
|
||||||
|
self.satvisb = None
|
||||||
|
self.sattrack = None
|
||||||
|
|
||||||
|
self.canvas1 = None
|
||||||
|
self.canvas0 = None
|
||||||
|
self.canvas2 = None
|
||||||
|
|
||||||
|
self.Drawcards = None
|
||||||
|
self.Figurefrm_Sky = None
|
||||||
|
self.Figurefrm_Vis = None
|
||||||
|
self.Figurefrm_ENU = None
|
||||||
|
|
||||||
|
self.lastx = None
|
||||||
|
self.lasty = None
|
||||||
|
self.press = None
|
||||||
|
|
||||||
|
self.plotstate = None
|
||||||
|
|
||||||
|
self.initGUI()
|
||||||
|
|
||||||
|
def initGUI(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
### Set size
|
||||||
|
self.hwnd.title(
|
||||||
|
"KNZ_GeoTrackLab %s"
|
||||||
|
%cfg_get['INFO']['Version']
|
||||||
|
)
|
||||||
|
self.func.Move_center(hwnd,1200,700)
|
||||||
|
self.hwnd.minsize(1200, 700)
|
||||||
|
### Set icon
|
||||||
|
icon_ico = (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_ico = b64decode(icon_ico)
|
||||||
|
icon_ico = ImageTk.PhotoImage(data=icon_ico)
|
||||||
|
self.hwnd.tk.call('wm', 'iconphoto', self.hwnd._w, icon_ico)
|
||||||
|
### Set front
|
||||||
|
default_font = tkfont.nametofont("TkDefaultFont")
|
||||||
|
default_font.configure(family="Segoe UI", size=9)
|
||||||
|
### Top tool
|
||||||
|
self.initTOPMENU()
|
||||||
|
### Plot area
|
||||||
|
self.initPLOT()
|
||||||
|
### State bar
|
||||||
|
self.initSTATE_BAR()
|
||||||
|
### Quit event & mainloop start
|
||||||
|
self.hwnd.protocol("WM_DELETE_WINDOW", self.hwnd.quit)
|
||||||
|
self.hwnd.mainloop()
|
||||||
|
|
||||||
|
def initTOPMENU(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# Class :
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
topmenu = tk.Menu(self.hwnd)
|
||||||
|
### File
|
||||||
|
filemenu = tk.Menu(topmenu, tearoff=False)
|
||||||
|
### File > Open...
|
||||||
|
openmenu = tk.Menu(filemenu, tearoff=False)
|
||||||
|
### File > Open... > Open Pos Solution
|
||||||
|
openmenu.add_command(
|
||||||
|
label="Open Pos Solution",
|
||||||
|
accelerator='Ctrl+S'
|
||||||
|
)
|
||||||
|
### File > Open... > Open Sat Solution
|
||||||
|
openmenu.add_command(
|
||||||
|
label="Open Sat Solution",
|
||||||
|
accelerator='Ctrl+S'
|
||||||
|
)
|
||||||
|
### File > Open... > Open RINEX
|
||||||
|
openmenu.add_command(
|
||||||
|
label="Open RINEX",
|
||||||
|
command=lambda :instancePRO(hwnd, cfg_get, self.func),
|
||||||
|
accelerator='Ctrl+P'
|
||||||
|
)
|
||||||
|
filemenu.add_cascade(label="Open...", menu=openmenu)
|
||||||
|
### File > Clesr
|
||||||
|
filemenu.add_command(
|
||||||
|
label="Clear",
|
||||||
|
command=self.Clear_canvas
|
||||||
|
)
|
||||||
|
### File > View
|
||||||
|
filemenu.add_command(
|
||||||
|
label="View",
|
||||||
|
command=lambda :instanceVIE(self.hwnd, self.func)
|
||||||
|
)
|
||||||
|
### File > Exit
|
||||||
|
filemenu.add_command(
|
||||||
|
label="Exit",
|
||||||
|
command=self.hwnd.quit,
|
||||||
|
accelerator='Ctrl+E'
|
||||||
|
)
|
||||||
|
topmenu.add_cascade(label="File", menu=filemenu)
|
||||||
|
|
||||||
|
### Options
|
||||||
|
optmenu = tk.Menu(topmenu, tearoff=False)
|
||||||
|
### Options > Options...
|
||||||
|
optmenu.add_command(
|
||||||
|
label="Options...",
|
||||||
|
command=lambda :instanceOPT(self.hwnd,cfg_get,self.func)
|
||||||
|
)
|
||||||
|
topmenu.add_cascade(
|
||||||
|
label="Options",
|
||||||
|
menu=optmenu
|
||||||
|
)
|
||||||
|
|
||||||
|
### Help
|
||||||
|
helpmenu = tk.Menu(topmenu, tearoff=False)
|
||||||
|
### Help > About
|
||||||
|
helpmenu.add_command(
|
||||||
|
label="About",
|
||||||
|
command=lambda :instanceABO(self.hwnd, cfg_get)
|
||||||
|
)
|
||||||
|
topmenu.add_cascade(label="Help", menu=helpmenu)
|
||||||
|
|
||||||
|
self.hwnd.config(menu=topmenu)
|
||||||
|
|
||||||
|
def initPLOT(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method: initPLOT
|
||||||
|
# Brief : Initializes the drawing area of the main ui
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.Drawcards = ttk.Notebook(self.hwnd)
|
||||||
|
# E-N-U Plot area
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.PLOT_ENU()
|
||||||
|
self.Drawcards.add(self.Figurefrm_ENU, text='ENU-Draw')
|
||||||
|
# Valid Satellite Amout area
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.PLOT_VIS()
|
||||||
|
self.Drawcards.add(self.Figurefrm_Vis, text='Sat Number')
|
||||||
|
# Sky Track Plot area
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.PLOT_SKY()
|
||||||
|
self.Drawcards.add(self.Figurefrm_Sky, text='Sat Track')
|
||||||
|
self.Drawcards.pack(fill=tk.BOTH, expand=True, padx='2px', pady='0px')
|
||||||
|
|
||||||
|
def PLOT_ENU(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.Figurefrm_ENU = tk.Frame(self.hwnd)
|
||||||
|
self.Figurefrm_ENU.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||||
|
|
||||||
|
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.Figurefrm_ENU)
|
||||||
|
self.canvas0.draw()
|
||||||
|
self.canvas0.get_tk_widget().pack( side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||||
|
toolbar0 = NavigationToolbar2Tk(self.canvas0, self.Figurefrm_ENU, pack_toolbar=False)
|
||||||
|
toolbar0.update()
|
||||||
|
toolbar0.pack(side=tk.LEFT)
|
||||||
|
### Call back event
|
||||||
|
self.canvas0.mpl_connect("button_press_event",self.On_press)
|
||||||
|
self.canvas0.mpl_connect("button_release_event",self.On_release)
|
||||||
|
self.canvas0.mpl_connect("motion_notify_event",self.On_move)
|
||||||
|
self.canvas0.mpl_connect('scroll_event',self.On_scaleing)
|
||||||
|
|
||||||
|
def PLOT_VIS(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.Figurefrm_Vis = tk.Frame(self.hwnd)
|
||||||
|
self.Figurefrm_Vis.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||||
|
|
||||||
|
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.Figurefrm_Vis)
|
||||||
|
self.canvas1.draw()
|
||||||
|
self.canvas1.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||||
|
toolbar1 = NavigationToolbar2Tk(self.canvas1, self.Figurefrm_Vis, pack_toolbar=False)
|
||||||
|
toolbar1.update()
|
||||||
|
toolbar1.pack(side=tk.LEFT)
|
||||||
|
|
||||||
|
def PLOT_SKY(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.Figurefrm_Sky = tk.Frame(self.hwnd)
|
||||||
|
self.Figurefrm_Sky.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||||
|
|
||||||
|
plt.rc('font', family='Segoe UI')
|
||||||
|
fig = plt.figure()
|
||||||
|
self.sattrack = fig.add_subplot(projection='polar')
|
||||||
|
fig.subplots_adjust(
|
||||||
|
left=0,
|
||||||
|
bottom=0.03,
|
||||||
|
right=1,
|
||||||
|
top=0.95
|
||||||
|
)
|
||||||
|
self.canvas2 = FigureCanvasTkAgg(fig, self.Figurefrm_Sky)
|
||||||
|
self.canvas2.draw()
|
||||||
|
self.canvas2.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||||
|
toolbar2 = NavigationToolbar2Tk(self.canvas2, self.Figurefrm_Sky, pack_toolbar=False)
|
||||||
|
toolbar2.update()
|
||||||
|
toolbar2.pack(side=tk.TOP, anchor='w')
|
||||||
|
|
||||||
|
def initSTATE_BAR(self):
|
||||||
|
stateframe = tk.Frame(self.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 On_press(self, event):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
if event.inaxes:
|
||||||
|
if event.button == 1:
|
||||||
|
self.press = True
|
||||||
|
self.lastx = event.xdata
|
||||||
|
self.lasty = event.ydata
|
||||||
|
|
||||||
|
def On_move(self, event):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
axtemp = event.inaxes
|
||||||
|
if axtemp:
|
||||||
|
if self.press:
|
||||||
|
x = event.xdata - self.lastx
|
||||||
|
y = event.ydata - self.lasty
|
||||||
|
x_min, x_max = axtemp.get_xlim()
|
||||||
|
y_min, y_max = axtemp.get_ylim()
|
||||||
|
x_min = x_min - x
|
||||||
|
x_max = x_max - x
|
||||||
|
y_min = y_min - y
|
||||||
|
y_max = y_max - y
|
||||||
|
axtemp.set_xlim(x_min, x_max)
|
||||||
|
axtemp.set_ylim(y_min, y_max)
|
||||||
|
self.canvas0.draw()
|
||||||
|
|
||||||
|
def On_release(self, event):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
if self.press:
|
||||||
|
self.press = False
|
||||||
|
|
||||||
|
def On_scaleing(self, event):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
axtemp = event.inaxes
|
||||||
|
y_min, y_max = axtemp.get_ylim()
|
||||||
|
scaley = (y_max - y_min) / 10
|
||||||
|
if event.button == 'up':
|
||||||
|
axtemp.set(ylim=(y_min + scaley, y_max - scaley))
|
||||||
|
elif event.button == 'down':
|
||||||
|
axtemp.set(ylim=(y_min - scaley, y_max + scaley))
|
||||||
|
self.canvas0.draw_idle()
|
||||||
|
|
||||||
|
def Clear_canvas(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method: Clear_canvas
|
||||||
|
# Brief : clear the canvas
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
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")
|
||||||
|
self.hwnd.update()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
### LOad Config
|
||||||
|
cfg = config.Configinit('config.ini')
|
||||||
|
cfg.load_config()
|
||||||
|
cfg_get = cfg.get_config()
|
||||||
|
|
||||||
|
### Call Back Process
|
||||||
|
func = func.CALLBACK(cfg, cfg_get)
|
||||||
|
|
||||||
|
### Main Window
|
||||||
|
hwnd = tk.Tk()
|
||||||
|
mainui = MAINGUI(hwnd, func)
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,512 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------------#
|
||||||
|
|
||||||
|
### Std
|
||||||
|
from PIL import ImageTk
|
||||||
|
from tkinter import ttk
|
||||||
|
from base64 import b64decode
|
||||||
|
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
|
class OPTGUI:
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
hwndparent,
|
||||||
|
cfg_get,
|
||||||
|
func
|
||||||
|
):
|
||||||
|
# init
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.func = func
|
||||||
|
self.cfg_get = cfg_get
|
||||||
|
self.hwndparent = hwndparent
|
||||||
|
|
||||||
|
self.PlotFrame = None
|
||||||
|
self.CalcuFrame = None
|
||||||
|
|
||||||
|
self.systemv = None
|
||||||
|
self.ctrobox = None
|
||||||
|
self.cionbox = None
|
||||||
|
self.opthwnd = None
|
||||||
|
self.canglebox = None
|
||||||
|
self.angleentry = None
|
||||||
|
|
||||||
|
self.ulinewidth = None
|
||||||
|
self.nlinewidth = None
|
||||||
|
self.elinewidth = None
|
||||||
|
|
||||||
|
self.initGUI()
|
||||||
|
|
||||||
|
def initGUI(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
### Set size
|
||||||
|
self.opthwnd = tk.Toplevel(self.hwndparent)
|
||||||
|
self.opthwnd.title("Options")
|
||||||
|
self.opthwnd.resizable(0,0)
|
||||||
|
self.func.Move_center(self.opthwnd,320,250)
|
||||||
|
self.opthwnd.minsize(320,250)
|
||||||
|
self.opthwnd.maxsize(320,250)
|
||||||
|
### Set icon
|
||||||
|
icon_ico = (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_ico = b64decode(icon_ico)
|
||||||
|
icon_ico = ImageTk.PhotoImage(data=icon_ico)
|
||||||
|
self.opthwnd.tk.call('wm', 'iconphoto', self.opthwnd._w, icon_ico)
|
||||||
|
### Main window
|
||||||
|
self.initOPTION()
|
||||||
|
self.initCONFIRM()
|
||||||
|
|
||||||
|
def initOPTION(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
Optionscards = tk.ttk.Notebook(self.opthwnd)
|
||||||
|
|
||||||
|
# Calcu options card
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.initCARDCALCU()
|
||||||
|
Optionscards.add(self.CalcuFrame, text='Calc options')
|
||||||
|
# Plot options card
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
self.initCARDDRAW()
|
||||||
|
Optionscards.add(self.PlotFrame, text='Draw options')
|
||||||
|
Optionscards.pack(fill=tk.BOTH, expand=True, padx='2px', pady='0px')
|
||||||
|
|
||||||
|
def initCARDCALCU(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.CalcuFrame = tk.Frame(self.opthwnd)
|
||||||
|
# Iono option frame
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.IONOOPT()
|
||||||
|
# Trop option frame
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.TROPOPT()
|
||||||
|
# Elev option frame
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.HANGOPT()
|
||||||
|
# Syst option frame
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.SYSOPT()
|
||||||
|
|
||||||
|
def IONOOPT(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# ION correction frame#
|
||||||
|
IonoFrame = ttk.Frame(self.CalcuFrame)
|
||||||
|
IonoFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
|
||||||
|
ioncor = ttk.Label(IonoFrame, text='Ionosphere Correction')
|
||||||
|
ioncor.pack(side=tk.LEFT, anchor='w', padx='1px')
|
||||||
|
|
||||||
|
self.cionbox = ttk.Combobox(IonoFrame, width=15, height=4)
|
||||||
|
self.cionbox['state'] = 'readonly'
|
||||||
|
self.cionbox['value'] = ('OFF', 'Ion-Free LC', 'Broadcast')
|
||||||
|
self.cionbox.current(self.cfg_get['Options_Calc']['iono_model'])
|
||||||
|
self.cionbox.pack(side=tk.RIGHT, anchor='e')
|
||||||
|
|
||||||
|
def TROPOPT(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# TRO correction frame#
|
||||||
|
TropFrame = ttk.Frame(self.CalcuFrame)
|
||||||
|
TropFrame.pack( side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
|
||||||
|
ioncor = ttk.Label(TropFrame, text='Troposphere Correction')
|
||||||
|
ioncor.pack(side=tk.LEFT, anchor='w', padx='1px')
|
||||||
|
|
||||||
|
self.ctrobox = ttk.Combobox(TropFrame, width=15, height=4)
|
||||||
|
self.ctrobox['state'] = 'readonly'
|
||||||
|
self.ctrobox['value'] = ('OFF', 'Hopfield', 'Saastamoinen')
|
||||||
|
self.ctrobox.current(self.cfg_get['Options_Calc']['trop_model'])
|
||||||
|
self.ctrobox.pack(side=tk.RIGHT, anchor='e')
|
||||||
|
|
||||||
|
def HANGOPT(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# Angle of elevation frame
|
||||||
|
SatElevFrame = ttk.Frame(self.CalcuFrame)
|
||||||
|
SatElevFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='2px', fill=tk.X)
|
||||||
|
h_angle = ttk.Label(SatElevFrame, text='Satellite Elevation(°) / #')
|
||||||
|
h_angle.pack(side=tk.LEFT, anchor='w', padx='1px')
|
||||||
|
|
||||||
|
self.angleentry = ttk.Entry(SatElevFrame, width=8)
|
||||||
|
self.angleentry.pack(side=tk.RIGHT, anchor='w')
|
||||||
|
|
||||||
|
self.canglebox = ttk.Combobox(SatElevFrame, width=6, height=10)
|
||||||
|
self.canglebox['state'] = 'readonly'
|
||||||
|
self.canglebox['value'] = (
|
||||||
|
'00', '05', '10', '15',
|
||||||
|
'20', '25', '30', '35',
|
||||||
|
'40', '45', '50', '55',)
|
||||||
|
pos = int(self.cfg_get['Options_Calc']['elev_angle'])/5
|
||||||
|
self.canglebox.current(int(pos))
|
||||||
|
self.canglebox.pack(side=tk.RIGHT,anchor='e')
|
||||||
|
|
||||||
|
def SYSOPT(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# GNSS Options
|
||||||
|
SystemFrame = ttk.LabelFrame(self.CalcuFrame, text='Satellite system', labelanchor='nw')
|
||||||
|
SystemFrame.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.systemv = tk.IntVar()
|
||||||
|
for sys, num in satsys:
|
||||||
|
|
||||||
|
radio_button = ttk.Radiobutton(SystemFrame, text=sys, variable=self.systemv, value=num)
|
||||||
|
radio_button.pack(side=tk.LEFT, padx='3px', anchor='w')
|
||||||
|
|
||||||
|
self.systemv.set(self.cfg_get['Options_Calc']['sat_system'])
|
||||||
|
|
||||||
|
def initCARDDRAW(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.PlotFrame = tk.Frame(self.opthwnd)
|
||||||
|
|
||||||
|
self.initDRAWCOLOR()
|
||||||
|
self.initDRAWLINE()
|
||||||
|
|
||||||
|
def initDRAWLINE(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# Line's weight options#
|
||||||
|
LineoptFrame = ttk.LabelFrame(self.PlotFrame, text='Draw configs', labelanchor='nw')
|
||||||
|
LineoptFrame.pack(side=tk.RIGHT, expand=tk.YES, padx='1px', pady='1px', fill=tk.Y)
|
||||||
|
|
||||||
|
EFrame = tk.Frame(LineoptFrame)
|
||||||
|
EFrame.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
elinewopt = tk.Label(
|
||||||
|
EFrame,
|
||||||
|
text='Eline:',
|
||||||
|
width=5,
|
||||||
|
height=1
|
||||||
|
)
|
||||||
|
elinewopt.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
self.elinewidth = ttk.Spinbox(
|
||||||
|
EFrame,
|
||||||
|
from_=0,
|
||||||
|
to=10,
|
||||||
|
increment=0.01,
|
||||||
|
width=10
|
||||||
|
)
|
||||||
|
self.elinewidth.set(self.cfg_get['Options_Draw']['e_line'])
|
||||||
|
self.elinewidth.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
|
||||||
|
NFrame = tk.Frame(LineoptFrame)
|
||||||
|
NFrame.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
nlinewopt = tk.Label(
|
||||||
|
NFrame,
|
||||||
|
text='Nline:',
|
||||||
|
width=5,
|
||||||
|
height=1
|
||||||
|
)
|
||||||
|
nlinewopt.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
self.nlinewidth = ttk.Spinbox(
|
||||||
|
NFrame,
|
||||||
|
from_=0,
|
||||||
|
to=10,
|
||||||
|
increment=0.01,
|
||||||
|
width=10
|
||||||
|
)
|
||||||
|
self.nlinewidth.set(self.cfg_get['Options_Draw']['n_line'])
|
||||||
|
self.nlinewidth.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
|
||||||
|
UFrame = tk.Frame(LineoptFrame)
|
||||||
|
UFrame.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
ulinewopt = tk.Label(
|
||||||
|
UFrame,
|
||||||
|
text='Uline:',
|
||||||
|
width=5,
|
||||||
|
height=1
|
||||||
|
)
|
||||||
|
ulinewopt.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
self.ulinewidth = ttk.Spinbox(
|
||||||
|
UFrame,
|
||||||
|
from_=0,
|
||||||
|
to=10,
|
||||||
|
increment=0.01,
|
||||||
|
width=10
|
||||||
|
)
|
||||||
|
self.ulinewidth.set(self.cfg_get['Options_Draw']['u_line'])
|
||||||
|
self.ulinewidth.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
|
||||||
|
LineCon = tk.Frame(LineoptFrame)
|
||||||
|
LineCon.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
linewre = ttk.Button(
|
||||||
|
LineCon,
|
||||||
|
text='Undo',
|
||||||
|
width=10,
|
||||||
|
command=lambda :self.func.Linewchoose(
|
||||||
|
self.elinewidth,
|
||||||
|
self.nlinewidth,
|
||||||
|
self.ulinewidth,
|
||||||
|
0
|
||||||
|
)
|
||||||
|
)
|
||||||
|
linewre.pack(side=tk.LEFT, expand=tk.YES, padx='1px')
|
||||||
|
|
||||||
|
def initDRAWCOLOR(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# Satnum plot options#
|
||||||
|
SatvisFrame = ttk.LabelFrame(self.PlotFrame, text='Satn configs', labelanchor='nw')
|
||||||
|
SatvisFrame.pack(side=tk.BOTTOM, expand=tk.YES, padx='1px', pady='1px', fill=tk.BOTH)
|
||||||
|
|
||||||
|
SatnFrame = tk.Frame(SatvisFrame)
|
||||||
|
SatnFrame.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
satncollab = tk.Label(
|
||||||
|
SatnFrame,
|
||||||
|
width=5,
|
||||||
|
height=1,
|
||||||
|
bg=self.cfg_get['Options_Draw']['sat_amount_color'])
|
||||||
|
satncollab.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
satncolopt = ttk.Button(
|
||||||
|
SatnFrame,
|
||||||
|
text='Satn Color',
|
||||||
|
width=10,
|
||||||
|
command=lambda :self.func.Colorchoose(self.opthwnd, 3, satncollab, 1)
|
||||||
|
)
|
||||||
|
satncolopt.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
|
||||||
|
SatviCon = tk.Frame(SatvisFrame)
|
||||||
|
SatviCon.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
satviopt = ttk.Button(
|
||||||
|
SatviCon,
|
||||||
|
text='Undo',
|
||||||
|
width=10,
|
||||||
|
command=lambda :self.func.Colorchoose(self.opthwnd, 3, satncollab, 0)
|
||||||
|
)
|
||||||
|
satviopt .pack(side=tk.LEFT, expand=tk.YES, padx='1px')
|
||||||
|
|
||||||
|
# Line's colors options#
|
||||||
|
LinecolorFrame = ttk.LabelFrame(self.PlotFrame, text='ENU colors', labelanchor='nw')
|
||||||
|
LinecolorFrame.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='1px', fill=tk.Y)
|
||||||
|
|
||||||
|
EFrame = tk.Frame(LinecolorFrame)
|
||||||
|
EFrame.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
ecollab = tk.Label(
|
||||||
|
EFrame,
|
||||||
|
width=5,
|
||||||
|
height=1,
|
||||||
|
bg=self.cfg_get['Options_Draw']['e_color'])
|
||||||
|
ecollab.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
ecolopt = ttk.Button(
|
||||||
|
EFrame,
|
||||||
|
text='E Color',
|
||||||
|
width=10,
|
||||||
|
command=lambda :self.func.Colorchoose(self.opthwnd, 0, ecollab, 1)
|
||||||
|
)
|
||||||
|
ecolopt.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
|
||||||
|
NFrame = tk.Frame(LinecolorFrame)
|
||||||
|
NFrame.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
ncollab = tk.Label(
|
||||||
|
NFrame,
|
||||||
|
width=5,
|
||||||
|
height=1,
|
||||||
|
bg=self.cfg_get['Options_Draw']['n_color']
|
||||||
|
)
|
||||||
|
ncollab.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
ncolopt = ttk.Button(
|
||||||
|
NFrame,
|
||||||
|
text='N Color',
|
||||||
|
width=10,
|
||||||
|
command=lambda :self.func.Colorchoose(self.opthwnd, 1, ncollab, 1)
|
||||||
|
)
|
||||||
|
ncolopt.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
|
||||||
|
|
||||||
|
UFrame = tk.Frame(LinecolorFrame)
|
||||||
|
UFrame.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
ucollab = tk.Label(
|
||||||
|
UFrame,
|
||||||
|
width=5,
|
||||||
|
height=1,
|
||||||
|
bg=self.cfg_get['Options_Draw']['u_color']
|
||||||
|
)
|
||||||
|
ucollab.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
ucolopt = ttk.Button(
|
||||||
|
UFrame,
|
||||||
|
text='U Color',
|
||||||
|
width=10,
|
||||||
|
command=lambda :self.func.Colorchoose(self.opthwnd, 2, ucollab, 1)
|
||||||
|
)
|
||||||
|
ucolopt.pack(side=tk.RIGHT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
|
||||||
|
ColorCon = tk.Frame(LinecolorFrame)
|
||||||
|
ColorCon.pack(side=tk.TOP, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
colorcon = ttk.Button(
|
||||||
|
ColorCon,
|
||||||
|
text='Undo',
|
||||||
|
width=10,
|
||||||
|
command=lambda :[
|
||||||
|
self.func.Colorchoose(self.opthwnd, 0, ecollab, 0),
|
||||||
|
self.func.Colorchoose(self.opthwnd, 1, ncollab, 0),
|
||||||
|
self.func.Colorchoose(self.opthwnd, 2, ucollab, 0),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
colorcon.pack(side=tk.LEFT, expand=tk.YES, padx='5px', pady='0px')
|
||||||
|
|
||||||
|
def initCONFIRM(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
ConfirmFrame = ttk.Frame(self.opthwnd)
|
||||||
|
ConfirmFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='0px', fill=tk.Y)
|
||||||
|
TotalCancel = ttk.Button(
|
||||||
|
ConfirmFrame,
|
||||||
|
text='Cancel',
|
||||||
|
width=10,
|
||||||
|
command=lambda :[
|
||||||
|
self.opthwnd.destroy()
|
||||||
|
]
|
||||||
|
)
|
||||||
|
TotalCancel.pack(side=tk.RIGHT, padx='1px', anchor='e')
|
||||||
|
TotalCon = ttk.Button(
|
||||||
|
ConfirmFrame,
|
||||||
|
text='Confirm',
|
||||||
|
width=10,
|
||||||
|
command=lambda :[
|
||||||
|
self.func.Colorchoose(self.opthwnd, 0, None, 2),
|
||||||
|
self.func.Linewchoose(
|
||||||
|
self.elinewidth,
|
||||||
|
self.nlinewidth,
|
||||||
|
self.ulinewidth,
|
||||||
|
1
|
||||||
|
),
|
||||||
|
self.func.Calcuconfirm(
|
||||||
|
self.cionbox,
|
||||||
|
self.ctrobox,
|
||||||
|
self.canglebox,
|
||||||
|
self.systemv
|
||||||
|
),
|
||||||
|
self.opthwnd.destroy()
|
||||||
|
]
|
||||||
|
)
|
||||||
|
TotalCon.pack(side=tk.RIGHT, padx='1px', anchor='e')
|
||||||
@@ -0,0 +1,243 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------------#
|
||||||
|
|
||||||
|
### Std
|
||||||
|
from tkinter import ttk
|
||||||
|
from PIL import ImageTk
|
||||||
|
from base64 import b64decode
|
||||||
|
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
|
|
||||||
|
class EXECUDUI:
|
||||||
|
def __init__(self, hwndparent, cfg_get, func):
|
||||||
|
# init
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.func = func
|
||||||
|
self.cfg_get = cfg_get
|
||||||
|
self.hwndparent = hwndparent
|
||||||
|
|
||||||
|
self.exehwnd = None
|
||||||
|
self.ObsSelectBoxVar = tk.StringVar()
|
||||||
|
self.NavSelectBoxVar = tk.StringVar()
|
||||||
|
self.AskOrNotCheckButtonVar = tk.IntVar()
|
||||||
|
self.DirectorySelectBoxVar = tk.StringVar()
|
||||||
|
|
||||||
|
self.initGUI()
|
||||||
|
|
||||||
|
def initGUI(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.exehwnd = tk.Toplevel(self.hwndparent)
|
||||||
|
self.exehwnd.title("RINEX Processor")
|
||||||
|
self.exehwnd.resizable(0,0)
|
||||||
|
self.func.Move_center(self.exehwnd,550,180)
|
||||||
|
self.exehwnd.minsize(550,180)
|
||||||
|
self.exehwnd.maxsize(550,180)
|
||||||
|
|
||||||
|
### Set icon
|
||||||
|
icon_ico = (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_ico = b64decode(icon_ico)
|
||||||
|
icon_ico = ImageTk.PhotoImage(data=icon_ico)
|
||||||
|
self.exehwnd.tk.call('wm', 'iconphoto', self.exehwnd._w, icon_ico)
|
||||||
|
|
||||||
|
self.initIO()
|
||||||
|
|
||||||
|
def initIO(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
MainFrame = tk.Frame(self.exehwnd)
|
||||||
|
MainFrame.pack()
|
||||||
|
InputFrame = ttk.Frame(MainFrame)
|
||||||
|
InputFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='1px', fill=tk.X)
|
||||||
|
|
||||||
|
# Input Frame
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
### Observation file
|
||||||
|
ObsInFrame = ttk.LabelFrame(InputFrame, text='RINEX Obs File')
|
||||||
|
ObsInFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='0px', fill=tk.X)
|
||||||
|
ObsFileSelectBox = ttk.Combobox(
|
||||||
|
ObsInFrame,
|
||||||
|
width=70,
|
||||||
|
height=4,
|
||||||
|
values=self.func.obsvar,
|
||||||
|
textvariable=self.ObsSelectBoxVar
|
||||||
|
)
|
||||||
|
ObsFileSelectBox.current(len(ObsFileSelectBox['value'])-1)
|
||||||
|
ObsFileSelectBox.pack(side=tk.LEFT, anchor='w', padx='0px', pady='0px')
|
||||||
|
ObsFileSelectButton = ttk.Button(
|
||||||
|
ObsInFrame,
|
||||||
|
text='...',
|
||||||
|
width=3,
|
||||||
|
command=lambda :self.func.GetObsFilePath(self.exehwnd, ObsFileSelectBox)
|
||||||
|
)
|
||||||
|
ObsFileSelectButton.pack(side=tk.RIGHT, anchor='e', padx='1px', pady='0px')
|
||||||
|
### Navigation file
|
||||||
|
NavInFrame = ttk.LabelFrame(InputFrame, text='RINEX Nav File')
|
||||||
|
NavInFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='0px', fill=tk.X)
|
||||||
|
NavFileSelectBox = ttk.Combobox(
|
||||||
|
NavInFrame,
|
||||||
|
width=70,
|
||||||
|
height=4,
|
||||||
|
values=self.func.navvar,
|
||||||
|
textvariable=self.NavSelectBoxVar
|
||||||
|
)
|
||||||
|
NavFileSelectBox.current(len(NavFileSelectBox['value'])-1)
|
||||||
|
NavFileSelectBox.pack(side=tk.LEFT, anchor='w', padx='0px', pady='0px')
|
||||||
|
NavFileSelectButton = ttk.Button(
|
||||||
|
NavInFrame,
|
||||||
|
text='...',
|
||||||
|
width=3,
|
||||||
|
command=lambda :self.func.GetNavFilePath(self.exehwnd, NavFileSelectBox)
|
||||||
|
)
|
||||||
|
NavFileSelectButton.pack(side=tk.RIGHT, anchor='e', padx='1px', pady='0px')
|
||||||
|
|
||||||
|
# Output Frame
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
OutputFrame = ttk.Frame(MainFrame)
|
||||||
|
OutputFrame.pack(side=tk.BOTTOM, expand=tk.YES, padx='1px', pady='0px', fill=tk.X)
|
||||||
|
|
||||||
|
FileOutFrame = ttk.LabelFrame(OutputFrame, text='Output Directory')
|
||||||
|
FileOutFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='0px', fill=tk.X)
|
||||||
|
## CheckButton Initialize
|
||||||
|
AskOrNotCheckButton = ttk.Checkbutton(
|
||||||
|
FileOutFrame,
|
||||||
|
text='Directory',
|
||||||
|
variable=self.AskOrNotCheckButtonVar,
|
||||||
|
onvalue=1,
|
||||||
|
offvalue=0,
|
||||||
|
command=lambda :self.func.AskOrNotCheck(
|
||||||
|
self.AskOrNotCheckButtonVar,
|
||||||
|
AskDirectorySelectBox,
|
||||||
|
AskDirectorySelectButton
|
||||||
|
)
|
||||||
|
)
|
||||||
|
AskOrNotCheckButton.pack(side=tk.LEFT, anchor='w', padx='0px', pady='0px')
|
||||||
|
AskDirectorySelectBox = ttk.Combobox(
|
||||||
|
FileOutFrame,
|
||||||
|
width=60,
|
||||||
|
height=4,
|
||||||
|
values=self.func.outvar,
|
||||||
|
state=tk.DISABLED,
|
||||||
|
textvariable=self.DirectorySelectBoxVar
|
||||||
|
)
|
||||||
|
AskDirectorySelectBox.current(len(AskDirectorySelectBox['value'])-1)
|
||||||
|
AskDirectorySelectBox.pack(side=tk.LEFT, anchor='w', padx='0px', pady='0px')
|
||||||
|
AskDirectorySelectButton = ttk.Button(
|
||||||
|
FileOutFrame,
|
||||||
|
text='...',
|
||||||
|
width=3,
|
||||||
|
state=tk.DISABLED,
|
||||||
|
command=lambda :self.func.AskDirectory(self.exehwnd, AskDirectorySelectBox)
|
||||||
|
)
|
||||||
|
AskDirectorySelectButton.pack(side=tk.RIGHT, anchor='e', padx='1px', pady='0px')
|
||||||
|
|
||||||
|
# Execute frame
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
ExeFrame = ttk.Frame(OutputFrame)
|
||||||
|
ExeFrame.pack(side=tk.TOP, expand=tk.YES, padx='1px', pady='0px', fill=tk.X)
|
||||||
|
|
||||||
|
ExitButton = ttk.Button(
|
||||||
|
ExeFrame,
|
||||||
|
text='Exit',
|
||||||
|
width=10,
|
||||||
|
command=self.exehwnd.destroy
|
||||||
|
)
|
||||||
|
ExitButton.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
|
||||||
|
ExecuteButton = ttk.Button(
|
||||||
|
ExeFrame,
|
||||||
|
text='Execute',
|
||||||
|
width=10,
|
||||||
|
command=lambda :self.func._ExecuteFile(
|
||||||
|
ExecuteState,
|
||||||
|
self.ObsSelectBoxVar,
|
||||||
|
self.NavSelectBoxVar,
|
||||||
|
self.AskOrNotCheckButtonVar,
|
||||||
|
self.DirectorySelectBoxVar
|
||||||
|
)
|
||||||
|
)
|
||||||
|
ExecuteButton.pack(side=tk.LEFT, expand=tk.YES, padx='1px', pady='0px')
|
||||||
|
|
||||||
|
# State bar
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
StateFrame = ttk.Frame(OutputFrame)
|
||||||
|
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')
|
||||||
+270
@@ -0,0 +1,270 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------------#
|
||||||
|
|
||||||
|
### Std
|
||||||
|
from PIL import ImageTk
|
||||||
|
from base64 import b64decode
|
||||||
|
from tkinter import filedialog
|
||||||
|
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
|
class VIEWGUI:
|
||||||
|
def __init__(self, hwndparent, func):
|
||||||
|
# init
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.func = func
|
||||||
|
self.hwndparent = hwndparent
|
||||||
|
|
||||||
|
self.view = None
|
||||||
|
|
||||||
|
self.initGUI()
|
||||||
|
|
||||||
|
def initGUI(self):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
self.view = tk.Toplevel(self.hwndparent)
|
||||||
|
self.view.title("View")
|
||||||
|
self.func.Move_center(self.view, 1000, 600)
|
||||||
|
self.view.minsize(1000, 600)
|
||||||
|
|
||||||
|
icon_ico = (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_ico = b64decode(icon_ico)
|
||||||
|
icon_ico = ImageTk.PhotoImage(data=icon_ico)
|
||||||
|
self.view.tk.call('wm', 'iconphoto', self.view._w, icon_ico)
|
||||||
|
|
||||||
|
topmenu = tk.Menu(self.view)
|
||||||
|
### File
|
||||||
|
filemenu = tk.Menu(topmenu, tearoff=False)
|
||||||
|
### File > Oprn File
|
||||||
|
filemenu.add_command(
|
||||||
|
label="Open File",
|
||||||
|
command=lambda: self.View_windowshow(text, self.view),
|
||||||
|
accelerator='Ctrl+F'
|
||||||
|
)
|
||||||
|
### File > Exit
|
||||||
|
filemenu.add_command(
|
||||||
|
label="Exit",
|
||||||
|
command=self.view.destroy,
|
||||||
|
accelerator='Ctrl+E'
|
||||||
|
)
|
||||||
|
topmenu.add_cascade(label="File", menu=filemenu)
|
||||||
|
|
||||||
|
self.view.config(menu=topmenu)
|
||||||
|
|
||||||
|
ybar = tk.Scrollbar(self.view)
|
||||||
|
ybar.pack(side=tk.RIGHT, fill=tk.Y)
|
||||||
|
xbar = tk.Scrollbar(self.view, orient=tk.HORIZONTAL)
|
||||||
|
xbar.pack(side=tk.BOTTOM, fill=tk.X)
|
||||||
|
|
||||||
|
text = tk.Text(
|
||||||
|
self.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)
|
||||||
|
|
||||||
|
def View_windowshow(self, text, view):
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# >
|
||||||
|
# Method:
|
||||||
|
# Brief :
|
||||||
|
# Author: @KenanZhu All Right Reserved.
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
f_path = filedialog.askopenfilename(parent=view)
|
||||||
|
if not f_path:
|
||||||
|
return 0
|
||||||
|
self.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()
|
||||||
Reference in new issue
Block a user