diff options
Diffstat (limited to 'SidebarView.cpp')
-rw-r--r-- | SidebarView.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
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); } } |