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.7 by aloha, Sat Nov 4 05:56:31 2006 UTC revision 1.8 by aloha, Sat Nov 4 08:21:21 2006 UTC
# Line 38  static const gchar *current_tabpage_labe Line 38  static const gchar *current_tabpage_labe
38  static GtkTextView *current_text_view;  static GtkTextView *current_text_view;
39  static GtkTextBuffer *current_text_buffer;  static GtkTextBuffer *current_text_buffer;
40    
41    static GtkWidget *statusbar;
42    
43  /* テキストバッファから全ての文字列を取り出す */  /* テキストバッファから全ての文字列を取り出す */
44  static gchar* get_all_buffer_contents(GtkTextBuffer *buffer) {  static gchar* get_all_buffer_contents(GtkTextBuffer *buffer) {
# Line 142  gboolean not_yet_save_changes_really_qui Line 143  gboolean not_yet_save_changes_really_qui
143          gtk_label_new("バッファが変更されています.\nセーブしないで終了しますか ?"), TRUE, TRUE, 0);          gtk_label_new("バッファが変更されています.\nセーブしないで終了しますか ?"), TRUE, TRUE, 0);
144      gtk_window_set_title(GTK_WINDOW (dialog_window), "Really Quit ?");      gtk_window_set_title(GTK_WINDOW (dialog_window), "Really Quit ?");
145      /* YES のボタン */      /* YES のボタン */
146      yes_button = gtk_button_new_with_label("はい (Y)");      yes_button = gtk_button_new_with_mnemonic("はい (_Y)");
147      g_signal_connect(GTK_OBJECT(yes_button), "clicked", G_CALLBACK(really_quit_dialog_yes), &flag);      g_signal_connect(GTK_OBJECT(yes_button), "clicked", G_CALLBACK(really_quit_dialog_yes), &flag);
148      g_signal_connect_swapped(GTK_OBJECT(yes_button), "clicked", G_CALLBACK(gtk_widget_destroy), G_OBJECT(dialog_window));      g_signal_connect_swapped(GTK_OBJECT(yes_button), "clicked", G_CALLBACK(gtk_widget_destroy), G_OBJECT(dialog_window));
149      gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area),  yes_button, TRUE, TRUE, 0);      gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area),  yes_button, TRUE, TRUE, 0);
150    
151      /* NO のボタン */      /* NO のボタン */
152      no_button = gtk_button_new_with_label("いいえ (N)");      no_button = gtk_button_new_with_mnemonic("いいえ (_N)");
153      g_signal_connect(GTK_OBJECT(no_button), "clicked", G_CALLBACK(really_quit_dialog_no), &flag);      g_signal_connect(GTK_OBJECT(no_button), "clicked", G_CALLBACK(really_quit_dialog_no), &flag);
154      g_signal_connect_swapped(GTK_OBJECT(no_button), "clicked", G_CALLBACK(gtk_widget_destroy), G_OBJECT(dialog_window));      g_signal_connect_swapped(GTK_OBJECT(no_button), "clicked", G_CALLBACK(gtk_widget_destroy), G_OBJECT(dialog_window));
155      gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area),  no_button, TRUE, TRUE, 0);      gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area),  no_button, TRUE, TRUE, 0);
# Line 412  static void line_backward_current_buffer Line 413  static void line_backward_current_buffer
413  }  }
414    
415  /* キーが押された */  /* キーが押された */
416  static gboolean signal_key_press_handler (GtkWidget *notebook, GdkEventKey *event, gpointer p) {  static gboolean signal_key_press_handler (GtkWidget *notebook, GdkEventKey *event, gpointer contextid) {
417    GtkTextIter start, end;    GtkTextIter start, end;
418    
419    /* 括弧の対応の強調を無効に */    /* 括弧の対応の強調を無効に */
# Line 471  static gboolean signal_key_press_handler Line 472  static gboolean signal_key_press_handler
472  }  }
473    
474  /* キーが離された */  /* キーが離された */
475  static gboolean signal_key_release_handler (GtkWidget *notebook, GdkEventKey *event, gpointer p) {  static gboolean signal_key_release_handler (GtkWidget *notebook, GdkEventKey *event, gpointer contextid) {
476    //static gint metakey_pressed = 0;    static gint metakey_pressed = 0;
477    static gint controlx_pressed = 0;    static gint controlx_pressed = 0;
478    
479    if(event->keyval == GDK_parenright && event->state & GDK_SHIFT_MASK) {    if(event->keyval == GDK_parenright && event->state & GDK_SHIFT_MASK) {
# Line 501  static gboolean signal_key_release_handl Line 502  static gboolean signal_key_release_handl
502    /* C-x */    /* C-x */
503    if(event->keyval == GDK_x && event->state & GDK_CONTROL_MASK) {    if(event->keyval == GDK_x && event->state & GDK_CONTROL_MASK) {
504      controlx_pressed++;      controlx_pressed++;
505      g_print("C-x ");      gtk_statusbar_push(GTK_STATUSBAR(statusbar), GPOINTER_TO_INT(contextid), "C-x -");
506    } else if(event->state & GDK_CONTROL_MASK) {    } else if(event->state & GDK_CONTROL_MASK) {
507    
508      if(controlx_pressed > 0) {      if(controlx_pressed > 0) {
509        switch(event->keyval) {        switch(event->keyval) {
510          case GDK_c :/* C-x C-c : 終了 */          case GDK_c :/* C-x C-c : 終了 */
511            g_print("C-c\n");            gtk_statusbar_push(GTK_STATUSBAR(statusbar), GPOINTER_TO_INT(contextid), "C-c");
512            {/* "delete-event" を発生させる.ウィンドウの × ボタンが押されたのと同じ */            {/* "delete-event" を発生させる.ウィンドウの × ボタンが押されたのと同じ */
513              GdkEvent ev;              GdkEvent ev;
514    
# Line 518  static gboolean signal_key_release_handl Line 520  static gboolean signal_key_release_handl
520            break;            break;
521    
522          case GDK_f : /* C-x C-f : ファイル開く */          case GDK_f : /* C-x C-f : ファイル開く */
523            g_print("C-f\n");            gtk_statusbar_push(GTK_STATUSBAR(statusbar), GPOINTER_TO_INT(contextid), "C-f");
524            open_file_from_notebook(GTK_NOTEBOOK(notebook));            open_file_from_notebook(GTK_NOTEBOOK(notebook));
525            break;            break;
526    
527          case GDK_s : /* C-x C-s : ファイル保存 */          case GDK_s : /* C-x C-s : ファイル保存 */
528            g_print("C-s\n");            gtk_statusbar_push(GTK_STATUSBAR(statusbar), GPOINTER_TO_INT(contextid), "C-s");
529            save_file_from_notebook(GTK_NOTEBOOK(notebook));                save_file_from_notebook(GTK_NOTEBOOK(notebook));    
530            break;            break;
531    
532          case GDK_w : /* C-x C-w : ファイル別名保存 */          case GDK_w : /* C-x C-w : ファイル別名保存 */
533            g_print("C-w\n");            gtk_statusbar_push(GTK_STATUSBAR(statusbar), GPOINTER_TO_INT(contextid), "C-w");
534            save_file_as_from_notebook(GTK_NOTEBOOK(notebook));                save_file_as_from_notebook(GTK_NOTEBOOK(notebook));    
535            break;            break;
536        }        }
537        controlx_pressed = 0;        controlx_pressed = 0;
538      }      }
539    
540        switch(event->keyval) {
541          case GDK_g :/* C-g : キャンセル */
542            metakey_pressed = 0;
543            controlx_pressed = 0;
544    
545            gtk_statusbar_push(GTK_STATUSBAR(statusbar), GPOINTER_TO_INT(contextid), "Quit");
546            break;
547        }
548    
549    }    }
550    return FALSE;    return FALSE;
551  }  }
# Line 547  static void editor_window_init() { Line 559  static void editor_window_init() {
559    /* 「開く」「保存」「別名保存」「選択領域を実行」アイコン */    /* 「開く」「保存」「別名保存」「選択領域を実行」アイコン */
560    GtkToolItem *oicon, *sicon, *saicon, *eicon;    GtkToolItem *oicon, *sicon, *saicon, *eicon;
561    
562      gint contextid;
563    
564    /* 窓を作る */    /* 窓を作る */
565    editor_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);    editor_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
566    g_signal_connect(G_OBJECT(editor_window), "destroy", G_CALLBACK(gtk_main_quit), NULL);    g_signal_connect(G_OBJECT(editor_window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
# Line 598  static void editor_window_init() { Line 612  static void editor_window_init() {
612    gtk_tool_item_set_tooltip(eicon, toolbar_tips, "選択範囲の S 式を評価します",    gtk_tool_item_set_tooltip(eicon, toolbar_tips, "選択範囲の S 式を評価します",
613        "Scheme (gauche) で評価できる S 式を評価します.");        "Scheme (gauche) で評価できる S 式を評価します.");
614    
   /* キーバインドのハンドリングを登録 */  
   g_signal_connect(G_OBJECT(notebook), "key-press-event", G_CALLBACK (signal_key_press_handler), NULL);  
   g_signal_connect(G_OBJECT(notebook), "key-release-event", G_CALLBACK (signal_key_release_handler), NULL);  
615    gtk_container_add(GTK_CONTAINER(editor_window), vbox);    gtk_container_add(GTK_CONTAINER(editor_window), vbox);
616    gtk_container_add(GTK_CONTAINER(vbox), notebook);    gtk_container_add(GTK_CONTAINER(vbox), notebook);
617    
# Line 630  static void editor_window_init() { Line 641  static void editor_window_init() {
641    gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファを閉じます",    gtk_tool_item_set_tooltip(icon, toolbar_tips, "バッファを閉じます",
642        "まだ内容が保存されていない場合は警告します");        "まだ内容が保存されていない場合は警告します");
643    
644      /* C-x C-s などの状態を表示するステータスバーをウィンドウボトムに追加 */
645      statusbar = gtk_statusbar_new();
646      gtk_box_pack_start(GTK_BOX(vbox), statusbar, TRUE, TRUE, 0);
647      contextid = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), "");
648    
649      /* キーバインドのハンドリングを登録 */
650      g_signal_connect(G_OBJECT(notebook), "key-press-event", G_CALLBACK (signal_key_press_handler), GINT_TO_POINTER(contextid));
651      g_signal_connect(G_OBJECT(notebook), "key-release-event", G_CALLBACK (signal_key_release_handler), GINT_TO_POINTER(contextid));
652    
653    gtk_widget_grab_focus(notebook);    gtk_widget_grab_focus(notebook);
654    gtk_widget_show_all(editor_window);    gtk_widget_show_all(editor_window);
655  }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

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