82 lines
2.6 KiB
C++
82 lines
2.6 KiB
C++
#include "UIManager.h"
|
|
|
|
|
|
const gchar* const UIManager::uiData = (const gchar*)
|
|
"<ui>"
|
|
"<menubar>"
|
|
"<menu action=\"fileMenu\">"
|
|
"<menuitem action=\"new\"/>"
|
|
"<menuitem action=\"open\"/>"
|
|
"<menuitem action=\"save\"/>"
|
|
"<menuitem action=\"saveAs\"/>"
|
|
"<separator/>"
|
|
"<menuitem action=\"quit\"/>"
|
|
"</menu>"
|
|
"</menubar>"
|
|
"<toolbar action=\"toolbar1\">"
|
|
"<separator/>"
|
|
"<toolitem action=\"zoomIn\"/>"
|
|
"<toolitem action=\"zoomOut\"/>"
|
|
"<separator/>"
|
|
"</toolbar>"
|
|
"</ui>";
|
|
|
|
void UIManager::handleAction(GtkAction *action, UIManager *uiManager) {
|
|
//const gchar* name = gtk_action_get_name(action);
|
|
|
|
/*if(!strcmp(name, "zoomIn"))
|
|
zoomInCentered(1.2f);
|
|
else if(!strcmp(name, "zoomOut"))
|
|
zoomOutCentered(1.2f);*/
|
|
}
|
|
|
|
GtkActionGroup* UIManager::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), this);
|
|
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), this);
|
|
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;
|
|
}
|
|
|
|
UIManager::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);
|
|
}
|
|
|
|
UIManager::~UIManager() {
|
|
g_object_unref(G_OBJECT(uiManager));
|
|
}
|