1 /*  cssed (c) Iago Rubio 2003, 2004 - A tiny CSS editor.
2  *
3  *  This program is free software; you can redistribute it and/or modify
4  *  it under the terms of the GNU General Public License as published by
5  *  the Free Software Foundation; either version 2 of the License, or
6  *  (at your option) any later version.
7  *
8  *  This program is distributed in the hope that it will be useful,
9  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  *  GNU Library General Public License for more details.
12  *
13  *  You should have received a copy of the GNU General Public License
14  *  along with this program; if not, write to the Free Software
15  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16  */
17 
18 /** @file cssedwindow.h
19  *  @brief Header file for the cssed main window object.
20  *  Those functions are the interface for cssed's ::_CssedWindow object.
21  */
22 
23 /** a macro to cast a pointer to ::CssedWindow */
24 #define CSSED_WINDOW(n) (CssedWindow*) n
25 
26 /** registry name for Windows */
27 #ifdef WIN32
28 #	define CSSED_REGISTRY_NAME "cssed-0.3.1"
29 #endif
30 
31 /** error domain to be used on GError */
32 #define CSSED_ERROR_DOMAIN  g_quark_from_string ("CSSED_ERROR")
33 
34 /** cssed related errors */
35 typedef enum {
36 	/** file error matches with  G_FILE_ERROR_EXIST */
37 	CSSED_FILE_ERROR_EXIST,
38 	/** file error matches with G_FILE_ERROR_ISDIR */
39 	CSSED_FILE_ERROR_ISDIR,
40 	/** file error matches with G_FILE_ERROR_ACCES */
41 	CSSED_FILE_ERROR_ACCES,
42 	/** file error matches with G_FILE_ERROR_NAMETOOLONG */
43 	CSSED_FILE_ERROR_NAMETOOLONG,
44 	/** file error matches with G_FILE_ERROR_NOENT */
45 	CSSED_FILE_ERROR_NOENT,
46 	/** file error matches with G_FILE_ERROR_NOTDIR */
47 	CSSED_FILE_ERROR_NOTDIR,
48 	/** file error matches with G_FILE_ERROR_NXIO */
49 	CSSED_FILE_ERROR_NXIO,
50 	/** file error matches with G_FILE_ERROR_NODEV */
51 	CSSED_FILE_ERROR_NODEV,
52 	/** file error matches with G_FILE_ERROR_ROFS */
53 	CSSED_FILE_ERROR_ROFS,
54 	/** file error matches with G_FILE_ERROR_TXTBSY */
55 	CSSED_FILE_ERROR_TXTBSY,
56 	/** file error matches with G_FILE_ERROR_FAULT */
57 	CSSED_FILE_ERROR_FAULT,
58 	/** file error matches with G_FILE_ERROR_LOOP */
59 	CSSED_FILE_ERROR_LOOP,
60 	/** file error matches with G_FILE_ERROR_NOSPC */
61 	CSSED_FILE_ERROR_NOSPC,
62 	/** file error matches with G_FILE_ERROR_NOMEM */
63 	CSSED_FILE_ERROR_NOMEM,
64 	/** file error matches with G_FILE_ERROR_MFILE */
65 	CSSED_FILE_ERROR_MFILE,
66 	/** file error matches with G_FILE_ERROR_NFILE */
67 	CSSED_FILE_ERROR_NFILE,
68 	/** file error matches with G_FILE_ERROR_BADF */
69 	CSSED_FILE_ERROR_BADF,
70 	/** file error matches with G_FILE_ERROR_INVAL */
71 	CSSED_FILE_ERROR_INVAL,
72 	/** file error matches with G_FILE_ERROR_PIPE */
73 	CSSED_FILE_ERROR_PIPE,
74 	/** file error matches with G_FILE_ERROR_AGAIN */
75 	CSSED_FILE_ERROR_AGAIN,
76 	/** file error matches with G_FILE_ERROR_INTR */
77 	CSSED_FILE_ERROR_INTR,
78 	/** file error matches with G_FILE_ERROR_IO */
79 	CSSED_FILE_ERROR_IO,
80 	/** file error matches with G_FILE_ERROR_PERM */
81 	CSSED_FILE_ERROR_PERM,
82 	/** file error matches with G_FILE_ERROR_FAILED */
83 	CSSED_FILE_ERROR_FAILED,
84 	/** this is not an error code it's just to know were the GFIleError matching ends */
85 	CSSED_FILE_ERROR_LAST,
86 	/**  the file is already opened onto cssed */
87 	CSSED_ERROR_FILE_IS_OPENED,
88 	/**  the file is not a regular file, may be a device or whatever */
89 	CSSED_ERROR_FILE_NOT_REGULAR, //
90 	/** NULL document have been passed or returned for sure programming error */
91 	CSSED_ERROR_DOC_IS_NULL //
92 } CssedError;
93 
94 /** @enum CssedEolMode cssed's end of line modes */
95 typedef enum {
96 	/** Windows end of line Carriage return / Line feed */
97 	EOL_MODE_CRLF,
98 	/** Mac end of line Carriage return */
99 	EOL_MODE_CR,
100 	/** Unix end of line Line feed */
101 	EOL_MODE_LF
102 } CssedEolMode;
103 
104 /** @enum CssedCodePage cssed's code pages */
105 typedef enum {
106 	/** Default code page */
107 	CSSED_CODEPAGE_DEFAULT,
108 	/** UTF8 code page */
109 	CSSED_CODEPAGE_UTF8,
110 	/** DBCS code page (Thai, Hangul) */
111 	CSSED_CODEPAGE_DBCS
112 } CssedCodePage;
113 
114 // those are opaque use only provided functions
115 /** @struct _CssedDoc.
116  *  @brief This object implements a cssed document. This is opaque and should be accessed with the functions provided in document.h. I should not be used in plugins or extensions and exists only in the scope of the main cssed instance.
117 It is here only for compatibility with older code.
118  */
119 /** @typedef CssedDoc.
120  *  @brief A utility data type for ::_CssedDoc structures.
121  */
122 typedef struct _CssedDoc CssedDoc;
123 
124 /** @struct _CssedWindow.
125  *  @brief This object represents the cssed main window object. This is opaque and should be accessed with the functions provided in cssedwindow.h
126  */
127 /** @typedef CssedWindow.
128  *  @brief A utility data type for ::_CssedWindow structures.
129  */
130 typedef struct _CssedWindow CssedWindow;
131 
132 /* *************************************************************************************************** */
133 #define CSSED_FILETYPE_DEFAULT CSSED_FILETYPE_TEXT
134 
135 /** @enum CssedFileTypeId list of recogniced file type identifiers */
136 typedef enum {
137 	/** internall use, never use it. */
138 	CSSED_FILETYPE_UNKNOW,
139 	/** The default file type, plain text */
140 	CSSED_FILETYPE_TEXT,
141 	/** not used ,but will be link insertion */
142 	CSSED_FILETYPE_BYNARY,
143 	/** core language */
144 	CSSED_FILETYPE_CSS,
145 	/** this is not just HTML but hypertext and includes ASP, JSP and PHP */
146 	CSSED_FILETYPE_HTML,
147 	/** This is standalon PHP not server side PHP (for sh-like scripts) */
148 	CSSED_FILETYPE_PHP,
149 	/** XML and SVG */
150 	CSSED_FILETYPE_XML,
151 	/** shell and bash scripts */
152 	CSSED_FILETYPE_SH,
153 	/** not just C but CPP */
154 	CSSED_FILETYPE_C,
155 	/** apache conf files */
156 	CSSED_FILETYPE_APACHE_CONF,
157 	/** mostly for emacs.el files (not ready) */
158 	CSSED_FILETYPE_LISP,
159 	/** perl scripts */
160 	CSSED_FILETYPE_PERL,
161 	/** python */
162 	CSSED_FILETYPE_PYTHON,
163 	/**  SQL (Ansi) */
164 	CSSED_FILETYPE_SQL,
165 	/** diff and patch files */
166 	CSSED_FILETYPE_DIFF,
167 	/** java */
168 	CSSED_FILETYPE_JAVA,
169 	/** javascript */
170 	CSSED_FILETYPE_JS,
171 	/** Makefiles */
172 	CSSED_FILETYPE_MAKE,
173 	/** APDL */
174 	CSSED_FILETYPE_APDL,
175 	/** AU3 */
176 	CSSED_FILETYPE_AU3,
177 	/** AVE */
178 	CSSED_FILETYPE_AVE,
179 	/** ADA */
180 	CSSED_FILETYPE_ADA,
181 	/** Assembler */
182 	CSSED_FILETYPE_ASM,
183 	/** ASN1 */
184 	CSSED_FILETYPE_ASN1,
185 	/** BAAN */
186 	CSSED_FILETYPE_BAAN,
187 	/** BASIC */
188 	CSSED_FILETYPE_BASIC,
189 	/** BULLANT */
190 	CSSED_FILETYPE_BULLANT,
191 	/** CLW */
192 	CSSED_FILETYPE_CLW,
193 	/** CAML */
194 	CSSED_FILETYPE_CAML,
195 	/** CRONTAB */
196 	CSSED_FILETYPE_CRONTAB,
197 	/** ESCRIPT */
198 	CSSED_FILETYPE_ESCRIPT,
199 	/** EIFFEL */
200 	CSSED_FILETYPE_EIFFEL,
201 	/** ERLANG */
202 	CSSED_FILETYPE_ERLANG,
203 	/** FORTH */
204 	CSSED_FILETYPE_FORTH,
205 	/** FORTRAN */
206 	CSSED_FILETYPE_FORTRAN,
207 	/** GUI4CLI */
208 	CSSED_FILETYPE_GUI4CLI,
209 	/** KIX */
210 	CSSED_FILETYPE_KIX,
211 	/** LOUT */
212 	CSSED_FILETYPE_LOUT,
213 	/** LUA */
214 	CSSED_FILETYPE_LUA,
215 	/** MMIXAL */
216 	CSSED_FILETYPE_MMIXAL,
217 	/** MPT */
218 	CSSED_FILETYPE_MPT,
219 	/** MSSQL */
220 	CSSED_FILETYPE_MSSQL,
221 	/** MATLAB */
222 	CSSED_FILETYPE_MATLAB,
223 	/** METAPOST */
224 	CSSED_FILETYPE_METAPOST,
225 	/** NSIS */
226 	CSSED_FILETYPE_NSIS,
227 	/** PureBasic */
228 	CSSED_FILETYPE_PB,
229 	/** POV */
230 	CSSED_FILETYPE_POV,
231 	/** PS */
232 	CSSED_FILETYPE_PS,
233 	/** PASCAL */
234 	CSSED_FILETYPE_PASCAL,
235 	/** RUBY */
236 	CSSED_FILETYPE_RUBY,
237 	/** SCRIPTOL */
238 	CSSED_FILETYPE_SCRIPTOL,
239 	/** SPECMAN */
240 	CSSED_FILETYPE_SPECMAN,
241 	/** TEX */
242 	CSSED_FILETYPE_TEX,
243 	/** VisualBasic */
244 	CSSED_FILETYPE_VB,
245 	/** VHDL */
246 	CSSED_FILETYPE_VHDL,
247 	/** VERILOG */
248 	CSSED_FILETYPE_VERILOG,
249 	/** YAML */
250 	CSSED_FILETYPE_YAML,
251 	// if you miss something here, just request  for inclusion
252 	/** Empty slot for user defined languages */
253 	CSSED_FILETYPE_USR,
254 	/** Empty slot for user defined languages */			// user defined file types
255 	CSSED_FILETYPE_USR1,
256 	/** Empty slot for user defined languages */
257 	CSSED_FILETYPE_USR2,
258 	/** Empty slot for user defined languages */
259 	CSSED_FILETYPE_USR3,
260 	/** Empty slot for user defined languages */
261 	CSSED_FILETYPE_USR4,
262 	/** Empty slot for user defined languages */
263 	CSSED_FILETYPE_USR5,
264 	/** Empty slot for user defined languages */
265 	CSSED_FILETYPE_USR6,
266 	/** Empty slot for user defined languages */
267 	CSSED_FILETYPE_USR7,
268 	/** Empty slot for user defined languages */
269 	CSSED_FILETYPE_USR8,
270 	/** Empty slot for user defined languages */
271 	CSSED_FILETYPE_USR9
272 } CssedFileTypeId;
273 
274 #define	CSSED_NUMFILETYPES	(CSSED_FILETYPE_USR9+1)
275 
276 
277