diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:58:07 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:58:07 +0000 |
commit | 10eea2ab1bae2a8ec159d81c0446fd8061b33e2b (patch) | |
tree | e8270dd60ec096bee8157dbadf029e15ed584592 /SignalsPanel.c | |
parent | Initial commit. (diff) | |
download | htop-10eea2ab1bae2a8ec159d81c0446fd8061b33e2b.tar.xz htop-10eea2ab1bae2a8ec159d81c0446fd8061b33e2b.zip |
Adding upstream version 3.3.0.upstream/3.3.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'SignalsPanel.c')
-rw-r--r-- | SignalsPanel.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/SignalsPanel.c b/SignalsPanel.c new file mode 100644 index 0000000..28d307e --- /dev/null +++ b/SignalsPanel.c @@ -0,0 +1,50 @@ +/* +htop - SignalsPanel.c +(C) 2004-2011 Hisham H. Muhammad +Released under the GNU GPLv2+, see the COPYING file +in the source distribution for its full text. +*/ + +#include "config.h" // IWYU pragma: keep + +#include "SignalsPanel.h" +// the above contains #include <signal.h> so do not add that here again (breaks Solaris build) + +#include <stdbool.h> + +#include "FunctionBar.h" +#include "ListItem.h" +#include "Object.h" +#include "Panel.h" +#include "Platform.h" +#include "XUtils.h" + + +Panel* SignalsPanel_new(int preSelectedSignal) { + Panel* this = Panel_new(1, 1, 1, 1, Class(ListItem), true, FunctionBar_newEnterEsc("Send ", "Cancel ")); + int defaultPosition = 15; + unsigned int i; + for (i = 0; i < Platform_numberOfSignals; i++) { + Panel_set(this, i, (Object*) ListItem_new(Platform_signals[i].name, Platform_signals[i].number)); + // signal 15 is not always the 15th signal in the table + if (Platform_signals[i].number == preSelectedSignal) { + defaultPosition = i; + } + } + #if (defined(SIGRTMIN) && defined(SIGRTMAX)) + if (SIGRTMAX - SIGRTMIN <= 100) { + static char buf[16]; + for (int sig = SIGRTMIN; sig <= SIGRTMAX; i++, sig++) { + int n = sig - SIGRTMIN; + xSnprintf(buf, sizeof(buf), "%2d SIGRTMIN%-+3d", sig, n); + if (n == 0) { + buf[11] = '\0'; + } + Panel_set(this, i, (Object*) ListItem_new(buf, sig)); + } + } + #endif + Panel_setHeader(this, "Send signal:"); + Panel_setSelected(this, defaultPosition); + return this; +} |