zoomedit: Fixed some bugs.
This commit is contained in:
parent
beb34f184a
commit
d82c597917
8 changed files with 40 additions and 30 deletions
|
@ -42,7 +42,7 @@ EditManager::EditManager(Window *window) {
|
||||||
|
|
||||||
void EditManager::addRoom() {
|
void EditManager::addRoom() {
|
||||||
if(mode == VIEW) {
|
if(mode == VIEW) {
|
||||||
newRoom = Room(idManager.generate("room"));
|
newRoom = Room();
|
||||||
mode = ADD;
|
mode = ADD;
|
||||||
|
|
||||||
activeRoom = &newRoom;
|
activeRoom = &newRoom;
|
||||||
|
@ -56,6 +56,7 @@ void EditManager::finishRoom() {
|
||||||
mode = VIEW;
|
mode = VIEW;
|
||||||
|
|
||||||
if(newRoom.size() > 2 && polygonOk(newRoom)) {
|
if(newRoom.size() > 2 && polygonOk(newRoom)) {
|
||||||
|
newRoom.setName(idManager.generate("room"));
|
||||||
window->getLevel().push_back(newRoom);
|
window->getLevel().push_back(newRoom);
|
||||||
activeRoom = &window->getLevel().back();
|
activeRoom = &window->getLevel().back();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
#include "SidebarAdd.h"
|
#include "SidebarAdd.h"
|
||||||
|
|
||||||
|
|
||||||
void SidebarAdd::buttonClicked(GtkButton *button, SidebarAdd *sidebar) {
|
|
||||||
sidebar->editor->finishRoom();
|
|
||||||
}
|
|
||||||
|
|
||||||
SidebarAdd::SidebarAdd(EditManager *editor) {
|
SidebarAdd::SidebarAdd(EditManager *editor) {
|
||||||
this->editor = editor;
|
this->editor = editor;
|
||||||
|
|
||||||
|
@ -16,10 +12,6 @@ SidebarAdd::SidebarAdd(EditManager *editor) {
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelRoomInfo), 0.0, 0.5);
|
gtk_misc_set_alignment(GTK_MISC(labelRoomInfo), 0.0, 0.5);
|
||||||
gtk_box_pack_start(GTK_BOX(sidebar), labelRoomInfo, FALSE, FALSE, 5);
|
gtk_box_pack_start(GTK_BOX(sidebar), labelRoomInfo, FALSE, FALSE, 5);
|
||||||
|
|
||||||
buttonAdd = gtk_button_new_with_label("Add room");
|
|
||||||
g_signal_connect(G_OBJECT(buttonAdd), "clicked", G_CALLBACK(buttonClicked), this);
|
|
||||||
gtk_box_pack_end(GTK_BOX(sidebar), buttonAdd, FALSE, FALSE, 0);
|
|
||||||
|
|
||||||
gtk_widget_show_all(sidebar);
|
gtk_widget_show_all(sidebar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,13 +22,3 @@ SidebarAdd::~SidebarAdd() {
|
||||||
GtkWidget* SidebarAdd::getWidget() {
|
GtkWidget* SidebarAdd::getWidget() {
|
||||||
return sidebar;
|
return sidebar;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SidebarAdd::update() {
|
|
||||||
if(!editor->getActiveRoom())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(editor->getActiveRoom()->size() > 2 && editor->polygonOk(*editor->getActiveRoom()))
|
|
||||||
gtk_widget_set_sensitive(buttonAdd, TRUE);
|
|
||||||
else
|
|
||||||
gtk_widget_set_sensitive(buttonAdd, FALSE);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
#include "SidebarManager.h"
|
#include "SidebarManager.h"
|
||||||
|
#include "Window.h"
|
||||||
|
|
||||||
|
|
||||||
SidebarManager::SidebarManager(EditManager *editor)
|
SidebarManager::SidebarManager(Window *window)
|
||||||
: sidebarToolbox(editor), sidebarView(editor), sidebarAdd(editor), toolAddPolygon(editor)
|
: sidebarToolbox(window), sidebarView(&window->getEditManager()),
|
||||||
|
sidebarAdd(&window->getEditManager()), toolAddPolygon(&window->getEditManager())
|
||||||
{
|
{
|
||||||
this->editor = editor;
|
this->editor = &window->getEditManager();
|
||||||
activeSidebar = NULL;
|
activeSidebar = NULL;
|
||||||
|
|
||||||
sidebar = gtk_vbox_new(FALSE, 0);
|
sidebar = gtk_vbox_new(FALSE, 0);
|
||||||
|
@ -12,14 +14,19 @@ SidebarManager::SidebarManager(EditManager *editor)
|
||||||
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebar), sidebarToolbox.getWidget(), FALSE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(sidebar), sidebarToolbox.getWidget(), FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), gtk_hseparator_new(), FALSE, FALSE, 5);
|
||||||
|
|
||||||
|
toolLabel = gtk_label_new(sidebarToolbox.getActiveTool()->getName());
|
||||||
|
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), toolLabel, FALSE, FALSE, 0);
|
||||||
|
|
||||||
scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
|
scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
|
||||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||||
gtk_box_pack_end_defaults(GTK_BOX(sidebar), scrolledWindow);
|
gtk_box_pack_start_defaults(GTK_BOX(sidebar), scrolledWindow);
|
||||||
gtk_widget_show(scrolledWindow);
|
gtk_widget_show(scrolledWindow);
|
||||||
|
|
||||||
viewport = gtk_viewport_new(NULL, NULL);
|
viewport = gtk_viewport_new(NULL, NULL);
|
||||||
gtk_container_add(GTK_CONTAINER(scrolledWindow), viewport);
|
gtk_container_add(GTK_CONTAINER(scrolledWindow), viewport);
|
||||||
gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
|
|
||||||
|
|
||||||
sidebarToolbox.addTool(&toolAddPolygon);
|
sidebarToolbox.addTool(&toolAddPolygon);
|
||||||
|
|
||||||
|
@ -50,6 +57,8 @@ void SidebarManager::update() {
|
||||||
activeSidebar = newSidebar;
|
activeSidebar = newSidebar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gtk_label_set_text(GTK_LABEL(toolLabel), sidebarToolbox.getActiveTool()->getName());
|
||||||
|
|
||||||
sidebarToolbox.update();
|
sidebarToolbox.update();
|
||||||
activeSidebar->update();
|
activeSidebar->update();
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,9 +11,12 @@
|
||||||
#include "ToolAddPolygon.h"
|
#include "ToolAddPolygon.h"
|
||||||
|
|
||||||
|
|
||||||
|
class Window;
|
||||||
|
|
||||||
|
|
||||||
class SidebarManager {
|
class SidebarManager {
|
||||||
private:
|
private:
|
||||||
GtkWidget *sidebar, *scrolledWindow, *viewport;
|
GtkWidget *sidebar, *toolLabel, *scrolledWindow, *viewport;
|
||||||
|
|
||||||
SidebarToolbox sidebarToolbox;
|
SidebarToolbox sidebarToolbox;
|
||||||
|
|
||||||
|
@ -31,7 +34,7 @@ class SidebarManager {
|
||||||
const SidebarManager& operator=(const SidebarManager &w);
|
const SidebarManager& operator=(const SidebarManager &w);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SidebarManager(EditManager *editor);
|
SidebarManager(Window *window);
|
||||||
virtual ~SidebarManager();
|
virtual ~SidebarManager();
|
||||||
|
|
||||||
GtkWidget *getWidget() {
|
GtkWidget *getWidget() {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "SidebarToolbox.h"
|
#include "SidebarToolbox.h"
|
||||||
|
#include "Window.h"
|
||||||
|
|
||||||
|
|
||||||
void SidebarToolbox::buttonToggled(GtkWidget *button, SidebarToolbox *toolbox) {
|
void SidebarToolbox::buttonToggled(GtkWidget *button, SidebarToolbox *toolbox) {
|
||||||
|
@ -6,6 +7,8 @@ void SidebarToolbox::buttonToggled(GtkWidget *button, SidebarToolbox *toolbox) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
toolbox->activateTool(toolbox->buttonsRev[button]);
|
toolbox->activateTool(toolbox->buttonsRev[button]);
|
||||||
|
|
||||||
|
toolbox->window->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SidebarToolbox::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation, SidebarToolbox *toolbox) {
|
void SidebarToolbox::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation, SidebarToolbox *toolbox) {
|
||||||
|
@ -56,7 +59,9 @@ void SidebarToolbox::activateTool(Tool *tool) {
|
||||||
tool->activate();
|
tool->activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
SidebarToolbox::SidebarToolbox(EditManager *editManager) : toolSelector(editManager) {
|
SidebarToolbox::SidebarToolbox(Window *window) : toolSelector(&window->getEditManager()) {
|
||||||
|
this->window = window;
|
||||||
|
|
||||||
widget = gtk_table_new(1, 1, TRUE);
|
widget = gtk_table_new(1, 1, TRUE);
|
||||||
g_object_ref_sink(G_OBJECT(widget));
|
g_object_ref_sink(G_OBJECT(widget));
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,16 @@
|
||||||
#include "Tool.h"
|
#include "Tool.h"
|
||||||
#include "ToolSelector.h"
|
#include "ToolSelector.h"
|
||||||
|
|
||||||
|
|
||||||
|
class Window;
|
||||||
|
|
||||||
|
|
||||||
class SidebarToolbox : Sidebar {
|
class SidebarToolbox : Sidebar {
|
||||||
private:
|
private:
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
||||||
|
Window *window;
|
||||||
|
|
||||||
std::list<Tool*> tools;
|
std::list<Tool*> tools;
|
||||||
std::map<Tool*, GtkWidget*> buttons;
|
std::map<Tool*, GtkWidget*> buttons;
|
||||||
std::map<GtkWidget*, Tool*> buttonsRev;
|
std::map<GtkWidget*, Tool*> buttonsRev;
|
||||||
|
@ -34,13 +40,17 @@ class SidebarToolbox : Sidebar {
|
||||||
static void sizeAllocate(GtkWidget *widget, GtkAllocation *allocation, SidebarToolbox *toolbox);
|
static void sizeAllocate(GtkWidget *widget, GtkAllocation *allocation, SidebarToolbox *toolbox);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SidebarToolbox(EditManager *editManager);
|
SidebarToolbox(Window *window);
|
||||||
virtual ~SidebarToolbox();
|
virtual ~SidebarToolbox();
|
||||||
|
|
||||||
GtkWidget* getWidget() {
|
GtkWidget* getWidget() {
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Tool *getActiveTool() {
|
||||||
|
return activeTool;
|
||||||
|
}
|
||||||
|
|
||||||
void addTool(Tool *tool);
|
void addTool(Tool *tool);
|
||||||
void removeTool(Tool *tool);
|
void removeTool(Tool *tool);
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ gboolean Window::deleteEvent(GtkWidget *widget, GdkEvent *event, Window *window)
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::Window(GdkGLConfig *glconfig, WindowManager *manager)
|
Window::Window(GdkGLConfig *glconfig, WindowManager *manager)
|
||||||
: uiManager(this), editor(this), drawer(this, glconfig), sidebar(&editor),
|
: uiManager(this), editor(this), drawer(this, glconfig), sidebar(this),
|
||||||
fileManager(this)
|
fileManager(this)
|
||||||
{
|
{
|
||||||
this->manager = manager;
|
this->manager = manager;
|
||||||
|
|
Reference in a new issue