/*
The api.cpp file is where the API is built for the entire program.
*/
void api()
{
//sets what the widgets are
g_print("Defining API Variables...\n");
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
menubox=gtk_vbox_new(FALSE, 0);
menubar=get_menubar_menu(window);
mainpane=gtk_hpaned_new();
filelist=gtk_label_new("");
notebook=gtk_notebook_new();
filesel=gtk_file_selection_new("Devchekio - File Selction");
//save check settings
save_check_vbox=gtk_table_new(2, 3, TRUE);
save_check_label=gtk_label_new("Do you wish to save this current document before closing it?\n");
save_check_save=gtk_button_new_with_label("Save");
save_check_save_as=gtk_button_new_with_label("Save As");
save_check_no=gtk_button_new_with_label("Don't Save");
save_check_none=gtk_button_new_with_label("Don't Save Any");
save_check_all=gtk_button_new_with_label("Save All");
save_check_cancel=gtk_button_new_with_label("Cancel");
save_check=gtk_dialog_new();
//search box setting
search_find=gtk_button_new_with_label("Find");
search_box=gtk_dialog_new();
g_print("Setting Window Properties...\n");
//set save window title
gtk_window_set_title(GTK_WINDOW(save_check), "Devchekio - Save File");
//set search window title
gtk_window_set_title(GTK_WINDOW(search_box), "Devchekio - Search");
g_print("Packing API...\n");
//lays out the menu
gtk_box_pack_start(GTK_BOX(menubox), menubar, FALSE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(menubox), mainpane);
//pack dialog
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(save_check)->vbox), save_check_label);
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(save_check)->action_area), save_check_vbox);
gtk_table_attach_defaults(GTK_TABLE(save_check_vbox), save_check_save, 0, 1, 0, 1);
gtk_table_attach_defaults(GTK_TABLE(save_check_vbox), save_check_save_as, 1, 2, 0, 1);
gtk_table_attach_defaults(GTK_TABLE(save_check_vbox), save_check_no, 2, 3, 0, 1);
gtk_table_attach_defaults(GTK_TABLE(save_check_vbox), save_check_none, 0, 1, 1, 2);
gtk_table_attach_defaults(GTK_TABLE(save_check_vbox), save_check_all, 1, 2, 1, 2);
gtk_table_attach_defaults(GTK_TABLE(save_check_vbox), save_check_cancel, 2, 3, 1, 2);
//table properties
gtk_table_set_row_spacings(GTK_TABLE(save_check_vbox), 10);
gtk_table_set_col_spacings(GTK_TABLE(save_check_vbox), 10);
gtk_container_border_width(GTK_CONTAINER(save_check), 5);
//pack search
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(search_box)->action_area), search_find);
g_print("Linking Events...\n");
//sets event functions
gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(destroyapp), NULL);
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked", G_CALLBACK(file_sel), (gpointer)filesel);
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), "clicked", G_CALLBACK(file_sel_x), (gpointer)filesel);
g_signal_connect(G_OBJECT(save_check), "delete_event", G_CALLBACK(on_save_cancel), NULL);
g_signal_connect(G_OBJECT(save_check_save), "clicked", G_CALLBACK(on_save), NULL);
g_signal_connect(G_OBJECT(save_check_save_as), "clicked", G_CALLBACK(on_save_as), NULL);
g_signal_connect(G_OBJECT(save_check_no), "clicked", G_CALLBACK(check_x), NULL);
g_signal_connect(G_OBJECT(save_check_none), "clicked", G_CALLBACK(on_save_none), NULL);
g_signal_connect(G_OBJECT(save_check_all), "clicked", G_CALLBACK(on_save_all), NULL);
g_signal_connect(G_OBJECT(save_check_cancel), "clicked", G_CALLBACK(on_save_cancel), NULL);
g_signal_connect_after(G_OBJECT(notebook), "switch-page", G_CALLBACK(on_tab_plus), NULL);
//g_signal_connect(G_OBJECT(search_box), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
g_print("More Packing...\n");
//lays on panes
gtk_paned_add1(GTK_PANED(mainpane), filelist);
gtk_paned_add2(GTK_PANED(mainpane), notebook);
//puts the menubox onto the window
gtk_container_add(GTK_CONTAINER(window), menubox);
g_print("More Properties...\n");
//set sizes
gtk_container_border_width(GTK_CONTAINER(window), 0);
gtk_window_set_default_size(GTK_WINDOW(window), 700, 500);
//gtk_container_border_width(GTK_CONTAINER(save_check_label), 20);
//sets windows prefs
gtk_window_set_title(GTK_WINDOW(window), "Devchekio");
icolst=g_list_prepend(icolst, gdk_pixbuf_new_from_file("images/icon_16.png", tmppixbuf));
icolst=g_list_prepend(icolst, gdk_pixbuf_new_from_file("images/icon_32.png", tmppixbuf));
icolst=g_list_prepend(icolst, gdk_pixbuf_new_from_file("images/icon_48.png", tmppixbuf));
icolst=g_list_prepend(icolst, gdk_pixbuf_new_from_file("images/icon_64.png", tmppixbuf));
icolst=g_list_prepend(icolst, gdk_pixbuf_new_from_file("images/icon_128.png", tmppixbuf));
gtk_window_set_icon_list(GTK_WINDOW(window), icolst);
g_print("Showing API...\n");
//shows all current widgets needed
gtk_widget_show(menubox);
gtk_widget_show(menubar);
gtk_widget_show(mainpane);
gtk_widget_show(filelist);
gtk_widget_show(notebook);
gtk_widget_show(window);
gtk_widget_show(save_check_label);
gtk_widget_show(save_check_vbox);
gtk_widget_show(save_check_save);
gtk_widget_show(save_check_save_as);
gtk_widget_show(save_check_no);
gtk_widget_show(save_check_none);
gtk_widget_show(save_check_all);
gtk_widget_show(save_check_cancel);
gtk_widget_show(search_find);
//tells that the three widgets are part of the main window
gtk_window_set_transient_for(GTK_WINDOW(filesel), GTK_WINDOW(window));
gtk_window_set_transient_for(GTK_WINDOW(save_check), GTK_WINDOW(window));
gtk_window_set_transient_for(GTK_WINDOW(search_box), GTK_WINDOW(window));
//opens first tabs
on_new();
on_new();
//sets and checks line numbers on and word wrap
ifactory=gtk_item_factory_from_widget(menubar);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item(ifactory, "/View/Line Numbers")), true);
on_linen();
on_wrap();
curtab=gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
//sees to see if devchekio was opened with paramters and opens them
fileprmp();
return;
}