Project: Devchekio
Code Location: https://devchekio.svn.sourceforge.net/svnroot/devchekio
Browse
/
Outline
Download File
api.cpp
/*
    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;
}