From e6c50db150c6a7538987bb282aea7af19ae76bb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Sat, 1 Aug 2015 22:39:02 +0200 Subject: [PATCH] Add a new function to load view from UI fils --- gtk/linphone.h | 1 + gtk/main.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/gtk/linphone.h b/gtk/linphone.h index 44f73a7f2..90f9e81a7 100644 --- a/gtk/linphone.h +++ b/gtk/linphone.h @@ -99,6 +99,7 @@ LINPHONE_PUBLIC void linphone_gtk_destroy_window(GtkWidget *window); LINPHONE_PUBLIC GtkWidget *linphone_gtk_create_window(const char *window_name, GtkWidget *parent); LINPHONE_PUBLIC GtkWidget *linphone_gtk_get_widget(GtkWidget *window, const char *name); LINPHONE_PUBLIC GtkWidget *linphone_gtk_create_widget(const char *filename, const char *widget_name); +LINPHONE_PUBLIC GtkWidget *linphone_gtk_create_widget_2(const char *filename, const char *widget_name); const char *linphone_gtk_message_storage_get_db_file(const char *filename); LINPHONE_PUBLIC void linphone_gtk_show_assistant(GtkWidget* parent); diff --git a/gtk/main.c b/gtk/main.c index 1c6e6c663..850ba9fb9 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -441,6 +441,38 @@ GtkWidget *linphone_gtk_create_widget(const char *filename, const char *widget_n return w; } +GtkWidget *linphone_gtk_create_widget_2(const char *filename, const char *widget_name) { + char path[2048]; + GtkWidget *w = NULL; + GtkBuilder *builder = gtk_builder_new(); + GError *error = NULL; + GObject *obj; + + if(get_ui_file(filename, path, sizeof(path)) == -1) goto end; + + gtk_builder_set_translation_domain(builder, GETTEXT_PACKAGE); + + if(gtk_builder_add_from_file(builder, path, &error) == 0) { + g_error("Couldn't load builder file: %s", error->message); + g_error_free(error); + goto end; + } + + obj = gtk_builder_get_object(builder, widget_name); + if(obj == NULL) { + g_error("'%s' widget not found", widget_name); + goto end; + } + + w = GTK_WIDGET(obj); + g_object_set_data_full(obj, "builder", builder, g_object_unref); + gtk_widget_unparent(w); + + +end: + return w; +} + static void entry_unmapped(GtkWidget *widget){ ms_message("%s is unmapped, calling unrealize to workaround chinese bug.",G_OBJECT_TYPE_NAME(widget)); gtk_widget_unrealize(widget);