aboutsummaryrefslogtreecommitdiffstats
path: root/AvailableMetersPanel.c
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2016-04-11 13:01:07 +0200
committerDaniel Lange <DLange@git.local>2016-04-11 13:01:07 +0200
commitff9409b1737627857eb47f64f536a3f66b6a09a4 (patch)
tree61b631ba551e68a4f656b8b76ff7bd0d9955fc64 /AvailableMetersPanel.c
parentf75ab6d2c11e8a8e18191b087564aedebbeb96c5 (diff)
downloaddebian_htop-ff9409b1737627857eb47f64f536a3f66b6a09a4.tar.gz
debian_htop-ff9409b1737627857eb47f64f536a3f66b6a09a4.tar.bz2
debian_htop-ff9409b1737627857eb47f64f536a3f66b6a09a4.zip
Imported Upstream version 2.0.0upstream/2.0.0
Diffstat (limited to 'AvailableMetersPanel.c')
-rw-r--r--AvailableMetersPanel.c46
1 files changed, 31 insertions, 15 deletions
diff --git a/AvailableMetersPanel.c b/AvailableMetersPanel.c
index f582851..f5d1f2d 100644
--- a/AvailableMetersPanel.c
+++ b/AvailableMetersPanel.c
@@ -6,10 +6,12 @@ in the source distribution for its full text.
*/
#include "AvailableMetersPanel.h"
+#include "MetersPanel.h"
#include "CPUMeter.h"
#include "Header.h"
#include "ListItem.h"
+#include "Platform.h"
#include <assert.h>
#include <stdlib.h>
@@ -18,14 +20,16 @@ in the source distribution for its full text.
#include "Settings.h"
#include "Panel.h"
#include "ScreenManager.h"
+#include "ProcessList.h"
typedef struct AvailableMetersPanel_ {
Panel super;
+ ScreenManager* scr;
Settings* settings;
+ Header* header;
Panel* leftPanel;
Panel* rightPanel;
- ScreenManager* scr;
} AvailableMetersPanel;
}*/
@@ -37,39 +41,48 @@ static void AvailableMetersPanel_delete(Object* object) {
free(this);
}
-static inline void AvailableMetersPanel_addHeader(Header* header, Panel* panel, MeterClass* type, int param, HeaderSide side) {
- Meter* meter = (Meter*) Header_addMeter(header, type, param, side);
- Panel_add(panel, (Object*) Meter_toListItem(meter));
+static inline void AvailableMetersPanel_addMeter(Header* header, Panel* panel, MeterClass* type, int param, int column) {
+ Meter* meter = (Meter*) Header_addMeterByClass(header, type, param, column);
+ Panel_add(panel, (Object*) Meter_toListItem(meter, false));
+ Panel_setSelected(panel, Panel_size(panel) - 1);
+ MetersPanel_setMoving((MetersPanel*)panel, true);
+ FunctionBar_draw(panel->currentBar, NULL);
}
static HandlerResult AvailableMetersPanel_eventHandler(Panel* super, int ch) {
AvailableMetersPanel* this = (AvailableMetersPanel*) super;
- Header* header = this->settings->header;
+ Header* header = this->header;
ListItem* selected = (ListItem*) Panel_getSelected(super);
int param = selected->key & 0xff;
int type = selected->key >> 16;
HandlerResult result = IGNORED;
+ bool update = false;
switch(ch) {
case KEY_F(5):
case 'l':
case 'L':
{
- AvailableMetersPanel_addHeader(header, this->leftPanel, Meter_types[type], param, LEFT_HEADER);
+ AvailableMetersPanel_addMeter(header, this->leftPanel, Platform_meterTypes[type], param, 0);
result = HANDLED;
+ update = true;
break;
}
+ case 0x0a:
+ case 0x0d:
+ case KEY_ENTER:
case KEY_F(6):
case 'r':
case 'R':
{
- AvailableMetersPanel_addHeader(header, this->rightPanel, Meter_types[type], param, RIGHT_HEADER);
- result = HANDLED;
+ AvailableMetersPanel_addMeter(header, this->rightPanel, Platform_meterTypes[type], param, 1);
+ result = (KEY_LEFT << 16) | SYNTH_KEY;
+ update = true;
break;
}
}
- if (result == HANDLED) {
+ if (update) {
this->settings->changed = true;
Header_calculateHeight(header);
Header_draw(header);
@@ -86,25 +99,28 @@ PanelClass AvailableMetersPanel_class = {
.eventHandler = AvailableMetersPanel_eventHandler
};
-AvailableMetersPanel* AvailableMetersPanel_new(Settings* settings, Panel* leftMeters, Panel* rightMeters, ScreenManager* scr) {
+AvailableMetersPanel* AvailableMetersPanel_new(Settings* settings, Header* header, Panel* leftMeters, Panel* rightMeters, ScreenManager* scr, ProcessList* pl) {
AvailableMetersPanel* this = AllocThis(AvailableMetersPanel);
Panel* super = (Panel*) this;
- Panel_init(super, 1, 1, 1, 1, Class(ListItem), true);
+ FunctionBar* fuBar = FunctionBar_newEnterEsc("Add ", "Done ");
+ Panel_init(super, 1, 1, 1, 1, Class(ListItem), true, fuBar);
this->settings = settings;
+ this->header = header;
this->leftPanel = leftMeters;
this->rightPanel = rightMeters;
this->scr = scr;
Panel_setHeader(super, "Available meters");
- for (int i = 1; Meter_types[i]; i++) {
- MeterClass* type = Meter_types[i];
+ for (int i = 1; Platform_meterTypes[i]; i++) {
+ MeterClass* type = Platform_meterTypes[i];
if (type != &CPUMeter_class) {
- Panel_add(super, (Object*) ListItem_new(type->uiName, i << 16));
+ const char* label = type->description ? type->description : type->uiName;
+ Panel_add(super, (Object*) ListItem_new(label, i << 16));
}
}
MeterClass* type = &CPUMeter_class;
- int cpus = settings->pl->cpuCount;
+ int cpus = pl->cpuCount;
if (cpus > 1) {
Panel_add(super, (Object*) ListItem_new("CPU average", 0));
for (int i = 1; i <= cpus; i++) {

© 2014-2024 Faster IT GmbH | imprint | privacy policy