2 * encodings.h - this file is part of Geany, a fast and lightweight IDE
4 * Copyright 2005-2012 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
5 * Copyright 2006-2012 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 * Encoding conversion and Byte Order Mark (BOM) handling.
29 * Modified by the gedit Team, 2002. See the gedit AUTHORS file for a
30 * list of people on the gedit Team.
31 * See the gedit ChangeLog files for a list of changes.
34 /* Stolen from anjuta */
36 #ifndef GEANY_ENCODINGS_H
37 #define GEANY_ENCODINGS_H 1
39 #include "gtkcompat.h"
53 GEANY_ENCODING_GROUPS_MAX
57 /** Structure to represent an encoding to be used in Geany. */
60 /** The index of the encoding, must be one of GeanyEncodingIndex. */
62 /** Internally used member for grouping */
64 /** Internally used member for grouping */
65 GeanyEncodingGroup group
;
66 /** String representation of the encoding, e.g. "ISO-8859-3" */
68 /** Translatable and descriptive name of the encoding, e.g. "South European" */
73 const GeanyEncoding
* encodings_get_from_charset(const gchar
*charset
);
74 const GeanyEncoding
* encodings_get_from_index(gint idx
);
76 gchar
* encodings_to_string(const GeanyEncoding
* enc
);
77 const gchar
* encodings_get_charset(const GeanyEncoding
* enc
);
78 const gchar
* encodings_get_charset_from_index(gint idx
);
80 void encodings_select_radio_item(const gchar
*charset
);
82 void encodings_init(void);
83 void encodings_finalize(void);
85 GtkTreeStore
*encodings_encoding_store_new(gboolean has_detect
);
87 gint
encodings_encoding_store_get_encoding(GtkTreeStore
*store
, GtkTreeIter
*iter
);
89 gboolean
encodings_encoding_store_get_iter(GtkTreeStore
*store
, GtkTreeIter
*iter
, gint enc
);
91 void encodings_encoding_store_cell_data_func(GtkCellLayout
*cell_layout
, GtkCellRenderer
*cell
,
92 GtkTreeModel
*tree_model
, GtkTreeIter
*iter
, gpointer data
);
94 gchar
*encodings_convert_to_utf8(const gchar
*buffer
, gssize size
, gchar
**used_encoding
);
96 /* Converts a string from the given charset to UTF-8.
97 * If fast is set, no further checks are performed. */
98 gchar
*encodings_convert_to_utf8_from_charset(const gchar
*buffer
, gssize size
,
99 const gchar
*charset
, gboolean fast
);
101 gboolean
encodings_is_unicode_charset(const gchar
*string
);
103 gboolean
encodings_convert_to_utf8_auto(gchar
**buf
, gsize
*size
, const gchar
*forced_enc
,
104 gchar
**used_encoding
, gboolean
*has_bom
, gboolean
*partial
);
107 * The original versions of the following tables are taken from profterm
109 * Copyright (C) 2002 Red Hat, Inc.
113 * @enum GeanyEncodingIndex
114 * List of known and supported encodings.
118 GEANY_ENCODING_ISO_8859_1
,
119 GEANY_ENCODING_ISO_8859_2
,
120 GEANY_ENCODING_ISO_8859_3
,
121 GEANY_ENCODING_ISO_8859_4
,
122 GEANY_ENCODING_ISO_8859_5
,
123 GEANY_ENCODING_ISO_8859_6
,
124 GEANY_ENCODING_ISO_8859_7
,
125 GEANY_ENCODING_ISO_8859_8
,
126 GEANY_ENCODING_ISO_8859_8_I
,
127 GEANY_ENCODING_ISO_8859_9
,
128 GEANY_ENCODING_ISO_8859_10
,
129 GEANY_ENCODING_ISO_8859_13
,
130 GEANY_ENCODING_ISO_8859_14
,
131 GEANY_ENCODING_ISO_8859_15
,
132 GEANY_ENCODING_ISO_8859_16
,
134 GEANY_ENCODING_UTF_7
,
135 GEANY_ENCODING_UTF_8
,
136 GEANY_ENCODING_UTF_16LE
,
137 GEANY_ENCODING_UTF_16BE
,
138 GEANY_ENCODING_UCS_2LE
,
139 GEANY_ENCODING_UCS_2BE
,
140 GEANY_ENCODING_UTF_32LE
,
141 GEANY_ENCODING_UTF_32BE
,
143 GEANY_ENCODING_ARMSCII_8
,
145 GEANY_ENCODING_BIG5_HKSCS
,
146 GEANY_ENCODING_CP_866
,
148 GEANY_ENCODING_EUC_JP
,
149 GEANY_ENCODING_EUC_KR
,
150 GEANY_ENCODING_EUC_TW
,
152 GEANY_ENCODING_GB18030
,
153 GEANY_ENCODING_GB2312
,
155 GEANY_ENCODING_GEOSTD8
,
158 GEANY_ENCODING_IBM_850
,
159 GEANY_ENCODING_IBM_852
,
160 GEANY_ENCODING_IBM_855
,
161 GEANY_ENCODING_IBM_857
,
162 GEANY_ENCODING_IBM_862
,
163 GEANY_ENCODING_IBM_864
,
165 GEANY_ENCODING_ISO_2022_JP
,
166 GEANY_ENCODING_ISO_2022_KR
,
167 GEANY_ENCODING_ISO_IR_111
,
168 GEANY_ENCODING_JOHAB
,
169 GEANY_ENCODING_KOI8_R
,
170 GEANY_ENCODING_KOI8_U
,
172 GEANY_ENCODING_SHIFT_JIS
,
174 GEANY_ENCODING_TIS_620
,
176 GEANY_ENCODING_VISCII
,
178 GEANY_ENCODING_WINDOWS_1250
,
179 GEANY_ENCODING_WINDOWS_1251
,
180 GEANY_ENCODING_WINDOWS_1252
,
181 GEANY_ENCODING_WINDOWS_1253
,
182 GEANY_ENCODING_WINDOWS_1254
,
183 GEANY_ENCODING_WINDOWS_1255
,
184 GEANY_ENCODING_WINDOWS_1256
,
185 GEANY_ENCODING_WINDOWS_1257
,
186 GEANY_ENCODING_WINDOWS_1258
,
189 GEANY_ENCODING_CP_932
,
192 } GeanyEncodingIndex
;
195 extern GeanyEncoding encodings
[GEANY_ENCODINGS_MAX
];
198 GeanyEncodingIndex
encodings_scan_unicode_bom(const gchar
*string
, gsize len
, guint
*bom_len
);
200 GeanyEncodingIndex
encodings_get_idx_from_charset(const gchar
*charset
);
204 #endif /* GEANY_ENCODINGS_H */