Skip to content

Commit 8211b10

Browse files
committed
Merge branch 'runlevel5-fix/screens-panel-rename-function-bar'
2 parents 9863d78 + 828aab4 commit 8211b10

5 files changed

Lines changed: 46 additions & 4 deletions

File tree

CommandLine.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ in the source distribution for its full text.
3737
#include "Process.h"
3838
#include "ProcessTable.h"
3939
#include "ScreenManager.h"
40+
#include "ScreensPanel.h"
41+
#include "ScreenTabsPanel.h"
4042
#include "Settings.h"
4143
#include "Table.h"
4244
#include "UsersTable.h"
@@ -450,6 +452,8 @@ int CommandLine_run(int argc, char** argv) {
450452

451453
ScreenManager_delete(scr);
452454
MetersPanel_cleanup();
455+
ScreensPanel_cleanup();
456+
ScreenTabsPanel_cleanup();
453457

454458
UsersTable_delete(ut);
455459

ScreenTabsPanel.c

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,15 @@ ScreenNameListItem* ScreenNameListItem_new(const char* value, ScreenSettings* ss
171171
}
172172

173173
static const char* const ScreenNamesFunctions[] = {" ", " ", " ", " ", "New ", " ", " ", " ", " ", "Done ", NULL};
174+
static const char* const ScreenNamesRenamingFunctions[] = {"Cancel", "Done ", " ", " ", " ", " ", " ", " ", " ", " ", NULL};
175+
static FunctionBar* ScreenNames_renamingBar = NULL;
176+
177+
void ScreenTabsPanel_cleanup(void) {
178+
if (ScreenNames_renamingBar) {
179+
FunctionBar_delete(ScreenNames_renamingBar);
180+
ScreenNames_renamingBar = NULL;
181+
}
182+
}
174183

175184
static void ScreenNamesPanel_delete(Object* object) {
176185
ScreenNamesPanel* this = (ScreenNamesPanel*) object;
@@ -228,7 +237,8 @@ static HandlerResult ScreenNamesPanel_eventHandlerRenaming(Panel* super, int ch)
228237
break;
229238
case '\n':
230239
case '\r':
231-
case KEY_ENTER: {
240+
case KEY_ENTER:
241+
case KEY_F(2): {
232242
ListItem* item = (ListItem*) Panel_getSelected(super);
233243
if (!item)
234244
break;
@@ -238,10 +248,12 @@ static HandlerResult ScreenNamesPanel_eventHandlerRenaming(Panel* super, int ch)
238248
this->renamingItem = NULL;
239249
super->cursorOn = false;
240250
Panel_setSelectionColor(super, PANEL_SELECTION_FOCUS);
251+
Panel_setDefaultBar(super);
241252
renameScreenSettings(this, item);
242253
break;
243254
}
244-
case 27: { // Esc
255+
case 27: // Esc
256+
case KEY_F(1): {
245257
ListItem* item = (ListItem*) Panel_getSelected(super);
246258
if (!item)
247259
break;
@@ -250,6 +262,7 @@ static HandlerResult ScreenNamesPanel_eventHandlerRenaming(Panel* super, int ch)
250262
this->renamingItem = NULL;
251263
super->cursorOn = false;
252264
Panel_setSelectionColor(super, PANEL_SELECTION_FOCUS);
265+
Panel_setDefaultBar(super);
253266
break;
254267
}
255268
}
@@ -275,6 +288,7 @@ static void startRenaming(Panel* super) {
275288
Panel_setSelectionColor(super, PANEL_EDIT);
276289
super->selectedLen = strlen(this->buffer);
277290
Panel_setCursorToSelection(super);
291+
super->currentBar = ScreenNames_renamingBar;
278292
}
279293

280294
static void addNewScreen(Panel* super, DynamicScreen* ds) {
@@ -352,6 +366,9 @@ ScreenNamesPanel* ScreenNamesPanel_new(Settings* settings) {
352366
Panel* super = &this->super;
353367

354368
FunctionBar* fuBar = FunctionBar_new(ScreenNamesFunctions, NULL, NULL);
369+
if (!ScreenNames_renamingBar) {
370+
ScreenNames_renamingBar = FunctionBar_new(ScreenNamesRenamingFunctions, NULL, NULL);
371+
}
355372
Panel_init(super, 1, 1, 1, 1, Class(ListItem), true, fuBar);
356373

357374
this->settings = settings;

ScreenTabsPanel.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,6 @@ extern PanelClass ScreenNamesPanel_class;
5858

5959
ScreenNamesPanel* ScreenNamesPanel_new(Settings* settings);
6060

61+
void ScreenTabsPanel_cleanup(void);
62+
6163
#endif

ScreensPanel.c

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ ScreenListItem* ScreenListItem_new(const char* value, ScreenSettings* ss) {
4848

4949
static const char* const ScreensFunctions[] = {" ", "Rename", " ", " ", "New ", " ", "MoveUp", "MoveDn", "Remove", "Done ", NULL};
5050
static const char* const DynamicFunctions[] = {" ", "Rename", " ", " ", " ", " ", "MoveUp", "MoveDn", "Remove", "Done ", NULL};
51+
static const char* const ScreensRenamingFunctions[] = {"Cancel", "Done ", " ", " ", " ", " ", " ", " ", " ", " ", NULL};
52+
static FunctionBar* Screens_renamingBar = NULL;
53+
54+
void ScreensPanel_cleanup(void) {
55+
if (Screens_renamingBar) {
56+
FunctionBar_delete(Screens_renamingBar);
57+
Screens_renamingBar = NULL;
58+
}
59+
}
5160

5261
static void ScreensPanel_delete(Object* object) {
5362
Panel* super = (Panel*) object;
@@ -88,7 +97,8 @@ static HandlerResult ScreensPanel_eventHandlerRenaming(Panel* super, int ch) {
8897
break;
8998
case '\n':
9099
case '\r':
91-
case KEY_ENTER: {
100+
case KEY_ENTER:
101+
case KEY_F(2): {
92102
ListItem* item = (ListItem*) Panel_getSelected(super);
93103
if (!item)
94104
break;
@@ -98,10 +108,12 @@ static HandlerResult ScreensPanel_eventHandlerRenaming(Panel* super, int ch) {
98108
this->renamingItem = NULL;
99109
super->cursorOn = false;
100110
Panel_setSelectionColor(super, PANEL_SELECTION_FOCUS);
111+
Panel_setDefaultBar(super);
101112
ScreensPanel_update(super);
102113
break;
103114
}
104-
case 27: { // Esc
115+
case 27: // Esc
116+
case KEY_F(1): {
105117
ListItem* item = (ListItem*) Panel_getSelected(super);
106118
if (!item)
107119
break;
@@ -110,6 +122,7 @@ static HandlerResult ScreensPanel_eventHandlerRenaming(Panel* super, int ch) {
110122
this->renamingItem = NULL;
111123
super->cursorOn = false;
112124
Panel_setSelectionColor(super, PANEL_SELECTION_FOCUS);
125+
Panel_setDefaultBar(super);
113126
break;
114127
}
115128
}
@@ -134,6 +147,7 @@ static void startRenaming(Panel* super) {
134147
Panel_setSelectionColor(super, PANEL_EDIT);
135148
super->selectedLen = strlen(this->buffer);
136149
Panel_setCursorToSelection(super);
150+
super->currentBar = Screens_renamingBar;
137151
}
138152

139153
static void rebuildSettingsArray(Panel* super, int selected) {
@@ -293,6 +307,9 @@ ScreensPanel* ScreensPanel_new(Settings* settings) {
293307
Panel* super = &this->super;
294308

295309
FunctionBar* fuBar = FunctionBar_new(settings->dynamicScreens ? DynamicFunctions : ScreensFunctions, NULL, NULL);
310+
if (!Screens_renamingBar) {
311+
Screens_renamingBar = FunctionBar_new(ScreensRenamingFunctions, NULL, NULL);
312+
}
296313
Panel_init(super, 1, 1, 1, 1, Class(ListItem), true, fuBar);
297314

298315
Hashtable* columns = settings->dynamicColumns;

ScreensPanel.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,6 @@ ScreensPanel* ScreensPanel_new(Settings* settings);
5252

5353
void ScreensPanel_update(Panel* super);
5454

55+
void ScreensPanel_cleanup(void);
56+
5557
#endif

0 commit comments

Comments
 (0)