00001 #include <gtk/gtk.h>
00002 #include <stdio.h>
00003 #include <errno.h>
00004 #include <stdlib.h>
00005 #include "fileselect.c"
00006 #include "menu.c"
00007
00008
00012 GtkWidget *window1;
00013
00014
00025 static void err_msg(const gchar *msg)
00026 {
00027
00028 GtkWidget *dialog;
00029 dialog = gtk_message_dialog_new(GTK_WINDOW(window), 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, msg);
00030 gtk_dialog_run(GTK_DIALOG(dialog));
00031
00032 gtk_widget_destroy(dialog);
00033 }
00034
00035
00036
00043 static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
00044 {
00045 return !save_if_modified();
00046 }
00047
00048
00053 void gcc_entry( GtkWidget *widget,gpointer entry )
00054 {
00055 entry_text = gtk_entry_get_text(GTK_ENTRY(entry));
00056
00057 }
00058
00063 void entrycursor(GtkWidget *entry_text,gpointer data)
00064 {
00065 gtk_entry_set_text(GTK_ENTRY (entry_text),"");
00066 status = 1;
00067 }
00068
00069
00070
00079 int main(int argc, char *argv[])
00080 {
00081 status = 0;
00082
00083 GtkWidget *box, *scroll, *widget, *box1;
00084
00085 GtkAccelGroup *accel;
00086
00087
00088 gtk_init(&argc, &argv);
00089
00090 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
00091
00092
00093 g_signal_connect(G_OBJECT(window), "delete_event",G_CALLBACK(delete_event), window);
00094 g_signal_connect(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);
00095
00096
00097 gtk_window_set_title(GTK_WINDOW(window), "C Editor (Insert file name)");
00098 gtk_window_set_default_size(GTK_WINDOW(window), 600, 500);
00099
00100
00101
00102
00103 box = gtk_vbox_new(FALSE, 0);
00104 box1 = gtk_vbox_new(FALSE, 0);
00105
00106
00107 accel = gtk_accel_group_new();
00108 gtk_window_add_accel_group(GTK_WINDOW(window), accel);
00109
00110
00111
00112 main_menu = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<TextView>", accel);
00113 gtk_item_factory_create_items(main_menu,sizeof(menu_def) / sizeof(*menu_def),menu_def, NULL);
00114
00115
00116
00117 widget = gtk_item_factory_get_widget(main_menu, "<TextView>");
00118
00119
00120 gtk_box_pack_start(GTK_BOX(box), widget, FALSE, FALSE, 0);
00121
00122 scroll = gtk_scrolled_window_new(NULL, NULL);
00123
00124
00125 gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 0);
00126
00127
00128 view = gtk_text_view_new();
00129
00130
00131 buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
00132
00133
00134 gtk_container_add(GTK_CONTAINER(scroll), view);
00135
00136
00137
00138 gtk_text_buffer_create_tag(buf, "gap", "pixels_above_lines", 30, NULL);
00139
00140 gtk_text_buffer_create_tag(buf, "lmarg", "left_margin", 5, NULL);
00141
00142 gtk_text_buffer_create_tag(buf, "blue_fg", "foreground", "blue", NULL);
00143
00144 gtk_text_buffer_create_tag(buf, "purple_fg", "foreground", "#9900CC", NULL);
00145
00146 gtk_text_buffer_create_tag(buf, "pink_fg", "foreground", "#FF00FF", NULL);
00147
00148 gtk_text_buffer_create_tag(buf, "maroon_fg", "foreground", "maroon", NULL);
00149
00150 gtk_text_buffer_create_tag(buf, "green_fg", "foreground", "#336600", NULL);
00151
00152 gtk_text_buffer_create_tag(buf, "gray_bg", "background", "#EEEEEE", NULL);
00153
00154 gtk_text_buffer_create_tag(buf, "yellow_bg", "background", "yellow", NULL);
00155
00156 gtk_text_buffer_create_tag(buf, "italic", "style", PANGO_STYLE_ITALIC, NULL);
00157
00158 gtk_text_buffer_create_tag(buf, "bold", "weight", PANGO_WEIGHT_BOLD, NULL);
00159
00160 GtkWidget *quitbox,*button,*scroll2;
00161
00162
00163 scroll2 = gtk_scrolled_window_new(NULL, NULL);
00164 gtk_box_pack_start(GTK_BOX(box1), scroll2, TRUE, TRUE, 0);
00165
00166 view2 = gtk_text_view_new();
00167 buf2 = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view2));
00168 gtk_container_add(GTK_CONTAINER(scroll2), view2);
00169
00170 gtk_text_buffer_create_tag(buf2, "orange", "background", "#FFCC33", NULL);
00171
00172
00173
00174 GtkWidget *table;
00175 table = gtk_table_new(3, 0, TRUE);
00176 gtk_table_set_row_spacings(GTK_TABLE(table), 10);
00177 gtk_table_set_col_spacings(GTK_TABLE(table), 10);
00178
00179 gtk_table_attach_defaults(GTK_TABLE(table), box, 0, 1, 0, 6 );
00180 gtk_table_attach_defaults(GTK_TABLE(table), box1, 0, 1, 6, 9 );
00181
00182
00183 gtk_container_add(GTK_CONTAINER (window), GTK_WIDGET(table));
00184
00185 g_signal_connect (buf2, "notify::cursor-position", G_CALLBACK (gtk_text_view_notify_cursor_position), view2);
00186
00187
00188 quitbox = gtk_hbox_new (FALSE, 0);
00189
00190 gtk_table_attach_defaults(GTK_TABLE(table), quitbox, 0, 1, 9, 10);
00191
00192 entry = gtk_entry_new_with_max_length (500);
00193 gtk_entry_set_text (GTK_ENTRY (entry),"Enter gcc command here...");
00194
00195 gtk_entry_select_region (GTK_ENTRY (entry), 0, GTK_ENTRY(entry)->text_length);
00196
00197 gtk_box_pack_start (GTK_BOX (quitbox), entry, TRUE, TRUE, 0);
00198
00199 gtk_signal_connect_object (GTK_OBJECT (entry), "activate", G_CALLBACK (gcc_entry), (gpointer)entry);
00200
00201 gtk_signal_connect_object (GTK_OBJECT (entry), "activate", G_CALLBACK (submit_clicked), NULL);
00202
00203
00204
00205 button = gtk_button_new_with_label ("Compile (gcc)");
00206
00207
00208 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gcc_entry), (gpointer)entry);
00209
00210
00211 gtk_signal_connect_object (GTK_OBJECT (button), "clicked", G_CALLBACK (submit_clicked), NULL);
00212
00213
00214
00215 gtk_box_pack_start (GTK_BOX (quitbox), button, TRUE, FALSE, 0);
00216
00217
00218 gtk_widget_show_all(window);
00219
00220
00221 g_set_printerr_handler(err_msg);
00222
00223
00224 if(argc > 1)
00225 load_file(g_strdup(argv[1]));
00226
00227
00228
00229 gtk_main();
00230
00231 return 0;
00232 }