From 10eea2ab1bae2a8ec159d81c0446fd8061b33e2b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 21:58:07 +0200 Subject: Adding upstream version 3.3.0. Signed-off-by: Daniel Baumann --- Settings.h | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 Settings.h (limited to 'Settings.h') diff --git a/Settings.h b/Settings.h new file mode 100644 index 0000000..a7740ff --- /dev/null +++ b/Settings.h @@ -0,0 +1,146 @@ +#ifndef HEADER_Settings +#define HEADER_Settings +/* +htop - Settings.h +(C) 2004-2011 Hisham H. Muhammad +Released under the GNU GPLv2+, see the COPYING file +in the source distribution for its full text. +*/ + +#include +#include +#include + +#include "Hashtable.h" +#include "HeaderLayout.h" +#include "Row.h" +#include "RowField.h" + + +#define DEFAULT_DELAY 15 + +#define CONFIG_READER_MIN_VERSION 3 + +struct DynamicScreen_; // IWYU pragma: keep +struct Table_; // IWYU pragma: keep + +typedef struct { + const char* name; + const char* columns; + const char* sortKey; + const char* treeSortKey; +} ScreenDefaults; + +typedef struct { + size_t len; + char** names; + int* modes; +} MeterColumnSetting; + +typedef struct ScreenSettings_ { + char* heading; /* user-editable screen name (pretty) */ + char* dynamic; /* from DynamicScreen config (fixed) */ + struct Table_* table; + RowField* fields; + uint32_t flags; + int direction; + int treeDirection; + RowField sortKey; + RowField treeSortKey; + bool treeView; + bool treeViewAlwaysByPID; + bool allBranchesCollapsed; +} ScreenSettings; + +typedef struct Settings_ { + char* filename; + int config_version; + HeaderLayout hLayout; + MeterColumnSetting* hColumns; + Hashtable* dynamicColumns; /* runtime-discovered columns */ + Hashtable* dynamicMeters; /* runtime-discovered meters */ + Hashtable* dynamicScreens; /* runtime-discovered screens */ + + ScreenSettings** screens; + unsigned int nScreens; + unsigned int ssIndex; + ScreenSettings* ss; + + int colorScheme; + int delay; + + bool countCPUsFromOne; + bool detailedCPUTime; + bool showCPUUsage; + bool showCPUFrequency; + #ifdef BUILD_WITH_CPU_TEMP + bool showCPUTemperature; + bool degreeFahrenheit; + #endif + bool showProgramPath; + bool shadowOtherUsers; + bool showThreadNames; + bool hideKernelThreads; + bool hideRunningInContainer; + bool hideUserlandThreads; + bool highlightBaseName; + bool highlightDeletedExe; + bool shadowDistPathPrefix; + bool highlightMegabytes; + bool highlightThreads; + bool highlightChanges; + int highlightDelaySecs; + bool findCommInCmdline; + bool stripExeFromCmdline; + bool showMergedCommand; + bool updateProcessNames; + bool accountGuestInCPUMeter; + bool headerMargin; + bool screenTabs; + #ifdef HAVE_GETMOUSE + bool enableMouse; + #endif + int hideFunctionBar; // 0 - off, 1 - on ESC until next input, 2 - permanently + #ifdef HAVE_LIBHWLOC + bool topologyAffinity; + #endif + + bool changed; + uint64_t lastUpdate; +} Settings; + +#define Settings_cpuId(settings, cpu) ((settings)->countCPUsFromOne ? (cpu)+1 : (cpu)) + +static inline RowField ScreenSettings_getActiveSortKey(const ScreenSettings* this) { + return (this->treeView) + ? (this->treeViewAlwaysByPID ? 1 : this->treeSortKey) + : this->sortKey; +} + +static inline int ScreenSettings_getActiveDirection(const ScreenSettings* this) { + return this->treeView ? this->treeDirection : this->direction; +} + +void Settings_delete(Settings* this); + +int Settings_write(const Settings* this, bool onCrash); + +Settings* Settings_new(unsigned int initialCpuCount, Hashtable* dynamicMeters, Hashtable* dynamicColumns, Hashtable* dynamicScreens); + +ScreenSettings* Settings_newScreen(Settings* this, const ScreenDefaults* defaults); + +ScreenSettings* Settings_newDynamicScreen(Settings* this, const char* tab, const struct DynamicScreen_* screen, struct Table_* table); + +void ScreenSettings_delete(ScreenSettings* this); + +void ScreenSettings_invertSortOrder(ScreenSettings* this); + +void ScreenSettings_setSortKey(ScreenSettings* this, RowField sortKey); + +void Settings_enableReadonly(void); + +bool Settings_isReadonly(void); + +void Settings_setHeaderLayout(Settings* this, HeaderLayout hLayout); + +#endif -- cgit v1.2.3