| 81 |
/* 現在表示されているタブに対するアクセス用各種キャッシュ情報 */ |
/* 現在表示されているタブに対するアクセス用各種キャッシュ情報 */ |
| 82 |
#define Shiki_CURRENT_TAB_NUM shiki_editor.current_tabpage_num |
#define Shiki_CURRENT_TAB_NUM shiki_editor.current_tabpage_num |
| 83 |
#define Shiki_CURRENT_TAB_INFO shiki_editor.current_tabpage_info |
#define Shiki_CURRENT_TAB_INFO shiki_editor.current_tabpage_info |
| 84 |
#define Shiki_CURRENT_LOCALE (shiki_editor.current_tabpage_info)->locale |
#define Shiki_CURRENT_CES (shiki_editor.current_tabpage_info)->locale |
| 85 |
#define Shiki_CURRENT_UNDO_INFO_LIST (shiki_editor.current_tabpage_info)->undoInfoList |
#define Shiki_CURRENT_UNDO_INFO_LIST (shiki_editor.current_tabpage_info)->undoInfoList |
| 86 |
#define Shiki_CURRENT_TAB (shiki_editor.current_tabpage_info)->tabpage |
#define Shiki_CURRENT_TAB (shiki_editor.current_tabpage_info)->tabpage |
| 87 |
#define Shiki_CURRENT_TAB_TITLE (shiki_editor.current_tabpage_info)->tabpage_label |
#define Shiki_CURRENT_TAB_TITLE (shiki_editor.current_tabpage_info)->tabpage_label |
| 729 |
g_snprintf(label, 1024, "--%s- %-10s (Gauche Interaction) [%s] L%d:%d ", |
g_snprintf(label, 1024, "--%s- %-10s (Gauche Interaction) [%s] L%d:%d ", |
| 730 |
gtk_text_buffer_get_modified(Shiki_CURRENT_TEXT_BUFFER) ? "**" : "--", |
gtk_text_buffer_get_modified(Shiki_CURRENT_TEXT_BUFFER) ? "**" : "--", |
| 731 |
Shiki_CURRENT_BASENAME, |
Shiki_CURRENT_BASENAME, |
| 732 |
Shiki_CURRENT_LOCALE, |
Shiki_CURRENT_CES, |
| 733 |
gtk_text_iter_get_line(&p) + 1, |
gtk_text_iter_get_line(&p) + 1, |
| 734 |
gtk_text_iter_get_line_offset (&p) + 1); |
gtk_text_iter_get_line_offset (&p) + 1); |
| 735 |
gtk_label_set_text(GTK_LABEL(Shiki_EDITOR_MODELINE_LABEL), label); |
gtk_label_set_text(GTK_LABEL(Shiki_EDITOR_MODELINE_LABEL), label); |
| 840 |
|
|
| 841 |
/* ファイルを開く */ |
/* ファイルを開く */ |
| 842 |
static void open_file(gchar *filename) { |
static void open_file(gchar *filename) { |
| 843 |
gchar *contents, *text = NULL; |
gchar *text; |
| 844 |
gsize br, bw, len; |
gchar *utf8filename = g_locale_to_utf8(filename, -1, NULL, NULL, NULL); |
| 845 |
GError *err = NULL; |
GtkTextIter p; |
| 846 |
|
ScmObj s, ces; |
| 847 |
g_return_if_fail(filename != NULL); |
|
| 848 |
|
/* 新しいバッファを開く */ |
| 849 |
if(g_file_get_contents(filename, &contents, &len, NULL)) { |
append_tabpage(g_strdup(filename)); |
|
GtkTextIter p; |
|
|
|
|
|
/* 新しいバッファを開く */ |
|
|
append_tabpage(g_strdup(filename)); |
|
| 850 |
|
|
| 851 |
if(!(text = g_locale_to_utf8(contents, -1, &br, &bw, &err))) |
Scm_Define(SCM_MODULE(Shiki_CURRENT_BUFFER_ENV), SCM_SYMBOL(SCM_INTERN("*filename*")), SCM_MAKE_STR(utf8filename)); |
| 852 |
gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, contents, len); |
Scm_Load("gauche-init.scm", 0); |
| 853 |
else { |
Scm_EvalCString("(use gauche.interactive)", Shiki_CURRENT_BUFFER_ENV); |
| 854 |
gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, text, len); |
Scm_EvalCString("(use gauche.charconv)", Shiki_CURRENT_BUFFER_ENV); |
| 855 |
Shiki_CURRENT_LOCALE = Shiki_EDITOR_DEFAULT_LOCALE; |
Scm_EvalCString("(define contents (call-with-input-file *filename* port->string))", Shiki_CURRENT_BUFFER_ENV); |
| 856 |
} |
Scm_EvalCString("(define ces (ces-guess-from-string contents \"*JP\"))", Shiki_CURRENT_BUFFER_ENV); |
| 857 |
|
ces = Scm_EvalCString("ces", Shiki_CURRENT_BUFFER_ENV); |
| 858 |
|
Shiki_CURRENT_CES = Scm_GetString(SCM_STRING(ces)); |
| 859 |
|
s = Scm_EvalCString("(ces-convert contents ces)", Shiki_CURRENT_BUFFER_ENV); |
| 860 |
|
text = Scm_GetString(SCM_STRING(s)); |
| 861 |
|
gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, text, -1); |
| 862 |
|
/* バッファ未変更に */ |
| 863 |
|
gtk_text_buffer_set_modified(Shiki_CURRENT_TEXT_BUFFER, FALSE); |
| 864 |
|
/* カーソル位置を先頭に */ |
| 865 |
|
gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 866 |
|
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 867 |
|
update_modeline_label(); |
| 868 |
|
gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename); |
| 869 |
|
gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK)); |
| 870 |
|
|
| 871 |
/* バッファ未変更に */ |
g_free(utf8filename); |
| 872 |
gtk_text_buffer_set_modified(Shiki_CURRENT_TEXT_BUFFER, FALSE); |
g_free(filename); |
|
/* カーソル位置を先頭に */ |
|
|
gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &p); |
|
|
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
|
|
update_modeline_label(); |
|
|
gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename); |
|
|
gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK)); |
|
|
g_free(contents); g_free(text); g_free(filename); |
|
| 873 |
|
|
| 874 |
/* キーワードを色分けする */ |
/* キーワードを色分けする */ |
| 875 |
scheme_keyword_highlighting_current_buffer(); |
scheme_keyword_highlighting_current_buffer(); |
|
} else |
|
|
g_printerr("Get file contents error !\n"); |
|
| 876 |
} |
} |
| 877 |
|
|
| 878 |
/* ファイルをダイアログで指定して開く */ |
/* ファイルをダイアログで指定して開く */ |
| 1349 |
g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(open_online_help), NULL); |
g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(open_online_help), NULL); |
| 1350 |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
| 1351 |
gtk_tool_item_set_tooltip(icon, toolbar_tips, "ヘルプ", ""); |
gtk_tool_item_set_tooltip(icon, toolbar_tips, "ヘルプ", ""); |
| 1352 |
|
|
| 1353 |
icon = gtk_tool_button_new(gtk_image_new_from_stock (GTK_STOCK_BOLD, iconsize), ""); |
icon = gtk_tool_button_new(gtk_image_new_from_stock (GTK_STOCK_BOLD, iconsize), ""); |
| 1354 |
g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(select_font), NULL); |
g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(select_font), NULL); |
| 1355 |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
| 1373 |
/* モードライン作る */ |
/* モードライン作る */ |
| 1374 |
Shiki_EDITOR_MODELINE_LABEL = gtk_label_new(NULL); |
Shiki_EDITOR_MODELINE_LABEL = gtk_label_new(NULL); |
| 1375 |
gtk_container_add(GTK_CONTAINER (modeline_bg), Shiki_EDITOR_MODELINE_LABEL); |
gtk_container_add(GTK_CONTAINER (modeline_bg), Shiki_EDITOR_MODELINE_LABEL); |
| 1376 |
|
|
| 1377 |
gdk_color_parse("black", &COLOR_BLACK); |
gdk_color_parse("black", &COLOR_BLACK); |
| 1378 |
gdk_color_parse("green", &COLOR_GREEN); |
gdk_color_parse("green", &COLOR_GREEN); |
| 1379 |
|
|
| 1380 |
gtk_widget_modify_fg(Shiki_EDITOR_MODELINE_LABEL, GTK_STATE_NORMAL, &COLOR_GREEN); |
gtk_widget_modify_fg(Shiki_EDITOR_MODELINE_LABEL, GTK_STATE_NORMAL, &COLOR_GREEN); |
| 1381 |
gtk_widget_modify_bg(modeline_bg, GTK_STATE_NORMAL, &COLOR_BLACK); |
gtk_widget_modify_bg(modeline_bg, GTK_STATE_NORMAL, &COLOR_BLACK); |
| 1382 |
|
|