Develop and Download Open Source Software

Browse CVS Repository

Diff of /shiki/shiki/shiki.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.26 by aloha, Tue Nov 14 03:27:35 2006 UTC revision 1.27 by aloha, Tue Nov 14 11:42:50 2006 UTC
# Line 54  struct { Line 54  struct {
54  } shiki_editor;  } shiki_editor;
55    
56  /* シングルトンオブジェクトの定義 */  /* シングルトンオブジェクトの定義 */
 /* TODO : GtkNoteBook もここに入れるのが望ましいと思う…  
  *        ノートブックは,どう考えても,一つのプロセスに一つだよなぁ…  
  *        そもそも TAB_INFO_LIST が入っちゃってるのに  
  *        そうすれば,一気に全体的に API が簡素になるはず */  
57  #define Shiki_EDITOR_WINDOW         shiki_editor.editor_window  #define Shiki_EDITOR_WINDOW         shiki_editor.editor_window
58  #define Shiki_EDITOR_NOTEBOOK       shiki_editor.notebook  #define Shiki_EDITOR_NOTEBOOK       shiki_editor.notebook
59  #define Shiki_EDITOR_STATUSBAR      shiki_editor.statusbar  #define Shiki_EDITOR_STATUSBAR      shiki_editor.statusbar
# Line 76  struct { Line 72  struct {
72    
73  /* プロトタイプ */  /* プロトタイプ */
74    
75    /* タブの生成と削除 : 基本的に,ShikiTabInfo の中身に格納する情報を増やしたかったら,この 2 つの関数だけを変更すれば良い (ようにする…) */
76    static void append_tabpage(gchar *filename);
77    static void remove_tabpage();
78    
79  /* ファイル関係 */  /* ファイル関係 */
80  static void open_file(GtkNotebook *notebook, gchar *filename);  static void open_file(gchar *filename);
81  static void open_file_from_notebook(GtkNotebook *notebook);  static void open_file_handler();
82  static void open_file_handler(GtkWidget *widget, GtkWidget *notebook);  static void save_file();
83  static void save_file_from_notebook(GtkNotebook *notebook);  static void save_file_as();
 static void save_file_handler(GtkWidget *widget, GtkWidget *notebook);  
 static void save_file_as_from_notebook(GtkNotebook *notebook);  
 static void save_file_as_handler(GtkWidget *widget, GtkWidget *notebook);  
84  static gchar *get_filename_from_dialog(const gchar *msg);  static gchar *get_filename_from_dialog(const gchar *msg);
85    
86  /* テキストバッファ関係 */  /* テキストバッファ関係 */
# Line 96  static gint get_current_line_number(GtkT Line 93  static gint get_current_line_number(GtkT
93  static void update_modeline_label();  static void update_modeline_label();
94  static void text_buffer_cursor_moved_handler();  static void text_buffer_cursor_moved_handler();
95    
   
96  /* 確認 */  /* 確認 */
97  static void really_quit_dialog_yes(GtkWidget *widget, gboolean *flag);  static void really_quit_dialog_yes(GtkWidget *widget, gboolean *flag);
98  static void really_quit_dialog_no(GtkWidget *widget, gint *flag);  static void really_quit_dialog_no(GtkWidget *widget, gint *flag);
99  static gboolean not_yet_save_changes_really_quit(GtkTextBuffer *buffer);  static gboolean not_yet_save_changes_really_quit(GtkTextBuffer *buffer);
100  static gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, GtkWidget *buffer);  static gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, GtkTextBuffer *buffer);
101    
102  /* Gauche と S 式操作やインデント関連 */  /* Gauche と S 式操作やインデント関連 */
103  static gchar *eval_cstring_by_gauche(gchar *s);  static gchar *eval_cstring_by_gauche(gchar *s);
104  static gchar *load_cstring_by_gauche(gchar *s);  static gchar *load_cstring_by_gauche(gchar *s);
105  static void load_buffer_by_gauche();  static void load_buffer_by_gauche();
106  static void load_region_handler(GtkWidget *widget,  GtkWidget *notebook);  static void load_region_by_gauche();
107  static void load_scheme_file_by_gauche(GtkNotebook *notebook);  static void load_scheme_file_by_gauche();
108  static gboolean is_kakko_or_kokka(gunichar ch, gpointer);  static gboolean is_kakko_or_kokka(gunichar ch, gpointer);
109  static gboolean is_kokka(gunichar ch, gpointer);  static gboolean is_kokka(gunichar ch, gpointer);
110  static gboolean search_last_sexp_string(GtkTextIter *start);  static gboolean search_last_sexp_string(GtkTextIter *start);
# Line 119  static void select_font(); Line 115  static void select_font();
115  static void font_selection_ok(GtkWidget *button, GtkWidget *font_dialog);  static void font_selection_ok(GtkWidget *button, GtkWidget *font_dialog);
116  static void switch_tabpage_handler(GtkNotebook *notebook, GtkNotebookPage *page, guint pagenum) ;  static void switch_tabpage_handler(GtkNotebook *notebook, GtkNotebookPage *page, guint pagenum) ;
117  static void tabsborder_on_off(GtkButton *button, GtkNotebook *notebook);  static void tabsborder_on_off(GtkButton *button, GtkNotebook *notebook);
118  static void rotate_tab_position(GtkButton   *button, GtkNotebook *notebook);  static void rotate_tab_position(GtkButton *button, GtkNotebook *notebook);
119    
120  /* バッファ内 ↑↓←→ 移動 */  /* バッファ内 ↑↓←→ 移動 */
121  static void forward_current_buffer();  static void forward_current_buffer();
# Line 132  static gboolean signal_key_press_handler Line 128  static gboolean signal_key_press_handler
128  static gboolean signal_key_release_handler(GtkWidget *notebook, GdkEventKey *event, gpointer contextid);  static gboolean signal_key_release_handler(GtkWidget *notebook, GdkEventKey *event, gpointer contextid);
129    
130  /* ヘルプや情報 */  /* ヘルプや情報 */
131  static void open_online_help(GtkNotebook *notebook);  static void open_online_help();
 static void online_help_handler(GtkWidget *button, GtkNotebook *notebook);  
132  static void about_this_application();  static void about_this_application();
133    
134  /* 初期化 */  /* エディタの初期化 */
135  static void shiki_editor_window_init(int argc, char **argv);  static void shiki_editor_window_init(int argc, char **argv);
136    
   
 /* タブの生成と削除 : 基本的に,ShikiTabInfo の中身に格納する情報を増やしたかったら,この 2 つの関数だけを変更すれば良い (ようにする…) */  
 static void append_tabpage(GtkNotebook *notebook, gchar *filename);  
 static void remove_tabpage(GtkNotebook *notebook);  
   
 /* 基本的に *_handler は,上記したような関数を呼び出すだけのイベントハンドラのためのラッパー */  
 static void append_tabpage_handler(GtkButton *button, GtkNotebook *notebook);  
 static void remove_tabpage_handler(GtkButton *button, GtkNotebook *notebook);  
   
137  /* ノートブックにタブとページ (バッファ) を追加 */  /* ノートブックにタブとページ (バッファ) を追加 */
138  static void append_tabpage(GtkNotebook *notebook, gchar *filename) {  static void append_tabpage(gchar *filename) {
139    /*-------------------- 新しいタブを作る ----------------------------------*/    /*-------------------- 新しいタブを作る ----------------------------------*/
140    /* ShikiTabInfo には,タブに関連する情報が全て保持されている */    /* ShikiTabInfo には,タブに関連する情報が全て保持されている */
141    ShikiTabInfo *tabinfo = g_malloc(sizeof(ShikiTabInfo));    ShikiTabInfo *tabinfo = g_malloc(sizeof(ShikiTabInfo));
# Line 176  static void append_tabpage(GtkNotebook * Line 162  static void append_tabpage(GtkNotebook *
162    gtk_text_buffer_create_tag (tabinfo->text_buffer, "parent_emphasis_background", "background", "green", NULL);    gtk_text_buffer_create_tag (tabinfo->text_buffer, "parent_emphasis_background", "background", "green", NULL);
163    
164    /* タブをノートブックに登録する */    /* タブをノートブックに登録する */
165    gtk_notebook_append_page(notebook, GTK_WIDGET(tabinfo->tabpage), gtk_label_new(tabinfo->tabpage_label));    gtk_notebook_append_page(Shiki_EDITOR_NOTEBOOK, GTK_WIDGET(tabinfo->tabpage), gtk_label_new(tabinfo->tabpage_label));
166    /* 対応するタブ情報を大域テーブルに保存しておく */    /* 対応するタブ情報を大域テーブルに保存しておく */
167    Shiki_EDITOR_TAB_INFO_LIST = g_list_append(Shiki_EDITOR_TAB_INFO_LIST, tabinfo);    Shiki_EDITOR_TAB_INFO_LIST = g_list_append(Shiki_EDITOR_TAB_INFO_LIST, tabinfo);
168    gtk_widget_show_all(GTK_WIDGET(notebook));      gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK));  
169    /* 開いたページに移動する */    /* 開いたページに移動する */
170    gtk_notebook_set_current_page(notebook, g_list_length(Shiki_EDITOR_TAB_INFO_LIST) - 1);    gtk_notebook_set_current_page(Shiki_EDITOR_NOTEBOOK, g_list_length(Shiki_EDITOR_TAB_INFO_LIST) - 1);
171  }  }
172    
173  /* ノートブックからタブとページ (バッファ) を削除 */  /* ノートブックからタブとページ (バッファ) を削除 */
174  static void remove_tabpage(GtkNotebook *notebook) {  static void remove_tabpage() {
175    /* タブが 1 つしか残っていなかったら消させない */    /* タブが 1 つしか残っていなかったら消させない */
176    if(g_list_length(Shiki_EDITOR_TAB_INFO_LIST) == 1)    if(g_list_length(Shiki_EDITOR_TAB_INFO_LIST) == 1)
177      return;      return;
# Line 202  static void remove_tabpage(GtkNotebook * Line 188  static void remove_tabpage(GtkNotebook *
188    
189      /* カレントのタブ情報を更新 */      /* カレントのタブ情報を更新 */
190      Shiki_CURRENT_TAB_INFO = g_list_nth_data(Shiki_EDITOR_TAB_INFO_LIST, Shiki_CURRENT_TAB_NUM);      Shiki_CURRENT_TAB_INFO = g_list_nth_data(Shiki_EDITOR_TAB_INFO_LIST, Shiki_CURRENT_TAB_NUM);
191      gtk_notebook_remove_page(notebook, Shiki_CURRENT_TAB_NUM);      gtk_notebook_remove_page(Shiki_EDITOR_NOTEBOOK, Shiki_CURRENT_TAB_NUM);
192      /* ウィジットを強制的に再描画 */      /* ウィジットを強制的に再描画 */
193      gtk_widget_queue_draw(GTK_WIDGET(notebook));      gtk_widget_queue_draw(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK));
194    }    }
195  }  }
196    
 static void remove_tabpage_handler(GtkButton *button, GtkNotebook *notebook) {  
   remove_tabpage(notebook);  
 }  
   
 static void append_tabpage_handler(GtkButton *button, GtkNotebook *notebook) {  
   append_tabpage(notebook, g_strdup("*scratch*"));  
 }  
   
197  /* バッファの内容を消去 */  /* バッファの内容を消去 */
198  static void clear_current_buffer() {  static void clear_current_buffer() {
199    GtkTextIter start, end;    GtkTextIter start, end;
# Line 233  static void load_buffer_by_gauche() { Line 211  static void load_buffer_by_gauche() {
211  }  }
212    
213  /* ファイルをロード */  /* ファイルをロード */
214  static void load_scheme_file_by_gauche(GtkNotebook *notebook) {  static void load_scheme_file_by_gauche() {
215    gchar *contents, *text;    gchar *contents, *text;
216    gsize br, bw, len;    gsize br, bw, len;
217    GError *err = NULL;    GError *err = NULL;
# Line 383  static gchar *get_filename_from_dialog(c Line 361  static gchar *get_filename_from_dialog(c
361  }  }
362    
363  /* 現在表示されているページの内容をファイルに保存 */  /* 現在表示されているページの内容をファイルに保存 */
364  static void save_file_from_notebook(GtkNotebook *notebook) {  static void save_file() {
365    
366    /* ヘルプへの変更は保存しない */    /* ヘルプへの変更は保存しない */
367    if(g_ascii_strcasecmp("*help*", Shiki_CURRENT_TAB_TITLE) == 0) return;    if(g_ascii_strcasecmp("*help*", Shiki_CURRENT_TAB_TITLE) == 0) return;
# Line 396  static void save_file_from_notebook(GtkN Line 374  static void save_file_from_notebook(GtkN
374      gchar *filename = get_filename_from_dialog("Save File As ...");      gchar *filename = get_filename_from_dialog("Save File As ...");
375      if(!filename) return;      if(!filename) return;
376      if(!save_text_buffer(filename, Shiki_CURRENT_TEXT_BUFFER)) return;      if(!save_text_buffer(filename, Shiki_CURRENT_TEXT_BUFFER)) return;
377      gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(Shiki_CURRENT_TAB), filename);      gtk_notebook_set_tab_label_text(Shiki_EDITOR_NOTEBOOK, GTK_WIDGET(Shiki_CURRENT_TAB), filename);
378      gtk_window_set_title (GTK_WINDOW(Shiki_EDITOR_WINDOW), filename);      gtk_window_set_title (GTK_WINDOW(Shiki_EDITOR_WINDOW), filename);
379      g_free(filename);      g_free(filename);
380    } else    } else
381      save_text_buffer(Shiki_CURRENT_TAB_TITLE, Shiki_CURRENT_TEXT_BUFFER);      save_text_buffer(Shiki_CURRENT_TAB_TITLE, Shiki_CURRENT_TEXT_BUFFER);
382  }  }
383    
 /* ファイルを保存するイベントハンドラ */  
 static void save_file_handler(GtkWidget *widget, GtkWidget *notebook) {  
   save_file_from_notebook(GTK_NOTEBOOK(notebook));  
 }  
   
384  /* 現在表示されているページの内容をファイルに別名保存 */  /* 現在表示されているページの内容をファイルに別名保存 */
385  static void save_file_as_from_notebook(GtkNotebook *notebook) {  static void save_file_as() {
386    gchar *filename = get_filename_from_dialog("Save File As ...");    gchar *filename = get_filename_from_dialog("Save File As ...");
387    
388    if(!filename) return;    if(!filename) return;
389    if(!save_text_buffer(filename, Shiki_CURRENT_TEXT_BUFFER)) return;    if(!save_text_buffer(filename, Shiki_CURRENT_TEXT_BUFFER)) return;
390    
391    gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(Shiki_CURRENT_TAB), filename);    gtk_notebook_set_tab_label_text(Shiki_EDITOR_NOTEBOOK, GTK_WIDGET(Shiki_CURRENT_TAB), filename);
392    gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename);    gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename);
393    
394    g_free(filename);    g_free(filename);
395  }  }
396    
 /* ファイルを別名保存するイベントハンドラ */  
 static void save_file_as_handler(GtkWidget *widget, GtkWidget *notebook) {  
   save_file_as_from_notebook(GTK_NOTEBOOK(notebook));  
 }  
   
397  /* YES ボタン,NO ボタンそれぞれで呼ばれる callback */  /* YES ボタン,NO ボタンそれぞれで呼ばれる callback */
398  static void really_quit_dialog_yes(GtkWidget *widget, gboolean *flag){*flag = FALSE;}  static void really_quit_dialog_yes(GtkWidget *widget, gboolean *flag){*flag = FALSE;}
399  static void really_quit_dialog_no(GtkWidget *widget, gint *flag){*flag = TRUE;}  static void really_quit_dialog_no(GtkWidget *widget, gint *flag){*flag = TRUE;}
# Line 474  static gboolean not_yet_save_changes_rea Line 442  static gboolean not_yet_save_changes_rea
442  }  }
443    
444  /* バッファがまだ保存されていないのに本当に終了するのかを尋ねる */  /* バッファがまだ保存されていないのに本当に終了するのかを尋ねる */
445  static gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, GtkWidget *buffer){  static gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, GtkTextBuffer *buffer){
446    return not_yet_save_changes_really_quit(GTK_TEXT_BUFFER(buffer));    return not_yet_save_changes_really_quit(buffer);
447  }  }
448    
449  /* ファイルを開く */  /* ファイルを開く */
450  static void open_file(GtkNotebook *notebook, gchar *filename) {  static void open_file(gchar *filename) {
451    gchar *contents, *text;    gchar *contents, *text;
452    gsize br, bw, len;    gsize br, bw, len;
453    GError *err = NULL;    GError *err = NULL;
454        
455      g_return_if_fail(filename != NULL);
456      
457    if(g_file_get_contents(filename, &contents, &len, NULL)) {    if(g_file_get_contents(filename, &contents, &len, NULL)) {
458      GtkTextIter p;      GtkTextIter p;
459    
460      /* 新しいバッファを開く */      /* 新しいバッファを開く */
461      append_tabpage(notebook, g_strdup(filename));      append_tabpage(g_strdup(filename));
462    
463      if(!(text = g_locale_to_utf8(contents, -1, &br, &bw, &err)))      if(!(text = g_locale_to_utf8(contents, -1, &br, &bw, &err)))
464        gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, contents, len);        gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, contents, len);
# Line 502  static void open_file(GtkNotebook *noteb Line 472  static void open_file(GtkNotebook *noteb
472      gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p);      gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p);
473      update_modeline_label();      update_modeline_label();
474      gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename);      gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename);
475      gtk_widget_show_all(GTK_WIDGET(notebook));      gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK));
476      g_free(contents); g_free(text); g_free(filename);      g_free(contents); g_free(text); g_free(filename);
477    } else    } else
478      g_printerr("Get file contents error !\n");      g_printerr("Get file contents error !\n");
479  }  }
480    
481  /* ファイルをダイアログで指定して開く */  /* ファイルをダイアログで指定して開く */
482  static void open_file_from_notebook(GtkNotebook *notebook) {  static void open_file_handler() {
483    gchar *filename = get_filename_from_dialog("File Selection");    gchar *filename = get_filename_from_dialog("File Selection");
484    
485    if(!filename) return;    if(!filename) return;
486    open_file(notebook, filename);    open_file(filename);
 }  
   
 /* ファイルを開くイベントハンドラ */  
 static void open_file_handler(GtkWidget *widget,  GtkWidget *notebook) {  
   open_file_from_notebook(GTK_NOTEBOOK(notebook));  
487  }  }
488    
489  /* gauche を起動して文字列を評価 */  /* gauche を起動して文字列を評価 */
# Line 552  static gchar *eval_cstring_by_gauche(gch Line 517  static gchar *eval_cstring_by_gauche(gch
517  }  }
518    
519  /* 緑ボタンのハンドリング.バッファの選択範囲の S 式をロード (逐次評価) */  /* 緑ボタンのハンドリング.バッファの選択範囲の S 式をロード (逐次評価) */
520  static void load_region_handler(GtkWidget *widget,  GtkWidget *notebook) {  static void load_region_by_gauche() {
521    
522    GtkTextIter start, end, p;    GtkTextIter start, end, p;
523    gchar *code;    gchar *code;
# Line 723  static gboolean signal_key_press_handler Line 688  static gboolean signal_key_press_handler
688          break;          break;
689    
690        case GDK_t : /* Ctrl + t : タブを開く */        case GDK_t : /* Ctrl + t : タブを開く */
691          append_tabpage(GTK_NOTEBOOK(notebook), g_strdup("*scratch*"));          append_tabpage(g_strdup("*scratch*"));
692          break;          break;
693    
694        case GDK_k : /* Ctrl + k : タブを閉じる */        case GDK_k : /* Ctrl + k : タブを閉じる */
695          remove_tabpage(GTK_NOTEBOOK(notebook));          remove_tabpage();
696          break;          break;
697      }      }
698    }    }
# Line 784  static gboolean signal_key_release_handl Line 749  static gboolean signal_key_release_handl
749    
750          case GDK_f : /* C-x C-f : ファイル開く */          case GDK_f : /* C-x C-f : ファイル開く */
751            gtk_statusbar_push(GTK_STATUSBAR(Shiki_EDITOR_STATUSBAR), GPOINTER_TO_INT(contextid), "C-f");            gtk_statusbar_push(GTK_STATUSBAR(Shiki_EDITOR_STATUSBAR), GPOINTER_TO_INT(contextid), "C-f");
752            open_file_from_notebook(GTK_NOTEBOOK(notebook));            open_file_handler();
753            break;            break;
754    
755          case GDK_s : /* C-x C-s : ファイル保存 */          case GDK_s : /* C-x C-s : ファイル保存 */
756            gtk_statusbar_push(GTK_STATUSBAR(Shiki_EDITOR_STATUSBAR), GPOINTER_TO_INT(contextid), "C-s");            gtk_statusbar_push(GTK_STATUSBAR(Shiki_EDITOR_STATUSBAR), GPOINTER_TO_INT(contextid), "C-s");
757            save_file_from_notebook(GTK_NOTEBOOK(notebook));                save_file();    
758            break;            break;
759    
760          case GDK_w : /* C-x C-w : ファイル別名保存 */          case GDK_w : /* C-x C-w : ファイル別名保存 */
761            gtk_statusbar_push(GTK_STATUSBAR(Shiki_EDITOR_STATUSBAR), GPOINTER_TO_INT(contextid), "C-w");            gtk_statusbar_push(GTK_STATUSBAR(Shiki_EDITOR_STATUSBAR), GPOINTER_TO_INT(contextid), "C-w");
762            save_file_as_from_notebook(GTK_NOTEBOOK(notebook));                save_file_as();    
763            break;            break;
764        }        }
765        controlx_pressed = 0;        controlx_pressed = 0;
# Line 812  static gboolean signal_key_release_handl Line 777  static gboolean signal_key_release_handl
777    }    }
778    return FALSE;    return FALSE;
779  }  }
780  static void open_online_help(GtkNotebook *notebook) {  static void open_online_help() {
781    GtkTextIter p;    GtkTextIter p;
782    append_tabpage(notebook, g_strdup("*help*"));    append_tabpage(g_strdup("*help*"));
783    gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER,    gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER,
784  "起動\n"  "起動\n"
785  "$ ./shiki [file1 file2 ....]\n\n"  "$ ./shiki [file1 file2 ....]\n\n"
# Line 848  static void open_online_help(GtkNotebook Line 813  static void open_online_help(GtkNotebook
813      gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p);          gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p);    
814  }  }
815    
 static void online_help_handler(GtkWidget *button, GtkNotebook *notebook) {  
   open_online_help(notebook);  
 }  
   
816  /* エディタの編集画面の初期化 */  /* エディタの編集画面の初期化 */
817  static void shiki_editor_window_init(int argc, char **argv) {  static void shiki_editor_window_init(int argc, char **argv) {
818    GtkWidget *vbox, *toolbar;    GtkWidget *vbox, *toolbar;
# Line 885  static void shiki_editor_window_init(int Line 846  static void shiki_editor_window_init(int
846    /* ファイル開く */    /* ファイル開く */
847    oicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-open", iconsize), "");    oicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-open", iconsize), "");
848    /* 「開く」ボタンにファイルを読み込むアクションを関連付ける */    /* 「開く」ボタンにファイルを読み込むアクションを関連付ける */
849    g_signal_connect(G_OBJECT(oicon), "clicked", G_CALLBACK(open_file_handler), G_OBJECT(Shiki_EDITOR_NOTEBOOK));    g_signal_connect(G_OBJECT(oicon), "clicked", G_CALLBACK(open_file_handler), NULL);
850    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(oicon));    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(oicon));
851    gtk_tool_item_set_tooltip(oicon, toolbar_tips, "ファイルを開きます",    gtk_tool_item_set_tooltip(oicon, toolbar_tips, "ファイルを開きます",
852        "新しいバッファを開いて,そこにファイルの内容を展開します.");        "新しいバッファを開いて,そこにファイルの内容を展開します.");
# Line 893  static void shiki_editor_window_init(int Line 854  static void shiki_editor_window_init(int
854    /* バッファ保存 */    /* バッファ保存 */
855    sicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-save", iconsize), "");    sicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-save", iconsize), "");
856    /* 「保存」ボタンにファイルを書き出すアクションを関連付ける */    /* 「保存」ボタンにファイルを書き出すアクションを関連付ける */
857    g_signal_connect(G_OBJECT(sicon), "clicked", G_CALLBACK(save_file_handler), G_OBJECT(Shiki_EDITOR_NOTEBOOK));    g_signal_connect(G_OBJECT(sicon), "clicked", G_CALLBACK(save_file), NULL);
858    gtk_container_add (GTK_CONTAINER (toolbar), GTK_WIDGET(sicon));          gtk_container_add (GTK_CONTAINER (toolbar), GTK_WIDGET(sicon));      
859    gtk_tool_item_set_tooltip(sicon, toolbar_tips, "バッファを保存します",    gtk_tool_item_set_tooltip(sicon, toolbar_tips, "バッファを保存します",
860        "バッファにファイル名が設定されていない場合には,ダイアログを開いてファイル名を取得します");        "バッファにファイル名が設定されていない場合には,ダイアログを開いてファイル名を取得します");
# Line 901  static void shiki_editor_window_init(int Line 862  static void shiki_editor_window_init(int
862    /* バッファを別名保存 */    /* バッファを別名保存 */
863    saicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-save-as", iconsize), "");    saicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-save-as", iconsize), "");
864    /* 「別名保存」ボタンに別名のファイル開いて内容を書き出すアクションを関連付ける */    /* 「別名保存」ボタンに別名のファイル開いて内容を書き出すアクションを関連付ける */
865    g_signal_connect(G_OBJECT(saicon), "clicked", G_CALLBACK(save_file_as_handler), G_OBJECT(Shiki_EDITOR_NOTEBOOK));    g_signal_connect(G_OBJECT(saicon), "clicked", G_CALLBACK(save_file_as), NULL);
866    gtk_container_add (GTK_CONTAINER (toolbar), GTK_WIDGET(saicon));    gtk_container_add (GTK_CONTAINER (toolbar), GTK_WIDGET(saicon));
867    gtk_tool_item_set_tooltip(saicon, toolbar_tips, "バッファを別名保存します",    gtk_tool_item_set_tooltip(saicon, toolbar_tips, "バッファを別名保存します",
868        "");        "");
# Line 909  static void shiki_editor_window_init(int Line 870  static void shiki_editor_window_init(int
870    /* バッファ実行 */    /* バッファ実行 */
871    eicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-execute", iconsize), "");    eicon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-execute", iconsize), "");
872    /* 「選択範囲をロード」ボタンに libgauche を関連付ける */    /* 「選択範囲をロード」ボタンに libgauche を関連付ける */
873    g_signal_connect(G_OBJECT(eicon), "clicked", G_CALLBACK(load_region_handler), G_OBJECT(Shiki_EDITOR_NOTEBOOK));    g_signal_connect(G_OBJECT(eicon), "clicked", G_CALLBACK(load_region_by_gauche), NULL);
874    gtk_container_add (GTK_CONTAINER (toolbar), GTK_WIDGET(eicon));    gtk_container_add (GTK_CONTAINER (toolbar), GTK_WIDGET(eicon));
875    gtk_tool_item_set_tooltip(eicon, toolbar_tips, "選択範囲の S 式をロードします (load-region-lisp)",    gtk_tool_item_set_tooltip(eicon, toolbar_tips, "選択範囲の S 式をロードします (load-region-lisp)",
876        "Scheme (gauche) で評価できる S 式を評価します.");        "Scheme (gauche) で評価できる S 式を評価します.");
# Line 928  static void shiki_editor_window_init(int Line 889  static void shiki_editor_window_init(int
889    gtk_tool_item_set_tooltip(icon, toolbar_tips, "タブ位置の設定", "");    gtk_tool_item_set_tooltip(icon, toolbar_tips, "タブ位置の設定", "");
890    
891    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-add", iconsize), "");    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-add", iconsize), "");
892    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(append_tabpage_handler), G_OBJECT(Shiki_EDITOR_NOTEBOOK));    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(append_tabpage), NULL);
893    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));
894    gtk_tool_item_set_tooltip(icon, toolbar_tips, "新規バッファを開きます", "");    gtk_tool_item_set_tooltip(icon, toolbar_tips, "新規バッファを開きます", "");
895    
# Line 939  static void shiki_editor_window_init(int Line 900  static void shiki_editor_window_init(int
900        "まだ内容が保存されていない場合でも警告しません");        "まだ内容が保存されていない場合でも警告しません");
901    
902    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-close", iconsize), "");    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-close", iconsize), "");
903    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(remove_tabpage_handler), G_OBJECT(Shiki_EDITOR_NOTEBOOK));    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(remove_tabpage), NULL);
904    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));
905    gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファを閉じます",    gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファを閉じます",
906        "まだ内容が保存されていない場合は警告します");        "まだ内容が保存されていない場合は警告します");
# Line 950  static void shiki_editor_window_init(int Line 911  static void shiki_editor_window_init(int
911    gtk_tool_item_set_tooltip(icon, toolbar_tips, "フォントの変更", "");    gtk_tool_item_set_tooltip(icon, toolbar_tips, "フォントの変更", "");
912    
913    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-connect", iconsize), "");    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-connect", iconsize), "");
914    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(load_scheme_file_by_gauche), G_OBJECT(Shiki_EDITOR_NOTEBOOK));    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(load_scheme_file_by_gauche), NULL);
915    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));
916    gtk_tool_item_set_tooltip(icon, toolbar_tips, "Scheme ファイルをロード", "");    gtk_tool_item_set_tooltip(icon, toolbar_tips, "Scheme ファイルをロード", "");
917    
# Line 960  static void shiki_editor_window_init(int Line 921  static void shiki_editor_window_init(int
921    gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファをロード", "");    gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファをロード", "");
922    
923    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-dialog-question", iconsize), "");    icon = gtk_tool_button_new(gtk_image_new_from_stock ("gtk-dialog-question", iconsize), "");
924    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(online_help_handler), Shiki_EDITOR_NOTEBOOK);    g_signal_connect(G_OBJECT(icon), "clicked", G_CALLBACK(open_online_help), NULL);
925    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));    gtk_container_add(GTK_CONTAINER (toolbar), GTK_WIDGET(icon));
926    gtk_tool_item_set_tooltip(icon, toolbar_tips, "ヘルプ", "");    gtk_tool_item_set_tooltip(icon, toolbar_tips, "ヘルプ", "");
927    
# Line 984  static void shiki_editor_window_init(int Line 945  static void shiki_editor_window_init(int
945    if(argc >= 2) {    if(argc >= 2) {
946      int i;      int i;
947      for(i = 1; i < argc; i++)      for(i = 1; i < argc; i++)
948        open_file(Shiki_EDITOR_NOTEBOOK, g_strdup(argv[i]));        open_file(g_strdup(argv[i]));
949    } else /* 指定されてなければ,デフォルトのページを追加 */    } else /* 指定されてなければ,デフォルトのページを追加 */
950      open_online_help(Shiki_EDITOR_NOTEBOOK);      open_online_help(Shiki_EDITOR_NOTEBOOK);
951    

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.27

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26