summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBert Wesarg <bert.wesarg@googlemail.com>2020-08-25 12:29:00 +0200
committerBert Wesarg <bert.wesarg@googlemail.com>2020-08-25 23:09:15 +0200
commit5d5913d355b3a9f03da589b3542b8f55467b4ed6 (patch)
treebb9b75c7bb305ba27ff73abfccb071a47fcacba6
parenteb22eed4697a41b8f76dc80594c87c06a6d117d2 (diff)
Use UTF-8 for check buttons and tree open/closed
This looses the different coloring between the brackets and the mark though.
-rw-r--r--AffinityPanel.c14
-rw-r--r--CRT.c68
-rw-r--r--CRT.h28
-rw-r--r--CheckItem.c7
4 files changed, 84 insertions, 33 deletions
diff --git a/AffinityPanel.c b/AffinityPanel.c
index 3bd9af0a..e64386b7 100644
--- a/AffinityPanel.c
+++ b/AffinityPanel.c
@@ -55,20 +55,20 @@ static void MaskItem_delete(Object* cast) {
static void MaskItem_display(Object* cast, RichString* out) {
MaskItem* this = (MaskItem*)cast;
assert (this != NULL);
- RichString_append(out, CRT_colors[CHECK_BOX], "[");
if (this->value == 2)
- RichString_append(out, CRT_colors[CHECK_MARK], "x");
+ RichString_append(out, CRT_colors[CHECK_MARK], CRT_checkStr[CHECK_STR_FULL]);
else if (this->value == 1)
- RichString_append(out, CRT_colors[CHECK_MARK], "o");
+ RichString_append(out, CRT_colors[CHECK_MARK], CRT_checkStr[CHECK_STR_PARTIAL]);
else
- RichString_append(out, CRT_colors[CHECK_MARK], " ");
- RichString_append(out, CRT_colors[CHECK_BOX], "]");
+ RichString_append(out, CRT_colors[CHECK_MARK], CRT_checkStr[CHECK_STR_NONE]);
RichString_append(out, CRT_colors[CHECK_TEXT], " ");
if (this->indent)
RichString_append(out, CRT_colors[PROCESS_TREE], this->indent);
if (this->sub_tree) {
RichString_append(out, CRT_colors[PROCESS_TREE],
- this->sub_tree == 1 ? "[-]" : "[+]");
+ this->sub_tree == 1
+ ? CRT_collapStr[COLLAP_STR_OPEN]
+ : CRT_collapStr[COLLAP_STR_CLOSED]);
RichString_append(out, CRT_colors[CHECK_TEXT], " ");
}
RichString_append(out, CRT_colors[CHECK_TEXT], this->text);
@@ -293,7 +293,7 @@ static MaskItem *AffinityPanel_addObject(AffinityPanel* this, hwloc_obj_t obj, u
Vector_add(parent->children, item);
/* "[x] " + "|- " * depth + ("[+] ")? + name */
- unsigned width = 4 + 3 * depth + (item->sub_tree ? 4 : 0) + strlen(buf);
+ unsigned width = (CRT_utf8 ? 2 : 4) + 3 * depth + (item->sub_tree ? (CRT_utf8 ? 2 : 4) : 0) + strlen(buf);
if (width > this->width)
this->width = width;
diff --git a/CRT.c b/CRT.c
index 35b285f7..869573e5 100644
--- a/CRT.c
+++ b/CRT.c
@@ -59,6 +59,19 @@ typedef enum TreeStr_ {
TREE_STR_COUNT
} TreeStr;
+typedef enum CheckStr_ {
+ CHECK_STR_NONE,
+ CHECK_STR_PARTIAL,
+ CHECK_STR_FULL,
+ CHECK_STR_COUNT
+} CheckStr;
+
+typedef enum CollapStr_ {
+ COLLAP_STR_OPEN,
+ COLLAP_STR_CLOSED,
+ COLLAP_STR_COUNT
+} CollapStr;
+
typedef enum ColorSchemes_ {
COLORSCHEME_DEFAULT = 0,
COLORSCHEME_MONOCHROME = 1,
@@ -113,7 +126,6 @@ typedef enum ColorElements_ {
LOAD_AVERAGE_FIFTEEN,
LOAD_AVERAGE_FIVE,
LOAD_AVERAGE_ONE,
- CHECK_BOX,
CHECK_MARK,
CHECK_TEXT,
CLOCK,
@@ -159,6 +171,17 @@ const char *CRT_treeStrAscii[TREE_STR_COUNT] = {
"-", // TREE_STR_SHUT
};
+const char *CRT_checkStrAscii[CHECK_STR_COUNT] = {
+ "[ ]", // CHECK_STR_NONE
+ "[o]", // CHECK_STR_PARTIAL
+ "[x]", // CHECK_STR_FULL
+};
+
+const char *CRT_collapStrAscii[COLLAP_STR_COUNT] = {
+ "[-]", // COLLAP_STR_OPEN
+ "[+]", // COLLAP_STR_CLOSED
+};
+
#ifdef HAVE_LIBNCURSESW
const char *CRT_treeStrUtf8[TREE_STR_COUNT] = {
@@ -171,12 +194,27 @@ const char *CRT_treeStrUtf8[TREE_STR_COUNT] = {
"\xe2\x94\x80", // TREE_STR_SHUT ─
};
-bool CRT_utf8 = false;
+const char *CRT_checkStrUtf8[CHECK_STR_COUNT] = {
+ "\xe2\x98\x90", // CHECK_STR_NONE ☐
+ "\xe2\x98\x92", // CHECK_STR_PARTIAL ☒
+ "\xe2\x98\x91", // CHECK_STR_FULL ☑
+};
+
+const char *CRT_collapStrUtf8[COLLAP_STR_COUNT] = {
+ "\xe2\x8a\x9f", // COLLAP_STR_OPEN ⊟
+ "\xe2\x8a\x9e", // COLLAP_STR_CLOSED ⊞
+};
#endif
+bool CRT_utf8 = false;
+
const char **CRT_treeStr = CRT_treeStrAscii;
+const char **CRT_checkStr = CRT_checkStrAscii;
+
+const char **CRT_collapStr = CRT_collapStrAscii;
+
static bool CRT_hasColors;
int CRT_delay = 0;
@@ -229,8 +267,7 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
[LOAD] = A_BOLD,
[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Black),
[CLOCK] = A_BOLD,
- [CHECK_BOX] = ColorPair(Cyan,Black),
- [CHECK_MARK] = A_BOLD,
+ [CHECK_MARK] = A_BOLD | ColorPair(Cyan,Black),
[CHECK_TEXT] = A_NORMAL,
[HOSTNAME] = A_BOLD,
[CPU_NICE] = ColorPair(Blue,Black),
@@ -298,8 +335,7 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
[LOAD] = A_BOLD,
[HELP_BOLD] = A_BOLD,
[CLOCK] = A_BOLD,
- [CHECK_BOX] = A_BOLD,
- [CHECK_MARK] = A_NORMAL,
+ [CHECK_MARK] = A_BOLD,
[CHECK_TEXT] = A_NORMAL,
[HOSTNAME] = A_BOLD,
[CPU_NICE] = A_NORMAL,
@@ -367,7 +403,6 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
[LOAD] = ColorPair(Black,White),
[HELP_BOLD] = ColorPair(Blue,White),
[CLOCK] = ColorPair(Black,White),
- [CHECK_BOX] = ColorPair(Blue,White),
[CHECK_MARK] = ColorPair(Black,White),
[CHECK_TEXT] = ColorPair(Black,White),
[HOSTNAME] = ColorPair(Black,White),
@@ -436,7 +471,6 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
[LOAD] = ColorPair(White,Black),
[HELP_BOLD] = ColorPair(Blue,Black),
[CLOCK] = ColorPair(White,Black),
- [CHECK_BOX] = ColorPair(Blue,Black),
[CHECK_MARK] = ColorPair(Black,Black),
[CHECK_TEXT] = ColorPair(Black,Black),
[HOSTNAME] = ColorPair(White,Black),
@@ -505,8 +539,7 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
[LOAD] = A_BOLD | ColorPair(White,Blue),
[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Blue),
[CLOCK] = ColorPair(White,Blue),
- [CHECK_BOX] = ColorPair(Cyan,Blue),
- [CHECK_MARK] = A_BOLD | ColorPair(White,Blue),
+ [CHECK_MARK] = A_BOLD | ColorPair(Cyan,Blue),
[CHECK_TEXT] = A_NORMAL | ColorPair(White,Blue),
[HOSTNAME] = ColorPair(White,Blue),
[CPU_NICE] = A_BOLD | ColorPair(Cyan,Blue),
@@ -574,7 +607,6 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
[LOAD] = A_BOLD,
[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Black),
[CLOCK] = ColorPair(Green,Black),
- [CHECK_BOX] = ColorPair(Green,Black),
[CHECK_MARK] = A_BOLD | ColorPair(Green,Black),
[CHECK_TEXT] = ColorPair(Cyan,Black),
[HOSTNAME] = ColorPair(Green,Black),
@@ -731,17 +763,13 @@ void CRT_init(int delay, int colorScheme) {
setlocale(LC_CTYPE, "");
#ifdef HAVE_LIBNCURSESW
- if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0)
+ if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0) {
CRT_utf8 = true;
- else
- CRT_utf8 = false;
-#endif
-
- CRT_treeStr =
-#ifdef HAVE_LIBNCURSESW
- CRT_utf8 ? CRT_treeStrUtf8 :
+ CRT_treeStr = CRT_treeStrUtf8;
+ CRT_checkStr = CRT_checkStrUtf8;
+ CRT_collapStr = CRT_collapStrUtf8;
+ }
#endif
- CRT_treeStrAscii;
#if NCURSES_MOUSE_VERSION > 1
mousemask(BUTTON1_RELEASED | BUTTON4_PRESSED | BUTTON5_PRESSED, NULL);
diff --git a/CRT.h b/CRT.h
index 80022f70..5fb2f09c 100644
--- a/CRT.h
+++ b/CRT.h
@@ -47,6 +47,19 @@ typedef enum TreeStr_ {
TREE_STR_COUNT
} TreeStr;
+typedef enum CheckStr_ {
+ CHECK_STR_NONE,
+ CHECK_STR_PARTIAL,
+ CHECK_STR_FULL,
+ CHECK_STR_COUNT
+} CheckStr;
+
+typedef enum CollapStr_ {
+ COLLAP_STR_OPEN,
+ COLLAP_STR_CLOSED,
+ COLLAP_STR_COUNT
+} CollapStr;
+
typedef enum ColorSchemes_ {
COLORSCHEME_DEFAULT = 0,
COLORSCHEME_MONOCHROME = 1,
@@ -101,7 +114,6 @@ typedef enum ColorElements_ {
LOAD_AVERAGE_FIFTEEN,
LOAD_AVERAGE_FIVE,
LOAD_AVERAGE_ONE,
- CHECK_BOX,
CHECK_MARK,
CHECK_TEXT,
CLOCK,
@@ -138,16 +150,28 @@ extern void CRT_handleSIGSEGV(int sgn);
extern const char *CRT_treeStrAscii[TREE_STR_COUNT];
+extern const char *CRT_checkStrAscii[CHECK_STR_COUNT];
+
+extern const char *CRT_collapStrAscii[COLLAP_STR_COUNT];
+
#ifdef HAVE_LIBNCURSESW
extern const char *CRT_treeStrUtf8[TREE_STR_COUNT];
-extern bool CRT_utf8;
+extern const char *CRT_checkStrUtf8[CHECK_STR_COUNT];
+
+extern const char *CRT_collapStrUtf8[COLLAP_STR_COUNT];
#endif
+extern bool CRT_utf8;
+
extern const char **CRT_treeStr;
+extern const char **CRT_checkStr;
+
+extern const char **CRT_collapStr;
+
extern int CRT_delay;
extern int* CRT_colors;
diff --git a/CheckItem.c b/CheckItem.c
index 910981e8..a045d2ff 100644
--- a/CheckItem.c
+++ b/CheckItem.c
@@ -35,12 +35,11 @@ static void CheckItem_delete(Object* cast) {
static void CheckItem_display(Object* cast, RichString* out) {
CheckItem* this = (CheckItem*)cast;
assert (this != NULL);
- RichString_write(out, CRT_colors[CHECK_BOX], "[");
if (CheckItem_get(this))
- RichString_append(out, CRT_colors[CHECK_MARK], "x");
+ RichString_append(out, CRT_colors[CHECK_MARK], CRT_checkStr[CHECK_STR_FULL]);
else
- RichString_append(out, CRT_colors[CHECK_MARK], " ");
- RichString_append(out, CRT_colors[CHECK_BOX], "] ");
+ RichString_append(out, CRT_colors[CHECK_MARK], CRT_checkStr[CHECK_STR_NONE]);
+ RichString_append(out, CRT_colors[CHECK_TEXT], " ");
RichString_append(out, CRT_colors[CHECK_TEXT], this->text);
}