mirror of
https://github.com/nasa/fprime.git
synced 2025-12-15 14:05:24 -06:00
TK GUI working again
This commit is contained in:
parent
d836f8e999
commit
33c39c94a0
@ -12,12 +12,9 @@ import struct
|
||||
import select
|
||||
import multiprocessing
|
||||
import errno
|
||||
#import GSEAdapter
|
||||
import time
|
||||
import logging
|
||||
|
||||
import binascii
|
||||
|
||||
from fprime.common.models.serialize.type_base import *
|
||||
from optparse import OptionParser
|
||||
|
||||
@ -30,7 +27,6 @@ SERVER = None
|
||||
LOCK = None
|
||||
shutdown_event = threading.Event()
|
||||
|
||||
|
||||
FSW_clients = []
|
||||
GUI_clients = []
|
||||
FSW_ids = []
|
||||
@ -44,7 +40,7 @@ def signal_handler(signal, frame):
|
||||
def now():
|
||||
return time.ctime(time.time())
|
||||
|
||||
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
class ThreadedTCPRequestHandler(SocketServer.StreamRequestHandler):
|
||||
"""
|
||||
Derived from original Stable demo during R&TD and adapted
|
||||
for use in new FSW gse.py applicaiton.
|
||||
@ -60,7 +56,8 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
Any client that sends a "List" comment makes the server display all
|
||||
registered clients.
|
||||
"""
|
||||
SocketServer.BaseRequestHandler.allow_reuse_address = True
|
||||
SocketServer.StreamRequestHandler.allow_reuse_address = True
|
||||
SocketServer.StreamRequestHandler.timeout = 1
|
||||
|
||||
def handle(self): # on each client connect
|
||||
"""
|
||||
@ -74,7 +71,7 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
self.registered = False
|
||||
self.name = ''
|
||||
self.id = 0
|
||||
|
||||
|
||||
#print self.client_address, now() # show this client's address
|
||||
# Read the data from the socket
|
||||
data = self.recv(13)
|
||||
@ -186,9 +183,12 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
elif header == "Quit":
|
||||
LOCK.acquire()
|
||||
print "Quit received!"
|
||||
SERVER.dest_obj[self.name].put(struct.pack(">I", 0xA5A5A5A5))
|
||||
shutdown_event.set()
|
||||
time.sleep(1)
|
||||
print "Quit processed!"
|
||||
SERVER.shutdown()
|
||||
SERVER.server_close()
|
||||
shutdown_event.set()
|
||||
LOCK.release()
|
||||
break
|
||||
|
||||
@ -214,13 +214,16 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
return ''
|
||||
msg = msg + chunk
|
||||
n = len(msg)
|
||||
except socket.timeout:
|
||||
if shutdown_event.is_set():
|
||||
print "socket timed out and shutdown is requested"
|
||||
return "Quit\n"
|
||||
continue
|
||||
except socket.error, err:
|
||||
if err.errno == errno.ECONNRESET:
|
||||
print "Socket error " + str(err.errno) + " (Connection reset by peer) occurred on recv()."
|
||||
else:
|
||||
print "Socket error " + str(err.errno) + " occurred on recv()."
|
||||
|
||||
print msg
|
||||
return msg
|
||||
|
||||
|
||||
@ -270,7 +273,7 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
data = tlm_packet_size + self.recv(size)
|
||||
|
||||
else:
|
||||
raise RuntimeError("unrecognized client")
|
||||
raise RuntimeError("unrecognized client %s"%dst)
|
||||
return data
|
||||
|
||||
|
||||
@ -306,10 +309,11 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
elif 'FSW' in dst:
|
||||
dest_list = FSW_clients
|
||||
for dest_elem in dest_list:
|
||||
#print "Locking TCP"
|
||||
LOCK.acquire()
|
||||
if dest_elem in SERVER.dest_obj.keys():
|
||||
# Send the message here....
|
||||
#print "Sending msg to ", dest_elem
|
||||
#print "Sending TCP msg to ", dest_elem
|
||||
|
||||
SERVER.dest_obj[dest_elem].put(data)
|
||||
LOCK.release()
|
||||
@ -342,7 +346,7 @@ class ThreadedUDPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
"""
|
||||
|
||||
self.getNewMsg(self.request[0])
|
||||
|
||||
|
||||
|
||||
#################################################
|
||||
# New Routines to process the command messages
|
||||
@ -401,25 +405,22 @@ class ThreadedUDPRequestHandler(SocketServer.BaseRequestHandler):
|
||||
If something goes wrong report and shutdown server.
|
||||
"""
|
||||
dest_list = []
|
||||
#print(binascii.hexlify(header))
|
||||
print(binascii.hexlify(data))
|
||||
# Process data here...
|
||||
head, dst = header.strip(" ").split(" ")
|
||||
if head == 'A5A5': # Packet Header
|
||||
print "Received Packet: %s %s...\n" % (head,dst)
|
||||
#print "Received Packet: %s %s...\n" % (head,dst)
|
||||
if data == '':
|
||||
print " Data is empty, returning."
|
||||
|
||||
if 'GUI' in dst:
|
||||
dest_list = GUI_clients
|
||||
else:
|
||||
print "dest? %s"%dst
|
||||
|
||||
for dest_elem in dest_list:
|
||||
LOCK.acquire()
|
||||
if dest_elem in SERVER.dest_obj.keys():
|
||||
# Send the message here....
|
||||
#print "Sending msg to ", dest_elem
|
||||
#print "Sending UDP msg to ", dest_elem
|
||||
|
||||
SERVER.dest_obj[dest_elem].put(data)
|
||||
LOCK.release()
|
||||
else:
|
||||
@ -457,10 +458,10 @@ class DestObj:
|
||||
"""
|
||||
Write out the message to the destination socket
|
||||
"""
|
||||
print "Message to client %s"% msg
|
||||
|
||||
try:
|
||||
#print "about to send data to " + self.name
|
||||
self.socket.send(msg)
|
||||
self.socket.send(msg);
|
||||
except socket.error, err:
|
||||
print "Socket error " + str(err.errno) + " occurred on send()."
|
||||
|
||||
@ -518,14 +519,16 @@ def main(argv=None):
|
||||
#print "Process ID: %s" % p
|
||||
|
||||
while not shutdown_event.is_set():
|
||||
server_thread.join(timeout = 1.0)
|
||||
udp_server_thread.join(timeout = 1.0)
|
||||
server_thread.join(timeout = 5.0)
|
||||
udp_server_thread.join(timeout = 5.0)
|
||||
|
||||
print "shutdown from main thread"
|
||||
|
||||
SERVER.shutdown()
|
||||
SERVER.server_close()
|
||||
udp_server.shutdown()
|
||||
udp_server.server_close()
|
||||
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
except Exception, e:
|
||||
|
||||
@ -5,26 +5,26 @@ Created on Apr. 27, 2015
|
||||
'''
|
||||
|
||||
# Import the types this way so they do not need prefixing for execution.
|
||||
from fprime.gse.models.serialize.type_exceptions import *
|
||||
from fprime.gse.models.serialize.type_base import *
|
||||
from fprime.common.models.serialize.type_exceptions import *
|
||||
from fprime.common.models.serialize.type_base import *
|
||||
|
||||
from fprime.gse.models.serialize.bool_type import *
|
||||
from fprime.gse.models.serialize.enum_type import *
|
||||
from fprime.gse.models.serialize.f32_type import *
|
||||
from fprime.gse.models.serialize.f64_type import *
|
||||
from fprime.common.models.serialize.bool_type import *
|
||||
from fprime.common.models.serialize.enum_type import *
|
||||
from fprime.common.models.serialize.f32_type import *
|
||||
from fprime.common.models.serialize.f64_type import *
|
||||
|
||||
from fprime.gse.models.serialize.u8_type import *
|
||||
from fprime.gse.models.serialize.u16_type import *
|
||||
from fprime.gse.models.serialize.u32_type import *
|
||||
from fprime.gse.models.serialize.u64_type import *
|
||||
from fprime.common.models.serialize.u8_type import *
|
||||
from fprime.common.models.serialize.u16_type import *
|
||||
from fprime.common.models.serialize.u32_type import *
|
||||
from fprime.common.models.serialize.u64_type import *
|
||||
|
||||
from fprime.gse.models.serialize.i8_type import *
|
||||
from fprime.gse.models.serialize.i16_type import *
|
||||
from fprime.gse.models.serialize.i32_type import *
|
||||
from fprime.gse.models.serialize.i64_type import *
|
||||
from fprime.common.models.serialize.i8_type import *
|
||||
from fprime.common.models.serialize.i16_type import *
|
||||
from fprime.common.models.serialize.i32_type import *
|
||||
from fprime.common.models.serialize.i64_type import *
|
||||
|
||||
from fprime.gse.models.serialize.string_type import *
|
||||
from fprime.gse.models.serialize.serializable_type import *
|
||||
from fprime.common.models.serialize.string_type import *
|
||||
from fprime.common.models.serialize.serializable_type import *
|
||||
|
||||
import struct
|
||||
|
||||
|
||||
2
Gds/tkGui/__init__.py
Normal file
2
Gds/tkGui/__init__.py
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@ -22,14 +22,15 @@ import Pmw
|
||||
import time
|
||||
import glob
|
||||
import random
|
||||
from fprime.gse.utils import Logger
|
||||
from fprime.gse.utils import ConfigManager
|
||||
|
||||
import fprime.gse.controllers.exceptions
|
||||
from tkGui.utils import Logger
|
||||
from tkGui.utils import ConfigManager
|
||||
|
||||
import tkGui.controllers.exceptions
|
||||
import traceback
|
||||
|
||||
from fprime.tkGui.views import main_panel_factory
|
||||
from fprime.tkGui.views import main_panel
|
||||
from tkGui.views import main_panel_factory
|
||||
from tkGui.views import main_panel
|
||||
from optparse import OptionParser
|
||||
|
||||
__all__ = []
|
||||
@ -269,7 +270,7 @@ def main(argv=None):
|
||||
root.after(1000, execute, opts)
|
||||
root.mainloop()
|
||||
|
||||
except fprime.gse.controllers.exceptions.GseControllerException, e:
|
||||
except tkGui.controllers.exceptions.GseControllerException, e:
|
||||
sys.stderr.write("Exception: %s\n"%e.getMsg())
|
||||
traceback.print_exc()
|
||||
return 2
|
||||
|
||||
116
Gds/tkGui/bin/pexpect_runner.py
Normal file
116
Gds/tkGui/bin/pexpect_runner.py
Normal file
@ -0,0 +1,116 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import sys
|
||||
import pexpect
|
||||
import os
|
||||
from Tkinter import *
|
||||
import Pmw
|
||||
import threading
|
||||
import signal
|
||||
import time
|
||||
import Queue
|
||||
|
||||
def sighandler(signum, frame):
|
||||
# print "Signaled: %d" %signum
|
||||
if signum == signal.SIGCHLD:
|
||||
sys.exit(1)
|
||||
else:
|
||||
text_queue.put("SIGQUIT")
|
||||
|
||||
def process_poller():
|
||||
# command to run is arguments 2->end
|
||||
global text
|
||||
global exitThread
|
||||
command = " ".join(sys.argv[3:])
|
||||
print "Running command %s"%command
|
||||
child = pexpect.spawn(command)
|
||||
logfd = open(sys.argv[1],'w')
|
||||
child.logfile = logfd
|
||||
logfd.write("%s: Running command \"%s\"\n"%(sys.argv[0],command))
|
||||
time.sleep(2)
|
||||
while True:
|
||||
try:
|
||||
child.expect('\r\n',timeout=1)
|
||||
if exitThread:
|
||||
try:
|
||||
child.kill(signal.SIGINT)
|
||||
child.wait()
|
||||
except:
|
||||
print("KILL")
|
||||
break
|
||||
if len(child.before):
|
||||
text_queue.put(child.before)
|
||||
# text.appendtext(child.before + "\n")
|
||||
except pexpect.EOF:
|
||||
text_queue.put("**EXIT**")
|
||||
# text.appendtext("**EXIT**")
|
||||
break
|
||||
except pexpect.TIMEOUT:
|
||||
if exitThread:
|
||||
try:
|
||||
child.kill(signal.SIGINT)
|
||||
child.wait()
|
||||
except:
|
||||
print("KILL")
|
||||
break
|
||||
if len(child.before):
|
||||
text_queue.put(child.before)
|
||||
# text.appendtext(child.before + "\n")
|
||||
|
||||
def poll_text():
|
||||
|
||||
# check queue
|
||||
try:
|
||||
while True:
|
||||
msg = text_queue.get(block = False)
|
||||
if msg == "SIGQUIT":
|
||||
root.quit()
|
||||
return
|
||||
else:
|
||||
text.appendtext(msg + "\n")
|
||||
text_queue.task_done()
|
||||
except Queue.Empty:
|
||||
pass
|
||||
# reschedule
|
||||
root.after(100,poll_text)
|
||||
|
||||
def main(argv=None):
|
||||
|
||||
# argument list
|
||||
# 0 = binary (pexpect_runner.py)
|
||||
# 1 = log file
|
||||
# 2 = title for window
|
||||
# 3... = binary to run
|
||||
|
||||
global root
|
||||
root = Pmw.initialise()
|
||||
root.title(sys.argv[2])
|
||||
global text
|
||||
text = Pmw.ScrolledText(root,hscrollmode="dynamic",vscrollmode="dynamic")
|
||||
text.pack(expand=1,fill='both')
|
||||
|
||||
global exitThread
|
||||
exitThread = False
|
||||
|
||||
global text_queue
|
||||
text_queue = Queue.Queue()
|
||||
|
||||
poller_thread = threading.Thread(target=process_poller)
|
||||
poller_thread.start()
|
||||
|
||||
# register signal handler
|
||||
signal.signal(signal.SIGINT,sighandler)
|
||||
signal.signal(signal.SIGTERM,sighandler)
|
||||
signal.signal(signal.SIGCHLD,sighandler)
|
||||
|
||||
root.after(0,poll_text)
|
||||
root.mainloop()
|
||||
|
||||
exitThread = True
|
||||
|
||||
# start poller thread
|
||||
poller_thread.join()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@ -35,17 +35,17 @@ import Queue
|
||||
from datetime import datetime
|
||||
|
||||
#@todo Add logging to disk of log events via the Logger module.
|
||||
from fprime.tkGui.controllers import stripchart_listener
|
||||
from fprime.tkGui.controllers import consumer
|
||||
from fprime.tkGui.controllers import channel_loader
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import stripchart_listener
|
||||
from tkGui.controllers import consumer
|
||||
from tkGui.controllers import channel_loader
|
||||
from tkGui.controllers import status_bar_updater
|
||||
|
||||
from fprime.models.models.serialize import type_base
|
||||
from fprime.models.models.serialize import u32_type
|
||||
from fprime.models.models.serialize import u16_type
|
||||
from fprime.models.models.serialize import u8_type
|
||||
from fprime.common.models.serialize import type_base
|
||||
from fprime.common.models.serialize import u32_type
|
||||
from fprime.common.models.serialize import u16_type
|
||||
from fprime.common.models.serialize import u8_type
|
||||
|
||||
from fprime.tkGui.utils import Logger
|
||||
from tkGui.utils import Logger
|
||||
|
||||
class ChannelListener(consumer.Consumer):
|
||||
"""
|
||||
|
||||
@ -21,9 +21,9 @@ import sys
|
||||
import collections
|
||||
from collections import OrderedDict
|
||||
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from tkGui.controllers import exceptions
|
||||
from fprime.common.models.common import channel_telemetry
|
||||
from fprime.tkGui.controllers import module_loader
|
||||
from tkGui.controllers import module_loader
|
||||
|
||||
# Add the loadModules method using this decorator
|
||||
@module_loader.ModuleLoader
|
||||
|
||||
@ -20,7 +20,7 @@ import glob
|
||||
import os
|
||||
import sys
|
||||
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from tkGui.controllers import exceptions
|
||||
from fprime.common.models.common import command
|
||||
from fprime.common.models.serialize import enum_type
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
import collections
|
||||
from fprime.common.models.serialize import type_base
|
||||
from fprime.common.models.serialize import u32_type
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import status_bar_updater
|
||||
#from fprime.gse.views import main_panel
|
||||
|
||||
class Commander:
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
import Queue
|
||||
import threading
|
||||
|
||||
from fprime.tkGui.controllers import observer
|
||||
from tkGui.controllers import observer
|
||||
|
||||
# Make class an abstract base class
|
||||
class Consumer(observer.Observable):
|
||||
|
||||
@ -34,16 +34,16 @@ import time
|
||||
|
||||
#@todo Add logging to disk of log events via the Logger module.
|
||||
|
||||
from fprime.tkGui.controllers import consumer
|
||||
from fprime.tkGui.controllers import event_loader
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import consumer
|
||||
from tkGui.controllers import event_loader
|
||||
from tkGui.controllers import status_bar_updater
|
||||
|
||||
from fprime.common.models.serialize import type_base
|
||||
from fprime.common.models.serialize import u32_type
|
||||
from fprime.common.models.serialize import u16_type
|
||||
from fprime.common.models.serialize import u8_type
|
||||
|
||||
from fprime.tkGui.utils import Logger
|
||||
from tkGui.utils import Logger
|
||||
|
||||
|
||||
class EventListener(consumer.Consumer):
|
||||
|
||||
@ -20,9 +20,9 @@ import os
|
||||
import sys
|
||||
import collections
|
||||
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from tkGui.controllers import exceptions
|
||||
from fprime.common.models.common import event
|
||||
from fprime.tkGui.controllers import module_loader
|
||||
from tkGui.controllers import module_loader
|
||||
|
||||
# Add the loadModules method using this decorator
|
||||
@module_loader.ModuleLoader
|
||||
|
||||
@ -8,11 +8,11 @@ from enum import Enum
|
||||
from subprocess import PIPE
|
||||
from optparse import OptionParser
|
||||
|
||||
from fprime.tkGui.controllers import client_sock
|
||||
from tkGui.controllers import client_sock
|
||||
from fprime.common.models.serialize.u32_type import *
|
||||
from fprime.common.models.serialize.u8_type import *
|
||||
from fprime.tkGui.utils.checksum import *
|
||||
from fprime.tkGui.utils import Logger
|
||||
from tkGui.utils.checksum import *
|
||||
from tkGui.utils import Logger
|
||||
|
||||
from fprime.common.models.serialize.filepacket import PacketType
|
||||
from fprime.common.models.serialize import filepacket
|
||||
|
||||
@ -4,10 +4,10 @@ import signal
|
||||
import threading
|
||||
import Queue
|
||||
|
||||
from fprime.tkGui.controllers import observer
|
||||
from fprime.tkGui.controllers import file_uplink_client
|
||||
from fprime.tkGui.controllers import file_downlink_client
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from tkGui.controllers import observer
|
||||
from tkGui.controllers import file_uplink_client
|
||||
from tkGui.controllers import file_downlink_client
|
||||
from tkGui.controllers import status_updater
|
||||
|
||||
|
||||
class FileListener(observer.Observable):
|
||||
|
||||
@ -11,12 +11,12 @@ from subprocess import PIPE
|
||||
|
||||
from fprime.common.models.serialize.u32_type import *
|
||||
from fprime.common.models.serialize.filepacket import *
|
||||
from fprime.tkGui.utils.checksum import Checksum
|
||||
from fprime.tkGui.utils import Logger
|
||||
from tkGui.utils.checksum import Checksum
|
||||
from tkGui.utils import Logger
|
||||
|
||||
from optparse import OptionParser
|
||||
|
||||
from fprime.tkGui.controllers import client_sock
|
||||
from tkGui.controllers import client_sock
|
||||
|
||||
###
|
||||
# file_uplink_client.py
|
||||
|
||||
@ -34,16 +34,16 @@ import logging
|
||||
import time
|
||||
import Queue
|
||||
|
||||
from fprime.tkGui.controllers import consumer
|
||||
from fprime.tkGui.controllers import channel_listener
|
||||
from fprime.tkGui.controllers import packetize_channel_loader
|
||||
from tkGui.controllers import consumer
|
||||
from tkGui.controllers import channel_listener
|
||||
from tkGui.controllers import packetize_channel_loader
|
||||
|
||||
from fprime.common.models.serialize import type_base
|
||||
from fprime.common.models.serialize import u32_type
|
||||
from fprime.common.models.serialize import u16_type
|
||||
from fprime.common.models.serialize import u8_type
|
||||
|
||||
from fprime.tkGui.utils import Logger
|
||||
from tkGui.utils import Logger
|
||||
|
||||
class PacketizeChannelListener(consumer.Consumer):
|
||||
"""
|
||||
|
||||
@ -21,11 +21,11 @@ import sys
|
||||
import collections
|
||||
from collections import OrderedDict
|
||||
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from tkGui.controllers import exceptions
|
||||
from fprime.common.models.common import channel_telemetry
|
||||
from fprime.tkGui.controllers import module_loader
|
||||
from tkGui.controllers import module_loader
|
||||
from lxml import etree
|
||||
from fprime.tkGui.controllers import channel_loader
|
||||
from tkGui.controllers import channel_loader
|
||||
|
||||
|
||||
# Add the loadModules method using this decorator
|
||||
|
||||
@ -27,19 +27,19 @@ import struct
|
||||
import logging
|
||||
import time
|
||||
|
||||
from fprime.tkGui.controllers import observer
|
||||
from fprime.tkGui.controllers import event_listener
|
||||
from fprime.tkGui.controllers import channel_listener
|
||||
from fprime.tkGui.controllers import packetize_channel_listener
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from fprime.tkGui.controllers import stripchart_listener
|
||||
from tkGui.controllers import observer
|
||||
from tkGui.controllers import event_listener
|
||||
from tkGui.controllers import channel_listener
|
||||
from tkGui.controllers import packetize_channel_listener
|
||||
from tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import stripchart_listener
|
||||
|
||||
from fprime.common.models.serialize import type_base
|
||||
from fprime.common.models.serialize import u32_type
|
||||
from fprime.common.models.serialize import u16_type
|
||||
from fprime.common.models.serialize import u8_type
|
||||
|
||||
from fprime.tkGui.utils import Logger
|
||||
from tkGui.utils import Logger
|
||||
|
||||
class SocketListener:
|
||||
"""
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import Pmw
|
||||
import time
|
||||
|
||||
from fprime.tkGui.controllers import consumer
|
||||
from tkGui.controllers import consumer
|
||||
|
||||
|
||||
class StatusBarUpdater(consumer.Consumer):
|
||||
|
||||
@ -22,13 +22,13 @@ import os
|
||||
import logging
|
||||
import time
|
||||
|
||||
from fprime.tkGui.controllers import observer
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import observer
|
||||
from tkGui.controllers import exceptions
|
||||
from tkGui.controllers import status_bar_updater
|
||||
|
||||
from fprime.common.models.serialize import type_base
|
||||
from fprime.common.models.serialize import u32_type
|
||||
from fprime.tkGui.utils import Logger
|
||||
from tkGui.utils import Logger
|
||||
|
||||
class StatusUpdater(observer.Observable):
|
||||
"""
|
||||
|
||||
@ -3,7 +3,7 @@ import Tkinter
|
||||
import signal
|
||||
import datetime
|
||||
|
||||
from fprime.tkGui.controllers import observer
|
||||
from tkGui.controllers import observer
|
||||
|
||||
class StripChartListener(observer.Observable):
|
||||
"""
|
||||
|
||||
@ -5,10 +5,10 @@ import tkFileDialog
|
||||
import csv
|
||||
import collections
|
||||
|
||||
from fprime.tkGui.views.tpe_views import PacketView
|
||||
from fprime.tkGui.models.tpe_models import PacketModel
|
||||
from fprime.tkGui.models.tpe_models import SessionModel
|
||||
from fprime.tkGui.models.tpe_models import ItemEntry, FillerEntry
|
||||
from tkGui.views.tpe_views import PacketView
|
||||
from tkGui.models.tpe_models import PacketModel
|
||||
from tkGui.models.tpe_models import SessionModel
|
||||
from tkGui.models.tpe_models import ItemEntry, FillerEntry
|
||||
|
||||
|
||||
class SessionController(object):
|
||||
|
||||
@ -26,7 +26,7 @@ import glob
|
||||
import ConfigParser
|
||||
|
||||
from fprime.common.models.common.event import Severity
|
||||
import gse_misc
|
||||
import tkGui_misc
|
||||
|
||||
class ConfigManager(ConfigParser.SafeConfigParser):
|
||||
"""
|
||||
|
||||
2
Gds/tkGui/utils/__init__.py
Normal file
2
Gds/tkGui/utils/__init__.py
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
76
Gds/tkGui/utils/command_args.py
Normal file
76
Gds/tkGui/utils/command_args.py
Normal file
@ -0,0 +1,76 @@
|
||||
#!/bin/env python
|
||||
#===============================================================================
|
||||
# NAME: CommandArgs
|
||||
#
|
||||
# DESCRIPTION: This is a utility class containing helper fucntions for
|
||||
# manipulating command arguments.
|
||||
#
|
||||
# AUTHOR: Brian Campuzano
|
||||
# DATE CREATED : August 7, 2015
|
||||
#
|
||||
# Copyright 2017, California Institute of Technology.
|
||||
# ALL RIGHTS RESERVED. U.S. Government Sponsorship acknowledged.
|
||||
#===============================================================================
|
||||
|
||||
# Import the types this way so they do not need prefixing for execution.
|
||||
from fprime.common.models.serialize.type_exceptions import *
|
||||
from fprime.common.models.serialize.type_base import *
|
||||
|
||||
from fprime.common.models.serialize.bool_type import *
|
||||
from fprime.common.models.serialize.enum_type import *
|
||||
from fprime.common.models.serialize.f32_type import *
|
||||
from fprime.common.models.serialize.f64_type import *
|
||||
|
||||
from fprime.common.models.serialize.u8_type import *
|
||||
from fprime.common.models.serialize.u16_type import *
|
||||
from fprime.common.models.serialize.u32_type import *
|
||||
from fprime.common.models.serialize.u64_type import *
|
||||
|
||||
from fprime.common.models.serialize.i8_type import *
|
||||
from fprime.common.models.serialize.i16_type import *
|
||||
from fprime.common.models.serialize.i32_type import *
|
||||
from fprime.common.models.serialize.i64_type import *
|
||||
|
||||
from fprime.common.models.serialize.string_type import *
|
||||
from fprime.common.models.serialize.serializable_type import *
|
||||
|
||||
def create_arg_type(arg_name, arg_type, arg_value):
|
||||
"""
|
||||
Returns a new instance of a specific type object
|
||||
with value set in it.
|
||||
"""
|
||||
if type(arg_type) == type(BoolType()):
|
||||
if arg_value == "False":
|
||||
arg_value = False
|
||||
else:
|
||||
arg_value = True
|
||||
new_obj = BoolType(arg_value)
|
||||
elif type(arg_type) == type(EnumType()):
|
||||
new_obj = EnumType(arg_type.typename(), arg_type.enum_dict(), arg_value)
|
||||
elif type(arg_type) == type(F64Type()):
|
||||
new_obj = F64Type(float(arg_value))
|
||||
elif type(arg_type) == type(F32Type()):
|
||||
new_obj = F32Type(float(arg_value))
|
||||
elif type(arg_type) == type(I64Type()):
|
||||
new_obj = I64Type(int(arg_value))
|
||||
elif type(arg_type) == type(I32Type()):
|
||||
new_obj = I32Type(int(arg_value))
|
||||
elif type(arg_type) == type(I16Type()):
|
||||
new_obj = I16Type(int(arg_value))
|
||||
elif type(arg_type) == type(I8Type()):
|
||||
new_obj = I8Type(int(arg_value))
|
||||
elif type(arg_type) == type(U64Type()):
|
||||
new_obj = U64Type(int(arg_value))
|
||||
elif type(arg_type) == type(U32Type()):
|
||||
new_obj = U32Type(int(arg_value))
|
||||
elif type(arg_type) == type(U16Type()):
|
||||
new_obj = U16Type(int(arg_value))
|
||||
elif type(arg_type) == type(U8Type()):
|
||||
new_obj = U8Type(int(arg_value))
|
||||
elif type(arg_type) == type(StringType()):
|
||||
new_obj = StringType(arg_value)
|
||||
elif type(arg_type) == type(SerializableType()):
|
||||
pass
|
||||
else:
|
||||
raise exceptions.TypeError
|
||||
return new_obj
|
||||
@ -1,8 +1,8 @@
|
||||
import Tkinter
|
||||
import pickle
|
||||
import collections
|
||||
from fprime.tkGui.utils import ConfigManager
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from tkGui.utils import ConfigManager
|
||||
from tkGui.controllers import status_updater
|
||||
|
||||
class Memento(object):
|
||||
|
||||
@ -27,8 +27,8 @@ import exceptions
|
||||
import Tkinter
|
||||
import Pmw
|
||||
|
||||
from fprime.tkGui.controllers import command_loader
|
||||
from fprime.tkGui.controllers import commander
|
||||
from tkGui.controllers import command_loader
|
||||
from tkGui.controllers import commander
|
||||
|
||||
# Import the types this way so they do not need prefixing for execution.
|
||||
from fprime.common.models.serialize.type_exceptions import *
|
||||
@ -52,7 +52,7 @@ from fprime.common.models.serialize.i64_type import *
|
||||
from fprime.common.models.serialize.string_type import *
|
||||
from fprime.common.models.serialize.serializable_type import *
|
||||
|
||||
from fprime.tkGui.utils import gse_misc
|
||||
from tkGui.utils import tkGui_misc
|
||||
|
||||
# Global logger init. below.
|
||||
PRINT = logging.getLogger('output')
|
||||
|
||||
@ -7,14 +7,14 @@ import Tkinter
|
||||
import Pmw
|
||||
import time
|
||||
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from fprime.tkGui.controllers import command_loader
|
||||
from fprime.tkGui.controllers import commander
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import command_loader
|
||||
from tkGui.controllers import commander
|
||||
|
||||
from fprime.tkGui.models.common import command
|
||||
from fprime.tkGui.utils import tkGui_misc
|
||||
from fprime.tkGui.utils import command_args
|
||||
from fprime.common.models.common import command
|
||||
from tkGui.utils import tkGui_misc
|
||||
from tkGui.utils import command_args
|
||||
|
||||
import exceptions
|
||||
import command_args_frame
|
||||
@ -121,7 +121,7 @@ class CommandPanel(object):
|
||||
self.__selected_cmd_mnemonic = self.__cmds_list[0]
|
||||
|
||||
# Rebind Up and Down key events to prevent exception
|
||||
gse_misc.rebind_comboBox(self.__combobox)
|
||||
tkGui_misc.rebind_comboBox(self.__combobox)
|
||||
# Rebind for auto complete
|
||||
self.__combobox._entryWidget.bind("<Key>", self.__combobox_entry)
|
||||
self.__combobox._entryWidget.bind("<Return>", self.__combobox_return)
|
||||
|
||||
@ -5,14 +5,14 @@ import Pmw
|
||||
import os
|
||||
import time
|
||||
|
||||
from fprime.tkGui.utils import ConfigManager
|
||||
from tkGui.utils import ConfigManager
|
||||
|
||||
from fprime.tkGui.controllers import file_uplink_client
|
||||
from fprime.tkGui.controllers import file_downlink_client
|
||||
from fprime.tkGui.controllers import event_listener
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from fprime.tkGui.controllers import command_loader
|
||||
from fprime.tkGui.controllers import commander
|
||||
from tkGui.controllers import file_uplink_client
|
||||
from tkGui.controllers import file_downlink_client
|
||||
from tkGui.controllers import event_listener
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import command_loader
|
||||
from tkGui.controllers import commander
|
||||
|
||||
class StatusFrame(Tkinter.LabelFrame):
|
||||
"""
|
||||
|
||||
@ -5,8 +5,8 @@ import re
|
||||
import Pmw
|
||||
import os
|
||||
|
||||
from fprime.tkGui.utils import ConfigManager
|
||||
from fprime.tkGui.utils import tkGui_misc
|
||||
from tkGui.utils import ConfigManager
|
||||
from tkGui.utils import tkGui_misc
|
||||
|
||||
class HelpPanel(object):
|
||||
'''
|
||||
|
||||
@ -14,12 +14,12 @@ from tkintertable.Filtering import FilterFrame
|
||||
|
||||
from fprime.common.models.common.event import Severity
|
||||
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from fprime.tkGui.controllers import observer
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import observer
|
||||
|
||||
from fprime.tkGui.utils import ConfigManager
|
||||
from fprime.tkGui.utils import tkGui_misc
|
||||
from fprime.tkGui.utils import tkGui_persist
|
||||
from tkGui.utils import ConfigManager
|
||||
from tkGui.utils import tkGui_misc
|
||||
from tkGui.utils import tkGui_persist
|
||||
|
||||
class LogEventPanel(observer.Observer):
|
||||
'''
|
||||
|
||||
@ -34,18 +34,18 @@ import status_panel
|
||||
import status_bar
|
||||
import file_panel
|
||||
|
||||
from fprime.tkGui.controllers import client_sock
|
||||
from fprime.tkGui.controllers import socket_listener
|
||||
from fprime.tkGui.controllers import event_listener
|
||||
from fprime.tkGui.controllers import channel_listener
|
||||
from fprime.tkGui.controllers import packetize_channel_listener
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from fprime.tkGui.controllers import file_listener
|
||||
from tkGui.controllers import client_sock
|
||||
from tkGui.controllers import socket_listener
|
||||
from tkGui.controllers import event_listener
|
||||
from tkGui.controllers import channel_listener
|
||||
from tkGui.controllers import packetize_channel_listener
|
||||
from tkGui.controllers import exceptions
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import file_listener
|
||||
|
||||
from fprime.tkGui.utils import ConfigManager
|
||||
from fprime.tkGui.utils.gse_persist import WindowMementoOriginator, MementoCaretaker
|
||||
from tkGui.utils import ConfigManager
|
||||
from tkGui.utils.tkGui_persist import WindowMementoOriginator, MementoCaretaker
|
||||
|
||||
from Canvas import Line
|
||||
|
||||
|
||||
@ -29,31 +29,31 @@ import Pmw
|
||||
import subprocess
|
||||
|
||||
|
||||
from fprime.tkGui.views import main_panel
|
||||
from fprime.tkGui.views import command_panel
|
||||
from fprime.tkGui.views import log_event_panel
|
||||
from fprime.tkGui.views import telemetry_panel
|
||||
from fprime.tkGui.views import seq_panel
|
||||
from fprime.tkGui.views import status_panel
|
||||
from fprime.tkGui.views import status_bar
|
||||
from fprime.tkGui.views import file_panel
|
||||
from fprime.tkGui.views import stripchart_panel
|
||||
from fprime.tkGui.views import help_panel
|
||||
from tkGui.views import main_panel
|
||||
from tkGui.views import command_panel
|
||||
from tkGui.views import log_event_panel
|
||||
from tkGui.views import telemetry_panel
|
||||
from tkGui.views import seq_panel
|
||||
from tkGui.views import status_panel
|
||||
from tkGui.views import status_bar
|
||||
from tkGui.views import file_panel
|
||||
from tkGui.views import stripchart_panel
|
||||
from tkGui.views import help_panel
|
||||
|
||||
from fprime.tkGui.controllers import command_loader
|
||||
from fprime.tkGui.controllers import commander
|
||||
from fprime.tkGui.controllers import event_loader
|
||||
from fprime.tkGui.controllers import event_listener
|
||||
from fprime.tkGui.controllers import channel_loader
|
||||
from fprime.tkGui.controllers import channel_listener
|
||||
from fprime.tkGui.controllers import packetize_channel_loader
|
||||
from fprime.tkGui.controllers import packetize_channel_listener
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from fprime.tkGui.controllers import file_listener
|
||||
from fprime.tkGui.controllers import stripchart_listener
|
||||
from fprime.tkGui.controllers import socket_listener
|
||||
from tkGui.controllers import command_loader
|
||||
from tkGui.controllers import commander
|
||||
from tkGui.controllers import event_loader
|
||||
from tkGui.controllers import event_listener
|
||||
from tkGui.controllers import channel_loader
|
||||
from tkGui.controllers import channel_listener
|
||||
from tkGui.controllers import packetize_channel_loader
|
||||
from tkGui.controllers import packetize_channel_listener
|
||||
from tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import exceptions
|
||||
from tkGui.controllers import file_listener
|
||||
from tkGui.controllers import stripchart_listener
|
||||
from tkGui.controllers import socket_listener
|
||||
|
||||
# Global logger init. below.
|
||||
PRINT = logging.getLogger('output')
|
||||
|
||||
@ -7,8 +7,8 @@ import Tkinter
|
||||
import Pmw
|
||||
import time
|
||||
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from fprime.tkGui.controllers import command_loader
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import command_loader
|
||||
from fprime.common.models.common import command
|
||||
import exceptions
|
||||
|
||||
@ -21,8 +21,8 @@ from fprime.common.models.serialize.u16_type import *
|
||||
from fprime.common.models.serialize.u8_type import *
|
||||
from fprime.common.models.serialize.time_type import *
|
||||
|
||||
from fprime.tkGui.utils import tkGui_misc
|
||||
from fprime.tkGui.utils import command_args
|
||||
from tkGui.utils import tkGui_misc
|
||||
from tkGui.utils import command_args
|
||||
|
||||
import zlib
|
||||
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import Tkinter
|
||||
import Pmw
|
||||
|
||||
from fprime.tkGui.controllers import event_listener
|
||||
from fprime.tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import event_listener
|
||||
from tkGui.controllers import status_bar_updater
|
||||
|
||||
from fprime.tkGui.utils import ConfigManager
|
||||
from tkGui.utils import ConfigManager
|
||||
import time
|
||||
|
||||
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
import Tkinter
|
||||
import Pmw
|
||||
|
||||
from fprime.tkGui.controllers import exceptions
|
||||
from fprime.tkGui.controllers import observer
|
||||
from tkGui.controllers import exceptions
|
||||
from tkGui.controllers import observer
|
||||
|
||||
class StatusPanel(observer.Observer):
|
||||
'''
|
||||
|
||||
@ -19,16 +19,16 @@ import matplotlib.dates as md
|
||||
from matplotlib.ticker import FuncFormatter
|
||||
import numpy as np
|
||||
|
||||
from fprime.common.controllers import channel_loader
|
||||
from fprime.common.controllers import event_loader
|
||||
from fprime.common.controllers import status_updater
|
||||
from fprime.common.controllers import event_listener
|
||||
from fprime.common.controllers import stripchart_listener
|
||||
from fprime.common.controllers import status_bar_updater
|
||||
from fprime.common.controllers import observer
|
||||
from tkGui.controllers import channel_loader
|
||||
from tkGui.controllers import event_loader
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import event_listener
|
||||
from tkGui.controllers import stripchart_listener
|
||||
from tkGui.controllers import status_bar_updater
|
||||
from tkGui.controllers import observer
|
||||
|
||||
from fprime.common.utils import ConfigManager
|
||||
from fprime.tkGui.utils import tkGui_misc
|
||||
from tkGui.utils import ConfigManager
|
||||
from tkGui.utils import tkGui_misc
|
||||
from fprime.common.models.common.event import Severity
|
||||
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ import tkFileDialog
|
||||
import Pmw
|
||||
import os
|
||||
|
||||
from fprime.tkGui.controllers import channel_loader
|
||||
from tkGui.controllers import channel_loader
|
||||
|
||||
def telemetryFilterDialog(parent, inactive_channels, selected_channels=[]):
|
||||
"""
|
||||
|
||||
@ -10,10 +10,10 @@ import Pmw
|
||||
from tkintertable.Tables import TableCanvas
|
||||
from tkintertable.TableModels import TableModel
|
||||
|
||||
from fprime.tkGui.utils import ConfigManager
|
||||
from fprime.tkGui.controllers import channel_loader
|
||||
from fprime.tkGui.controllers import status_updater
|
||||
from fprime.tkGui.controllers import observer
|
||||
from tkGui.utils import ConfigManager
|
||||
from tkGui.controllers import channel_loader
|
||||
from tkGui.controllers import status_updater
|
||||
from tkGui.controllers import observer
|
||||
import telemetry_filter_panel
|
||||
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ import tkMessageBox
|
||||
import Pmw
|
||||
import ttk
|
||||
|
||||
from fprime.tkGui.models.tpe_models import SessionModel
|
||||
from tkGui.models.tpe_models import SessionModel
|
||||
|
||||
# This class defines color styles
|
||||
# It should be relatively easy for users to make their own if they are so inclined
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user