From 0eb85210940b8bafe17256dbe63440ccbe4a130e Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Wed, 23 Dec 2015 21:54:19 -0500 Subject: [PATCH] gui/builder: Get a widget from the GTK builder Signed-off-by: Anna Schumaker --- gui/builder.c | 5 +++++ include/gui/builder.h | 3 +++ tests/gui/builder.c | 11 +++++++++++ 3 files changed, 19 insertions(+) diff --git a/gui/builder.c b/gui/builder.c index 555c25ad..5457de76 100644 --- a/gui/builder.c +++ b/gui/builder.c @@ -24,6 +24,11 @@ GObject *gui_builder_object(const char *name) return NULL; } +GtkWidget *gui_builder_widget(const char *name) +{ + return GTK_WIDGET(gui_builder_object(name)); +} + #ifdef CONFIG_TESTING GtkBuilder *test_get_gui_builder() { diff --git a/include/gui/builder.h b/include/gui/builder.h index e75d937e..6b3cd3af 100644 --- a/include/gui/builder.h +++ b/include/gui/builder.h @@ -14,6 +14,9 @@ void gui_builder_deinit(); /* Called to get an object from the GTK builder. */ GObject *gui_builder_object(const char *); +/* Called to get a widget from the GTK builder. */ +GtkWidget *gui_builder_widget(const char *); + #ifdef CONFIG_TESTING GtkBuilder *test_get_gui_builder(); #endif /* CONFIG_TESTING */ diff --git a/tests/gui/builder.c b/tests/gui/builder.c index 0d9730e4..892e3e1c 100644 --- a/tests/gui/builder.c +++ b/tests/gui/builder.c @@ -15,9 +15,11 @@ static void test_builder() { int argc = 0; GObject *object; + GtkWidget *widget; test_equal((void *)test_get_gui_builder(), NULL); test_equal((void *)gui_builder_object("button1"), NULL); + test_equal((void *)gui_builder_widget("button1"), NULL); gtk_init(&argc, NULL); gui_builder_init("tests/gui/builder.ui"); @@ -27,9 +29,18 @@ static void test_builder() test_not_equal((void *)object, NULL); test_equal(G_IS_OBJECT(object), true); + widget = gui_builder_widget("button1"); + test_not_equal((void *)widget, NULL); + test_equal(GTK_IS_WIDGET(widget), true); + test_equal(GTK_IS_BUTTON(widget), true); + gtk_button_clicked(GTK_BUTTON(widget)); + test_equal(gui_clicked, 1); + + gtk_widget_destroy(gui_builder_widget("window1")); gui_builder_deinit(); test_equal((void *)test_get_gui_builder(), NULL); test_equal((void *)gui_builder_object("button1"), NULL); + test_equal((void *)gui_builder_widget("button1"), NULL); } DECLARE_UNIT_TESTS(