diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2020-11-21 21:40:08 +0100 |
---|---|---|
committer | cgzones <cgzones@googlemail.com> | 2020-11-25 20:46:27 +0100 |
commit | 267014cbfe584ff9a1bc74d671f8aaa27251fd49 (patch) | |
tree | c49c5efc511a93722052084b78a735962db46b91 /OptionItem.h | |
parent | adf918520976a5f06181c1c05392a0da6e4bbaa5 (diff) |
Add support to change numeric options in settings screen
Like delay or highlightDelaySecs
Diffstat (limited to 'OptionItem.h')
-rw-r--r-- | OptionItem.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/OptionItem.h b/OptionItem.h new file mode 100644 index 00000000..8dd802d9 --- /dev/null +++ b/OptionItem.h @@ -0,0 +1,70 @@ +#ifndef HEADER_OptionItem +#define HEADER_OptionItem +/* +htop - OptionItem.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 <stdbool.h> + +#include "Object.h" + + +enum OptionItemType { + OPTION_ITEM_CHECK, + OPTION_ITEM_NUMBER, +}; + +typedef struct OptionItemClass_ { + const ObjectClass super; + + enum OptionItemType kind; +} OptionItemClass; + +#define As_OptionItem(this_) ((const OptionItemClass*)((this_)->super.klass)) +#define OptionItem_kind(this_) As_OptionItem(this_)->kind + +typedef struct OptionItem_ { + Object super; + + char* text; +} OptionItem; + +typedef struct CheckItem_ { + OptionItem super; + + bool* ref; + bool value; +} CheckItem; + +typedef struct NumberItem_ { + OptionItem super; + + char* text; + int* ref; + int value; + int scale; + int min; + int max; +} NumberItem; + +extern const OptionItemClass OptionItem_class; +extern const OptionItemClass CheckItem_class; +extern const OptionItemClass NumberItem_class; + +CheckItem* CheckItem_newByRef(const char* text, bool* ref); +CheckItem* CheckItem_newByVal(const char* text, bool value); +bool CheckItem_get(const CheckItem* this); +void CheckItem_set(CheckItem* this, bool value); +void CheckItem_toggle(CheckItem* this); + +NumberItem* NumberItem_newByRef(const char* text, int* ref, int scale, int min, int max); +NumberItem* NumberItem_newByVal(const char* text, int value, int scale, int min, int max); +int NumberItem_get(const NumberItem* this); +void NumberItem_decrease(NumberItem* this); +void NumberItem_increase(NumberItem* this); +void NumberItem_toggle(NumberItem* this); + +#endif |