Merge remote-tracking branch 'origin/develop' into mueller/acu-hk
This commit is contained in:
115
pus_tc/prompt_parameters.py
Normal file
115
pus_tc/prompt_parameters.py
Normal file
@ -0,0 +1,115 @@
|
||||
from PyQt5.QtWidgets import (
|
||||
QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QGroupBox, QGridLayout, QLineEdit
|
||||
)
|
||||
|
||||
from PyQt5 import QtCore
|
||||
|
||||
|
||||
from tmtccmd.core.globals_manager import get_global
|
||||
from tmtccmd.config.definitions import CoreGlobalIds, CoreModeList
|
||||
|
||||
|
||||
class Parameter:
|
||||
def __init__(self, name: str, defaultValue: str, widget: QLineEdit):
|
||||
self.name = name
|
||||
self.defaultValue = defaultValue
|
||||
self.widget = widget
|
||||
self.value = self.defaultValue
|
||||
self.widget.setPlaceholderText(self.defaultValue)
|
||||
|
||||
def reset(self):
|
||||
self.value = self.defaultValue
|
||||
self.widget.setPlaceholderText(self.defaultValue)
|
||||
self.widget.setText("")
|
||||
|
||||
class ParameterDialog(QDialog):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self.setWindowTitle("Enter Parameters")
|
||||
|
||||
Buttons = QDialogButtonBox.Ok | QDialogButtonBox.Cancel | QDialogButtonBox.Reset
|
||||
|
||||
self.buttonBox = QDialogButtonBox(Buttons)
|
||||
self.buttonBox.accepted.connect(self.accept)
|
||||
self.buttonBox.rejected.connect(self.reject)
|
||||
self.buttonBox.button(QDialogButtonBox.Reset).clicked.connect(self._reset)
|
||||
|
||||
self.data = 1
|
||||
|
||||
self.rootLayout = QVBoxLayout()
|
||||
self.group = QGroupBox("Parameters")
|
||||
self.rootLayout.addWidget(self.group)
|
||||
self.rootLayout.addWidget(self.buttonBox)
|
||||
self.setLayout(self.rootLayout)
|
||||
|
||||
self.groupLayout = QGridLayout()
|
||||
self.group.setLayout(self.groupLayout)
|
||||
|
||||
self.parameters = {}
|
||||
|
||||
def addParameter(self, name: str, defaultValue: str):
|
||||
row = self.groupLayout.rowCount() + 1
|
||||
description = QLabel(name)
|
||||
self.groupLayout.addWidget(description, row, 0)
|
||||
valueWidget = QLineEdit()
|
||||
self.groupLayout.addWidget(valueWidget, row, 1)
|
||||
|
||||
parameter = Parameter(name, defaultValue, valueWidget)
|
||||
|
||||
self.parameters[name] = parameter
|
||||
|
||||
|
||||
def _reset(self):
|
||||
for value in self.parameters.values():
|
||||
value.reset()
|
||||
|
||||
def getParameters(self):
|
||||
output = {}
|
||||
for key, parameter in self.parameters.items():
|
||||
if parameter.widget != None:
|
||||
if parameter.widget.text() != "":
|
||||
parameter.value = parameter.widget.text()
|
||||
output[key] = parameter.value
|
||||
return output
|
||||
|
||||
@QtCore.pyqtSlot()
|
||||
def reject(self):
|
||||
print("reject")
|
||||
self._reset()
|
||||
super().reject()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"""Prompt the user to specify additional Parameters
|
||||
|
||||
:param parameterList: array of dictionaries with name and defaultValue attributes
|
||||
:return: dict with all names as key and user supplied input as value string
|
||||
"""
|
||||
def prompt_parameters(parameterList):
|
||||
gui = get_global(CoreGlobalIds.GUI)
|
||||
mode = get_global(CoreGlobalIds.MODE)
|
||||
|
||||
# gui only works in cont mode right now
|
||||
if gui and mode == CoreModeList.CONTINUOUS_MODE:
|
||||
return _gui_prompt(parameterList)
|
||||
else:
|
||||
return _cli_prompt(parameterList)
|
||||
|
||||
def _gui_prompt(parameterList):
|
||||
dialog = ParameterDialog()
|
||||
for parameter in parameterList:
|
||||
dialog.addParameter(parameter["name"], parameter["defaultValue"])
|
||||
dialog.exec_()
|
||||
return dialog.getParameters()
|
||||
|
||||
def _cli_prompt(parameterList):
|
||||
result = {}
|
||||
for parameter in parameterList:
|
||||
userInput = input("Specify {} [{}]: ".format(parameter["name"], parameter["defaultValue"]))
|
||||
if userInput == "":
|
||||
userInput = parameter["defaultValue"]
|
||||
result[parameter["name"]] = userInput
|
||||
return result
|
@ -1,10 +1,11 @@
|
||||
from ast import Pass
|
||||
from tmtccmd.tc.definitions import TcQueueT
|
||||
|
||||
from tmtccmd.config import QueueCommands
|
||||
|
||||
from .common import command_mode
|
||||
import config.object_ids as obj_ids
|
||||
|
||||
from pus_tc.prompt_parameters import prompt_parameters
|
||||
|
||||
|
||||
class OpCodes:
|
||||
THERMAL_CONTROLLER = [obj_ids.THERMAL_CONTROLLER_ID.hex(), "thermal_controller"]
|
||||
@ -17,12 +18,13 @@ class Info:
|
||||
|
||||
|
||||
def pack_controller_commands(tc_queue: TcQueueT, op_code: str):
|
||||
mode = int(input("Specify mode: (OFF = 0; ON = 1; NORMAL = 2) [2] ") or "2")
|
||||
print(mode)
|
||||
parameters = prompt_parameters([{"name": "Mode", "defaultValue": "2"}, {
|
||||
"name": "Submode", "defaultValue": "0"}])
|
||||
mode = int(parameters["Mode"])
|
||||
if mode < 0 or mode > 2:
|
||||
print("Invalid Mode, defaulting to OFF")
|
||||
mode = 0
|
||||
submode = int(input("Specify submode [0]: ") or "0")
|
||||
submode = int(parameters["Submode"])
|
||||
command_mode(
|
||||
object_id=get_object_from_op_code(op_code),
|
||||
mode=mode,
|
||||
@ -31,6 +33,16 @@ def pack_controller_commands(tc_queue: TcQueueT, op_code: str):
|
||||
info=op_code + " to " + str(mode) + "," + str(submode),
|
||||
)
|
||||
|
||||
tc_queue.appendleft((QueueCommands.WAIT, 20))
|
||||
|
||||
command_mode(
|
||||
object_id=get_object_from_op_code(op_code),
|
||||
mode=0,
|
||||
submode=0,
|
||||
tc_queue=tc_queue,
|
||||
info=op_code + " to 0,0",
|
||||
)
|
||||
|
||||
|
||||
def get_object_from_op_code(op_code: str):
|
||||
try:
|
||||
|
Reference in New Issue
Block a user