tests: Port from libglade to GtkBuilder

Fixes bug #601108.
This commit is contained in:
Javier Jardón 2010-01-16 06:57:26 +01:00 committed by Sebastian Dröge
parent f33344ab0c
commit 878ccf4a56
11 changed files with 388 additions and 510 deletions

View file

@ -207,14 +207,6 @@ HAVE_GTK=NO
PKG_CHECK_MODULES(GTK, gtk+-x11-2.0 >= 2.8.0, HAVE_GTK=yes, HAVE_GTK=no)
AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
dnl libglade is optional and only used in examples
HAVE_GLADE=NO
PKG_CHECK_MODULES(GLADE, libglade-2.0 >= 2.6.0, HAVE_GLADE=yes, HAVE_GLADE=no)
AC_SUBST(GLADE_LIBS)
AC_SUBST(GLADE_CFLAGS)
AC_SUBST(HAVE_GLADE)
AM_CONDITIONAL(HAVE_GLADE, test "x$HAVE_GLADE" = "xyes")
dnl x11 is optional for librfb
HAVE_X11=NO
PKG_CHECK_MODULES(X11, x11, HAVE_X11=yes, HAVE_X11=no)

View file

@ -135,7 +135,7 @@ rm -rf $RPM_BUILD_ROOT
%{_includedir}/gstreamer-%{majorminor}/gst/video/gstbasevideoencoder.h
%{_includedir}/gstreamer-%{majorminor}/gst/video/gstbasevideoparse.h
%{_includedir}/gstreamer-%{majorminor}/gst/video/gstbasevideoutils.h
%{_datadir}/gstreamer-%{majorminor}/camera-apps/gst-camera.glade
%{_datadir}/gstreamer-%{majorminor}/camera-apps/gst-camera.ui
%{_includedir}/gstreamer-%{majorminor}/gst/signalprocessor/gstsignalprocessor.h
%{_includedir}/gstreamer-%{majorminor}/gst/interfaces/photography-enumtypes.h

View file

@ -3,5 +3,4 @@ ext/audiofile/gstafsrc.c
sys/dxr3/dxr3audiosink.c
sys/dxr3/dxr3spusink.c
sys/dxr3/dxr3videosink.c
tests/icles/metadata_editor.glade
tests/icles/metadata_editor.ui

View file

@ -1,6 +1,5 @@
GST_CAMERABIN_GLADE_FILES = gst-camera.glade
GST_CAMERABIN_UI_FILES = gst-camera.ui
if HAVE_GLADE
if HAVE_GTK
GST_CAMERABIN_GTK_EXAMPLES = gst-camera
@ -8,23 +7,19 @@ GST_CAMERABIN_GTK_EXAMPLES = gst-camera
gst_camera_SOURCES = gst-camera.c
gst_camera_CFLAGS = \
-I$(top_builddir)/gst-libs \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GLADE_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
-DGST_USE_UNSTABLE_API
gst_camera_LDADD = \
$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_MAJORMINOR@.la \
$(GST_PLUGINS_BASE_LIBS) \
-lgstinterfaces-@GST_MAJORMINOR@ \
$(GST_LIBS) \
$(GLADE_LIBS)
$(GST_LIBS)
gladedir = $(datadir)/gstreamer-@GST_MAJORMINOR@/camera-apps
glade_DATA = $(GST_CAMERABIN_GLADE_FILES)
uidir = $(datadir)/gstreamer-@GST_MAJORMINOR@/camera-apps
ui_DATA = $(GST_CAMERABIN_UI_FILES)
INCLUDES = -DCAMERA_APPS_GLADEDIR=\""$(gladedir)"\"
INCLUDES = -DCAMERA_APPS_UIDIR=\""$(uidir)"\"
else
GST_CAMERABIN_GTK_EXAMPLES =
endif
else
GST_CAMERABIN_GTK_EXAMPLES =
endif
@ -35,5 +30,5 @@ gst_camera_perf_LDADD = $(GST_LIBS)
bin_PROGRAMS = gst-camera-perf $(GST_CAMERABIN_GTK_EXAMPLES)
EXTRA_DIST = $(GST_CAMERABIN_GLADE_FILES)
EXTRA_DIST = $(GST_CAMERABIN_UI_FILES)

View file

@ -1,120 +0,0 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkWindow" id="wndMain">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="default_width">400</property>
<property name="default_height">600</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
<signal name="delete_event" handler="on_wndMain_delete_event"/>
<child>
<widget class="GtkVPaned" id="vpnMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="position">200</property>
<child>
<widget class="GtkDrawingArea" id="daMain">
<property name="height_request">100</property>
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</widget>
<packing>
<property name="shrink">True</property>
<property name="resize">False</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vboxMain">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkButton" id="btnStart">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">start</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_btnStart_clicked"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkScrolledWindow" id="scrwndMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
<widget class="GtkViewport" id="vpMain">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
<widget class="GtkLabel" id="lbMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">== Please wait few seconds after press start ==</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="shrink">True</property>
<property name="resize">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>

View file

@ -0,0 +1,80 @@
<?xml version="1.0"?>
<interface>
<!-- interface-requires gtk+ 2.8 -->
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="wndMain">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="default_width">400</property>
<property name="default_height">600</property>
<signal name="delete_event" handler="on_wndMain_delete_event"/>
<child>
<object class="GtkVPaned" id="vpnMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="position">200</property>
<child>
<object class="GtkDrawingArea" id="daMain">
<property name="height_request">100</property>
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vboxMain">
<property name="visible">True</property>
<child>
<object class="GtkButton" id="btnStart">
<property name="label" translatable="yes">start</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="on_btnStart_clicked"/>
</object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrwndMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkViewport" id="vpMain">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<object class="GtkLabel" id="lbMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">== Please wait few seconds after press start ==</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View file

@ -33,7 +33,6 @@
#include <gst/interfaces/xoverlay.h>
#include <gst/interfaces/colorbalance.h>
#include <gst/interfaces/photography.h>
#include <glade/glade-xml.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include <gdk/gdkkeysyms.h>
@ -56,8 +55,8 @@
#define PREVIEW_TIME_MS (2 * 1000)
#define N_BURST_IMAGES 10
#define DEFAULT_GLADE_FILE "gst-camera.glade"
#define SHARED_GLADE_FILE CAMERA_APPS_GLADEDIR"/"DEFAULT_GLADE_FILE
#define DEFAULT_UI_FILE "gst-camera.ui"
#define SHARED_UI_FILE CAMERA_APPS_UIDIR"/"DEFAULT_UI_FILE
/* Names of default elements */
#define CAMERA_APP_VIDEOSRC "v4l2src"
@ -95,7 +94,7 @@ typedef enum _tag_CaptureState
* Global Vars
*/
static GladeXML *ui_glade_xml = NULL;
static GtkBuilder *builder = NULL;
static GtkWidget *ui_main_window = NULL;
static GtkWidget *ui_drawing = NULL;
static GtkWidget *ui_drawing_frame = NULL;
@ -1087,62 +1086,7 @@ on_key_pressed (GtkWidget * widget, GdkEventKey * event, gpointer user_data)
static void
ui_connect_signals (void)
{
glade_xml_signal_connect (ui_glade_xml, "on_windowMain_delete_event",
(GCallback) on_windowMain_delete_event);
glade_xml_signal_connect (ui_glade_xml, "on_buttonShot_clicked",
(GCallback) on_buttonShot_clicked);
glade_xml_signal_connect (ui_glade_xml, "on_buttonPause_clicked",
(GCallback) on_buttonPause_clicked);
glade_xml_signal_connect (ui_glade_xml, "on_drawingareaView_configure_event",
(GCallback) on_drawingareaView_configure_event);
glade_xml_signal_connect (ui_glade_xml, "on_comboboxResolution_changed",
(GCallback) on_comboboxResolution_changed);
glade_xml_signal_connect (ui_glade_xml, "on_radiobuttonImageCapture_toggled",
(GCallback) on_radiobuttonImageCapture_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_radiobuttonVideoCapture_toggled",
(GCallback) on_radiobuttonVideoCapture_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffNone_toggled",
(GCallback) on_rbBntVidEffNone_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffEdge_toggled",
(GCallback) on_rbBntVidEffEdge_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffAging_toggled",
(GCallback) on_rbBntVidEffAging_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffDice_toggled",
(GCallback) on_rbBntVidEffDice_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffWarp_toggled",
(GCallback) on_rbBntVidEffWarp_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffShagadelic_toggled",
(GCallback) on_rbBntVidEffShagadelic_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffVertigo_toggled",
(GCallback) on_rbBntVidEffVertigo_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffRev_toggled",
(GCallback) on_rbBntVidEffRev_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_rbBntVidEffQuark_toggled",
(GCallback) on_rbBntVidEffQuark_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_chkbntMute_toggled",
(GCallback) on_chkbntMute_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_chkbtnRawMsg_toggled",
(GCallback) on_chkbtnRawMsg_toggled);
glade_xml_signal_connect (ui_glade_xml, "on_hscaleZoom_value_changed",
(GCallback) on_hscaleZoom_value_changed);
gtk_builder_connect_signals (builder, NULL);
g_signal_connect (ui_main_window, "key-press-event",
(GCallback) on_key_pressed, NULL);
@ -1674,40 +1618,43 @@ fill_capture_menu (GtkMenuItem * parent_item)
static gboolean
ui_create (void)
{
gchar *gladefile = DEFAULT_GLADE_FILE;
GError *error = NULL;
gchar *uifile = DEFAULT_UI_FILE;
if (!g_file_test (gladefile, G_FILE_TEST_EXISTS)) {
gladefile = SHARED_GLADE_FILE;
if (!g_file_test (uifile, G_FILE_TEST_EXISTS)) {
uifile = SHARED_UI_FILE;
}
ui_glade_xml = glade_xml_new (gladefile, NULL, NULL);
if (!ui_glade_xml) {
fprintf (stderr, "glade_xml_new failed for %s\n", gladefile);
fflush (stderr);
builder = gtk_builder_new ();
if (!gtk_builder_add_from_file (builder, uifile, &error)) {
g_warning ("Couldn't load builder file: %s", error->message);
g_error_free (error);
goto done;
}
ui_main_window = glade_xml_get_widget (ui_glade_xml, "windowMain");
ui_drawing = glade_xml_get_widget (ui_glade_xml, "drawingareaView");
ui_drawing_frame = glade_xml_get_widget (ui_glade_xml, "drawingareaFrame");
ui_chk_continous = glade_xml_get_widget (ui_glade_xml, "chkbntContinous");
ui_chk_rawmsg = glade_xml_get_widget (ui_glade_xml, "chkbtnRawMsg");
ui_bnt_shot = GTK_BUTTON (glade_xml_get_widget (ui_glade_xml, "buttonShot"));
ui_bnt_pause =
GTK_BUTTON (glade_xml_get_widget (ui_glade_xml, "buttonPause"));
ui_main_window = GTK_WIDGET (gtk_builder_get_object (builder, "windowMain"));
ui_drawing = GTK_WIDGET (gtk_builder_get_object (builder, "drawingareaView"));
ui_drawing_frame =
GTK_WIDGET (gtk_builder_get_object (builder, "drawingareaFrame"));
ui_chk_continous =
GTK_WIDGET (gtk_builder_get_object (builder, "chkbntContinous"));
ui_chk_rawmsg = GTK_WIDGET (gtk_builder_get_object (builder, "chkbtnRawMsg"));
ui_bnt_shot = GTK_BUTTON (gtk_builder_get_object (builder, "buttonShot"));
ui_bnt_pause = GTK_BUTTON (gtk_builder_get_object (builder, "buttonPause"));
ui_cbbox_resolution =
GTK_COMBO_BOX (glade_xml_get_widget (ui_glade_xml, "comboboxResolution"));
ui_chk_mute = glade_xml_get_widget (ui_glade_xml, "chkbntMute");
ui_vbox_color_controls = glade_xml_get_widget (ui_glade_xml,
"vboxColorControls");
ui_rdbntImageCapture = glade_xml_get_widget (ui_glade_xml,
"radiobuttonImageCapture");
ui_rdbntVideoCapture = glade_xml_get_widget (ui_glade_xml,
"radiobuttonVideoCapture");
GTK_COMBO_BOX (gtk_builder_get_object (builder, "comboboxResolution"));
ui_chk_mute = GTK_WIDGET (gtk_builder_get_object (builder, "chkbntMute"));
ui_vbox_color_controls =
GTK_WIDGET (gtk_builder_get_object (builder, "vboxColorControls"));
ui_rdbntImageCapture =
GTK_WIDGET (gtk_builder_get_object (builder, "radiobuttonImageCapture"));
ui_rdbntVideoCapture =
GTK_WIDGET (gtk_builder_get_object (builder, "radiobuttonVideoCapture"));
ui_menuitem_photography =
GTK_WIDGET (gtk_builder_get_object (builder, "menuitemPhotography"));
ui_menuitem_capture =
GTK_WIDGET (gtk_builder_get_object (builder, "menuitemCapture"));
ui_menuitem_photography = glade_xml_get_widget (ui_glade_xml,
"menuitemPhotography");
ui_menuitem_capture = glade_xml_get_widget (ui_glade_xml, "menuitemCapture");
#ifdef HAVE_GST_PHOTO_IFACE_H
if (ui_menuitem_photography) {
fill_photography_menu (GTK_MENU_ITEM (ui_menuitem_photography));

View file

@ -1,346 +1,359 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--*- mode: xml -*-->
<glade-interface>
<widget class="GtkWindow" id="windowMain">
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="windowMain">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes">gst-camera</property>
<signal name="delete_event" handler="on_windowMain_delete_event"/>
<child>
<widget class="GtkVBox" id="vboxMain">
<object class="GtkVBox" id="vboxMain">
<property name="visible">True</property>
<child>
<widget class="GtkHBox" id="hbox2">
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
<widget class="GtkMenuBar" id="menubar1">
<object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<child>
<widget class="GtkMenuItem" id="menuitemPhotography">
<object class="GtkMenuItem" id="menuitemPhotography">
<property name="visible">True</property>
<property name="label" translatable="yes">Photography</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="menu1">
<child type="submenu">
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
</widget>
</object>
</child>
</widget>
</object>
</child>
<child>
<widget class="GtkMenuItem" id="menuitemCapture">
<object class="GtkMenuItem" id="menuitemCapture">
<property name="visible">True</property>
<property name="label" translatable="yes">Capture</property>
<property name="use_underline">True</property>
</widget>
</object>
</child>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="comboboxResolution">
<object class="GtkComboBox" id="comboboxResolution">
<property name="visible">True</property>
<property name="items" translatable="yes"></property>
<property name="model">liststore1</property>
<signal name="changed" handler="on_comboboxResolution_changed"/>
</widget>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hboxMode">
<object class="GtkHBox" id="hboxMode">
<property name="visible">True</property>
<child>
<widget class="GtkRadioButton" id="radiobuttonImageCapture">
<object class="GtkRadioButton" id="radiobuttonImageCapture">
<property name="label" translatable="yes">Image capture</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Image capture</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_radiobuttonImageCapture_toggled"/>
</widget>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="radiobuttonVideoCapture">
<object class="GtkRadioButton" id="radiobuttonVideoCapture">
<property name="label" translatable="yes">Video rec</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Video rec</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">radiobuttonImageCapture</property>
<signal name="toggled" handler="on_radiobuttonVideoCapture_toggled"/>
</widget>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="buttonShot">
<object class="GtkButton" id="buttonShot">
<property name="label" translatable="yes">Shot</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Shot</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonShot_clicked"/>
</widget>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="buttonPause">
<object class="GtkButton" id="buttonPause">
<property name="label" translatable="yes">Pause</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Pause</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonPause_clicked"/>
</widget>
</object>
<packing>
<property name="position">3</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="chkbntMute">
<object class="GtkCheckButton" id="chkbntMute">
<property name="label" translatable="yes">mute</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">mute</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_chkbntMute_toggled"/>
</widget>
</object>
<packing>
<property name="position">4</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="chkbntContinous">
<object class="GtkCheckButton" id="chkbntContinous">
<property name="label" translatable="yes">continous</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">continous</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
</object>
<packing>
<property name="position">5</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="chkbtnRawMsg">
<object class="GtkCheckButton" id="chkbtnRawMsg">
<property name="label" translatable="yes">raw msg</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip" translatable="yes">Send raw image after still image capture as gstreamer message</property>
<property name="label" translatable="yes">raw msg</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Send raw image after still image capture as gstreamer message</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_chkbtnRawMsg_toggled"/>
</widget>
</object>
<packing>
<property name="position">6</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="tableOptions">
<object class="GtkTable" id="tableOptions">
<property name="visible">True</property>
<property name="n_rows">1</property>
<property name="n_columns">3</property>
<child>
<widget class="GtkVBox" id="vboxVidEffect">
<object class="GtkVBox" id="vboxVidEffect">
<property name="visible">True</property>
<child>
<widget class="GtkLabel" id="labelVidEff">
<object class="GtkLabel" id="labelVidEff">
<property name="visible">True</property>
<property name="label" translatable="yes">video effects:</property>
</widget>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffNone">
<object class="GtkRadioButton" id="rbBntVidEffNone">
<property name="label" translatable="yes">none</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">none</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_rbBntVidEffNone_toggled"/>
</widget>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffEdge">
<object class="GtkRadioButton" id="rbBntVidEffEdge">
<property name="label" translatable="yes">edged</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">edged</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffEdge_toggled"/>
</widget>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffAging">
<object class="GtkRadioButton" id="rbBntVidEffAging">
<property name="label" translatable="yes">aging</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">aging</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffAging_toggled"/>
</widget>
</object>
<packing>
<property name="position">3</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffDice">
<object class="GtkRadioButton" id="rbBntVidEffDice">
<property name="label" translatable="yes">dice</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">dice</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffDice_toggled"/>
</widget>
</object>
<packing>
<property name="position">4</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffWarp">
<object class="GtkRadioButton" id="rbBntVidEffWarp">
<property name="label" translatable="yes">warp</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">warp</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffWarp_toggled"/>
</widget>
</object>
<packing>
<property name="position">5</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffShaga">
<object class="GtkRadioButton" id="rbBntVidEffShaga">
<property name="label" translatable="yes">shagadelic</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">shagadelic</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffShagadelic_toggled"/>
</widget>
</object>
<packing>
<property name="position">6</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffVertigo">
<object class="GtkRadioButton" id="rbBntVidEffVertigo">
<property name="label" translatable="yes">vertigo</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">vertigo</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffVertigo_toggled"/>
</widget>
</object>
<packing>
<property name="position">7</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffRev">
<object class="GtkRadioButton" id="rbBntVidEffRev">
<property name="label" translatable="yes">rev</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">rev</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffRev_toggled"/>
</widget>
</object>
<packing>
<property name="position">8</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="rbBntVidEffQuark">
<object class="GtkRadioButton" id="rbBntVidEffQuark">
<property name="label" translatable="yes">quark</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">quark</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">rbBntVidEffNone</property>
<signal name="toggled" handler="on_rbBntVidEffQuark_toggled"/>
</widget>
</object>
<packing>
<property name="position">9</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="x_options"></property>
</packing>
</child>
<child>
<widget class="GtkScrolledWindow" id="scrlWndColorControls">
<object class="GtkScrolledWindow" id="scrlWndColorControls">
<property name="width_request">200</property>
<property name="height_request">200</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<widget class="GtkViewport" id="viewportColorControls">
<object class="GtkViewport" id="viewportColorControls">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkVBox" id="vboxColorControls">
<object class="GtkVBox" id="vboxColorControls">
<property name="visible">True</property>
</widget>
</object>
</child>
</widget>
</object>
</child>
</widget>
</object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
@ -348,50 +361,63 @@
</packing>
</child>
<child>
<widget class="GtkAspectFrame" id="drawingareaFrame">
<object class="GtkAspectFrame" id="drawingareaFrame">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">GTK_SHADOW_NONE</property>
<property name="ratio">1</property>
<property name="shadow_type">none</property>
<property name="obey_child">False</property>
<child>
<widget class="GtkAlignment" id="alignment1">
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<child>
<widget class="GtkDrawingArea" id="drawingareaView">
<object class="GtkDrawingArea" id="drawingareaView">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<signal name="configure_event" handler="on_drawingareaView_configure_event"/>
</widget>
</object>
</child>
</widget>
</object>
</child>
</widget>
</object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkHScale" id="hscaleZoom">
<object class="GtkHScale" id="hscaleZoom">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="adjustment">100 100 1100 10 100 100</property>
<property name="adjustment">adjustment1</property>
<property name="digits">0</property>
<property name="value_pos">GTK_POS_LEFT</property>
<property name="value_pos">left</property>
<signal name="value_changed" handler="on_hscaleZoom_value_changed"/>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="position">3</property>
</packing>
</child>
</widget>
</object>
</child>
</widget>
</glade-interface>
</object>
<object class="GtkAdjustment" id="adjustment1">
<property name="lower">100</property>
<property name="upper">1100</property>
<property name="value">100</property>
<property name="step_increment">10</property>
<property name="page_increment">100</property>
<property name="page_size">100</property>
</object>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name item text -->
<column type="gchararray"/>
</columns>
</object>
</interface>

View file

@ -19,20 +19,15 @@ endif
if USE_METADATA
if HAVE_GLADE
if HAVE_GTK
GST_METADATA_TESTS = metadata_editor
metadata_editor_SOURCES = metadata_editor.c
metadata_editor_CFLAGS = \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GLADE_CFLAGS)
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
metadata_editor_LDADD = \
$(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-0.10 $(GST_LIBS) \
$(GLADE_LIBS)
else
GST_METADATA_TESTS =
endif
$(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-0.10 $(GST_LIBS)
else
GST_METADATA_TESTS =
endif

View file

@ -47,7 +47,6 @@
#include <unistd.h>
#include <gst/gst.h>
#include <glade/glade-xml.h>
#include <gtk/gtk.h>
/*
@ -119,7 +118,7 @@ AppOptions app_options = APP_OPT_ALL;
GstTagList *tag_list = NULL;
GladeXML *ui_glade_xml = NULL;
GtkBuilder *builder = NULL;
GtkWidget *ui_main_window = NULL;
GtkWidget *ui_drawing = NULL;
GtkWidget *ui_tree = NULL;
@ -311,7 +310,7 @@ ui_drawing_size_allocate_cb (GtkWidget * drawing_area,
}
/*
* UI handling functions (mapped by glade)
* UI handling functions (mapped by GtkBuilder)
*/
gboolean
@ -740,91 +739,40 @@ ui_refresh ()
gtk_window_set_title (GTK_WINDOW (ui_main_window), filename->str);
}
static int
ui_connect_signals()
{
glade_xml_signal_connect(ui_glade_xml, "on_checkbuttonCaptureV4l2_toggled",
(GCallback)on_checkbuttonCaptureV4l2_toggled);
glade_xml_signal_connect(ui_glade_xml, "on_checkbuttonCaptureTest_toggled",
(GCallback)on_checkbuttonCaptureTest_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsDemuxExif_toggled",
(GCallback) on_checkbuttonOptionsDemuxExif_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsDemuxIptc_toggled",
(GCallback) on_checkbuttonOptionsDemuxIptc_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsDemuxXmp_toggled",
(GCallback) on_checkbuttonOptionsDemuxXmp_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsMuxExif_toggled",
(GCallback) on_checkbuttonOptionsMuxExif_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsMuxIptc_toggled",
(GCallback) on_checkbuttonOptionsMuxIptc_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsMuxXmp_toggled",
(GCallback) on_checkbuttonOptionsMuxXmp_toggled);
glade_xml_signal_connect(ui_glade_xml, "on_buttonSaveFile_clicked",
(GCallback)on_buttonSaveFile_clicked);
glade_xml_signal_connect(ui_glade_xml, "on_windowMain_delete_event",
(GCallback)on_windowMain_delete_event);
glade_xml_signal_connect(ui_glade_xml, "on_drawingMain_expose_event",
(GCallback)on_drawingMain_expose_event);
glade_xml_signal_connect(ui_glade_xml, "on_buttonInsert_clicked",
(GCallback)on_buttonInsert_clicked);
glade_xml_signal_connect(ui_glade_xml, "on_buttonOpenFile_clicked",
(GCallback)on_buttonOpenFile_clicked);
return 0;
}
static int
ui_create ()
{
Gerror *error = NULL;
int ret = 0;
ui_glade_xml = glade_xml_new ("metadata_editor.glade", NULL, NULL);
if (!ui_glade_xml) {
fprintf (stderr, "glade_xml_new failed\n");
builder = gtk_builder_new ();
if (!gtk_builder_add_from_file (builder, "metadata_editor.ui", &error))
{
g_warning ("Couldn't load builder file: %s", error->message);
g_error_free (error);
ret = -101;
goto done;
}
ui_main_window = glade_xml_get_widget (ui_glade_xml, "windowMain");
ui_main_window = GTK_WIDGET (gtk_builder_get_object (builder, "windowMain"));
ui_drawing = glade_xml_get_widget (ui_glade_xml, "drawingMain");
ui_drawing = GTK_WIDGET (gtk_builder_get_object (builder, "drawingMain"));
ui_tree = glade_xml_get_widget (ui_glade_xml, "treeMain");
ui_tree = GTK_WIDGET (gtk_builder_get_object (builder, "treeMain"));
ui_entry_insert_tag =
GTK_ENTRY (glade_xml_get_widget (ui_glade_xml, "entryTag"));
GTK_ENTRY (gtk_builder_get_object (builder, "entryTag"));
ui_entry_insert_value =
GTK_ENTRY (glade_xml_get_widget (ui_glade_xml, "entryValue"));
GTK_ENTRY (gtk_builder_get_object (builder, "entryValue"));
ui_chk_bnt_capture_v4l2 =
GTK_TOGGLE_BUTTON (glade_xml_get_widget (ui_glade_xml,
"checkbuttonCaptureV4l2"));
GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder,
"checkbuttonCaptureV4l2"));
ui_chk_bnt_capture_test =
GTK_TOGGLE_BUTTON (glade_xml_get_widget (ui_glade_xml,
"checkbuttonCaptureTest"));
GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder,
"checkbuttonCaptureTest"));
if (!(ui_main_window && ui_drawing && ui_tree
&& ui_entry_insert_tag && ui_entry_insert_value
@ -837,7 +785,7 @@ ui_create ()
g_signal_connect_after (ui_drawing, "size-allocate",
G_CALLBACK (ui_drawing_size_allocate_cb), NULL);
ui_connect_signals();
gtk_builder_connect_signals (builder, NULL);
ui_setup_tree_view (GTK_TREE_VIEW (ui_tree));

View file

@ -1,123 +1,130 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.0 on Thu Feb 7 14:44:35 2008 -->
<glade-interface>
<widget class="GtkWindow" id="windowMain">
<?xml version="1.0"?>
<interface>
<!-- interface-requires gtk+ 2.8 -->
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="windowMain">
<property name="width_request">800</property>
<property name="height_request">600</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes">Metadata Editor</property>
<signal name="delete_event" handler="on_windowMain_delete_event"/>
<child>
<widget class="GtkVPaned" id="vpanedMain">
<object class="GtkVPaned" id="vpanedMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkDrawingArea" id="drawingMain">
<object class="GtkDrawingArea" id="drawingMain">
<property name="width_request">200</property>
<property name="height_request">100</property>
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<signal name="expose_event" handler="on_drawingMain_expose_event"/>
</widget>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">False</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vboxMain">
<object class="GtkVBox" id="vboxMain">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow">
<object class="GtkScrolledWindow" id="scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<widget class="GtkTreeView" id="treeMain">
<object class="GtkTreeView" id="treeMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="headers_clickable">True</property>
<property name="rules_hint">True</property>
<property name="enable_search">False</property>
<property name="hover_expand">True</property>
</widget>
</object>
</child>
</widget>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vboxEditBnt">
<object class="GtkVBox" id="vboxEditBnt">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkHBox" id="hboxEdit">
<object class="GtkHBox" id="hboxEdit">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkEntry" id="entryTag">
<object class="GtkEntry" id="entryTag">
<property name="width_request">300</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="entryValue">
<object class="GtkEntry" id="entryValue">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</widget>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHButtonBox" id="hbuttonboxBnt">
<object class="GtkHButtonBox" id="hbuttonboxBnt">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="homogeneous">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="layout_style">spread</property>
<child>
<widget class="GtkButton" id="buttonInsert">
<object class="GtkButton" id="buttonInsert">
<property name="label" translatable="yes">Insert</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Insert</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonInsert_clicked"/>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="buttonSaveFile">
<object class="GtkButton" id="buttonSaveFile">
<property name="label" translatable="yes">Save File</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Save File</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonSaveFile_clicked"/>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@ -125,207 +132,216 @@
</packing>
</child>
<child>
<widget class="GtkHBox" id="hboxOptions">
<object class="GtkHBox" id="hboxOptions">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkVBox" id="vboxCaptureOptions">
<object class="GtkVBox" id="vboxCaptureOptions">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkCheckButton" id="checkbuttonCaptureV4l2">
<object class="GtkCheckButton" id="checkbuttonCaptureV4l2">
<property name="label" translatable="yes">Capture image from camera</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Capture image from camera</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonCaptureV4l2_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonCaptureTest">
<object class="GtkCheckButton" id="checkbuttonCaptureTest">
<property name="label" translatable="yes">Capture image from videotestsrc</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Capture image from videotestsrc</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonCaptureTest_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="buttonOpenFile">
<object class="GtkButton" id="buttonOpenFile">
<property name="label" translatable="yes">Open File...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Open File...</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonOpenFile_clicked"/>
</widget>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vboxOptionsDemux">
<object class="GtkVBox" id="vboxOptionsDemux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkLabel" id="labelDemux">
<object class="GtkLabel" id="labelDemux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Demux options:</property>
</widget>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsDemuxExif">
<object class="GtkCheckButton" id="checkbuttonOptionsDemuxExif">
<property name="label" translatable="yes">exif</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">exif</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsDemuxExif_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsDemuxIptc">
<object class="GtkCheckButton" id="checkbuttonOptionsDemuxIptc">
<property name="label" translatable="yes">iptc</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">iptc</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsDemuxIptc_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsDemuxXmp">
<object class="GtkCheckButton" id="checkbuttonOptionsDemuxXmp">
<property name="label" translatable="yes">xmp</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">xmp</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsDemuxXmp_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vboxOptionsMux">
<object class="GtkVBox" id="vboxOptionsMux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkLabel" id="labelMux">
<object class="GtkLabel" id="labelMux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Mux options:</property>
</widget>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsMuxExif">
<object class="GtkCheckButton" id="checkbuttonOptionsMuxExif">
<property name="label" translatable="yes">exif</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">exif</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsMuxExif_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsMuxIptc">
<object class="GtkCheckButton" id="checkbuttonOptionsMuxIptc">
<property name="label" translatable="yes">iptc</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">iptc</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsMuxIptc_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsMuxXmp">
<object class="GtkCheckButton" id="checkbuttonOptionsMuxXmp">
<property name="label" translatable="yes">xmp</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">xmp</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsMuxXmp_toggled"/>
</widget>
</object>
<packing>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">False</property>
</packing>
</child>
</widget>
</object>
</child>
</widget>
</glade-interface>
</object>
</interface>