| 108 |
static void backward_current_buffer(); |
static void backward_current_buffer(); |
| 109 |
static void line_forward_current_buffer(); |
static void line_forward_current_buffer(); |
| 110 |
static void line_backward_current_buffer(); |
static void line_backward_current_buffer(); |
| 111 |
static gboolean signal_key_press_handler (GtkWidget *notebook, GdkEventKey *event, gpointer contextid); |
static gboolean signal_key_press_handler(GtkWidget *notebook, GdkEventKey *event, gpointer contextid); |
| 112 |
static gboolean signal_key_release_handler (GtkWidget *notebook, GdkEventKey *event, gpointer contextid); |
static gboolean signal_key_release_handler(GtkWidget *notebook, GdkEventKey *event, gpointer contextid); |
| 113 |
|
static void open_online_help(GtkNotebook *notebook); |
| 114 |
|
static void online_help_handler(GtkWidget *button, GtkNotebook *notebook); |
| 115 |
static void shiki_editor_window_init(int argc, char **argv); |
static void shiki_editor_window_init(int argc, char **argv); |
| 116 |
|
|
| 117 |
/* バッファの内容を消去 */ |
/* バッファの内容を消去 */ |
| 281 |
/* 現在表示されているページの内容をファイルに保存 */ |
/* 現在表示されているページの内容をファイルに保存 */ |
| 282 |
static void save_file_from_notebook(GtkNotebook *notebook) { |
static void save_file_from_notebook(GtkNotebook *notebook) { |
| 283 |
|
|
| 284 |
|
/* ヘルプへの変更は保存しない */ |
| 285 |
|
if(g_ascii_strcasecmp("*help*", Shiki_CURRENT_TAB_TITLE) == 0) return; |
| 286 |
|
|
| 287 |
/* 変更が無ければ何もしない */ |
/* 変更が無ければ何もしない */ |
| 288 |
if(!gtk_text_buffer_get_modified(Shiki_CURRENT_TEXT_BUFFER)) return; |
if(!gtk_text_buffer_get_modified(Shiki_CURRENT_TEXT_BUFFER)) return; |
| 289 |
|
|
| 777 |
} |
} |
| 778 |
return FALSE; |
return FALSE; |
| 779 |
} |
} |
| 780 |
|
static void open_online_help(GtkNotebook *notebook) { |
| 781 |
|
GtkTextIter p; |
| 782 |
|
append_tabpage(notebook, g_strdup("*help*")); |
| 783 |
|
gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, |
| 784 |
|
"[フォルダのアイコン] ファイルを開く (C-x C-f)\n" |
| 785 |
|
"[フロッピーディスクのアイコン] バッファを保存 (C-x C-s)\n" |
| 786 |
|
"[フロッピーとえんぴつのアイコン] バッファを別名保存 (C-x C-w)\n" |
| 787 |
|
"[ギアのアイコン] 選択領域を gauche にロード (region-compile)\n" |
| 788 |
|
"[マーキング (ちょん) のアイコン] タブの on/off\n" |
| 789 |
|
"[工具 (スパナ) のアイコン] タブの位置の調整\n" |
| 790 |
|
"[まる + アイコン] 新規バッファを開く (Ctrl + t) (tab)\n" |
| 791 |
|
"[ゴミ箱アイコン] バッファをクリア\n" |
| 792 |
|
"[× アイコン] バッファを閉じる (Ctrl + k) (kill buffer)\n" |
| 793 |
|
"[A アイコン] フォントの選択\n" |
| 794 |
|
"[顔みたいなアイコン] Scheme ファイルのロード\n" |
| 795 |
|
"[緑っぽい,変換アイコン] バッファの内容を全てロード\n" |
| 796 |
|
"[ヘルプ (?) アイコン] このヘルプ画面を表示します\n" |
| 797 |
|
"[info アイコン] このアプリケーションについての情報\n\n" |
| 798 |
|
"C-f : → に移動 (forward)\n" |
| 799 |
|
"C-b : ← に移動 (backward)\n" |
| 800 |
|
"C-n : ↓ に移動 (next line)\n" |
| 801 |
|
"C-p : ↑ に移動 (previous line)\n\n" |
| 802 |
|
"C-j : カーソル手前の S 式を評価 (eval-last-sexp)\n" |
| 803 |
|
"(emacs/xyzzy の *scratch* バッファと同じ)\n\n" |
| 804 |
|
|
| 805 |
|
"C-x C-c : 終了.ウィンドウの × ボタンを押したのと同じ\n\n" |
| 806 |
|
|
| 807 |
|
"また,内容が失われる恐れがあるときには全て「Reqlly Quit ?」のように警告します.\n", -1); |
| 808 |
|
gtk_text_buffer_set_modified(Shiki_CURRENT_TEXT_BUFFER, FALSE); |
| 809 |
|
/* カーソル位置を先頭に */ |
| 810 |
|
gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 811 |
|
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 812 |
|
} |
| 813 |
|
|
| 814 |
|
static void online_help_handler(GtkWidget *button, GtkNotebook *notebook) { |
| 815 |
|
open_online_help(notebook); |
| 816 |
|
} |
| 817 |
|
|
| 818 |
/* エディタの編集画面の初期化 */ |
/* エディタの編集画面の初期化 */ |
| 819 |
static void shiki_editor_window_init(int argc, char **argv) { |
static void shiki_editor_window_init(int argc, char **argv) { |
| 922 |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
| 923 |
gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファをロード", ""); |
gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファをロード", ""); |
| 924 |
|
|
| 925 |
|
icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-dialog-question", iconsize), ""); |
| 926 |
|
g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(online_help_handler), notebook); |
| 927 |
|
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
| 928 |
|
gtk_tool_item_set_tooltip(icon, toolbar_tips, "ヘルプ", ""); |
| 929 |
|
|
| 930 |
icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-dialog-info", iconsize), ""); |
icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-dialog-info", iconsize), ""); |
| 931 |
g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(about_this_application), NULL); |
g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(about_this_application), NULL); |
| 932 |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon)); |
| 949 |
for(i = 1; i < argc; i++) |
for(i = 1; i < argc; i++) |
| 950 |
open_file(GTK_NOTEBOOK(notebook), g_strdup(argv[i])); |
open_file(GTK_NOTEBOOK(notebook), g_strdup(argv[i])); |
| 951 |
} else /* 指定されてなければ,デフォルトのページを追加 */ |
} else /* 指定されてなければ,デフォルトのページを追加 */ |
| 952 |
append_tabpage(GTK_NOTEBOOK(notebook), g_strdup("*scratch*")); |
open_online_help(GTK_NOTEBOOK(notebook)); |
| 953 |
|
|
| 954 |
gtk_widget_grab_focus(notebook); |
gtk_widget_grab_focus(notebook); |
| 955 |
gtk_widget_show_all(Shiki_EDITOR_WINDOW); |
gtk_widget_show_all(Shiki_EDITOR_WINDOW); |