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.2 by aloha, Thu Nov 2 15:47:16 2006 UTC revision 1.3 by aloha, Thu Nov 2 16:28:52 2006 UTC
# Line 71  static gchar *get_filename_from_dialog(c Line 71  static gchar *get_filename_from_dialog(c
71    gtk_widget_destroy(dialog);    gtk_widget_destroy(dialog);
72    return filename;    return filename;
73  }  }
74    /* 現在表示されているページのテキストビューワを取り出す */
75  /* 現在表示されているページのテキストバッファを取り出す */  static GtkTextView* get_text_view_from_current_tabpage(GtkNotebook* notebook) {
 static GtkTextBuffer* get_text_buffer_from_current_tabpage(GtkNotebook* notebook) {  
76    gint pagenum = gtk_notebook_get_current_page(notebook);    gint pagenum = gtk_notebook_get_current_page(notebook);
77    GtkScrolledWindow *scrolledwindow = GTK_SCROLLED_WINDOW(gtk_notebook_get_nth_page(notebook, pagenum));    GtkScrolledWindow *scrolledwindow = GTK_SCROLLED_WINDOW(gtk_notebook_get_nth_page(notebook, pagenum));
78    /* GtkBin は一つしか子を持たない抽象コンテナクラス */    /* GtkBin は一つしか子を持たない抽象コンテナクラス */
79    GtkTextView *view = GTK_TEXT_VIEW(gtk_bin_get_child(GTK_BIN(scrolledwindow)));    return GTK_TEXT_VIEW(gtk_bin_get_child(GTK_BIN(scrolledwindow)));
80    return gtk_text_view_get_buffer(view);  }
81    
82    
83    /* 現在表示されているページのテキストバッファを取り出す */
84    static GtkTextBuffer* get_text_buffer_from_current_tabpage(GtkNotebook* notebook) {
85      return gtk_text_view_get_buffer(get_text_view_from_current_tabpage(notebook));
86  }  }
87    
88  /* 現在表示されているタブが開いているファイルの名前を返す */  /* 現在表示されているタブが開いているファイルの名前を返す */
# Line 208  static GtkWidget *new_scrolled_text_buff Line 212  static GtkWidget *new_scrolled_text_buff
212    gtk_widget_set_size_request(GTK_WIDGET(view), 500, 500);    gtk_widget_set_size_request(GTK_WIDGET(view), 500, 500);
213    
214    /* 様々な初期化処理 */    /* 様々な初期化処理 */
215      
216    /* 括弧の強調表示のためのタグを作る */    /* 括弧の強調表示のためのタグを作る */
217    gtk_text_buffer_create_tag (buffer, "parent_emphasis_background", "background", "green", NULL);    gtk_text_buffer_create_tag (buffer, "parent_emphasis_background", "background", "green", NULL);
218    
# Line 229  static void open_file_from_notebook(GtkN Line 233  static void open_file_from_notebook(GtkN
233      GtkTextBuffer *buffer;      GtkTextBuffer *buffer;
234      GtkWidget *scrolledwindow;      GtkWidget *scrolledwindow;
235      GtkTextIter p;      GtkTextIter p;
236        
237      /* 新しいバッファを開く */      /* 新しいバッファを開く */
238      gtk_notebook_append_page(GTK_NOTEBOOK(notebook),      gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
239                               scrolledwindow = new_scrolled_text_buffer(),          scrolledwindow = new_scrolled_text_buffer(),
240                               gtk_label_new(filename));          gtk_label_new(filename));
241      buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtk_bin_get_child(GTK_BIN(scrolledwindow))));      buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtk_bin_get_child(GTK_BIN(scrolledwindow))));
242    
243      if(!(text = g_locale_to_utf8(contents, -1, &br, &bw, &err)))      if(!(text = g_locale_to_utf8(contents, -1, &br, &bw, &err)))
# Line 402  static void rotate_tab_position(GtkButto Line 406  static void rotate_tab_position(GtkButto
406    
407  /* 特定のキー操作のハンドリング */  /* 特定のキー操作のハンドリング */
408    
409    /* カーソルの移動 ^npfb */
410    static void forward_buffer_from_current_tabpage(GtkNotebook *notebook) {
411      GtkTextBuffer *b = get_text_buffer_from_current_tabpage(notebook);
412      GtkTextIter p;
413      gtk_text_buffer_get_iter_at_mark(b,&p, gtk_text_buffer_get_insert(b));
414      gtk_text_iter_forward_char(&p);
415      gtk_text_buffer_place_cursor(b, &p);
416    }
417    static void backward_buffer_from_current_tabpage(GtkNotebook *notebook) {
418      GtkTextBuffer *b = get_text_buffer_from_current_tabpage(notebook);
419      GtkTextIter p;
420      gtk_text_buffer_get_iter_at_mark(b,&p, gtk_text_buffer_get_insert(b));
421      gtk_text_iter_backward_char(&p);
422      gtk_text_buffer_place_cursor(b, &p);
423    }
424    static void line_forward_buffer_from_current_tabpage(GtkNotebook *notebook) {
425      GtkTextView *v = get_text_view_from_current_tabpage(notebook);
426      GtkTextBuffer *b = gtk_text_view_get_buffer(v);
427      GtkTextIter p;
428      gtk_text_buffer_get_iter_at_mark(b,&p, gtk_text_buffer_get_insert(b));
429      gtk_text_view_forward_display_line(v, &p);
430      gtk_text_buffer_place_cursor(b, &p);
431    }
432    static void line_backward_buffer_from_current_tabpage(GtkNotebook *notebook) {
433      GtkTextView *v = get_text_view_from_current_tabpage(notebook);
434      GtkTextBuffer *b = gtk_text_view_get_buffer(v);
435      GtkTextIter p;
436      gtk_text_buffer_get_iter_at_mark(b,&p, gtk_text_buffer_get_insert(b));
437      gtk_text_view_backward_display_line(v, &p);
438      gtk_text_buffer_place_cursor(b, &p);
439    }
440    
441  /* キーが押された */  /* キーが押された */
442  static gboolean signal_key_press_handler (GtkWidget *notebook, GdkEventKey *event, gpointer p) {  static gboolean signal_key_press_handler (GtkWidget *notebook, GdkEventKey *event, gpointer p) {
443    GtkTextBuffer *buffer = get_text_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));    GtkTextBuffer *buffer = get_text_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
# Line 413  static gboolean signal_key_press_handler Line 449  static gboolean signal_key_press_handler
449    gtk_text_buffer_get_end_iter(buffer, &end);    gtk_text_buffer_get_end_iter(buffer, &end);
450    gtk_text_buffer_remove_tag_by_name(buffer, "parent_emphasis_background", &start, &end);    gtk_text_buffer_remove_tag_by_name(buffer, "parent_emphasis_background", &start, &end);
451    
452      /* Ctrl + f : forward */
453      if(event->keyval == GDK_f && event->state & GDK_CONTROL_MASK) {
454        forward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
455      }
456      /* Ctrl + b : backward */
457      if(event->keyval == GDK_b && event->state & GDK_CONTROL_MASK) {
458        backward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
459      }
460      /* Ctrl + n : next line */
461      if(event->keyval == GDK_n && event->state & GDK_CONTROL_MASK) {
462        line_forward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
463      }
464      /* Ctrl + p : previous line */
465      if(event->keyval == GDK_p && event->state & GDK_CONTROL_MASK) {
466        line_backward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
467      }
468    
469    /* Ctrl + j : カーソル手前の S 式の評価 */    /* Ctrl + j : カーソル手前の S 式の評価 */
470    if(event->keyval == GDK_j && event->state & GDK_CONTROL_MASK) {    if(event->keyval == GDK_j && event->state & GDK_CONTROL_MASK) {
471      gchar *code;      gchar *code;
# Line 448  static gboolean signal_key_press_handler Line 501  static gboolean signal_key_press_handler
501    if(event->keyval == GDK_w && event->state & GDK_CONTROL_MASK) {    if(event->keyval == GDK_w && event->state & GDK_CONTROL_MASK) {
502      save_file_as_from_notebook(GTK_NOTEBOOK(notebook));          save_file_as_from_notebook(GTK_NOTEBOOK(notebook));    
503    }    }
504      
505    /* Ctrl + t : タブを開く */    /* Ctrl + t : タブを開く */
506    if(event->keyval == GDK_t && event->state & GDK_CONTROL_MASK) {    if(event->keyval == GDK_t && event->state & GDK_CONTROL_MASK) {
507      gtk_notebook_append_page(GTK_NOTEBOOK(notebook), new_scrolled_text_buffer(), gtk_label_new("*scratch*"));      gtk_notebook_append_page(GTK_NOTEBOOK(notebook), new_scrolled_text_buffer(), gtk_label_new("*scratch*"));

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

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