|
From: <br...@us...> - 2008-07-23 06:49:28
|
Revision: 3495
http://openvrml.svn.sourceforge.net/openvrml/?rev=3495&view=rev
Author: braden
Date: 2008-07-23 06:49:36 +0000 (Wed, 23 Jul 2008)
Log Message:
-----------
Use GtkBuilder in openvrml-player instead of libglade. Note that this changes the environment variable used to locate the UI definition from OPENVRML_PLAYER_GLADEDIR to OPENVRML_PLAYER_UIDIR.
Modified Paths:
--------------
trunk/ChangeLog
trunk/configure.ac
trunk/src/Makefile.am
trunk/src/openvrml-player/filechooserdialog.cpp
trunk/src/openvrml-player/filechooserdialog.h
trunk/src/openvrml-player/player.cpp
Added Paths:
-----------
trunk/src/openvrml-player/openvrml-player.ui
Removed Paths:
-------------
trunk/src/openvrml-player/openvrml-player.glade
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-07-20 09:43:51 UTC (rev 3494)
+++ trunk/ChangeLog 2008-07-23 06:49:36 UTC (rev 3495)
@@ -1,3 +1,56 @@
+2008-07-23 Braden McDaniel <br...@en...>
+
+ Use GtkBuilder in openvrml-player instead of libglade. Note that
+ this changes the environment variable used to locate the UI
+ definition from OPENVRML_PLAYER_GLADEDIR to OPENVRML_PLAYER_UIDIR.
+
+ * configure.ac: Removed check for libglade; require gtk+-2.0 >=
+ 2.12.
+ * src/Makefile.am
+ (openvrml_player_openvrml_player_CXXFLAGS): Removed GLADE_CFLAGS.
+ (openvrml_player_openvrml_player_LDFLAGS): Removed GLADE_LIBS.
+ (openvrml_player_gladedir): Removed; replaced with
+ openvrml_player_uidir.
+ (openvrml_player_glade_DATA): Removed; replaced with
+ openvrml_player_ui_DATA.
+ (openvrml_player_uidir): Added.
+ (openvrml_player_ui_DATA): Added.
+ (EXTRA_DIST): Distribute openvrml_player_ui_DATA files.
+ * src/openvrml-player/filechooserdialog.cpp
+ (openvrml_player_file_chooser_dialog_get_type()): Removed; use
+ definition provided by G_DEFINE_TYPE instead.
+ (openvrml_player_file_chooser_dialog_new(GtkWindow *)): Removed;
+ logic moved to constructor.
+ (constructor(GType, guint, GObjectConstructParam *)): Moved dialog
+ setup logic here.
+ (class_init(gpointer, gpointer)): Moved to
+ openvrml_player_file_chooser_dialog_class_init (because
+ G_DEFINE_TYPE wants the long name).
+ (init(GTypeInstance *, gpointer)): Moved to
+ openvrml_player_file_chooser_dialog_init (because G_DEFINE_TYPE
+ wants the long name).
+ (openvrml_player_file_chooser_dialog_class_init(OpenvrmlPlayerFileChooserDialogClass *)):
+ Specify the constructor function.
+ (openvrml_player_file_chooser_dialog_init(OpenvrmlPlayerFileChooserDialog *)):
+ Added.
+ * src/openvrml-player/filechooserdialog.h
+ (openvrml_player_file_chooser_dialog_new(GtkWindow *)): Removed.
+ * src/openvrml-player/openvrml-player.glade: Removed.
+ * src/openvrml-player/openvrml-player.ui: Added.
+ * src/openvrml-player/player.cpp
+ (main(int, char *[])): Removed calls to glade_init and
+ glade_register_widget; create a GtkBuilder instead of GladeXML;
+ call gtk_builder_connect_signals instead of
+ glade_xml_signal_autoconnect; call gtk_builder_get_object instead
+ of glade_xml_get_widget.
+ (xml_new(GnomeProgram &)): Removed; replaced with builder_new.
+ (builder_new(GnomeProgram &, GError **)): Create a GtkBuilder from
+ openvrml-player.ui. Use the environment variable
+ OPENVRML_PLAYER_UIDIR to locate this file if it is not in a known
+ location.
+ (openvrml_player_build_file_chooser_dialog(GladeXML *, GType,
+ GladeWidgetInfo *)): Removed.
+
2008-07-20 Braden McDaniel <br...@en...>
* src/openvrml-player/player.cpp: Apply OPENVRML_API to symbols
Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac 2008-07-20 09:43:51 UTC (rev 3494)
+++ trunk/configure.ac 2008-07-23 06:49:36 UTC (rev 3495)
@@ -160,9 +160,10 @@
# openvrml-xembed and openvrml-player both use GOption, which was
# introduced in GLib 2.6.
#
-PKG_CHECK_MODULES([GTK], [gtk+-2.0 gthread-2.0 glib-2.0 >= 2.6], ,
+# openvrml-player uses GtkBuilder, which was introduced in GTK+ 2.12.
+#
+PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.12 gthread-2.0 glib-2.0 >= 2.6], ,
[have_gtk=no])
-PKG_CHECK_MODULES([GLADE], [libglade-2.0], , [have_libglade=no])
#
# openvrml-player uses GNOME_PARAM_GOPTION_CONTEXT, which was
# introduced in libgnome 2.14.
Modified: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am 2008-07-20 09:43:51 UTC (rev 3494)
+++ trunk/src/Makefile.am 2008-07-23 06:49:36 UTC (rev 3495)
@@ -360,16 +360,14 @@
-I$(srcdir)/libopenvrml
openvrml_player_openvrml_player_CXXFLAGS = \
$(GNOMEUI_CFLAGS) \
- $(GLADE_CFLAGS) \
$(CURL_CFLAGS)
openvrml_player_openvrml_player_LDFLAGS = \
-export-dynamic \
$(GNOMEUI_LIBS) \
- $(GLADE_LIBS) \
$(CURL_LIBS)
-openvrml_player_gladedir = $(datadir)/openvrml-player/glade
-openvrml_player_glade_DATA = openvrml-player/openvrml-player.glade
+openvrml_player_uidir = $(datadir)/openvrml-player/ui
+openvrml_player_ui_DATA = openvrml-player/openvrml-player.ui
openvrml_player_openvrml_player_SOURCES = \
openvrml-player/filechooserdialog.cpp \
@@ -379,7 +377,7 @@
EXTRA_DIST = \
libopenvrml/openvrml-config.h.in \
libopenvrml-gl/openvrml-gl-config.h.in \
- $(openvrml_player_glade_DATA)
+ $(openvrml_player_ui_DATA)
#
# Automake 1.10 seems to need this for distcheck to work.
Modified: trunk/src/openvrml-player/filechooserdialog.cpp
===================================================================
--- trunk/src/openvrml-player/filechooserdialog.cpp 2008-07-20 09:43:51 UTC (rev 3494)
+++ trunk/src/openvrml-player/filechooserdialog.cpp 2008-07-23 06:49:36 UTC (rev 3495)
@@ -23,90 +23,83 @@
using namespace boost::multi_index::detail; // for scope_guard
+G_DEFINE_TYPE(OpenvrmlPlayerFileChooserDialog,
+ openvrml_player_file_chooser_dialog,
+ GTK_TYPE_FILE_CHOOSER_DIALOG)
+
namespace {
- G_GNUC_INTERNAL void class_init(gpointer g_class, gpointer class_data);
- G_GNUC_INTERNAL void init(GTypeInstance * instance, gpointer g_class);
-}
-GtkType openvrml_player_file_chooser_dialog_get_type()
-{
- static GtkType type = 0;
+ G_GNUC_INTERNAL GObject *
+ constructor(GType type,
+ guint n_construct_properties,
+ GObjectConstructParam * construct_properties)
+ {
+ GObject * obj;
+ {
+ // Invoke parent constructor.
+ OpenvrmlPlayerFileChooserDialogClass * klass =
+ OPENVRML_PLAYER_FILE_CHOOSER_DIALOG_CLASS(
+ g_type_class_peek(
+ OPENVRML_PLAYER_TYPE_FILE_CHOOSER_DIALOG));
+ GObjectClass * parent_class =
+ G_OBJECT_CLASS(g_type_class_peek_parent(klass));
+ obj = parent_class->constructor(type,
+ n_construct_properties,
+ construct_properties);
+ }
- if (G_UNLIKELY(!type)) {
- type =
- g_type_register_static_simple(
- GTK_TYPE_FILE_CHOOSER_DIALOG,
- "OpenvrmlPlayerFileChooserDialog",
- sizeof (OpenvrmlPlayerFileChooserDialogClass),
- class_init,
- sizeof (OpenvrmlPlayerFileChooserDialog),
- init,
- GTypeFlags(0));
- }
- return type;
-}
+ GValue title = {};
+ g_value_init(&title, G_TYPE_STRING);
+ g_value_set_string(&title, "Open");
+ g_object_set_property(obj, "title", &title);
+ GValue action = {};
+ g_value_init(&action, G_TYPE_UINT);
+ g_value_set_uint(&action, GTK_FILE_CHOOSER_ACTION_OPEN);
+ g_object_set_property(obj, "action", &action);
-GtkWidget * openvrml_player_file_chooser_dialog_new(GtkWindow * parent)
-{
- GtkWidget * const dialog =
- static_cast<GtkWidget *>(
- g_object_new(OPENVRML_PLAYER_TYPE_FILE_CHOOSER_DIALOG,
- "title", "Open",
- "action", GTK_FILE_CHOOSER_ACTION_OPEN,
- NULL));
- scope_guard dialog_guard = make_guard(g_object_unref, dialog);
- boost::ignore_unused_variable_warning(dialog_guard);
+ gtk_dialog_add_buttons(GTK_DIALOG(obj),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
- if (parent) {
- gtk_window_set_transient_for(GTK_WINDOW(dialog), parent);
- }
+ gtk_dialog_set_default_response(GTK_DIALOG(obj),
+ GTK_RESPONSE_ACCEPT);
- gtk_dialog_add_buttons(GTK_DIALOG(dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
- NULL);
+ GtkFileFilter * const world_filter = gtk_file_filter_new();
+ g_return_val_if_fail(world_filter, 0);
+ scope_guard world_filter_guard = make_guard(g_object_unref,
+ world_filter);
+ boost::ignore_unused_variable_warning(world_filter_guard);
+ gtk_file_filter_set_name(world_filter, "VRML/X3D worlds");
+ gtk_file_filter_add_mime_type(world_filter, "x-world/x-vrml");
+ gtk_file_filter_add_mime_type(world_filter, "model/vrml");
+ gtk_file_filter_add_mime_type(world_filter, "model/x3d+vrml");
- gtk_dialog_set_default_response(GTK_DIALOG(dialog),
- GTK_RESPONSE_ACCEPT);
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(obj), world_filter);
+ world_filter_guard.dismiss();
- GtkFileFilter * const world_filter = gtk_file_filter_new();
- g_return_val_if_fail(world_filter, 0);
- scope_guard world_filter_guard = make_guard(g_object_unref, world_filter);
- boost::ignore_unused_variable_warning(world_filter_guard);
- gtk_file_filter_set_name(world_filter, "VRML/X3D worlds");
- gtk_file_filter_add_mime_type(world_filter, "x-world/x-vrml");
- gtk_file_filter_add_mime_type(world_filter, "model/vrml");
- gtk_file_filter_add_mime_type(world_filter, "model/x3d+vrml");
+ GtkFileFilter * const all_filter = gtk_file_filter_new();
+ g_return_val_if_fail(all_filter, 0);
+ scope_guard all_filter_guard = make_guard(g_object_unref, all_filter);
+ boost::ignore_unused_variable_warning(all_filter_guard);
+ gtk_file_filter_set_name(all_filter, "All files");
+ gtk_file_filter_add_pattern(all_filter, "*");
- gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), world_filter);
- world_filter_guard.dismiss();
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(obj), all_filter);
+ all_filter_guard.dismiss();
- GtkFileFilter * const all_filter = gtk_file_filter_new();
- g_return_val_if_fail(all_filter, 0);
- scope_guard all_filter_guard = make_guard(g_object_unref, all_filter);
- boost::ignore_unused_variable_warning(all_filter_guard);
- gtk_file_filter_set_name(all_filter, "All files");
- gtk_file_filter_add_pattern(all_filter, "*");
-
- gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), all_filter);
- all_filter_guard.dismiss();
-
- dialog_guard.dismiss();
-
- return dialog;
+ return obj;
+ }
}
-namespace {
-
- G_GNUC_INTERNAL GtkWidgetClass * parent_class;
-
- void class_init(const gpointer g_class, gpointer /* class_data */)
- {
- ::parent_class =
- static_cast<GtkWidgetClass *>(
- g_type_class_peek_parent(G_OBJECT_CLASS(g_class)));
- }
-
- void init(GTypeInstance * /* instance */, gpointer /* g_class */)
- {}
+void
+openvrml_player_file_chooser_dialog_class_init(
+ OpenvrmlPlayerFileChooserDialogClass * const klass)
+{
+ G_OBJECT_CLASS(klass)->constructor = constructor;
}
+
+void
+openvrml_player_file_chooser_dialog_init(
+ OpenvrmlPlayerFileChooserDialog * dialog)
+{}
Modified: trunk/src/openvrml-player/filechooserdialog.h
===================================================================
--- trunk/src/openvrml-player/filechooserdialog.h 2008-07-20 09:43:51 UTC (rev 3494)
+++ trunk/src/openvrml-player/filechooserdialog.h 2008-07-23 06:49:36 UTC (rev 3495)
@@ -43,7 +43,6 @@
};
GType openvrml_player_file_chooser_dialog_get_type() G_GNUC_CONST;
-GtkWidget * openvrml_player_file_chooser_dialog_new(GtkWindow * parent);
G_END_DECLS
Deleted: trunk/src/openvrml-player/openvrml-player.glade
===================================================================
--- trunk/src/openvrml-player/openvrml-player.glade 2008-07-20 09:43:51 UTC (rev 3494)
+++ trunk/src/openvrml-player/openvrml-player.glade 2008-07-23 06:49:36 UTC (rev 3495)
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<glade-interface>
- <widget class="GtkWindow" id="window">
- <property name="default-width">640</property>
- <property name="default-height">480</property>
- <signal name="delete-event" handler="openvrml_player_quit"/>
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <child>
- <widget class="GtkMenuBar" id="menubar1">
- <property name="visible">True</property>
- <child>
- <widget class="GtkMenuItem" id="menuitem1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_File</property>
- <property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu1">
- <property name="visible">True</property>
- <child>
- <widget class="GtkImageMenuItem" id="imagemenuitemopen">
- <property name="visible">True</property>
- <property name="label" translatable="yes">gtk-open</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="openvrml_player_on_file_open_activated" object="filechooserdialog"/>
- </widget>
- </child>
- <child>
- <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
- <property name="visible">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkImageMenuItem" id="imagemenuitem5">
- <property name="visible">True</property>
- <property name="label" translatable="yes">gtk-quit</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="openvrml_player_quit"/>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkMenuItem" id="menuitem4">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Help</property>
- <property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu3">
- <property name="visible">True</property>
- <child>
- <widget class="GtkImageMenuItem" id="imagemenuitem10">
- <property name="visible">True</property>
- <property name="label" translatable="yes">gtk-about</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="openvrml_player_on_about_activated" object="window"/>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <child>
- <widget class="GtkEntry" id="locationentry">
- <property name="visible">True</property>
- <signal name="activate" handler="openvrml_player_on_locationentry_activated"/>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkSocket" id="socket">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="has-focus">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkStatusbar" id="statusbar1">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="OpenvrmlPlayerFileChooserDialog" id="filechooserdialog">
- </widget>
-</glade-interface>
Added: trunk/src/openvrml-player/openvrml-player.ui
===================================================================
--- trunk/src/openvrml-player/openvrml-player.ui (rev 0)
+++ trunk/src/openvrml-player/openvrml-player.ui 2008-07-23 06:49:36 UTC (rev 3495)
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<interface>
+ <object class="GtkUIManager" id="uimanager1">
+ <child>
+ <object class="GtkActionGroup" id="actiongroup1">
+ <child>
+ <object class="GtkAction" id="menuitem1">
+ <property name="name">menuitem1</property>
+ <property name="label" translatable="yes">_File</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="imagemenuitemopen">
+ <property name="stock_id" translatable="yes">gtk-open</property>
+ <property name="name">imagemenuitemopen</property>
+ <signal handler="openvrml_player_on_file_open_activated" name="activate" object="filechooserdialog"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="imagemenuitem5">
+ <property name="stock_id" translatable="yes">gtk-quit</property>
+ <property name="name">imagemenuitem5</property>
+ <signal handler="openvrml_player_quit" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem4">
+ <property name="name">menuitem4</property>
+ <property name="label" translatable="yes">_Help</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="imagemenuitem10">
+ <property name="stock_id" translatable="yes">gtk-about</property>
+ <property name="name">imagemenuitem10</property>
+ <signal handler="openvrml_player_on_about_activated" name="activate" object="window"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ <ui>
+ <menubar name="menubar1">
+ <menu action="menuitem1">
+ <menuitem action="imagemenuitemopen"/>
+ <separator/>
+ <menuitem action="imagemenuitem5"/>
+ </menu>
+ <menu action="menuitem4">
+ <menuitem action="imagemenuitem10"/>
+ </menu>
+ </menubar>
+ </ui>
+ </object>
+ <object class="GtkWindow" id="window">
+ <property name="default-width">640</property>
+ <property name="default-height">480</property>
+ <signal handler="openvrml_player_quit" name="delete-event"/>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuBar" constructor="uimanager1" id="menubar1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkEntry" id="locationentry">
+ <property name="visible">True</property>
+ <signal handler="openvrml_player_on_locationentry_activated" name="activate"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSocket" id="socket">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="has-focus">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="statusbar1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="OpenvrmlPlayerFileChooserDialog" id="filechooserdialog">
+ </object>
+</interface>
Modified: trunk/src/openvrml-player/player.cpp
===================================================================
--- trunk/src/openvrml-player/player.cpp 2008-07-20 09:43:51 UTC (rev 3494)
+++ trunk/src/openvrml-player/player.cpp 2008-07-23 06:49:36 UTC (rev 3495)
@@ -29,8 +29,7 @@
# include <curl/curl.h>
# include <libgnomevfs/gnome-vfs.h>
# include <libgnomeui/libgnomeui.h>
-# include <glade/glade.h>
-# include <glade/glade-build.h>
+# include <gtk/gtkbuilder.h>
# include <openvrml/browser.h>
# include "filechooserdialog.h"
@@ -43,7 +42,7 @@
extern "C" {
//
- // GTK+ signal handlers; libglade needs them to have external linkage in
+ // GTK+ signal handlers; GtkBuilder needs them to have external linkage in
// order to connect them.
//
OPENVRML_API void openvrml_player_on_about_activated(GtkWindow * window);
@@ -82,11 +81,6 @@
G_GNUC_INTERNAL void openvrml_player_watch_child(GPid pid,
gint status,
gpointer data);
- G_GNUC_INTERNAL
- GtkWidget *
- openvrml_player_build_file_chooser_dialog(GladeXML * xml,
- GType widget_type,
- GladeWidgetInfo * info);
}
namespace {
@@ -103,7 +97,8 @@
gint & out_fd);
G_GNUC_INTERNAL ssize_t write_command(const std::string & command);
G_GNUC_INTERNAL GSource * curl_source_new(CURLM * multi_handle);
- G_GNUC_INTERNAL GladeXML * xml_new(GnomeProgram & program);
+ G_GNUC_INTERNAL GtkBuilder * builder_new(GnomeProgram & program,
+ GError ** error);
G_GNUC_INTERNAL void set_locationentry_text(const gchar * text);
G_GNUC_INTERNAL void load_url(const gchar * url);
@@ -214,29 +209,32 @@
GNOME_PARAM_APP_DATADIR, OPENVRML_PLAYER_PKGDATADIR_,
GNOME_PARAM_NONE);
- glade_init();
- glade_register_widget(OPENVRML_PLAYER_TYPE_FILE_CHOOSER_DIALOG,
- openvrml_player_build_file_chooser_dialog,
- 0,
- 0);
+ GError * error = 0;
+ scope_guard error_guard = make_guard(g_error_free, ref(error));
+ GtkBuilder * const builder = builder_new(*program, &error);
+ if (!builder) {
+ g_critical("Failed to create UI builder: %s", error->message);
+ return EXIT_FAILURE;
+ }
+ gtk_builder_connect_signals(builder, 0);
- GladeXML * const xml = xml_new(*program);
- glade_xml_signal_autoconnect(xml);
-
- GtkWidget * const app_window = glade_xml_get_widget(xml, "window");
+ GtkWidget * const app_window =
+ GTK_WIDGET(gtk_builder_get_object(builder, "window"));
GtkWidget * const file_chooser_dialog =
- glade_xml_get_widget(xml, "filechooserdialog");
+ GTK_WIDGET(gtk_builder_get_object(builder, "filechooserdialog"));
gtk_window_set_transient_for(GTK_WINDOW(file_chooser_dialog),
GTK_WINDOW(app_window));
- ::location_entry = glade_xml_get_widget(xml, "locationentry");
+ ::location_entry =
+ GTK_WIDGET(gtk_builder_get_object(builder, "locationentry"));
g_signal_connect(file_chooser_dialog,
"response",
G_CALLBACK(openvrml_player_on_filechooserdialog_response),
location_entry);
gint standard_input, standard_output;
- GtkWidget * const socket = glade_xml_get_widget(xml, "socket");
+ GtkWidget * const socket =
+ GTK_WIDGET(gtk_builder_get_object(builder, "socket"));
const GPid child_pid =
spawn_openvrml_xembed(gtk_socket_get_id(GTK_SOCKET(socket)),
standard_input,
@@ -246,8 +244,6 @@
::command_channel = g_io_channel_unix_new(standard_input);
if (!::command_channel) { throw std::bad_alloc(); }
- GError * error = 0;
- scope_guard error_guard = make_guard(g_error_free, ref(error));
GIOStatus status = g_io_channel_set_encoding(::command_channel,
0, // binary (no encoding)
&error);
@@ -413,31 +409,36 @@
return child_pid;
}
- GladeXML * xml_new(GnomeProgram & program)
+ GtkBuilder * builder_new(GnomeProgram & program, GError ** error)
{
using std::string;
- const gchar * const gladedir = g_getenv("OPENVRML_PLAYER_GLADEDIR");
- string glade_file_str;
- const gchar * glade_file = 0;
- if (gladedir) {
- glade_file_str = string(gladedir) + "/openvrml-player.glade";
- glade_file = glade_file_str.c_str();
+ const gchar * const uidir = g_getenv("OPENVRML_PLAYER_UIDIR");
+ string ui_file_str;
+ const gchar * ui_file = 0;
+ if (uidir) {
+ ui_file_str = string(uidir) + "/openvrml-player.ui";
+ ui_file = ui_file_str.c_str();
}
- if (!glade_file) {
+ if (!ui_file) {
static const gboolean only_if_exists = true;
- glade_file =
+ ui_file =
gnome_program_locate_file(&program,
GNOME_FILE_DOMAIN_APP_DATADIR,
- "/glade/openvrml-player.glade",
+ "/ui/openvrml-player.ui",
only_if_exists,
0);
}
- g_return_val_if_fail(glade_file, 0);
+ g_return_val_if_fail(ui_file, 0);
- return glade_xml_new(glade_file, 0, 0);
+ GtkBuilder * builder = gtk_builder_new();
+ if (!gtk_builder_add_from_file(builder, ui_file, error)) {
+ return 0;
+ }
+
+ return builder;
}
void set_locationentry_text(const gchar * const text)
@@ -1020,15 +1021,6 @@
gtk_main_quit();
}
-GtkWidget *
-openvrml_player_build_file_chooser_dialog(GladeXML * /* xml */,
- GType /* widget_type */,
- GladeWidgetInfo * /* info */)
-{
- GtkWidget * widget = openvrml_player_file_chooser_dialog_new(0);
- return widget;
-}
-
namespace {
ssize_t write_command(const std::string & command)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|