2
#include "SignalsListBox.h"
5
#include "RichString.h"
14
typedef struct SignalsListBox_ {
23
SignalsListBox* SignalsListBox_new(int x, int y, int w, int h) {
24
SignalsListBox* this = (SignalsListBox*) malloc(sizeof(SignalsListBox));
25
ListBox* super = (ListBox*) this;
26
ListBox_init(super, x, y, w, h, SIGNAL_CLASS, true);
27
((Object*)this)->delete = SignalsListBox_delete;
29
this->signals = Signal_getSignalTable();
30
super->eventHandler = SignalsListBox_eventHandler;
31
int sigCount = Signal_getSignalCount();
32
for(int i = 0; i < sigCount; i++)
33
ListBox_set(super, i, (Object*) this->signals[i]);
34
SignalsListBox_reset(this);
38
void SignalsListBox_delete(Object* object) {
39
ListBox* super = (ListBox*) object;
40
SignalsListBox* this = (SignalsListBox*) object;
46
void SignalsListBox_reset(SignalsListBox* this) {
47
ListBox* super = (ListBox*) this;
49
ListBox_setHeader(super, RichString_quickString(CRT_colors[PANEL_HEADER_FOCUS], "Send signal:"));
50
ListBox_setSelected(super, 16); // 16th item is SIGTERM
54
HandlerResult SignalsListBox_eventHandler(ListBox* super, int ch) {
55
SignalsListBox* this = (SignalsListBox*) super;
57
int size = ListBox_getSize(super);
59
int signal = ch-48 + this->state;
60
for (int i = 0; i < size; i++)
61
if (((Signal*) ListBox_get(super, i))->number == signal) {
62
ListBox_setSelected(super, i);
65
this->state = signal * 10;
66
if (this->state > 100)