// interface.cxx // // builds the GTK interface to the Glaum project // #include "defines.h" #include "prototype.h" #include "global.h" #include void interface(Global &global) { GtkWidget *window; GtkWidget *vbox; GtkWidget *menuBar; GtkWidget *fileMenu; GtkWidget *menuItem; GtkWidget *settingsItem; GtkWidget *quitItem; GtkWidget *aboutItem; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), APPLICATION_TITLE); gtk_container_border_width(GTK_CONTAINER(window), WINDOW_SPACING); X(window, "delete_event", gtk_main_quit, NULL); vbox = gtk_vbox_new(FALSE, VBOX_MAIN_SPACING); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show(vbox); /* menu bar */ menuBar = gtk_menu_bar_new(); fileMenu = gtk_menu_new(); gtk_box_pack_start(GTK_BOX(vbox), menuBar, TRUE, TRUE, MENU_SPACING); menuItem = gtk_menu_item_new_with_label("File"); gtk_widget_show(menuItem); settingsItem = gtk_menu_item_new_with_label("Preferences"); gtk_menu_append(GTK_MENU(fileMenu), settingsItem); X(settingsItem, "activate", settings_dialog, (gpointer)&global); gtk_widget_show(settingsItem); quitItem = gtk_menu_item_new_with_label("Exit"); gtk_menu_append(GTK_MENU(fileMenu), quitItem); X(quitItem, "activate", gtk_main_quit, NULL); gtk_widget_show(quitItem); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuItem), fileMenu); gtk_menu_bar_append(GTK_MENU_BAR(menuBar), menuItem); aboutItem = gtk_menu_item_new_with_label("About"); X(aboutItem, "activate", about_dialog, (gpointer)&global); gtk_widget_show(aboutItem); gtk_menu_bar_append(GTK_MENU_BAR(menuBar), aboutItem); gtk_widget_show(menuBar); /* possibilities for aligning tabs are GTK_POS_(LEFT|RIGHT|TOP|BOTTOM) */ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(global.getNotebookWidget()), GTK_POS_TOP); gtk_box_pack_start(GTK_BOX(vbox), global.getNotebookWidget(), FALSE, FALSE, NOTEBOOK_SPACING); gtk_widget_show(global.getNotebookWidget()); convert_page(global); status_page(global); batch_page(global); gtk_box_pack_end(GTK_BOX(vbox), global.getStatusbarWidget(), FALSE, FALSE, STATUSBAR_SPACING); gtk_widget_show(global.getStatusbarWidget()); gtk_widget_show(window); syncPreferences(&global); }