mirror of
https://github.com/xzeldon/htop.git
synced 2025-07-12 12:14:36 +03:00
Pretty-print values in the PCP DynamicMeter code
Several improvements to the way values are displayed in the PCP platform DynamicMeter implementation: - handle the initial 'caption' setting as with regular meters, this required a new meter callback because we no longer have just a single meter caption for the DynamicMeter case - if no label is provided for a metric in a configuration file use the short form metric name as a fallback - honour the suffix setting in the configuration file - convert metric values to the canonical units for htop (kbyte and seconds), and use Meter_humanUnit when it makes sense to do so. Also improves the handling of fatal string error messages in a couple of places, thanks to BenBE for the review feedback.
This commit is contained in:
@ -70,12 +70,27 @@ static void DynamicMeter_display(const Object* cast, RichString* out) {
|
||||
Platform_dynamicMeterDisplay(meter, out);
|
||||
}
|
||||
|
||||
static const char* DynamicMeter_getCaption(const Meter* this) {
|
||||
const ProcessList* pl = this->pl;
|
||||
const DynamicMeter* meter = Hashtable_get(pl->dynamicMeters, this->param);
|
||||
if (meter)
|
||||
return meter->caption ? meter->caption : meter->name;
|
||||
return this->caption;
|
||||
}
|
||||
|
||||
static void DynamicMeter_getUiName(const Meter* this, char* name, size_t length) {
|
||||
const ProcessList* pl = this->pl;
|
||||
const DynamicMeter* meter = Hashtable_get(pl->dynamicMeters, this->param);
|
||||
if (meter) {
|
||||
const char* uiName = meter->caption ? meter->caption : meter->name;
|
||||
xSnprintf(name, length, "%s", uiName);
|
||||
const char* uiName = meter->caption;
|
||||
if (uiName) {
|
||||
int len = strlen(uiName);
|
||||
if (len > 2 && uiName[len-2] == ':')
|
||||
len -= 2;
|
||||
xSnprintf(name, length, "%.*s", len, uiName);
|
||||
} else {
|
||||
xSnprintf(name, length, "%s", meter->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,6 +102,7 @@ const MeterClass DynamicMeter_class = {
|
||||
},
|
||||
.init = DynamicMeter_init,
|
||||
.updateValues = DynamicMeter_updateValues,
|
||||
.getCaption = DynamicMeter_getCaption,
|
||||
.getUiName = DynamicMeter_getUiName,
|
||||
.defaultMode = TEXT_METERMODE,
|
||||
.maxItems = 0,
|
||||
|
Reference in New Issue
Block a user