AvailableMetersPanel* AvailableMetersPanel_new(Settings* settings, Panel* leftMeters, Panel* rightMeters, ScreenManager* scr) { AvailableMetersPanel* this = AllocThis(AvailableMetersPanel); Panel* super = (Panel*) this; Panel_init(super, 1, 1, 1, 1, Class(ListItem), true); this->settings = settings; this->leftPanel = leftMeters; this->rightPanel = rightMeters; this->scr = scr; Panel_setHeader(super, "Available meters"); 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)); } } MeterClass* type = &CPUMeter_class; int cpus = settings->pl->cpuCount; if (cpus > 1) { Panel_add(super, (Object*) ListItem_new("CPU average", 0)); for (int i = 1; i <= cpus; i++) { char buffer[50]; sprintf(buffer, "%s %d", type->uiName, i); Panel_add(super, (Object*) ListItem_new(buffer, i)); } } else { Panel_add(super, (Object*) ListItem_new("CPU", 1)); } return this; }
CheckItem* CheckItem_newByVal(char* text, bool value) { CheckItem* this = AllocThis(CheckItem); this->text = text; this->value = value; this->ref = NULL; return this; }
CheckItem* CheckItem_newByRef(char* text, bool* ref) { CheckItem* this = AllocThis(CheckItem); this->text = text; this->value = false; this->ref = ref; return this; }
CheckItem* CheckItem_new(char* text, bool* ref, bool value) { CheckItem* this = AllocThis(CheckItem); this->text = text; this->value = value; this->ref = ref; return this; }
ListItem* ListItem_new(const char* value, int key) { ListItem* this = AllocThis(ListItem); this->value = strdup(value); this->key = key; this->moving = false; return this; }
MetersPanel* MetersPanel_new(Settings* settings, const char* header, Vector* meters, ScreenManager* scr) { MetersPanel* this = AllocThis(MetersPanel); Panel* super = (Panel*) this; Panel_init(super, 1, 1, 1, 1, Class(ListItem), true); this->settings = settings; this->meters = meters; this->scr = scr; Panel_setHeader(super, header); for (int i = 0; i < Vector_size(meters); i++) { Meter* meter = (Meter*) Vector_get(meters, i); Panel_add(super, (Object*) Meter_toListItem(meter)); } return this; }
ColorsPanel* ColorsPanel_new(Settings* settings, ScreenManager* scr) { ColorsPanel* this = AllocThis(ColorsPanel); Panel* super = (Panel*) this; FunctionBar* fuBar = FunctionBar_new(ColorsFunctions, NULL, NULL); Panel_init(super, 1, 1, 1, 1, Class(CheckItem), true, fuBar); this->settings = settings; this->scr = scr; Panel_setHeader(super, "Colors"); for (int i = 0; ColorSchemeNames[i] != NULL; i++) { Panel_add(super, (Object*) CheckItem_newByVal(xStrdup(ColorSchemeNames[i]), false)); } CheckItem_set((CheckItem*)Panel_get(super, settings->colorScheme), true); return this; }
ColumnsPanel* ColumnsPanel_new(Settings* settings) { ColumnsPanel* this = AllocThis(ColumnsPanel); Panel* super = (Panel*) this; FunctionBar* fuBar = FunctionBar_new(ColumnsFunctions, NULL, NULL); Panel_init(super, 1, 1, 1, 1, Class(ListItem), true, fuBar); this->settings = settings; this->moving = false; Panel_setHeader(super, "Active Columns"); ProcessField* fields = this->settings->fields; for (; *fields; fields++) { if (Process_fields[*fields].name) { Panel_add(super, (Object*) ListItem_new(Process_fields[*fields].name, *fields)); } } return this; }