summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Warner <james.warner@comcast.net>2022-06-15 00:00:00 -0500
committerCraig Small <csmall@dropbear.xyz>2022-06-19 20:58:51 +1000
commita103b364f3fb1acec40e8f7fcac2e45ff967cb9c (patch)
tree9d6aba1dacba801e69584593dc515d6c9a9fee66
parent04d05b9f0483311ed19529d2b405978d77108565 (diff)
downloadprocps-ng-a103b364f3fb1acec40e8f7fcac2e45ff967cb9c.tar.gz
top: extend 'Ctrl' bottom window for 'memu' selections <=== port od newlib 659590b0
______________________________ original newlib message This commit adds a prototype for a potential extension of that tabbed bottom window capability. It introduces a 'menu' which then provides for users' selections. It does not actually do anything meaningful and will only be enabled with the new #define called 'BOT_PICK_YES'. [ since it's just a proof of concept, no attempt has ] [ been made to add the usual NLS translation support ] Signed-off-by: Jim Warner <james.warner@comcast.net>
-rw-r--r--top/top.c50
-rw-r--r--top/top.h8
2 files changed, 55 insertions, 3 deletions
diff --git a/top/top.c b/top/top.c
index 853a742..721e82a 100644
--- a/top/top.c
+++ b/top/top.c
@@ -117,6 +117,9 @@ static int Screen_cols, Screen_rows, Max_lines;
#define BOT_UNFOCUS -1 // tab focus not established
#define BOT_TAB_YES -1 // tab focus could be active
#define BOT_MISC_NS +1 // data for namespaces req'd
+#ifdef BOT_MENU_YES
+# define BOT_MENU_ON -2 // in menu, tab focus active
+#endif
// 1 for horizontal separator
#define BOT_RSVD 1
#define BOT_KEEP Bot_func = NULL
@@ -5282,6 +5285,35 @@ static void bot_misc_toggle (int what, char sep) {
Bot_task = Curwin->ppt[Curwin->begtask]->tid;
}
} // end: bot_misc_toggle
+
+
+#ifdef BOT_MENU_YES
+ /*
+ * This guy manages that bottom margin window |
+ * when it is used as a menu of user choices. | */
+static void bot_pick_show (void) {
+ bot_focus(Bot_name, "selection #1\t selection #2\t selecttion #3");
+ BOT_KEEP;
+} // end: bot_pick_show
+
+
+ /*
+ * This guy can toggle between displaying the |
+ * bottom window or arranging to turn it off. | */
+static void bot_pick_toggle (void) {
+ // if already in menu mode, assume user wants to exit ...
+ if (Bot_what == BOT_MENU_ON) {
+ BOT_TOSS;
+ } else {
+ Bot_sep = '\t';
+ Bot_what = BOT_MENU_ON;
+ Bot_indx = 0;
+ Bot_name = (char*)"a menu, please choose among the following ...";
+ Bot_func = bot_pick_show;
+ Bot_task = Curwin->ppt[Curwin->begtask]->tid;
+ }
+} // end: bot_pick_toggle
+#endif
/*###### Interactive Input Tertiary support ############################*/
@@ -5654,6 +5686,11 @@ static void keys_global (int ch) {
case kbd_CtrlG:
bot_item_toggle((L_CGROUP), "control groups", '/');
break;
+#ifdef BOT_MENU_YES
+ case kbd_CtrlH:
+ bot_pick_toggle();
+ break;
+#endif
case kbd_CtrlI:
if (Bot_what) {
++Bot_indx;
@@ -5673,11 +5710,15 @@ static void keys_global (int ch) {
case kbd_CtrlU:
bot_item_toggle((L_SUPGRP), "supplementary groups", ',');
break;
- case kbd_ENTER: // these two have the effect of waking us
+ case kbd_ENTER: // fall through
+#ifdef BOT_MENU_YES
+ if (Bot_what == BOT_MENU_ON && Bot_indx != BOT_UNFOCUS)
+ show_msg(fmtmk("thanks for selecting menu item #%d", Bot_indx + 1));
+#endif // the enter plus space keys will wake us
case kbd_SPACE: // from 'pselect', refreshing the display
break; // and updating any hot-plugged resources
- default: // keep gcc happy
- break;
+ default:
+ break; // keep gcc happy
}
} // end: keys_global
@@ -6487,6 +6528,9 @@ static void do_key (int ch) {
{ '?', 'B', 'd', 'E', 'e', 'f', 'g', 'H', 'h'
, 'I', 'k', 'r', 's', 'X', 'Y', 'Z', '0'
, kbd_CtrlE, kbd_CtrlG, kbd_CtrlI, kbd_CtrlK, kbd_CtrlN, kbd_CtrlP, kbd_CtrlU
+#ifdef BOT_MENU_YES
+ , kbd_CtrlH
+#endif
, kbd_ENTER, kbd_SPACE, '\0' } },
{ keys_summary,
{ '!', '1', '2', '3', '4', 'C', 'l', 'm', 't', '\0' } },
diff --git a/top/top.h b/top/top.h
index d7eac62..86c942d 100644
--- a/top/top.h
+++ b/top/top.h
@@ -30,6 +30,7 @@
//#define ATEOJ_RPTHSH /* report on hash specifics, at end-of-job */
//#define ATEOJ_RPTSTD /* report on some miscellany at end-of-job */
//#define BOT_DEAD_ZAP /* zap Ctrl bottom window when target dies */
+//#define BOT_MENU_YES /* enable bottom window for menu prototype */
//#define CASEUP_HEXES /* show all those hex values in upper case */
//#define CASEUP_SUFIX /* show time/mem/cnts suffix in upper case */
//#define CPU_ZEROTICS /* tolerate few tics when cpu off vs. idle */
@@ -185,6 +186,9 @@ char *strcasestr(const char *haystack, const char *needle);
#define kbd_DEL 139
#define kbd_CtrlE '\005'
#define kbd_CtrlG '\007'
+#ifdef BOT_MENU_YES
+#define kbd_CtrlH '\010'
+#endif
#define kbd_CtrlI '\011'
#define kbd_CtrlK '\013'
#define kbd_CtrlN '\016'
@@ -829,6 +833,10 @@ typedef struct WIN_t {
//atic char *bot_misc_hlp (proc_t *p);
//atic void bot_misc_show (void);
//atic void bot_misc_toggle (int what, char sep);
+#ifdef BOT_MENU_YES
+//atic void bot_pick_show (void);
+//atic void bot_pick_toggle (void);
+#endif
/*------ Interactive Input Tertiary support ----------------------------*/
//atic inline int find_ofs (const WIN_t *q, const char *buf);
//atic void find_string (int ch);