TK GUI working again

This commit is contained in:
Timothy Canham 2019-03-15 20:32:13 -07:00
parent d836f8e999
commit 33c39c94a0
40 changed files with 387 additions and 187 deletions

View File

@ -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:

View File

@ -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
View File

@ -0,0 +1,2 @@

View File

@ -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

View 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())

View File

@ -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):
"""

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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):

View File

@ -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):

View File

@ -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

View File

@ -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

View File

@ -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):

View File

@ -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

View File

@ -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):
"""

View File

@ -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

View File

@ -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:
"""

View File

@ -1,7 +1,7 @@
import Pmw
import time
from fprime.tkGui.controllers import consumer
from tkGui.controllers import consumer
class StatusBarUpdater(consumer.Consumer):

View File

@ -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):
"""

View File

@ -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):
"""

View File

@ -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):

View File

@ -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):
"""

View File

@ -0,0 +1,2 @@

View 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

View File

@ -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):

View File

@ -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')

View File

@ -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)

View File

@ -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):
"""

View File

@ -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):
'''

View File

@ -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):
'''

View File

@ -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

View File

@ -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')

View File

@ -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

View File

@ -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

View File

@ -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):
'''

View File

@ -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

View File

@ -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=[]):
"""

View File

@ -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

View File

@ -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