From 29ecb9c039d28768a8e5136c18ce76030e451654 Mon Sep 17 00:00:00 2001 From: neoraider Date: Tue, 30 Oct 2007 20:07:00 +0000 Subject: zoomedit: R?ume haben jetzt eine H?he. --- Room.h | 9 +++++++-- SidebarView.cpp | 27 +++++++++++++++++++++++++-- SidebarView.h | 3 ++- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/Room.h b/Room.h index 5422e3d..18dc687 100644 --- a/Room.h +++ b/Room.h @@ -8,14 +8,19 @@ class Room : public Polygon { private: std::string name; + float height; + public: - Room() {} - Room(std::string name) {this->name = name;} + Room() {height = 10;} + Room(std::string name) {this->name = name; height= 10;} std::string &getName() {return name;} const std::string &getName() const {return name;} void setName(const std::string &name) {this->name = name;} + + float getHeight() const {return height;} + void setHeight(float height) {this->height = height;} }; #endif /*ROOM_H_*/ diff --git a/SidebarView.cpp b/SidebarView.cpp index 04c6dd0..feea1f8 100644 --- a/SidebarView.cpp +++ b/SidebarView.cpp @@ -1,6 +1,13 @@ #include "SidebarView.h" +void SidebarView::spinButtonHeightChanged(GtkSpinButton *spinbutton, SidebarView *view) { + if(!view->editor->getActiveRoom()) + return; + + view->editor->getActiveRoom()->setHeight(gtk_spin_button_get_value(spinbutton)); +} + void SidebarView::buttonClicked(GtkButton *button, SidebarView *sidebar) { sidebar->editor->addRoom(); } @@ -28,9 +35,8 @@ SidebarView::SidebarView(EditManager *editor) { //gtk_widget_add_events(entryName, GDK_FOCUS_CHANGE_MASK); gtk_box_pack_start(GTK_BOX(sidebar), entryName, FALSE, FALSE, 0); - GtkWidget *tableRoomData = gtk_table_new(2, 2, FALSE); + GtkWidget *tableRoomData = gtk_table_new(2, 3, FALSE); gtk_table_set_row_spacings(GTK_TABLE(tableRoomData), 5); - gtk_table_set_col_spacings(GTK_TABLE(tableRoomData), 10); gtk_box_pack_start(GTK_BOX(sidebar), tableRoomData, FALSE, FALSE, 5); GtkWidget *labelAreaLabel = gtk_label_new("Room area:"); @@ -49,6 +55,17 @@ SidebarView::SidebarView(EditManager *editor) { gtk_misc_set_alignment(GTK_MISC(labelPerimeter), 1.0, 0.5); gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelPerimeter, 1, 2, 1, 2); + GtkWidget *labelHeight = gtk_label_new("Height:"); + gtk_misc_set_alignment(GTK_MISC(labelHeight), 0.0, 0.5); + gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelHeight, 0, 1, 2, 3); + + spinButtonHeight = gtk_spin_button_new_with_range(0, 10000, 0.1f); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spinButtonHeight), 2); + gtk_entry_set_alignment(GTK_ENTRY(spinButtonHeight), 1.0); + gtk_table_attach(GTK_TABLE(tableRoomData), spinButtonHeight, 1, 2, 2, 3, (GtkAttachOptions)(GTK_EXPAND|GTK_SHRINK|GTK_FILL), + (GtkAttachOptions)(GTK_EXPAND|GTK_FILL), 0, 0); + g_signal_connect(G_OBJECT(spinButtonHeight), "value-changed", G_CALLBACK(spinButtonHeightChanged), this); + 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); @@ -76,6 +93,9 @@ void SidebarView::update() { string = g_strdup_printf("%.2f", editor->getActiveRoom()->perimeter()); gtk_label_set_text(GTK_LABEL(labelPerimeter), string); g_free(string); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinButtonHeight), editor->getActiveRoom()->getHeight()); + gtk_widget_set_sensitive(spinButtonHeight, TRUE); } else { gtk_entry_set_text(GTK_ENTRY(entryName), ""); @@ -83,5 +103,8 @@ void SidebarView::update() { gtk_label_set_text(GTK_LABEL(labelArea), NULL); gtk_label_set_text(GTK_LABEL(labelPerimeter), NULL); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinButtonHeight), 0.0); + gtk_widget_set_sensitive(spinButtonHeight, FALSE); } } diff --git a/SidebarView.h b/SidebarView.h index ae3ee28..a4c01f0 100644 --- a/SidebarView.h +++ b/SidebarView.h @@ -8,7 +8,7 @@ class SidebarView : public Sidebar { private: GtkWidget *sidebar; - GtkWidget *entryName, *labelArea, *labelPerimeter, *buttonAdd; + GtkWidget *entryName, *labelArea, *labelPerimeter, *spinButtonHeight, *buttonAdd; EditManager *editor; @@ -16,6 +16,7 @@ class SidebarView : public Sidebar { SidebarView(const SidebarView &w); const SidebarView& operator=(const SidebarView &w); + static void spinButtonHeightChanged(GtkSpinButton *spinbutton, SidebarView *view); static void buttonClicked(GtkButton *button, SidebarView *view); public: -- cgit v1.2.3