1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
/***************************************************************************
* *
* _____ ____ *
* | __ \ / __ \ _ _ _____ *
* | | \ \ / / \_\ | | | | _ \ *
* | | \ \| | | | | | |_| | *
* | | | || | | | | | ___/ *
* | | / /| | __ | | | | _ \ *
* | |__/ / \ \__/ / | |___| | |_| | *
* |_____/ \____/ |_____|_|_____/ *
* *
* Wiimms source code library *
* *
***************************************************************************
* *
* Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> *
* *
***************************************************************************
* *
* This library is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt *
* *
***************************************************************************/
#ifndef DCLIB_GEN_UI_H
#define DCLIB_GEN_UI_H
#include "dclib-basics.h"
//
///////////////////////////////////////////////////////////////////////////////
/////////////// text controls ///////////////
///////////////////////////////////////////////////////////////////////////////
// \1 : the following text is only for the built in help
// \2 : the following text is only for the web site
// \3 : the following text is for both, built in help and web site
// \4 : replace by '<' for html tags on web site
// Only for tools and commands:
// \f : Text before: short help for lists
// Text behind: extended help for tool/command help
//
///////////////////////////////////////////////////////////////////////////////
/////////////// declarations ///////////////
///////////////////////////////////////////////////////////////////////////////
typedef enum enumType
{
//----- base types
T_END = 0x0001, // end of list
T_DEF_TOOL = 0x0002, // start of a new tool
T_DEF_CMD = 0x0004, // define a command
T_SEP_CMD = 0x0008, // define a command separator
T_DEF_OPT = 0x0010, // define an option
T_SEP_OPT = 0x0020, // define an option separator
T_GRP_BEG = 0x0040, // start option definitions for a group
T_CMD_BEG = 0x0080, // start option definitions for a command
T_CMD_OPT = 0x0100, // allowed option for command
T_COPY_CMD = 0x0200, // copy options of other command
T_COPY_GRP = 0x0400, // copy options of group
T_ALL_OPT = 0x0800, // allow all options
//----- option flags
F_OPT_COMMAND = 0x010000, // option is command specific
F_OPT_GLOBAL = 0x020000, // option is global
F_OPT_MULTIUSE = 0x040000, // multiple usage of option possible
F_OPT_PARAM = 0x080000, // option needs a parameter
F_OPT_OPTPARAM = 0x100000, // option accepts an optional parameter
F_SEPARATOR = 0x200000, // separator element
F_SUPERSEDE = 0x400000, // supersedes all other commands and options
F_IGNORE = 0x800000, // ignore on command 'HELP OPTIONS'
F_OPT_XPARAM = F_OPT_PARAM | F_OPT_OPTPARAM,
//----- global flags
F_HIDDEN = 0x1000000, // tool, command or option is hidden from help
F_DEPRECATED = 0x2000000, // command or option is depreacted
//----- option combinations
T_OPT_C = T_DEF_OPT | F_OPT_COMMAND,
T_OPT_CM = T_DEF_OPT | F_OPT_COMMAND | F_OPT_MULTIUSE,
T_OPT_CP = T_DEF_OPT | F_OPT_COMMAND | F_OPT_PARAM,
T_OPT_CMP = T_DEF_OPT | F_OPT_COMMAND | F_OPT_MULTIUSE | F_OPT_PARAM,
T_OPT_CO = T_DEF_OPT | F_OPT_COMMAND | F_OPT_OPTPARAM,
T_OPT_CMO = T_DEF_OPT | F_OPT_COMMAND | F_OPT_MULTIUSE | F_OPT_OPTPARAM,
T_OPT_G = T_DEF_OPT | F_OPT_GLOBAL,
T_OPT_GM = T_DEF_OPT | F_OPT_GLOBAL | F_OPT_MULTIUSE,
T_OPT_GP = T_DEF_OPT | F_OPT_GLOBAL | F_OPT_PARAM,
T_OPT_GMP = T_DEF_OPT | F_OPT_GLOBAL | F_OPT_MULTIUSE | F_OPT_PARAM,
T_OPT_GO = T_DEF_OPT | F_OPT_GLOBAL | F_OPT_OPTPARAM,
T_OPT_GMO = T_DEF_OPT | F_OPT_GLOBAL | F_OPT_MULTIUSE | F_OPT_OPTPARAM,
T_OPT_S = T_DEF_OPT | F_OPT_GLOBAL | F_SUPERSEDE,
T_COPT = T_CMD_OPT,
T_COPT_M = T_CMD_OPT | F_OPT_MULTIUSE,
//----- hidden options and commands (hide from help)
H_DEF_TOOL = F_HIDDEN | T_DEF_TOOL,
H_DEF_CMD = F_HIDDEN | T_DEF_CMD,
H_OPT_C = F_HIDDEN | T_OPT_C,
H_OPT_CM = F_HIDDEN | T_OPT_CM,
H_OPT_CP = F_HIDDEN | T_OPT_CP,
H_OPT_CMP = F_HIDDEN | T_OPT_CMP,
H_OPT_CO = F_HIDDEN | T_OPT_CO,
H_OPT_CMO = F_HIDDEN | T_OPT_CMO,
H_OPT_G = F_HIDDEN | T_OPT_G,
H_OPT_GM = F_HIDDEN | T_OPT_GM,
H_OPT_GP = F_HIDDEN | T_OPT_GP,
H_OPT_GMP = F_HIDDEN | T_OPT_GMP,
H_OPT_GO = F_HIDDEN | T_OPT_GO,
H_OPT_GMO = F_HIDDEN | T_OPT_GMO,
H_COPT = F_HIDDEN | T_COPT,
H_COPT_M = F_HIDDEN | T_COPT_M,
} enumType;
///////////////////////////////////////////////////////////////////////////////
typedef struct info_t
{
enumType type; // entry type
ccp c_name; // the C name
ccp namelist; // list of names
ccp param; // name of parameter
ccp help; // help text
int index; // calculated index
} info_t;
//
///////////////////////////////////////////////////////////////////////////////
/////////////// END ///////////////
///////////////////////////////////////////////////////////////////////////////
#endif // DCLIB_GEN_UI_H
|