1/*
2 *  rc.h -- declarations for configuration file processing
3 *
4 *  AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
5 *
6 *  This program is free software; you can redistribute it and/or
7 *  modify it under the terms of the GNU General Public License
8 *  as published by the Free Software Foundation; either version 2
9 *  of the License, or (at your option) any later version.
10 *
11 *  This program is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 *  GNU General Public License for more details.
15 *
16 *  You should have received a copy of the GNU General Public License
17 *  along with this program; if not, write to the Free Software
18 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21
22#define DIALOGRC ".dialogrc"
23#define VAR_LEN 30
24#define COMMENT_LEN 70
25
26/* Types of values */
27#define VAL_INT  0
28#define VAL_STR  1
29#define VAL_BOOL 2
30#define VAL_ATTR 3
31
32/* Type of line in configuration file */
33#define LINE_BLANK    2
34#define LINE_COMMENT  1
35#define LINE_OK       0
36#define LINE_ERROR   -1
37
38/* number of configuration variables */
39#define VAR_COUNT        (sizeof(vars) / sizeof(vars_st))
40
41/* check if character is white space */
42#define whitespace(c)    (c == ' ' || c == '\t')
43
44/* check if character is string quoting characters */
45#define isquote(c)       (c == '"' || c == '\'')
46
47/* get last character of string */
48#define lastch(str)      str[strlen(str)-1]
49
50/*
51 * Configuration variables
52 */
53typedef struct {
54  unsigned char      name[VAR_LEN];  /* name of configuration variable as in DIALOGRC */
55  void     *var;            /* address of actually variable to change */
56  int       type;           /* type of value */
57  unsigned char      comment[COMMENT_LEN];    /* comment to put in "rc" file */
58} vars_st;
59
60vars_st vars[] = {
61  {  "use_shadow",
62     &use_shadow,
63     VAL_BOOL,
64     "Shadow dialog boxes? This also turns on color."                        },
65
66  {  "use_colors",
67     &use_colors,
68     VAL_BOOL,
69     "Turn color support ON or OFF"                                          },
70
71  {  "screen_color",
72     color_table[0],
73     VAL_ATTR,
74     "Screen color"                                                          },
75
76  {  "shadow_color",
77     color_table[1],
78     VAL_ATTR,
79     "Shadow color"                                                          },
80
81  {  "dialog_color",
82     color_table[2],
83     VAL_ATTR,
84     "Dialog box color"                                                      },
85
86  {  "title_color",
87     color_table[3],
88     VAL_ATTR,
89     "Dialog box title color"                                                },
90
91  {  "border_color",
92     color_table[4],
93     VAL_ATTR,
94     "Dialog box border color"                                               },
95
96  {  "button_active_color",
97     color_table[5],
98     VAL_ATTR,
99     "Active button color"                                                   },
100
101  {  "button_inactive_color",
102     color_table[6],
103     VAL_ATTR,
104     "Inactive button color"                                                 },
105
106  {  "button_key_active_color",
107     color_table[7],
108     VAL_ATTR,
109     "Active button key color"                                               },
110
111  {  "button_key_inactive_color",
112     color_table[8],
113     VAL_ATTR,
114     "Inactive button key color"                                             },
115
116  {  "button_label_active_color",
117     color_table[9],
118     VAL_ATTR,
119     "Active button label color"                                             },
120
121  {  "button_label_inactive_color",
122     color_table[10],
123     VAL_ATTR,
124     "Inactive button label color"                                           },
125
126  {  "inputbox_color",
127     color_table[11],
128     VAL_ATTR,
129     "Input box color"                                                       },
130
131  {  "inputbox_border_color",
132     color_table[12],
133     VAL_ATTR,
134     "Input box border color"                                                },
135
136  {  "searchbox_color",
137     color_table[13],
138     VAL_ATTR,
139     "Search box color"                                                      },
140
141  {  "searchbox_title_color",
142     color_table[14],
143     VAL_ATTR,
144     "Search box title color"                                                },
145
146  {  "searchbox_border_color",
147     color_table[15],
148     VAL_ATTR,
149     "Search box border color"                                               },
150
151  {  "position_indicator_color",
152     color_table[16],
153     VAL_ATTR,
154     "File position indicator color"                                         },
155
156  {  "menubox_color",
157     color_table[17],
158     VAL_ATTR,
159     "Menu box color"                                                        },
160
161  {  "menubox_border_color",
162     color_table[18],
163     VAL_ATTR,
164     "Menu box border color"                                                 },
165
166  {  "item_color",
167     color_table[19],
168     VAL_ATTR,
169     "Item color"                                                            },
170
171  {  "item_selected_color",
172     color_table[20],
173     VAL_ATTR,
174     "Selected item color"                                                   },
175
176  {  "tag_color",
177     color_table[21],
178     VAL_ATTR,
179     "Tag color"                                                             },
180
181  {  "tag_selected_color",
182     color_table[22],
183     VAL_ATTR,
184     "Selected tag color"                                                    },
185
186  {  "tag_key_color",
187     color_table[23],
188     VAL_ATTR,
189     "Tag key color"                                                         },
190
191  {  "tag_key_selected_color",
192     color_table[24],
193     VAL_ATTR,
194     "Selected tag key color"                                                },
195
196  {  "check_color",
197     color_table[25],
198     VAL_ATTR,
199     "Check box color"                                                       },
200
201  {  "check_selected_color",
202     color_table[26],
203     VAL_ATTR,
204     "Selected check box color"                                              },
205
206  {  "uarrow_color",
207     color_table[27],
208     VAL_ATTR,
209     "Up arrow color"                                                        },
210
211  {  "darrow_color",
212     color_table[28],
213     VAL_ATTR,
214     "Down arrow color"                                                      }
215};    /* vars */
216
217
218
219/*
220 * Routines to process configuration file
221 */
222int parse_rc(void);
223