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.22 by aloha, Mon Nov 13 05:37:07 2006 UTC revision 1.23 by aloha, Mon Nov 13 16:52:56 2006 UTC
# Line 87  static void really_quit_dialog_yes(GtkWi Line 87  static void really_quit_dialog_yes(GtkWi
87  static void really_quit_dialog_no(GtkWidget *widget, gint *flag);  static void really_quit_dialog_no(GtkWidget *widget, gint *flag);
88  static gboolean not_yet_save_changes_really_quit(GtkTextBuffer *buffer);  static gboolean not_yet_save_changes_really_quit(GtkTextBuffer *buffer);
89  static gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, GtkWidget *buffer);  static gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, GtkWidget *buffer);
 static void append_tabpage(GtkNotebook *notebook, gchar *filename);  
90  static GtkWidget *new_scrolled_text_buffer(ShikiTabInfo **tabinfo);  static GtkWidget *new_scrolled_text_buffer(ShikiTabInfo **tabinfo);
91  static void open_file(GtkNotebook *notebook, gchar *filename);  static void open_file(GtkNotebook *notebook, gchar *filename);
92  static void open_file_from_notebook(GtkNotebook *notebook);  static void open_file_from_notebook(GtkNotebook *notebook);
# Line 100  static gboolean search_sexp_string(GtkTe Line 99  static gboolean search_sexp_string(GtkTe
99  static gint get_parent_nest_level_at_cursor(GtkTextBuffer *buffer);  static gint get_parent_nest_level_at_cursor(GtkTextBuffer *buffer);
100  static void switch_tabpage_handler(GtkNotebook *notebook, GtkNotebookPage *page, guint pagenum) ;  static void switch_tabpage_handler(GtkNotebook *notebook, GtkNotebookPage *page, guint pagenum) ;
101  static void tabsborder_on_off(GtkButton *button, GtkNotebook *notebook);  static void tabsborder_on_off(GtkButton *button, GtkNotebook *notebook);
 static void remove_tabpage(GtkNotebook *notebook);  
102  static void remove_tabpage_handler(GtkButton *button, GtkWidget *notebook);  static void remove_tabpage_handler(GtkButton *button, GtkWidget *notebook);
103  static void append_tabpage_handler(GtkButton *button, GtkNotebook *notebook);  static void append_tabpage_handler(GtkButton *button, GtkNotebook *notebook);
104  static void rotate_tab_position(GtkButton   *button, GtkNotebook *notebook);  static void rotate_tab_position(GtkButton   *button, GtkNotebook *notebook);
# Line 114  static void open_online_help(GtkNotebook Line 112  static void open_online_help(GtkNotebook
112  static void online_help_handler(GtkWidget *button, GtkNotebook *notebook);  static void online_help_handler(GtkWidget *button, GtkNotebook *notebook);
113  static void shiki_editor_window_init(int argc, char **argv);  static void shiki_editor_window_init(int argc, char **argv);
114    
115    
116    /* タブの生成と削除 : 基本的に,ShikiTabInfo の中身に格納する情報を増やしたかったら,この 2 つだけを変更すれば良い (ようにする…) */
117    static void append_tabpage(GtkNotebook *notebook, gchar *filename);
118    static void remove_tabpage(GtkNotebook *notebook);
119    
120    /* ノートブックにタブとページ (バッファ) を追加 */
121    static void append_tabpage(GtkNotebook *notebook, gchar *filename) {
122      ShikiTabInfo *tabinfo;
123      GtkWidget *tabpage = new_scrolled_text_buffer(&tabinfo);
124      tabinfo->filename = filename;
125      tabinfo->tabpage_label = g_path_get_basename(filename);
126      gtk_notebook_append_page(notebook, tabpage, gtk_label_new(tabinfo->tabpage_label));
127      Shiki_EDITOR_TAB_INFO_LIST = g_list_append(Shiki_EDITOR_TAB_INFO_LIST, tabinfo);
128      gtk_notebook_set_current_page(notebook, g_list_length(Shiki_EDITOR_TAB_INFO_LIST) - 1);
129      gtk_widget_show_all(GTK_WIDGET(notebook));
130      gtk_notebook_set_current_page(notebook, Shiki_CURRENT_TAB_NUM);
131    }
132    
133    /* ノートブックからタブとページ (バッファ) を削除 */
134    static void remove_tabpage(GtkNotebook *notebook) {
135      /* タブが 1 つしか残っていなかったら消させない */
136      if(g_list_length(Shiki_EDITOR_TAB_INFO_LIST) == 1)
137        return;
138      if(!not_yet_save_changes_really_quit(Shiki_CURRENT_TEXT_BUFFER)) {
139        /* デリートハンドラをエディタトップレベルのウィジットから取り除く */
140        g_signal_handler_disconnect(Shiki_EDITOR_WINDOW, (Shiki_CURRENT_TAB_INFO)->delete_handler_id);
141        /* タブの中身を削除 */
142        gtk_widget_destroy(GTK_WIDGET(Shiki_CURRENT_TEXT_VIEW));
143        /* タブに対応するタブ情報を削除 */
144        g_free(Shiki_CURRENT_TAB_TITLE);
145        g_free(Shiki_CURRENT_FILENAME);
146        Shiki_EDITOR_TAB_INFO_LIST = g_list_delete_link(Shiki_EDITOR_TAB_INFO_LIST, g_list_nth(Shiki_EDITOR_TAB_INFO_LIST, Shiki_CURRENT_TAB_NUM));
147        g_free(Shiki_CURRENT_TAB_INFO);
148    
149        /* カレントのタブ情報を更新 */
150        Shiki_CURRENT_TAB_INFO = g_list_nth_data(Shiki_EDITOR_TAB_INFO_LIST, Shiki_CURRENT_TAB_NUM);
151        gtk_notebook_remove_page(notebook, Shiki_CURRENT_TAB_NUM);
152        /* ウィジットを強制的に再描画 */
153        gtk_widget_queue_draw(GTK_WIDGET(notebook));
154      }
155    }
156    
157    
158  /* バッファの内容を消去 */  /* バッファの内容を消去 */
159  static void clear_current_buffer() {  static void clear_current_buffer() {
160    GtkTextIter start, end;    GtkTextIter start, end;
# Line 206  static void select_font(){ Line 247  static void select_font(){
247  static void about_this_application() {  static void about_this_application() {
248    GtkAboutDialog *about = GTK_ABOUT_DIALOG(gtk_about_dialog_new());    GtkAboutDialog *about = GTK_ABOUT_DIALOG(gtk_about_dialog_new());
249    const gchar *authors[] = {    const gchar *authors[] = {
250      "若槻俊宏 (あろは) <alohakun@gmail.com>"      "若槻俊宏 (あろは) <alohakun@gmail.com>\n",
251        "Contribute : tkng さん",
252        "(http://d.hatena.ne.jp/tkng/20061113)", NULL
253    };    };
254    gtk_about_dialog_set_authors(about, authors);    gtk_about_dialog_set_authors(about, authors);
255    gtk_about_dialog_set_copyright(about, "Copyright(C)2006  WAKATSUKI Toshihiro");    gtk_about_dialog_set_copyright(about, "Copyright(C)2006  WAKATSUKI Toshihiro");
# Line 564  static void tabsborder_on_off(GtkButton Line 607  static void tabsborder_on_off(GtkButton
607    gtk_notebook_set_show_border(notebook, bval);    gtk_notebook_set_show_border(notebook, bval);
608  }  }
609    
 /* ノートブックからページを削除 */  
 static void remove_tabpage(GtkNotebook *notebook) {  
   /* タブが 1 つしか残っていなかったら消させない */  
   if(g_list_length(Shiki_EDITOR_TAB_INFO_LIST) == 1)  
     return;  
   if(!not_yet_save_changes_really_quit(Shiki_CURRENT_TEXT_BUFFER)) {  
     /* デリートハンドラをエディタトップレベルのウィジットから取り除く */  
     g_signal_handler_disconnect(Shiki_EDITOR_WINDOW, (Shiki_CURRENT_TAB_INFO)->delete_handler_id);  
     /* タブの中身を削除 */  
     gtk_widget_destroy(GTK_WIDGET(Shiki_CURRENT_TEXT_VIEW));  
     /* タブに対応するタブ情報を削除 */  
     g_free(Shiki_CURRENT_TAB_TITLE);  
     g_free(Shiki_CURRENT_FILENAME);  
     Shiki_EDITOR_TAB_INFO_LIST = g_list_delete_link(Shiki_EDITOR_TAB_INFO_LIST, g_list_nth(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);  
     gtk_notebook_remove_page(notebook, Shiki_CURRENT_TAB_NUM);  
     /* ウィジットを強制的に再描画 */  
     gtk_widget_queue_draw(GTK_WIDGET(notebook));  
   }  
 }  
   
610  static void remove_tabpage_handler(GtkButton *button, GtkWidget *notebook) {  static void remove_tabpage_handler(GtkButton *button, GtkWidget *notebook) {
611    remove_tabpage(GTK_NOTEBOOK(notebook));    remove_tabpage(GTK_NOTEBOOK(notebook));
612  }  }
613    
 /* ノートブックにページを追加 */  
 static void append_tabpage(GtkNotebook *notebook, gchar *filename) {  
   ShikiTabInfo *tabinfo;  
   GtkWidget *tabpage = new_scrolled_text_buffer(&tabinfo);  
   tabinfo->filename = filename;  
   tabinfo->tabpage_label = g_path_get_basename(filename);  
   gtk_notebook_append_page(notebook, tabpage, gtk_label_new(tabinfo->tabpage_label));  
   Shiki_EDITOR_TAB_INFO_LIST = g_list_append(Shiki_EDITOR_TAB_INFO_LIST, tabinfo);  
   gtk_notebook_set_current_page(notebook, g_list_length(Shiki_EDITOR_TAB_INFO_LIST) - 1);  
   gtk_widget_show_all(GTK_WIDGET(notebook));  
   gtk_notebook_set_current_page(notebook, Shiki_CURRENT_TAB_NUM);  
 }  
   
614  static void append_tabpage_handler(GtkButton *button, GtkNotebook *notebook) {  static void append_tabpage_handler(GtkButton *button, GtkNotebook *notebook) {
615    append_tabpage(notebook, g_strdup("*scratch*"));    append_tabpage(notebook, g_strdup("*scratch*"));
616  }  }
# Line 781  static void open_online_help(GtkNotebook Line 788  static void open_online_help(GtkNotebook
788    GtkTextIter p;    GtkTextIter p;
789    append_tabpage(notebook, g_strdup("*help*"));    append_tabpage(notebook, g_strdup("*help*"));
790    gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER,    gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER,
791    "起動\n"
792    "$ ./shiki [file1 file2 ....]\n\n"
793  "[フォルダのアイコン]             ファイルを開く (C-x C-f)\n"  "[フォルダのアイコン]             ファイルを開く (C-x C-f)\n"
794  "[フロッピーディスクのアイコン]   バッファを保存 (C-x C-s)\n"  "[フロッピーディスクのアイコン]   バッファを保存 (C-x C-s)\n"
795  "[フロッピーとえんぴつのアイコン] バッファを別名保存 (C-x C-w)\n"  "[フロッピーとえんぴつのアイコン] バッファを別名保存 (C-x C-w)\n"

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23

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