SF.net SVN: geany: [600] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sat Jul 22 01:29:34 UTC 2006
Revision: 600
Author: eht16
Date: 2006-07-21 18:29:10 -0700 (Fri, 21 Jul 2006)
ViewCVS: http://svn.sourceforge.net/geany/?rev=600&view=rev
Log Message:
-----------
Added Unicode BOM detection.
Added "Reload as" menu item to force opening a file with a specified encoding(both were patches from Stefan Oltmanns).
Modified Paths:
--------------
trunk/ChangeLog
trunk/geany.glade
trunk/src/callbacks.c
trunk/src/dialogs.c
trunk/src/document.c
trunk/src/encodings.c
trunk/src/geany.h
trunk/src/interface.c
trunk/src/keyfile.c
trunk/src/main.c
trunk/src/sci_cb.c
trunk/src/utils.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/ChangeLog 2006-07-22 01:29:10 UTC (rev 600)
@@ -1,3 +1,13 @@
+2006-07-22 Enrico Tröger <enrico.troeger at uvena.de>
+
+ * src/callbacks.c, src/utils.c, src/document.c, src/encodings.c,
+ src/geany.h, src/main.c, src/dialogs.c, geany.glade,
+ src/interface.c, src/sci_cb.c, src/keyfile.c:
+ Added Unicode BOM detection.
+ Added "Reload as" menu item to force opening a file with a specified
+ encoding(both were patches from Stefan Oltmanns).
+
+
2006-07-21 Nick Treleaven <nick.treleaven at btinternet.com>
* src/dialogs.c: Prevent using Find in files for unnamed files.
@@ -7,7 +17,7 @@
* src/geany.h, src/main.c, src/callbacks.c:
Introduced app->ignore_callback to ignore callback actions when
- changing the state of GUI elements(as a workaround).
+ changing the state of GUI elements.
* geany.glade, src/interface.c, src/main.c, src/callbacks.c,
src/utils.c, src/prefs.c, src/keybindings.c:
Added menu item View->Show Sidebar and improved code around it.
Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/geany.glade 2006-07-22 01:29:10 UTC (rev 600)
@@ -57,7 +57,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image857">
+ <widget class="GtkImage" id="image881">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -150,7 +150,7 @@
<signal name="activate" handler="on_save_all1_activate" last_modification_time="Thu, 02 Jun 2005 14:15:30 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image858">
+ <widget class="GtkImage" id="image882">
<property name="visible">True</property>
<property name="stock">gtk-save</property>
<property name="icon_size">1</property>
@@ -188,6 +188,27 @@
</child>
<child>
+ <widget class="GtkMenuItem" id="reload_as1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Reload as</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_reload_as_activate" last_modification_time="Fri, 21 Jul 2006 18:00:16 GMT"/>
+
+ <child>
+ <widget class="GtkMenu" id="reload_as1_menu">
+
+ <child>
+ <widget class="GtkMenuItem" id="invisible7">
+ <property name="label" translatable="yes">invisible</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
<widget class="GtkSeparatorMenuItem" id="separator24">
<property name="visible">True</property>
</widget>
@@ -227,7 +248,7 @@
<signal name="activate" handler="on_close_all1_activate" last_modification_time="Thu, 02 Jun 2005 14:15:30 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image859">
+ <widget class="GtkImage" id="image883">
<property name="visible">True</property>
<property name="stock">gtk-close</property>
<property name="icon_size">1</property>
@@ -358,7 +379,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image860">
+ <widget class="GtkImage" id="image884">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -390,7 +411,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image861">
+ <widget class="GtkImage" id="image885">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -568,7 +589,7 @@
<signal name="activate" handler="on_replace1_activate" last_modification_time="Sun, 23 Oct 2005 13:22:36 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image862">
+ <widget class="GtkImage" id="image886">
<property name="visible">True</property>
<property name="stock">gtk-find-and-replace</property>
<property name="icon_size">1</property>
@@ -610,7 +631,7 @@
<signal name="activate" handler="on_go_to_line1_activate" last_modification_time="Tue, 23 May 2006 17:10:49 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image863">
+ <widget class="GtkImage" id="image887">
<property name="visible">True</property>
<property name="stock">gtk-jump-to</property>
<property name="icon_size">1</property>
@@ -645,7 +666,7 @@
<signal name="activate" handler="on_change_font1_activate" last_modification_time="Fri, 22 Apr 2005 18:58:45 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image864">
+ <widget class="GtkImage" id="image888">
<property name="visible">True</property>
<property name="stock">gtk-select-font</property>
<property name="icon_size">1</property>
@@ -667,7 +688,7 @@
<signal name="activate" handler="on_show_color_chooser1_activate" last_modification_time="Wed, 22 Jun 2005 18:10:21 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image865">
+ <widget class="GtkImage" id="image889">
<property name="visible">True</property>
<property name="stock">gtk-select-color</property>
<property name="icon_size">1</property>
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/callbacks.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -519,7 +519,7 @@
("Are you sure you want to reload '%s'?\nAny unsaved changes will be lost."),
basename))
{
- document_reload_file(idx);
+ document_reload_file(idx, NULL);
}
g_free(basename);
@@ -840,7 +840,7 @@
{
if (g_file_test((gchar*) flist->data, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK))
{
- document_open_file(-1, (gchar*) flist->data, 0, ro, ft);
+ document_open_file(-1, (gchar*) flist->data, 0, ro, ft, NULL);
}
}
else
@@ -2489,7 +2489,7 @@
if (locale_filename == NULL) locale_filename = g_strdup((gchar*) user_data);
- document_open_file(-1, locale_filename, 0, FALSE, NULL);
+ document_open_file(-1, locale_filename, 0, FALSE, NULL, NULL);
g_free(locale_filename);
}
@@ -2578,6 +2578,29 @@
void
+on_reload_as_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ gint idx = document_get_cur_idx();
+ gchar *basename;
+ guint i = GPOINTER_TO_INT(user_data);
+
+ if (idx < 0 || ! doc_list[idx].is_valid || doc_list[idx].file_name == NULL ||
+ i < 0 || i >= GEANY_ENCODINGS_MAX || encodings[i].charset == NULL)
+ return;
+
+ basename = g_path_get_basename(doc_list[idx].file_name);
+ if (dialogs_show_question(_
+ ("Are you sure you want to reload '%s'?\nAny unsaved changes will be lost."),
+ basename))
+ {
+ document_reload_file(idx, encodings[i].charset);
+ utils_update_statusbar(idx, -1);
+ }
+ g_free(basename);
+}
+
+void
on_print1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
@@ -2608,5 +2631,3 @@
app->sidebar_visible = ! app->sidebar_visible;
utils_treeviews_showhide(TRUE);
}
-
-
Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/dialogs.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -1394,7 +1394,7 @@
void dialogs_show_file_properties(gint idx)
{
GtkWidget *dialog, *label, *table, *hbox, *image, *perm_table, *check;
- gchar *file_size, *title, *base_name, *time_changed, *time_modified, *time_accessed;
+ gchar *file_size, *title, *base_name, *time_changed, *time_modified, *time_accessed, *enctext;
#if defined(HAVE_SYS_STAT_H) && defined(HAVE_SYS_TYPES_H)
struct stat st;
off_t filesize;
@@ -1548,7 +1548,13 @@
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0);
- label = gtk_label_new(doc_list[idx].encoding);
+ enctext = g_strdup_printf("%s %s",
+ doc_list[idx].encoding,
+ (utils_is_unicode_charset(doc_list[idx].encoding)) ? ((doc_list[idx].unicode_bom) ? _("(with BOM)") : _("(without BOM)")) : "");
+
+ label = gtk_label_new(enctext);
+ g_free(enctext);
+
gtk_table_attach(GTK_TABLE(table), label, 1, 2, 4, 5,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/document.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -193,6 +193,7 @@
doc_list[i].file_type = NULL;
doc_list[i].tm_file = NULL;
doc_list[i].encoding = NULL;
+ doc_list[i].unicode_bom = FALSE;
doc_list[i].sci = NULL;
}
}
@@ -207,9 +208,13 @@
gchar *title, *fname;
GtkTreeIter iter;
gint new_idx = document_get_new_idx();
- document *this = &(doc_list[new_idx]);
+ document *this;
gint tabnum;
+ if (new_idx == -1) return -1;
+
+ this = &(doc_list[new_idx]);
+
/* SCI - Code */
sci = SCINTILLA(scintilla_new());
scintilla_set_id(sci, new_idx);
@@ -314,6 +319,7 @@
doc_list[idx].file_name = NULL;
doc_list[idx].file_type = NULL;
doc_list[idx].encoding = NULL;
+ doc_list[idx].unicode_bom = FALSE;
doc_list[idx].tm_file = NULL;
if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)) == 0)
{
@@ -340,6 +346,12 @@
gint idx = document_create_new_sci(NULL);
gchar *template = document_prepare_template(ft);
+ if (idx == -1)
+ {
+ dialogs_show_file_open_error();
+ return;
+ }
+
sci_clear_all(doc_list[idx].sci);
sci_set_text(doc_list[idx].sci, template);
g_free(template);
@@ -373,12 +385,14 @@
* idx and set the cursor to position 0. In this case, filename should be NULL
* It returns the idx of the opened file or -1 if an error occurred.
*/
-int document_open_file(gint idx, const gchar *filename, gint pos, gboolean readonly, filetype *ft)
+int document_open_file(gint idx, const gchar *filename, gint pos, gboolean readonly, filetype *ft,
+ const gchar *forced_enc)
{
gint editor_mode;
gsize size;
gboolean reload = (idx == -1) ? FALSE : TRUE;
struct stat st;
+ gboolean bom = FALSE;
gchar *enc = NULL;
gchar *utf8_filename = NULL;
gchar *locale_filename = NULL;
@@ -452,21 +466,30 @@
}
/* Determine character encoding and convert to utf-8*/
- if (size > 0)
- {
- if (g_utf8_validate(data, size, NULL))
+ if (reload && forced_enc != NULL)
+ { // reload file with specified encoding
+ if (utils_strcmp(forced_enc, "UTF-8"))
{
- enc = g_strdup("UTF-8");
+ if (! g_utf8_validate(data, size, NULL))
+ {
+ msgwin_status_add(_("The file \"%s\" is not valid %s."), utf8_filename, "UTF-8");
+ utils_beep();
+ g_free(data);
+ g_free(utf8_filename);
+ g_free(locale_filename);
+ return -1;
+ }
+ else
+ {
+ bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8");
+ }
}
else
{
- gchar *converted_text = utils_convert_to_utf8(data, size, &enc);
-
+ gchar *converted_text = utils_convert_to_utf8_from_charset(data, size, forced_enc);
if (converted_text == NULL)
{
- msgwin_status_add(
- _("The file \"%s\" does not look like a text file or the file encoding is not supported."),
- utf8_filename);
+ msgwin_status_add(_("The file \"%s\" is not valid %s."), utf8_filename, forced_enc);
utils_beep();
g_free(data);
g_free(utf8_filename);
@@ -478,15 +501,82 @@
g_free(data);
data = (void*)converted_text;
size = strlen(converted_text);
+ /// TODO should it not be UTF-* ?
+ bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8");
}
}
}
+ else if (size > 0)
+ { // the usual way to detect encoding and convert to UTF-8
+ if (size >= 4)
+ {
+ enc = utils_scan_unicode_bom(data);
+ }
+ if (enc != NULL)
+ {
+ bom = TRUE;
+ if (enc[4] != '8') // the BOM indicated something else than UTF-8
+ {
+ gchar *converted_text = utils_convert_to_utf8_from_charset(data, size, enc);
+ if (converted_text == NULL)
+ {
+ g_free(enc);
+ enc = NULL;
+ bom = FALSE;
+ }
+ else
+ {
+ g_free(data);
+ data = (void*)converted_text;
+ size = strlen(converted_text);
+ }
+ }
+ }
+ else
+ {
+ if (g_utf8_validate(data, size, NULL))
+ {
+ enc = g_strdup("UTF-8");
+ }
+ else
+ {
+ gchar *converted_text = utils_convert_to_utf8(data, size, &enc);
+
+ if (converted_text == NULL)
+ {
+ msgwin_status_add(
+ _("The file \"%s\" does not look like a text file or the file encoding is not supported."),
+ utf8_filename);
+ utils_beep();
+ g_free(data);
+ g_free(utf8_filename);
+ g_free(locale_filename);
+ return -1;
+ }
+ else
+ {
+ g_free(data);
+ data = (void*)converted_text;
+ size = strlen(converted_text);
+ }
+ }
+ }
+ }
else
{
enc = g_strdup("UTF-8");
}
+ if (bom)
+ {
+ gchar *data_without_bom;
+ data_without_bom = g_strdup(data + 3);
+ g_free(data);
+ data = data_without_bom;
+ }
+
if (! reload) idx = document_create_new_sci(utf8_filename);
+ if (idx == -1) return -1; // really should not happen
// set editor mode and add the text to the ScintillaObject
sci_set_text(doc_list[idx].sci, data); // NULL terminated data; avoids Unsaved
@@ -500,7 +590,8 @@
doc_list[idx].mtime = st.st_mtime;
doc_list[idx].changed = FALSE;
doc_list[idx].file_name = g_strdup(utf8_filename);
- doc_list[idx].encoding = enc;
+ doc_list[idx].encoding = g_strdup(enc);
+ doc_list[idx].unicode_bom = bom;
sci_goto_pos(doc_list[idx].sci, pos, TRUE);
@@ -565,16 +656,17 @@
}
-int document_reload_file(gint idx)
+gint document_reload_file(gint idx, const gchar *forced_enc)
{
gint pos = 0;
+
if (idx < 0 || ! doc_list[idx].is_valid)
return -1;
// try to set the cursor to the position before reloading
pos = sci_get_current_position(doc_list[idx].sci);
return document_open_file(idx, NULL, pos, doc_list[idx].readonly,
- doc_list[idx].file_type);
+ doc_list[idx].file_type, forced_enc);
}
@@ -586,7 +678,7 @@
gint bytes_written, len;
gchar *locale_filename = NULL;
- if (idx == -1) return;
+ if (idx == -1 || ! doc_list[idx].changed) return;
if (doc_list[idx].file_name == NULL)
{
@@ -605,24 +697,37 @@
sci_convert_eols(doc_list[idx].sci, sci_get_eol_mode(doc_list[idx].sci));
len = sci_get_length(doc_list[idx].sci) + 1;
- data = (gchar*) g_malloc(len);
- sci_get_text(doc_list[idx].sci, len, data);
+ if (doc_list[idx].unicode_bom && utils_is_unicode_charset(doc_list[idx].encoding))
+ {
+ data = (gchar*) g_malloc(len + 4); // 3 chars for BOM, 1 for \0
+ data[0] = 0xef;
+ data[1] = 0xbb;
+ data[2] = 0xbf;
+ sci_get_text(doc_list[idx].sci, len, data + 3);
+ len += 3;
+ }
+ else
+ {
+ data = (gchar*) g_malloc(len + 1);
+ sci_get_text(doc_list[idx].sci, len, data);
+ }
- // save in original encoding , skip when it is already UTF-8)
+ // save in original encoding, skip when it is already UTF-8
if (doc_list[idx].encoding != NULL && ! utils_strcmp(doc_list[idx].encoding, "UTF-8"))
{
GError *conv_error = NULL;
gchar* conv_file_contents = NULL;
+ gsize conv_len;
// try to convert it from UTF-8 to original encoding
- conv_file_contents = g_convert(data, len-1, doc_list[idx].encoding, "UTF-8",
- NULL, NULL, &conv_error);
+ conv_file_contents = g_convert(data, len, doc_list[idx].encoding, "UTF-8",
+ NULL, &conv_len, &conv_error);
if (conv_error != NULL)
{
dialogs_show_error(
- _("An error occurred while converting the file from UTF-8 in \"%s\". The file remains unsaved."
- "\nError message: %s\n"),
+ _("An error occurred while converting the file from UTF-8 in \"%s\". The file remains unsaved."
+ "\nError message: %s\n"),
doc_list[idx].encoding, conv_error->message);
geany_debug("encoding error: %s)", conv_error->message);
g_error_free(conv_error);
@@ -633,10 +738,13 @@
{
g_free(data);
data = conv_file_contents;
- len = strlen(conv_file_contents);
+ len = conv_len;
}
}
+ // len is too long and so 0x00 is written at the end which is not good w/o BOM
+ len--;
+
locale_filename = g_locale_from_utf8(doc_list[idx].file_name, -1, NULL, NULL, NULL);
fp = fopen(locale_filename, "w");
if (fp == NULL)
@@ -652,7 +760,6 @@
if (sci_get_eol_mode(doc_list[idx].sci) == SC_EOL_CRLF) sci_convert_eols(doc_list[idx].sci, SC_EOL_CRLF);
#endif
- len = strlen(data);
bytes_written = fwrite(data, sizeof (gchar), len, fp);
fclose (fp);
@@ -799,7 +906,7 @@
else
sci_goto_pos(doc_list[idx].sci, selection_start, TRUE);
- search_pos = document_find_text(idx, find_text, flags, search_backwards);
+ search_pos = document_find_text(idx, find_text, flags, search_backwards);
// return if the original selected text did not match (at the start of the selection)
if (search_pos != selection_start) return;
Modified: trunk/src/encodings.c
===================================================================
--- trunk/src/encodings.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/encodings.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -91,10 +91,14 @@
fill(7, ASIAN, GEANY_ENCODING_VISCII, "VISCII", _("Vietnamese"));
fill(8, ASIAN, GEANY_ENCODING_WINDOWS_1258, "WINDOWS-1258", _("Vietnamese"));
- fill(0, UNICODE, GEANY_ENCODING_UTF_8, "UTF-8", _("Unicode"));
- fill(1, UNICODE, GEANY_ENCODING_UTF_16, "UTF-16", _("Unicode"));
- fill(2, UNICODE, GEANY_ENCODING_UCS_2, "UCS-2", _("Unicode"));
- fill(3, UNICODE, GEANY_ENCODING_UCS_4, "UCS-4", _("Unicode"));
+ fill(0, UNICODE, GEANY_ENCODING_UTF_7, "UTF-7", _("Unicode"));
+ fill(1, UNICODE, GEANY_ENCODING_UTF_8, "UTF-8", _("Unicode"));
+ fill(2, UNICODE, GEANY_ENCODING_UTF_16LE, "UTF-16LE", _("Unicode"));
+ fill(3, UNICODE, GEANY_ENCODING_UTF_16BE, "UTF-16BE", _("Unicode"));
+ fill(4, UNICODE, GEANY_ENCODING_UCS_2LE, "UCS-2LE", _("Unicode"));
+ fill(5, UNICODE, GEANY_ENCODING_UCS_2BE, "UCS-2BE", _("Unicode"));
+ fill(6, UNICODE, GEANY_ENCODING_UTF_32LE, "UTF-32LE", _("Unicode"));
+ fill(7, UNICODE, GEANY_ENCODING_UTF_32BE, "UTF-32BE", _("Unicode"));
fill(0, EASTASIAN, GEANY_ENCODING_GB18030, "GB18030", _("Chinese Simplified"));
fill(1, EASTASIAN, GEANY_ENCODING_GB2312, "GB2312", _("Chinese Simplified"));
@@ -160,85 +164,92 @@
void encodings_init(void)
{
- GtkWidget *item, *menu, *submenu, *menu_westeuro, *menu_easteuro, *menu_eastasian, *menu_asian,
+ GtkWidget *item, *menu[2], *submenu, *menu_westeuro, *menu_easteuro, *menu_eastasian, *menu_asian,
*menu_utf8, *menu_middleeast, *item_westeuro, *item_easteuro, *item_eastasian,
*item_asian, *item_utf8, *item_middleeast;
+ GCallback cb_func[2];
gchar *label;
- guint i, j, order, group_size;
+ guint i, j, k, order, group_size;
init_encodings();
// create encodings submenu in document menu
- menu = lookup_widget(app->window, "set_encoding1_menu");
+ menu[0] = lookup_widget(app->window, "set_encoding1_menu");
+ menu[1] = lookup_widget(app->window, "menu_reload_as1_menu");
+ cb_func[0] = G_CALLBACK(on_encoding_change);
+ cb_func[1] = G_CALLBACK(on_reload_as_activate);
- menu_westeuro = gtk_menu_new();
- item_westeuro = gtk_menu_item_new_with_mnemonic(_("_West European"));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_westeuro), menu_westeuro);
- gtk_container_add(GTK_CONTAINER(menu), item_westeuro);
- gtk_widget_show_all(item_westeuro);
+ for (k = 0; k < 2; k++)
+ {
+ menu_westeuro = gtk_menu_new();
+ item_westeuro = gtk_menu_item_new_with_mnemonic(_("_West European"));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_westeuro), menu_westeuro);
+ gtk_container_add(GTK_CONTAINER(menu[k]), item_westeuro);
+ gtk_widget_show_all(item_westeuro);
- menu_easteuro = gtk_menu_new();
- item_easteuro = gtk_menu_item_new_with_mnemonic(_("_East European"));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_easteuro), menu_easteuro);
- gtk_container_add(GTK_CONTAINER(menu), item_easteuro);
- gtk_widget_show_all(item_easteuro);
+ menu_easteuro = gtk_menu_new();
+ item_easteuro = gtk_menu_item_new_with_mnemonic(_("_East European"));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_easteuro), menu_easteuro);
+ gtk_container_add(GTK_CONTAINER(menu[k]), item_easteuro);
+ gtk_widget_show_all(item_easteuro);
- menu_eastasian = gtk_menu_new();
- item_eastasian = gtk_menu_item_new_with_mnemonic(_("East _Asian"));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_eastasian), menu_eastasian);
- gtk_container_add(GTK_CONTAINER(menu), item_eastasian);
- gtk_widget_show_all(item_eastasian);
+ menu_eastasian = gtk_menu_new();
+ item_eastasian = gtk_menu_item_new_with_mnemonic(_("East _Asian"));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_eastasian), menu_eastasian);
+ gtk_container_add(GTK_CONTAINER(menu[k]), item_eastasian);
+ gtk_widget_show_all(item_eastasian);
- menu_asian = gtk_menu_new();
- item_asian = gtk_menu_item_new_with_mnemonic(_("_SE & SW Asian"));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_asian), menu_asian);
- gtk_container_add(GTK_CONTAINER(menu), item_asian);
- gtk_widget_show_all(item_asian);
+ menu_asian = gtk_menu_new();
+ item_asian = gtk_menu_item_new_with_mnemonic(_("_SE & SW Asian"));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_asian), menu_asian);
+ gtk_container_add(GTK_CONTAINER(menu[k]), item_asian);
+ gtk_widget_show_all(item_asian);
- menu_middleeast = gtk_menu_new();
- item_middleeast = gtk_menu_item_new_with_mnemonic(_("_Middle Eastern"));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_middleeast), menu_middleeast);
- gtk_container_add(GTK_CONTAINER(menu), item_middleeast);
- gtk_widget_show_all(item_middleeast);
+ menu_middleeast = gtk_menu_new();
+ item_middleeast = gtk_menu_item_new_with_mnemonic(_("_Middle Eastern"));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_middleeast), menu_middleeast);
+ gtk_container_add(GTK_CONTAINER(menu[k]), item_middleeast);
+ gtk_widget_show_all(item_middleeast);
- menu_utf8 = gtk_menu_new();
- item_utf8 = gtk_menu_item_new_with_mnemonic(_("_Unicode"));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_utf8), menu_utf8);
- gtk_container_add(GTK_CONTAINER(menu), item_utf8);
- gtk_widget_show_all(item_utf8);
+ menu_utf8 = gtk_menu_new();
+ item_utf8 = gtk_menu_item_new_with_mnemonic(_("_Unicode"));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item_utf8), menu_utf8);
+ gtk_container_add(GTK_CONTAINER(menu[k]), item_utf8);
+ gtk_widget_show_all(item_utf8);
- /// TODO can it be optimized? ATM 1583 runs at line 233
- for (i = 0; i < GEANY_ENCODING_GROUPS_MAX - 1; i++)
- {
- order = 0;
- switch (i)
+ /// TODO can it be optimized? ATM 3782 runs at line 239
+ for (i = 0; i < GEANY_ENCODING_GROUPS_MAX; i++)
{
- case WESTEUROPEAN: submenu = menu_westeuro; group_size = 9; break;
- case EASTEUROPEAN: submenu = menu_easteuro; group_size = 14; break;
- case EASTASIAN: submenu = menu_eastasian; group_size = 14; break;
- case ASIAN: submenu = menu_asian; group_size = 9; break;
- case MIDDLEEASTERN: submenu = menu_middleeast; group_size = 7; break;
- case UNICODE: submenu = menu_utf8; group_size = 4; break;
- default: submenu = menu; group_size = 0;
- }
+ order = 0;
+ switch (i)
+ {
+ case WESTEUROPEAN: submenu = menu_westeuro; group_size = 9; break;
+ case EASTEUROPEAN: submenu = menu_easteuro; group_size = 14; break;
+ case EASTASIAN: submenu = menu_eastasian; group_size = 14; break;
+ case ASIAN: submenu = menu_asian; group_size = 9; break;
+ case MIDDLEEASTERN: submenu = menu_middleeast; group_size = 7; break;
+ case UNICODE: submenu = menu_utf8; group_size = 8; break;
+ default: submenu = menu[k]; group_size = 0;
+ }
- while (order < group_size) // the biggest group has 13 elements
- {
- for (j = 0; j < GEANY_ENCODINGS_MAX; j++)
+ while (order < group_size) // the biggest group has 13 elements
{
- if (encodings[j].group == i && encodings[j].order == order)
+ for (j = 0; j < GEANY_ENCODINGS_MAX; j++)
{
- label = encodings_to_string(&encodings[j]);
- item = gtk_menu_item_new_with_label(label);
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(submenu), item);
- g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_encoding_change),
- GINT_TO_POINTER(encodings[j].idx));
- g_free(label);
- break;
+ if (encodings[j].group == i && encodings[j].order == order)
+ {
+ label = encodings_to_string(&encodings[j]);
+ item = gtk_menu_item_new_with_label(label);
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(submenu), item);
+ g_signal_connect((gpointer) item, "activate",
+ cb_func[k], GINT_TO_POINTER(encodings[j].idx));
+ g_free(label);
+ break;
+ }
}
+ order++;
}
- order++;
}
}
}
Modified: trunk/src/geany.h
===================================================================
--- trunk/src/geany.h 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/geany.h 2006-07-22 01:29:10 UTC (rev 600)
@@ -97,6 +97,7 @@
// the filename is encoded in UTF-8, but every GLibC function expect the locale representation
gchar *file_name;
gchar *encoding;
+ gboolean unicode_bom;
filetype *file_type;
TMWorkObject *tm_file;
ScintillaObject *sci;
@@ -226,7 +227,7 @@
GtkWidget *redo_items[3];
GtkWidget *undo_items[3];
GtkWidget *save_buttons[2];
- GtkWidget *sensitive_buttons[33];
+ GtkWidget *sensitive_buttons[34];
GtkWidget *open_colorsel;
GtkWidget *open_fontsel;
GtkWidget *open_filesel;
Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/interface.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -37,7 +37,7 @@
GtkWidget *menuitem1_menu;
GtkWidget *menu_new1;
GtkWidget *menu_new_with_template1;
- GtkWidget *image857;
+ GtkWidget *image956;
GtkWidget *menu_new_with_template1_menu;
GtkWidget *invisible2;
GtkWidget *separator12;
@@ -49,8 +49,13 @@
GtkWidget *menu_save1;
GtkWidget *menu_save_as1;
GtkWidget *menu_save_all1;
- GtkWidget *image858;
- GtkWidget *revert1;
+ GtkWidget *image957;
+ GtkWidget *menu_reload1;
+ GtkWidget *image958;
+ GtkWidget *menu_reload_as1;
+ GtkWidget *image959;
+ GtkWidget *menu_reload_as1_menu;
+ GtkWidget *invisible7;
GtkWidget *separator21;
GtkWidget *preferences2;
GtkWidget *separator24;
@@ -58,7 +63,7 @@
GtkWidget *separator14;
GtkWidget *menu_close1;
GtkWidget *menu_close_all1;
- GtkWidget *image859;
+ GtkWidget *image960;
GtkWidget *menu_separatormenuitem1;
GtkWidget *menu_quit1;
GtkWidget *edit1;
@@ -74,11 +79,11 @@
GtkWidget *menu_select_all1;
GtkWidget *separator25;
GtkWidget *insert_include2;
- GtkWidget *image860;
+ GtkWidget *image961;
GtkWidget *insert_include2_menu;
GtkWidget *invisible4;
GtkWidget *add_comments1;
- GtkWidget *image861;
+ GtkWidget *image962;
GtkWidget *add_comments1_menu;
GtkWidget *menu_add_changelog_entry1;
GtkWidget *insert_file_header1;
@@ -99,18 +104,18 @@
GtkWidget *find_next1;
GtkWidget *find_previous1;
GtkWidget *replace1;
- GtkWidget *image862;
+ GtkWidget *image963;
GtkWidget *separator27;
GtkWidget *find_in_files1;
GtkWidget *separator11;
GtkWidget *go_to_line1;
- GtkWidget *image863;
+ GtkWidget *image964;
GtkWidget *menuitem3;
GtkWidget *menuitem3_menu;
GtkWidget *menu_change_font1;
- GtkWidget *image864;
+ GtkWidget *image965;
GtkWidget *menu_choose_color1;
- GtkWidget *image865;
+ GtkWidget *image966;
GtkWidget *menu_separator4;
GtkWidget *menu_fullscreen1;
GtkWidget *menu_show_messages_window1;
@@ -245,9 +250,9 @@
gtk_widget_show (menu_new_with_template1);
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_new_with_template1);
- image857 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image857);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image857);
+ image956 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image956);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image956);
menu_new_with_template1_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_new_with_template1), menu_new_with_template1_menu);
@@ -292,14 +297,34 @@
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_save_all1);
gtk_tooltips_set_tip (tooltips, menu_save_all1, _("Saves all open files"), NULL);
- image858 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image858);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image858);
+ image957 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image957);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image957);
- revert1 = gtk_image_menu_item_new_from_stock ("gtk-revert-to-saved", accel_group);
- gtk_widget_show (revert1);
- gtk_container_add (GTK_CONTAINER (menuitem1_menu), revert1);
+ menu_reload1 = gtk_image_menu_item_new_with_mnemonic (_("_Reload"));
+ gtk_widget_show (menu_reload1);
+ gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_reload1);
+ gtk_tooltips_set_tip (tooltips, menu_reload1, _("Reload the current file from disk"), NULL);
+ image958 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image958);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload1), image958);
+
+ menu_reload_as1 = gtk_image_menu_item_new_with_mnemonic (_("R_eload as"));
+ gtk_widget_show (menu_reload_as1);
+ gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_reload_as1);
+ gtk_tooltips_set_tip (tooltips, menu_reload_as1, _("Reloads the current file with the specified encoding"), NULL);
+
+ image959 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image959);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload_as1), image959);
+
+ menu_reload_as1_menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_reload_as1), menu_reload_as1_menu);
+
+ invisible7 = gtk_menu_item_new_with_mnemonic (_("invisible"));
+ gtk_container_add (GTK_CONTAINER (menu_reload_as1_menu), invisible7);
+
separator21 = gtk_separator_menu_item_new ();
gtk_widget_show (separator21);
gtk_container_add (GTK_CONTAINER (menuitem1_menu), separator21);
@@ -333,9 +358,9 @@
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_close_all1);
gtk_tooltips_set_tip (tooltips, menu_close_all1, _("Closes all open files"), NULL);
- image859 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image859);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image859);
+ image960 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image960);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image960);
menu_separatormenuitem1 = gtk_separator_menu_item_new ();
gtk_widget_show (menu_separatormenuitem1);
@@ -401,9 +426,9 @@
gtk_widget_show (insert_include2);
gtk_container_add (GTK_CONTAINER (edit1_menu), insert_include2);
- image860 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image860);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image860);
+ image961 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image961);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image961);
insert_include2_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_include2), insert_include2_menu);
@@ -415,9 +440,9 @@
gtk_widget_show (add_comments1);
gtk_container_add (GTK_CONTAINER (edit1_menu), add_comments1);
- image861 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image861);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image861);
+ image962 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image962);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image962);
add_comments1_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (add_comments1), add_comments1_menu);
@@ -504,9 +529,9 @@
gtk_widget_show (replace1);
gtk_container_add (GTK_CONTAINER (search1_menu), replace1);
- image862 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image862);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image862);
+ image963 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image963);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image963);
separator27 = gtk_separator_menu_item_new ();
gtk_widget_show (separator27);
@@ -526,9 +551,9 @@
gtk_widget_show (go_to_line1);
gtk_container_add (GTK_CONTAINER (search1_menu), go_to_line1);
- image863 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image863);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image863);
+ image964 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image964);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image964);
menuitem3 = gtk_menu_item_new_with_mnemonic (_("_View"));
gtk_widget_show (menuitem3);
@@ -542,18 +567,18 @@
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_change_font1);
gtk_tooltips_set_tip (tooltips, menu_change_font1, _("Change the default font"), NULL);
- image864 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image864);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image864);
+ image965 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image965);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image965);
menu_choose_color1 = gtk_image_menu_item_new_with_mnemonic (_("Show _Colour Chooser"));
gtk_widget_show (menu_choose_color1);
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_choose_color1);
gtk_tooltips_set_tip (tooltips, menu_choose_color1, _("Open a color chooser dialog, to interactively pick colors from a palette."), NULL);
- image865 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image865);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image865);
+ image966 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image966);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image966);
menu_separator4 = gtk_separator_menu_item_new ();
gtk_widget_show (menu_separator4);
@@ -1031,7 +1056,7 @@
g_signal_connect ((gpointer) menu_save_all1, "activate",
G_CALLBACK (on_save_all1_activate),
NULL);
- g_signal_connect ((gpointer) revert1, "activate",
+ g_signal_connect ((gpointer) menu_reload1, "activate",
G_CALLBACK (on_toolbutton23_clicked),
NULL);
g_signal_connect ((gpointer) preferences2, "activate",
@@ -1272,7 +1297,7 @@
GLADE_HOOKUP_OBJECT (window1, menuitem1_menu, "menuitem1_menu");
GLADE_HOOKUP_OBJECT (window1, menu_new1, "menu_new1");
GLADE_HOOKUP_OBJECT (window1, menu_new_with_template1, "menu_new_with_template1");
- GLADE_HOOKUP_OBJECT (window1, image857, "image857");
+ GLADE_HOOKUP_OBJECT (window1, image956, "image956");
GLADE_HOOKUP_OBJECT (window1, menu_new_with_template1_menu, "menu_new_with_template1_menu");
GLADE_HOOKUP_OBJECT (window1, invisible2, "invisible2");
GLADE_HOOKUP_OBJECT (window1, separator12, "separator12");
@@ -1284,8 +1309,13 @@
GLADE_HOOKUP_OBJECT (window1, menu_save1, "menu_save1");
GLADE_HOOKUP_OBJECT (window1, menu_save_as1, "menu_save_as1");
GLADE_HOOKUP_OBJECT (window1, menu_save_all1, "menu_save_all1");
- GLADE_HOOKUP_OBJECT (window1, image858, "image858");
- GLADE_HOOKUP_OBJECT (window1, revert1, "revert1");
+ GLADE_HOOKUP_OBJECT (window1, image957, "image957");
+ GLADE_HOOKUP_OBJECT (window1, menu_reload1, "menu_reload1");
+ GLADE_HOOKUP_OBJECT (window1, image958, "image958");
+ GLADE_HOOKUP_OBJECT (window1, menu_reload_as1, "menu_reload_as1");
+ GLADE_HOOKUP_OBJECT (window1, image959, "image959");
+ GLADE_HOOKUP_OBJECT (window1, menu_reload_as1_menu, "menu_reload_as1_menu");
+ GLADE_HOOKUP_OBJECT (window1, invisible7, "invisible7");
GLADE_HOOKUP_OBJECT (window1, separator21, "separator21");
GLADE_HOOKUP_OBJECT (window1, preferences2, "preferences2");
GLADE_HOOKUP_OBJECT (window1, separator24, "separator24");
@@ -1293,7 +1323,7 @@
GLADE_HOOKUP_OBJECT (window1, separator14, "separator14");
GLADE_HOOKUP_OBJECT (window1, menu_close1, "menu_close1");
GLADE_HOOKUP_OBJECT (window1, menu_close_all1, "menu_close_all1");
- GLADE_HOOKUP_OBJECT (window1, image859, "image859");
+ GLADE_HOOKUP_OBJECT (window1, image960, "image960");
GLADE_HOOKUP_OBJECT (window1, menu_separatormenuitem1, "menu_separatormenuitem1");
GLADE_HOOKUP_OBJECT (window1, menu_quit1, "menu_quit1");
GLADE_HOOKUP_OBJECT (window1, edit1, "edit1");
@@ -1309,11 +1339,11 @@
GLADE_HOOKUP_OBJECT (window1, menu_select_all1, "menu_select_all1");
GLADE_HOOKUP_OBJECT (window1, separator25, "separator25");
GLADE_HOOKUP_OBJECT (window1, insert_include2, "insert_include2");
- GLADE_HOOKUP_OBJECT (window1, image860, "image860");
+ GLADE_HOOKUP_OBJECT (window1, image961, "image961");
GLADE_HOOKUP_OBJECT (window1, insert_include2_menu, "insert_include2_menu");
GLADE_HOOKUP_OBJECT (window1, invisible4, "invisible4");
GLADE_HOOKUP_OBJECT (window1, add_comments1, "add_comments1");
- GLADE_HOOKUP_OBJECT (window1, image861, "image861");
+ GLADE_HOOKUP_OBJECT (window1, image962, "image962");
GLADE_HOOKUP_OBJECT (window1, add_comments1_menu, "add_comments1_menu");
GLADE_HOOKUP_OBJECT (window1, menu_add_changelog_entry1, "menu_add_changelog_entry1");
GLADE_HOOKUP_OBJECT (window1, insert_file_header1, "insert_file_header1");
@@ -1334,18 +1364,18 @@
GLADE_HOOKUP_OBJECT (window1, find_next1, "find_next1");
GLADE_HOOKUP_OBJECT (window1, find_previous1, "find_previous1");
GLADE_HOOKUP_OBJECT (window1, replace1, "replace1");
- GLADE_HOOKUP_OBJECT (window1, image862, "image862");
+ GLADE_HOOKUP_OBJECT (window1, image963, "image963");
GLADE_HOOKUP_OBJECT (window1, separator27, "separator27");
GLADE_HOOKUP_OBJECT (window1, find_in_files1, "find_in_files1");
GLADE_HOOKUP_OBJECT (window1, separator11, "separator11");
GLADE_HOOKUP_OBJECT (window1, go_to_line1, "go_to_line1");
- GLADE_HOOKUP_OBJECT (window1, image863, "image863");
+ GLADE_HOOKUP_OBJECT (window1, image964, "image964");
GLADE_HOOKUP_OBJECT (window1, menuitem3, "menuitem3");
GLADE_HOOKUP_OBJECT (window1, menuitem3_menu, "menuitem3_menu");
GLADE_HOOKUP_OBJECT (window1, menu_change_font1, "menu_change_font1");
- GLADE_HOOKUP_OBJECT (window1, image864, "image864");
+ GLADE_HOOKUP_OBJECT (window1, image965, "image965");
GLADE_HOOKUP_OBJECT (window1, menu_choose_color1, "menu_choose_color1");
- GLADE_HOOKUP_OBJECT (window1, image865, "image865");
+ GLADE_HOOKUP_OBJECT (window1, image966, "image966");
GLADE_HOOKUP_OBJECT (window1, menu_separator4, "menu_separator4");
GLADE_HOOKUP_OBJECT (window1, menu_fullscreen1, "menu_fullscreen1");
GLADE_HOOKUP_OBJECT (window1, menu_show_messages_window1, "menu_show_messages_window1");
Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/keyfile.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -288,8 +288,8 @@
app->pref_editor_tab_width = utils_get_setting_integer(config, PACKAGE, "pref_editor_tab_width", 4);
- // set default encoding to UTF8 (Unicode) - index 15
- app->pref_editor_default_encoding = utils_get_setting_integer(config, PACKAGE, "pref_editor_default_encoding", 15);
+ // set default encoding to UTF8 (Unicode) - index 16
+ app->pref_editor_default_encoding = utils_get_setting_integer(config, PACKAGE, "pref_editor_default_encoding", 16);
app->pref_main_confirm_exit = utils_get_setting_boolean(config, PACKAGE, "pref_main_confirm_exit", TRUE);
app->pref_main_load_session = utils_get_setting_boolean(config, PACKAGE, "pref_main_load_session", TRUE);
app->pref_main_save_winpos = utils_get_setting_boolean(config, PACKAGE, "pref_main_save_winpos", TRUE);
@@ -414,7 +414,7 @@
if (g_file_test(locale_filename, G_FILE_TEST_IS_REGULAR || G_FILE_TEST_IS_SYMLINK))
{
document_open_file(-1, locale_filename, pos, FALSE,
- (ft_id == GEANY_MAX_FILE_TYPES) ? NULL : filetypes[ft_id]);
+ (ft_id == GEANY_MAX_FILE_TYPES) ? NULL : filetypes[ft_id], NULL);
ret = TRUE;
}
g_free(locale_filename);
Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/main.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -288,7 +288,7 @@
app->sensitive_buttons[17] = lookup_widget(app->window, "menu_paste1");
app->sensitive_buttons[18] = lookup_widget(app->window, "menu_undo2");
app->sensitive_buttons[19] = lookup_widget(app->window, "preferences2");
- app->sensitive_buttons[20] = lookup_widget(app->window, "revert1");
+ app->sensitive_buttons[20] = lookup_widget(app->window, "menu_reload1");
app->sensitive_buttons[21] = lookup_widget(app->window, "menu_item4");
app->sensitive_buttons[22] = lookup_widget(app->window, "menu_markers_margin1");
app->sensitive_buttons[23] = lookup_widget(app->window, "menu_linenumber_margin1");
@@ -301,6 +301,7 @@
app->sensitive_buttons[30] = lookup_widget(app->window, "entry_goto_line");
app->sensitive_buttons[31] = lookup_widget(app->window, "treeview6");
app->sensitive_buttons[32] = lookup_widget(app->window, "print1");
+ app->sensitive_buttons[33] = lookup_widget(app->window, "menu_reload_as1");
app->redo_items[0] = lookup_widget(app->popup_menu, "redo1");
app->redo_items[1] = lookup_widget(app->window, "menu_redo2");
app->redo_items[2] = lookup_widget(app->window, "toolbutton_redo");
@@ -346,7 +347,7 @@
// try to interpret the received data as a filename, otherwise do nothing
if (g_file_test(buffer, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK))
{
- document_open_file(-1, buffer, 0, FALSE, NULL);
+ document_open_file(-1, buffer, 0, FALSE, NULL, NULL);
gtk_window_deiconify(GTK_WINDOW(app->window));
}
else
@@ -563,7 +564,7 @@
if (opened < GEANY_MAX_OPEN_FILES)
{
gchar *filename = get_argv_filename(argv[i]);
- document_open_file(-1, filename, 0, FALSE, NULL);
+ document_open_file(-1, filename, 0, FALSE, NULL, NULL);
g_free(filename);
opened++;
}
@@ -612,6 +613,12 @@
configuration_apply_settings();
+ dialogs_show_info(
+ "Please use this SVN version not for production use!\nWe added recently some experimental features which"
+ " can really damage your files when saving or make cofusing things with your file when opening.\n"
+ "Read the mailing list for more information. I'm very sorry, please be patient.\n\n"
+ "(to disable this message, edit src/main.c at line 616).");
+
//g_timeout_add(0, (GSourceFunc)destroyapp, NULL); // useful for start time tests
gtk_main();
return 0;
Modified: trunk/src/sci_cb.c
===================================================================
--- trunk/src/sci_cb.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/sci_cb.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -238,7 +238,7 @@
if (list[i] == NULL) break;
filename = g_filename_from_uri(list[i], NULL, NULL);
if (filename == NULL) continue;
- document_open_file(-1, filename, 0, FALSE, NULL);
+ document_open_file(-1, filename, 0, FALSE, NULL, NULL);
g_free(filename);
}
@@ -471,6 +471,7 @@
if (! force)
{ // force is set when called by keyboard shortcut, otherwise start after at third char
+ /// TODO g_ascii_isspace is not the best choise because it allows öprin...
while ((line_pos - i >= 0) && ! g_ascii_isspace(linebuf[line_pos - i])) i++;
if (i < 4)
{ // go home if typed less than 4 chars
Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c 2006-07-21 19:35:33 UTC (rev 599)
+++ trunk/src/utils.c 2006-07-22 01:29:10 UTC (rev 600)
@@ -132,7 +132,7 @@
line = sci_get_line_from_position(doc_list[idx].sci, pos);
col = sci_get_col_from_position(doc_list[idx].sci, pos);
- text = g_strdup_printf(_("%c line: % 4d column: % 3d selection: % 4d %s mode: %s%s cur. function: %s encoding: %s filetype: %s"),
+ text = g_strdup_printf(_("%c line: % 4d column: % 3d selection: % 4d %s mode: %s%s cur. function: %s encoding: %s %s filetype: %s"),
(doc_list[idx].changed) ? 42 : 32,
(line + 1), (col + 1),
sci_get_selected_text_length(doc_list[idx].sci) - 1,
@@ -141,6 +141,7 @@
(doc_list[idx].readonly) ? ", read only" : "",
cur_tag,
(doc_list[idx].encoding) ? doc_list[idx].encoding : _("unknown"),
+ (utils_is_unicode_charset(doc_list[idx].encoding)) ? ((doc_list[idx].unicode_bom) ? _("(with BOM)") : _("(without BOM)")) : "",
(doc_list[idx].file_type) ? doc_list[idx].file_type->title : _("unknown"));
utils_set_statusbar(text, TRUE); //can be overridden by status messages
g_free(text);
@@ -977,7 +978,7 @@
("The file '%s' on the disk is more recent than\n"
"the current buffer.\nDo you want to reload it?"), basename))
{
- document_reload_file(idx);
+ document_reload_file(idx, NULL);
doc_list[idx].last_check = t;
}
else
@@ -2570,3 +2571,46 @@
return TRUE;
}
+
+gchar *utils_scan_unicode_bom(gchar *string)
+{
+ if ((unsigned char)string[0] == 0xef && (unsigned char)string[1] == 0xbb &&
+ (unsigned char)string[2] == 0xbf)
+ {
+ return g_strdup("UTF-8");
+ }
+ else if ((unsigned char)string[0] == 0x00 && (unsigned char)string[1] == 0x00 &&
+ (unsigned char)string[2] == 0xfe && (unsigned char)string[3] == 0xff)
+ {
+ return g_strdup("UTF-32BE"); // Big endian
+ }
+ else if ((unsigned char)string[0] == 0xff && (unsigned char)string[1] == 0xfe &&
+ (unsigned char)string[2] == 0x00 && (unsigned char)string[3] == 0x00)
+ {
+ return g_strdup("UTF-32LE"); // Little endian
+ }
+ else if ((unsigned char)string[0]==0xfe && (unsigned char)string[1] == 0xff)
+ {
+ return g_strdup("UTF-16BE"); // Big endian
+ }
+ else if ((unsigned char)string[0] == 0xff && (unsigned char)string[1] == 0xfe)
+ {
+ return g_strdup("UTF-16LE"); // Little endian
+ }
+ else if ((string[0] == 0x2b && string[1] == 0x2f && string[2] == 0x76) &&
+ (string[3] == 0x38 || string[3] == 0x39 || string[3] == 0x2b || string[3] == 0x2f))
+ {
+ return g_strdup("UTF-7");
+ }
+ return NULL;
+}
+
+
+gboolean utils_is_unicode_charset(gchar *string)
+{
+ if (string != NULL && (strncmp(string, "UTF", 3) == 0 || strncmp(string, "UCS", 3) == 0))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list