~ubuntu-branches/ubuntu/intrepid/htop/intrepid

« back to all changes in this revision

Viewing changes to CRT.c

  • Committer: Bazaar Package Importer
  • Author(s): Bartosz Fenski
  • Date: 2004-11-27 10:10:17 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20041127101017-vwknw2ipfvxchno4
Tags: 0.5-1
* New upstream version.
  - fixes problem with wrongly displayed CPU bar (Closes: #283212)

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#include <stdlib.h>
13
13
#include <stdbool.h>
14
14
 
 
15
#include "String.h"
 
16
 
15
17
#include "debug.h"
16
18
 
17
19
#define WHITE_PAIR 0
21
23
#define BROWN_PAIR 4
22
24
#define CYAN_PAIR 5
23
25
#define BLACK_PAIR 6
24
 
 
25
 
#define HEADER_PAIR 7
26
 
#define INVERSE_PAIR 8
27
 
#define FUNCTIONBAR_PAIR 9
 
26
#define BLACK_CYAN_PAIR 7
 
27
#define RED_CYAN_PAIR 8
 
28
#define BLACK_GREEN_PAIR 9
 
29
#define BLACK_WHITE_PAIR 10
28
30
 
29
31
#define MIN_UPDATE_SLICE 15
30
32
 
32
34
 
33
35
bool CRT_hasColors;
34
36
 
 
37
/*{
 
38
 
 
39
typedef enum ColorElements_ {
 
40
   RESET_COLOR,
 
41
   DEFAULT_COLOR,
 
42
   FUNCTION_BAR,
 
43
   FUNCTION_KEY,
 
44
   FAILED_SEARCH,
 
45
   PANEL_HEADER_FOCUS,
 
46
   PANEL_HEADER_UNFOCUS,
 
47
   PANEL_HIGHLIGHT_FOCUS,
 
48
   PANEL_HIGHLIGHT_UNFOCUS,
 
49
   LARGE_NUMBER,
 
50
   METER_TEXT,
 
51
   METER_VALUE,
 
52
   LED_COLOR,
 
53
   UPTIME,
 
54
   TASKS_TOTAL,
 
55
   TASKS_RUNNING,
 
56
   SWAP,
 
57
   PROCESS,
 
58
   PROCESS_SHADOW,
 
59
   PROCESS_TAG,
 
60
   PROCESS_MEGABYTES,
 
61
   PROCESS_TREE,
 
62
   PROCESS_R_STATE,
 
63
   PROCESS_BASENAME,
 
64
   PROCESS_HIGH_PRIORITY,
 
65
   PROCESS_LOW_PRIORITY,
 
66
   BAR_BORDER,
 
67
   BAR_SHADOW,
 
68
   GRAPH_1,
 
69
   GRAPH_2,
 
70
   GRAPH_3,
 
71
   GRAPH_4,
 
72
   GRAPH_5,
 
73
   GRAPH_6,
 
74
   GRAPH_7,
 
75
   GRAPH_8,
 
76
   GRAPH_9,
 
77
   MEMORY_USED,
 
78
   MEMORY_BUFFERS,
 
79
   MEMORY_CACHE,
 
80
   LOAD,
 
81
   LOAD_AVERAGE_FIFTEEN,
 
82
   LOAD_AVERAGE_FIVE,
 
83
   LOAD_AVERAGE_ONE,
 
84
   CHECK_BOX,
 
85
   CHECK_MARK,
 
86
   CHECK_TEXT,
 
87
   CLOCK,
 
88
   CPU_NICE,
 
89
   CPU_NORMAL,
 
90
   CPU_KERNEL,
 
91
   HELP_BOLD,
 
92
   LAST_COLORELEMENT
 
93
} ColorElements;
 
94
 
 
95
extern int CRT_colors[LAST_COLORELEMENT];
 
96
 
 
97
}*/
 
98
 
 
99
/* private property */
 
100
int CRT_colors[LAST_COLORELEMENT];
 
101
 
35
102
void CRT_init() {
36
103
   initscr();
37
104
   noecho();
46
113
   } else {
47
114
      CRT_hasColors = false;
48
115
   }
49
 
//   signal(11, CRT_handleSIGSEGV);
 
116
   char* termType = getenv("TERM");
 
117
   if (String_eq(termType, "xterm") || String_eq(termType, "xterm-color") || String_eq(termType, "vt220")) {
 
118
      define_key("\033OP", KEY_F(1));
 
119
      define_key("\033OQ", KEY_F(2));
 
120
      define_key("\033OR", KEY_F(3));
 
121
      define_key("\033OS", KEY_F(4));
 
122
   }
 
123
#ifndef DEBUG
 
124
   signal(11, CRT_handleSIGSEGV);
 
125
#endif
50
126
   signal(SIGTERM, CRT_handleSIGTERM);
51
127
   use_default_colors();
52
128
   init_pair(BLUE_PAIR, COLOR_BLUE, -1);
54
130
   init_pair(RED_PAIR, COLOR_RED, -1);
55
131
   init_pair(BROWN_PAIR, COLOR_YELLOW, -1);
56
132
   init_pair(CYAN_PAIR, COLOR_CYAN, -1);
57
 
   init_pair(HEADER_PAIR, COLOR_BLACK, COLOR_GREEN);
58
 
   init_pair(BLACK_PAIR, COLOR_BLACK, -1);
59
 
   init_pair(INVERSE_PAIR, COLOR_WHITE, COLOR_BLACK);
60
 
   init_pair(FUNCTIONBAR_PAIR, COLOR_BLACK, COLOR_CYAN);
 
133
   init_pair(BLACK_PAIR, COLOR_BLACK, -1);
 
134
   init_pair(BLACK_PAIR, COLOR_BLACK, -1);
 
135
   init_pair(BLACK_CYAN_PAIR, COLOR_BLACK, COLOR_CYAN);
 
136
   init_pair(RED_CYAN_PAIR, COLOR_RED, COLOR_CYAN);
 
137
   init_pair(BLACK_GREEN_PAIR, COLOR_BLACK, COLOR_GREEN);
 
138
   init_pair(BLACK_WHITE_PAIR, COLOR_BLACK, COLOR_WHITE);
 
139
   if (has_colors()) {
 
140
      CRT_colors[RESET_COLOR] = A_NORMAL;
 
141
      CRT_colors[DEFAULT_COLOR] = A_NORMAL;
 
142
      CRT_colors[FUNCTION_BAR] = COLOR_PAIR(BLACK_CYAN_PAIR);
 
143
      CRT_colors[FUNCTION_KEY] = A_NORMAL;
 
144
      CRT_colors[PANEL_HEADER_FOCUS] = COLOR_PAIR(BLACK_GREEN_PAIR);
 
145
      CRT_colors[PANEL_HEADER_UNFOCUS] = COLOR_PAIR(BLACK_GREEN_PAIR);
 
146
      CRT_colors[PANEL_HIGHLIGHT_FOCUS] = COLOR_PAIR(BLACK_CYAN_PAIR);
 
147
      CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = COLOR_PAIR(BLACK_WHITE_PAIR);
 
148
      CRT_colors[FAILED_SEARCH] = COLOR_PAIR(RED_CYAN_PAIR);
 
149
      CRT_colors[UPTIME] = A_BOLD | COLOR_PAIR(CYAN_PAIR);
 
150
      CRT_colors[LARGE_NUMBER] = A_BOLD | COLOR_PAIR(RED_PAIR);
 
151
      CRT_colors[METER_TEXT] = COLOR_PAIR(CYAN_PAIR);
 
152
      CRT_colors[METER_VALUE] = A_BOLD | COLOR_PAIR(CYAN_PAIR);
 
153
      CRT_colors[LED_COLOR] = COLOR_PAIR(GREEN_PAIR);
 
154
      CRT_colors[TASKS_RUNNING] = A_BOLD | COLOR_PAIR(GREEN_PAIR);
 
155
      CRT_colors[PROCESS] = A_NORMAL;
 
156
      CRT_colors[PROCESS_SHADOW] = A_BOLD | COLOR_PAIR(BLACK_PAIR);
 
157
      CRT_colors[PROCESS_TAG] = A_BOLD | COLOR_PAIR(BROWN_PAIR);
 
158
      CRT_colors[PROCESS_MEGABYTES] = COLOR_PAIR(CYAN_PAIR);
 
159
      CRT_colors[PROCESS_BASENAME] = A_BOLD | COLOR_PAIR(CYAN_PAIR);
 
160
      CRT_colors[PROCESS_TREE] = COLOR_PAIR(CYAN_PAIR);
 
161
      CRT_colors[PROCESS_R_STATE] = COLOR_PAIR(GREEN_PAIR);
 
162
      CRT_colors[PROCESS_HIGH_PRIORITY] = COLOR_PAIR(RED_PAIR);
 
163
      CRT_colors[PROCESS_LOW_PRIORITY] = COLOR_PAIR(RED_PAIR);
 
164
      CRT_colors[BAR_BORDER] = A_BOLD;
 
165
      CRT_colors[BAR_SHADOW] = A_BOLD | COLOR_PAIR(BLACK_PAIR);
 
166
      CRT_colors[SWAP] = COLOR_PAIR(RED_PAIR);
 
167
      CRT_colors[GRAPH_1] = A_BOLD | COLOR_PAIR(RED_PAIR);
 
168
      CRT_colors[GRAPH_2] = COLOR_PAIR(RED_PAIR);
 
169
      CRT_colors[GRAPH_3] = A_BOLD | COLOR_PAIR(BROWN_PAIR);
 
170
      CRT_colors[GRAPH_4] = A_BOLD | COLOR_PAIR(GREEN_PAIR);
 
171
      CRT_colors[GRAPH_5] = COLOR_PAIR(GREEN_PAIR);
 
172
      CRT_colors[GRAPH_6] = COLOR_PAIR(CYAN_PAIR);
 
173
      CRT_colors[GRAPH_7] = A_BOLD | COLOR_PAIR(BLUE_PAIR);
 
174
      CRT_colors[GRAPH_8] = COLOR_PAIR(BLUE_PAIR);
 
175
      CRT_colors[GRAPH_9] = A_BOLD | COLOR_PAIR(BLACK_PAIR);
 
176
      CRT_colors[MEMORY_USED] = COLOR_PAIR(GREEN_PAIR);
 
177
      CRT_colors[MEMORY_BUFFERS] = COLOR_PAIR(BLUE_PAIR);
 
178
      CRT_colors[MEMORY_CACHE] = COLOR_PAIR(BROWN_PAIR);
 
179
      CRT_colors[LOAD_AVERAGE_FIFTEEN] = A_BOLD | COLOR_PAIR(BLACK_PAIR);
 
180
      CRT_colors[LOAD_AVERAGE_FIVE] = A_NORMAL;
 
181
      CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD;
 
182
      CRT_colors[LOAD] = A_BOLD;
 
183
      CRT_colors[HELP_BOLD] = A_BOLD | COLOR_PAIR(CYAN_PAIR);
 
184
      CRT_colors[CPU_NICE] = COLOR_PAIR(BLUE_PAIR);
 
185
      CRT_colors[CPU_NORMAL] = COLOR_PAIR(GREEN_PAIR);
 
186
      CRT_colors[CPU_KERNEL] = COLOR_PAIR(RED_PAIR);
 
187
      CRT_colors[CLOCK] = A_BOLD;
 
188
      CRT_colors[CHECK_BOX] = COLOR_PAIR(CYAN_PAIR);
 
189
      CRT_colors[CHECK_MARK] = A_BOLD;
 
190
      CRT_colors[CHECK_TEXT] = A_NORMAL;
 
191
   } else {
 
192
      CRT_colors[RESET_COLOR] = A_NORMAL;
 
193
      CRT_colors[DEFAULT_COLOR] = A_NORMAL;
 
194
      CRT_colors[FUNCTION_BAR] = A_REVERSE;
 
195
      CRT_colors[FUNCTION_KEY] = A_NORMAL;
 
196
      CRT_colors[PANEL_HEADER_FOCUS] = A_REVERSE;
 
197
      CRT_colors[PANEL_HEADER_UNFOCUS] = A_REVERSE;
 
198
      CRT_colors[PANEL_HIGHLIGHT_FOCUS] = A_REVERSE | A_BOLD;
 
199
      CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = A_REVERSE;
 
200
      CRT_colors[FAILED_SEARCH] = A_REVERSE | A_BOLD;
 
201
      CRT_colors[UPTIME] = A_BOLD;
 
202
      CRT_colors[LARGE_NUMBER] = A_BOLD;
 
203
      CRT_colors[METER_TEXT] = A_NORMAL;
 
204
      CRT_colors[METER_VALUE] = A_BOLD;
 
205
      CRT_colors[LED_COLOR] = A_NORMAL;
 
206
      CRT_colors[TASKS_RUNNING] = A_BOLD;
 
207
      CRT_colors[PROCESS] = A_NORMAL;
 
208
      CRT_colors[PROCESS_SHADOW] = A_DIM;
 
209
      CRT_colors[PROCESS_TAG] = A_BOLD;
 
210
      CRT_colors[PROCESS_MEGABYTES] = A_BOLD;
 
211
      CRT_colors[PROCESS_BASENAME] = A_BOLD;
 
212
      CRT_colors[PROCESS_TREE] = A_BOLD;
 
213
      CRT_colors[PROCESS_R_STATE] = A_BOLD;
 
214
      CRT_colors[PROCESS_HIGH_PRIORITY] = A_BOLD;
 
215
      CRT_colors[PROCESS_LOW_PRIORITY] = A_DIM;
 
216
      CRT_colors[BAR_BORDER] = A_BOLD;
 
217
      CRT_colors[BAR_SHADOW] = A_DIM;
 
218
      CRT_colors[SWAP] = A_BOLD;
 
219
      CRT_colors[GRAPH_1] = A_BOLD;
 
220
      CRT_colors[GRAPH_2] = A_BOLD;
 
221
      CRT_colors[GRAPH_3] = A_BOLD;
 
222
      CRT_colors[GRAPH_4] = A_NORMAL;
 
223
      CRT_colors[GRAPH_5] = A_NORMAL;
 
224
      CRT_colors[GRAPH_6] = A_NORMAL;
 
225
      CRT_colors[GRAPH_7] = A_DIM;
 
226
      CRT_colors[GRAPH_8] = A_DIM;
 
227
      CRT_colors[GRAPH_9] = A_DIM;
 
228
      CRT_colors[MEMORY_USED] = A_BOLD;
 
229
      CRT_colors[MEMORY_BUFFERS] = A_NORMAL;
 
230
      CRT_colors[MEMORY_CACHE] = A_NORMAL;
 
231
      CRT_colors[LOAD_AVERAGE_FIFTEEN] = A_DIM;
 
232
      CRT_colors[LOAD_AVERAGE_FIVE] = A_NORMAL;
 
233
      CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD;
 
234
      CRT_colors[LOAD] = A_BOLD;
 
235
      CRT_colors[HELP_BOLD] = A_BOLD;
 
236
      CRT_colors[CPU_NICE] = A_NORMAL;
 
237
      CRT_colors[CPU_NORMAL] = A_BOLD;
 
238
      CRT_colors[CPU_KERNEL] = A_BOLD;
 
239
      CRT_colors[CLOCK] = A_BOLD;
 
240
      CRT_colors[CHECK_BOX] = A_BOLD;
 
241
      CRT_colors[CHECK_MARK] = A_NORMAL;
 
242
      CRT_colors[CHECK_TEXT] = A_NORMAL;
 
243
   }
 
244
 
 
245
   mousemask(BUTTON1_PRESSED, NULL);
61
246
}
62
247
 
63
248
void CRT_done() {
75
260
 
76
261
void CRT_handleSIGSEGV(int signal) {
77
262
   CRT_done();
 
263
   fprintf(stderr, "Aborted. Please report bug at http://htop.sf.net");
78
264
   exit(1);
79
265
}
80
266