zoomedit: UIManager gekapselt + einige kleine Fixes.

This commit is contained in:
neoraider 2007-10-18 22:07:02 +00:00
parent 2bc9bb15dc
commit ddebc59336
8 changed files with 73 additions and 68 deletions

View file

@ -61,10 +61,10 @@ void EditManager::finishRoom() {
}
void EditManager::addVertex(const Vertex &v) {
if(mode != ADD || !activeRoom)
if(mode != ADD)
return;
activeRoom->push_back(v);
newRoom.push_back(v);
window->update();
}
@ -103,7 +103,7 @@ void EditManager::buttonPress(unsigned int button) {
switch(mode) {
case VIEW:
activeRoom = getHoveredRoom();;
activeRoom = getHoveredRoom();
break;
case ADD:

View file

@ -1,5 +1,5 @@
bin_PROGRAMS = zoomedit
zoomedit_SOURCES = zoomedit.cpp ui.cpp draw.cpp Vertex.cpp \
zoomedit_SOURCES = zoomedit.cpp UIManager.cpp draw.cpp Vertex.cpp \
Line.cpp Polygon.cpp Rectangle.cpp Room.cpp Triangle.cpp \
IdManager.cpp WindowManager.cpp SidebarManager.cpp \
Window.cpp SidebarView.cpp SidebarAdd.cpp Drawer.cpp \

View file

@ -49,7 +49,7 @@ am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_zoomedit_OBJECTS = zoomedit-zoomedit.$(OBJEXT) \
zoomedit-ui.$(OBJEXT) zoomedit-draw.$(OBJEXT) \
zoomedit-UIManager.$(OBJEXT) zoomedit-draw.$(OBJEXT) \
zoomedit-Vertex.$(OBJEXT) zoomedit-Line.$(OBJEXT) \
zoomedit-Polygon.$(OBJEXT) zoomedit-Rectangle.$(OBJEXT) \
zoomedit-Room.$(OBJEXT) zoomedit-Triangle.$(OBJEXT) \
@ -176,7 +176,7 @@ sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zoomedit_SOURCES = zoomedit.cpp ui.cpp draw.cpp Vertex.cpp \
zoomedit_SOURCES = zoomedit.cpp UIManager.cpp draw.cpp Vertex.cpp \
Line.cpp Polygon.cpp Rectangle.cpp Room.cpp Triangle.cpp \
IdManager.cpp WindowManager.cpp SidebarManager.cpp \
Window.cpp SidebarView.cpp SidebarAdd.cpp Drawer.cpp \
@ -283,11 +283,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-SidebarManager.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-SidebarView.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Triangle.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-UIManager.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Vertex.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Window.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-WindowManager.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-draw.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-ui.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-zoomedit.Po@am__quote@
.cpp.o:
@ -318,19 +318,19 @@ zoomedit-zoomedit.obj: zoomedit.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-zoomedit.obj `if test -f 'zoomedit.cpp'; then $(CYGPATH_W) 'zoomedit.cpp'; else $(CYGPATH_W) '$(srcdir)/zoomedit.cpp'; fi`
zoomedit-ui.o: ui.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-ui.o -MD -MP -MF $(DEPDIR)/zoomedit-ui.Tpo -c -o zoomedit-ui.o `test -f 'ui.cpp' || echo '$(srcdir)/'`ui.cpp
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-ui.Tpo $(DEPDIR)/zoomedit-ui.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ui.cpp' object='zoomedit-ui.o' libtool=no @AMDEPBACKSLASH@
zoomedit-UIManager.o: UIManager.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-UIManager.o -MD -MP -MF $(DEPDIR)/zoomedit-UIManager.Tpo -c -o zoomedit-UIManager.o `test -f 'UIManager.cpp' || echo '$(srcdir)/'`UIManager.cpp
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-UIManager.Tpo $(DEPDIR)/zoomedit-UIManager.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='UIManager.cpp' object='zoomedit-UIManager.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-ui.o `test -f 'ui.cpp' || echo '$(srcdir)/'`ui.cpp
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-UIManager.o `test -f 'UIManager.cpp' || echo '$(srcdir)/'`UIManager.cpp
zoomedit-ui.obj: ui.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-ui.obj -MD -MP -MF $(DEPDIR)/zoomedit-ui.Tpo -c -o zoomedit-ui.obj `if test -f 'ui.cpp'; then $(CYGPATH_W) 'ui.cpp'; else $(CYGPATH_W) '$(srcdir)/ui.cpp'; fi`
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-ui.Tpo $(DEPDIR)/zoomedit-ui.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ui.cpp' object='zoomedit-ui.obj' libtool=no @AMDEPBACKSLASH@
zoomedit-UIManager.obj: UIManager.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-UIManager.obj -MD -MP -MF $(DEPDIR)/zoomedit-UIManager.Tpo -c -o zoomedit-UIManager.obj `if test -f 'UIManager.cpp'; then $(CYGPATH_W) 'UIManager.cpp'; else $(CYGPATH_W) '$(srcdir)/UIManager.cpp'; fi`
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-UIManager.Tpo $(DEPDIR)/zoomedit-UIManager.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='UIManager.cpp' object='zoomedit-UIManager.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-ui.obj `if test -f 'ui.cpp'; then $(CYGPATH_W) 'ui.cpp'; else $(CYGPATH_W) '$(srcdir)/ui.cpp'; fi`
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-UIManager.obj `if test -f 'UIManager.cpp'; then $(CYGPATH_W) 'UIManager.cpp'; else $(CYGPATH_W) '$(srcdir)/UIManager.cpp'; fi`
zoomedit-draw.o: draw.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-draw.o -MD -MP -MF $(DEPDIR)/zoomedit-draw.Tpo -c -o zoomedit-draw.o `test -f 'draw.cpp' || echo '$(srcdir)/'`draw.cpp

View file

@ -1,10 +1,7 @@
#include "ui.h"
#include "draw.h"
#include <gtk/gtk.h>
#include <string.h>
#include "UIManager.h"
static const gchar *uiData =
const gchar* const UIManager::uiData = (const gchar*)
"<ui>"
"<menubar>"
"<menu action=\"fileMenu\">"
@ -18,14 +15,13 @@ static const gchar *uiData =
"</menubar>"
"<toolbar action=\"toolbar1\">"
"<separator/>"
"<toolitem action=\"zoomIn\"/>"
"<toolitem action=\"zoomOut\"/>"
"<toolitem action=\"zoomIn\"/>"
"<toolitem action=\"zoomOut\"/>"
"<separator/>"
"</toolbar>"
"</ui>";
static void handleAction(GtkAction *action, gpointer user_data) {
void UIManager::handleAction(GtkAction *action, UIManager *uiManager) {
//const gchar* name = gtk_action_get_name(action);
/*if(!strcmp(name, "zoomIn"))
@ -34,7 +30,7 @@ static void handleAction(GtkAction *action, gpointer user_data) {
zoomOutCentered(1.2f);*/
}
static GtkActionGroup *createActions() {
GtkActionGroup* UIManager::createActions() {
GtkActionGroup *actionGroup = gtk_action_group_new("actions");
GtkAction *action;
@ -57,11 +53,11 @@ static GtkActionGroup *createActions() {
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);
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), NULL);
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);
@ -71,32 +67,16 @@ static GtkActionGroup *createActions() {
return actionGroup;
}
static GtkUIManager* getUIManager() {
static GtkUIManager *uiManager = NULL;
UIManager::UIManager() {
uiManager = gtk_ui_manager_new();
if(!uiManager) {
gtk_ui_manager_add_ui_from_string(uiManager, uiData, -1, NULL);
gtk_ui_manager_insert_action_group(uiManager, createActions(), 0);
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;
gtk_ui_manager_ensure_update(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());
UIManager::~UIManager() {
g_object_unref(G_OBJECT(uiManager));
}

34
UIManager.h Normal file
View file

@ -0,0 +1,34 @@
#ifndef UIMANAGER_H_
#define UIMANAGER_H_
#include <gtk/gtk.h>
class UIManager {
private:
static const gchar* const uiData;
GtkUIManager *uiManager;
static void handleAction(GtkAction *action, UIManager *uiManager);
GtkActionGroup* createActions();
public:
UIManager();
virtual ~UIManager();
GtkWidget* getMenu() {
return gtk_ui_manager_get_widget(uiManager, "/ui/menubar");
}
GtkWidget* getToolbar() {
return gtk_ui_manager_get_widget(uiManager, "/ui/toolbar1");
}
GtkAccelGroup* getAccels() {
return gtk_ui_manager_get_accel_group(uiManager);
}
};
#endif /*UIMANAGER_H_*/

View file

@ -1,6 +1,5 @@
#include "Window.h"
#include "WindowManager.h"
#include "ui.h"
gboolean Window::deleteEvent(GtkWidget *widget, GdkEvent *event, Window *window) {
@ -23,10 +22,10 @@ Window::Window(GdkGLConfig *glconfig, WindowManager *manager)
GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_box_pack_start(GTK_BOX(vbox), getMenu(), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), getToolbar(), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), uiManager.getMenu(), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), uiManager.getToolbar(), FALSE, FALSE, 0);
gtk_window_add_accel_group(GTK_WINDOW(window), getAccels());
gtk_window_add_accel_group(GTK_WINDOW(window), uiManager.getAccels());
GtkWidget *hPaned = gtk_hpaned_new();
gtk_box_pack_end(GTK_BOX(vbox), hPaned, TRUE, TRUE, 0);

View file

@ -3,6 +3,7 @@
#include <gtk/gtk.h>
#include <gtk/gtkgl.h>
#include "UIManager.h"
#include "Drawer.h"
#include "SidebarManager.h"
#include "EditManager.h"
@ -16,6 +17,8 @@ class Window {
private:
GtkWidget *window;
UIManager uiManager;
EditManager editor;
Drawer drawer;

11
ui.h
View file

@ -1,11 +0,0 @@
#ifndef UI_H_
#define UI_H_
#include <gtk/gtk.h>
GtkWidget* getMenu();
GtkWidget* getToolbar();
GtkAccelGroup *getAccels();
#endif /*MENU_H_*/