Archived
245 lines
14 KiB
Python
245 lines
14 KiB
Python
# @ File : UI_processor.py
|
|
#
|
|
# Copyright (c) 2024 KenanZhu. All Right Reserved.
|
|
#
|
|
# @ Author : KenanZhu
|
|
# @ Time : 2024/11/04
|
|
# @ Brief : RINEX file processor window class.
|
|
# #
|
|
# @ IDE : PyCharm 2024.2.1 (Community Edition)
|
|
#
|
|
# ----------------------------------------------------------------------------------------
|
|
|
|
### Std
|
|
from tkinter import ttk
|
|
from PIL import ImageTk
|
|
from base64 import b64decode
|
|
|
|
import tkinter as tk
|
|
|
|
|
|
# noinspection PyProtectedMember
|
|
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') |