#include "ui.h" #include "draw.h" #include "window.h" #include #include static const gchar *uiData = "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""; static void handleAction(GtkAction *action, gpointer user_data) { const gchar* name = gtk_action_get_name(action); if(!strcmp(name, "zoomIn")) zoomInCentered(1.2); else if(!strcmp(name, "zoomOut")) zoomOutCentered(1.2); } static GtkActionGroup *createActions() { GtkActionGroup *actionGroup = gtk_action_group_new("actions"); GtkAction *action; action = gtk_action_new("fileMenu", "_File", NULL, NULL); gtk_action_group_add_action(actionGroup, action); action = gtk_action_new("toolbar1", "Toolbar", NULL, NULL); gtk_action_group_add_action(actionGroup, action); action = gtk_action_new("new", "_New", NULL, GTK_STOCK_NEW); gtk_action_group_add_action_with_accel(actionGroup, action, NULL); action = gtk_action_new("open", "_Open", NULL, GTK_STOCK_OPEN); gtk_action_group_add_action_with_accel(actionGroup, action, NULL); action = gtk_action_new("save", "_Save", NULL, GTK_STOCK_SAVE); gtk_action_group_add_action_with_accel(actionGroup, action, NULL); action = gtk_action_new("saveAs", "Save _As", NULL, NULL); gtk_action_group_add_action(actionGroup, action); action = gtk_action_new("zoomIn", "Zoom _in", NULL, GTK_STOCK_ZOOM_IN); g_signal_connect(G_OBJECT(action), "activate", G_CALLBACK(handleAction), NULL); gtk_action_group_add_action_with_accel(actionGroup, action, NULL); action = gtk_action_new("zoomOut", "Zoom _out", NULL, GTK_STOCK_ZOOM_OUT); g_signal_connect(G_OBJECT(action), "activate", G_CALLBACK(handleAction), NULL); gtk_action_group_add_action_with_accel(actionGroup, action, NULL); action = gtk_action_new("quit", "_Quit", NULL, GTK_STOCK_QUIT); g_signal_connect(G_OBJECT(action), "activate", G_CALLBACK(gtk_main_quit), NULL); gtk_action_group_add_action_with_accel(actionGroup, action, NULL); return actionGroup; } static GtkUIManager* getUIManager() { static GtkUIManager *uiManager = NULL; if(!uiManager) { uiManager = gtk_ui_manager_new(); gtk_ui_manager_add_ui_from_string(uiManager, uiData, -1, NULL); gtk_ui_manager_insert_action_group(uiManager, createActions(), 0); gtk_ui_manager_ensure_update(uiManager); } return uiManager; } GtkWidget* getMenu() { return gtk_ui_manager_get_widget(getUIManager(), "/ui/menubar"); } GtkWidget* getToolbar() { return gtk_ui_manager_get_widget(getUIManager(), "/ui/toolbar1"); } GtkAccelGroup *getAccels() { return gtk_ui_manager_get_accel_group(getUIManager()); }