From da045f699ffe2ff13558db9270d242bebb037785 Mon Sep 17 00:00:00 2001 From: Krifa75 Date: Wed, 23 Nov 2022 00:23:52 +0100 Subject: properties: Use template to create dialogue Clean up properties dialogue creation by using template and object properties to fill it in. --- .../properties/bacon-video-widget-properties.c | 355 +++-- .../properties/bacon-video-widget-properties.h | 9 +- src/plugins/properties/properties.ui | 1496 ++++++++++---------- src/plugins/properties/totem-movie-properties.c | 40 +- 4 files changed, 1043 insertions(+), 857 deletions(-) (limited to 'src') diff --git a/src/plugins/properties/bacon-video-widget-properties.c b/src/plugins/properties/bacon-video-widget-properties.c index 779ef25b3..53e15d2d7 100644 --- a/src/plugins/properties/bacon-video-widget-properties.c +++ b/src/plugins/properties/bacon-video-widget-properties.c @@ -29,108 +29,324 @@ #include "bacon-video-widget-properties.h" -static void bacon_video_widget_properties_dispose (GObject *object); +static void bacon_video_widget_properties_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void bacon_video_widget_properties_set_label (GtkLabel *label, const char *text); struct _BaconVideoWidgetProperties { - GtkBox parent; - GtkBuilder *xml; + GtkDialog parent; + + /* General */ + GtkLabel *title; + GtkLabel *artist; + GtkLabel *album; + GtkLabel *year; + GtkLabel *duration; + GtkLabel *comment; + GtkLabel *container; + + /* Video */ + GtkWidget *video_vbox; + GtkWidget *video; + + GtkLabel *dimensions; + GtkLabel *vcodec; + GtkLabel *framerate; + GtkLabel *video_bitrate; + + /* Audio */ + GtkWidget *audio; + + GtkLabel *acodec; + GtkLabel *channels; + GtkLabel *samplerate; + GtkLabel *audio_bitrate; + int time; }; -G_DEFINE_TYPE (BaconVideoWidgetProperties, bacon_video_widget_properties, GTK_TYPE_BOX) +G_DEFINE_TYPE (BaconVideoWidgetProperties, bacon_video_widget_properties, GTK_TYPE_DIALOG) + +enum { + PROP_0, + PROP_TITLE, + PROP_ARITST, + PROP_ALBUM, + PROP_YEAR, + PROP_DURATION, + PROP_COMMENT, + PROP_CONTAINER, + PROP_DIMENSIONS, + PROP_VIDEO_CODEC, + PROP_VIDEO_FRAMERATE, + PROP_VIDEO_BITRATE, + PROP_AUDIO_CODEC, + PROP_AUDIO_CHANNELS, + PROP_AUDIO_SAMPLERATE, + PROP_AUDIO_BITRATE, + N_PROPS +}; + +static GParamSpec *properties [N_PROPS]; static void bacon_video_widget_properties_class_init (BaconVideoWidgetPropertiesClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->set_property = bacon_video_widget_properties_set_property; + + /* General */ + properties[PROP_TITLE] = g_param_spec_string ("media-title", + "Title", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_ARITST] = g_param_spec_string ("artist", + "Artist", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_ALBUM] = g_param_spec_string ("album", + "Album", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_YEAR] = g_param_spec_string ("year", + "Year", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_DURATION] = g_param_spec_int ("duration", + "Duration", + "", + 0, + G_MAXINT, + 0, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_COMMENT] = g_param_spec_string ("comment", + "Comment", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_CONTAINER] = g_param_spec_string ("container", + "Container", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); - object_class->dispose = bacon_video_widget_properties_dispose; -} + /* Video */ + properties[PROP_DIMENSIONS] = g_param_spec_string ("dimensions", + "Dimensions", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_VIDEO_CODEC] = g_param_spec_string ("video-codec", + "Video codec", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_VIDEO_FRAMERATE] = g_param_spec_float ("framerate", + "Video frame rate", + "", + 0.f, + G_MAXFLOAT, + 0.f, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_VIDEO_BITRATE] = g_param_spec_string ("video-bitrate", + "Video bit rate", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); -static void -bacon_video_widget_properties_init (BaconVideoWidgetProperties *props) -{ - gtk_orientable_set_orientation (GTK_ORIENTABLE (props), GTK_ORIENTATION_VERTICAL); + /* Audio */ + properties[PROP_AUDIO_CODEC] = g_param_spec_string ("audio-codec", + "Audio bit rate", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_AUDIO_CHANNELS] = g_param_spec_string ("channels", + "Audio channels", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_AUDIO_SAMPLERATE] = g_param_spec_string ("samplerate", + "Audio sample rate", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + properties[PROP_AUDIO_BITRATE] = g_param_spec_string ("audio-bitrate", + "Audio bit rate", + "", + NULL, + G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, N_PROPS, properties); + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/totem/properties/properties.ui"); + + /* General */ + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, title); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, artist); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, album); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, year); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, duration); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, comment); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, container); + + /* Video */ + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, video_vbox); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, video); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, dimensions); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, vcodec); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, framerate); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, video_bitrate); + + /* Audio */ + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, audio); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, acodec); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, channels); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, samplerate); + gtk_widget_class_bind_template_child (widget_class, BaconVideoWidgetProperties, audio_bitrate); } static void -bacon_video_widget_properties_dispose (GObject *object) +bacon_video_widget_properties_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { BaconVideoWidgetProperties *props = BACON_VIDEO_WIDGET_PROPERTIES (object); - g_clear_object (&props->xml); - - G_OBJECT_CLASS (bacon_video_widget_properties_parent_class)->dispose (object); + switch (prop_id) + { + case PROP_TITLE: + bacon_video_widget_properties_set_label (props->title, g_value_get_string (value)); + break; + case PROP_ARITST: + bacon_video_widget_properties_set_label (props->artist, g_value_get_string (value)); + break; + case PROP_ALBUM: + bacon_video_widget_properties_set_label (props->album, g_value_get_string (value)); + break; + case PROP_YEAR: + bacon_video_widget_properties_set_label (props->year, g_value_get_string (value)); + break; + case PROP_DURATION: + bacon_video_widget_properties_set_duration (props, g_value_get_int (value)); + break; + case PROP_COMMENT: + bacon_video_widget_properties_set_label (props->comment, g_value_get_string (value)); + break; + case PROP_CONTAINER: + bacon_video_widget_properties_set_label (props->container, g_value_get_string (value)); + break; + case PROP_DIMENSIONS: + bacon_video_widget_properties_set_label (props->dimensions, g_value_get_string (value)); + break; + case PROP_VIDEO_CODEC: + bacon_video_widget_properties_set_label (props->vcodec, g_value_get_string (value)); + break; + case PROP_VIDEO_FRAMERATE: + bacon_video_widget_properties_set_framerate (props, g_value_get_float (value)); + break; + case PROP_VIDEO_BITRATE: + bacon_video_widget_properties_set_label (props->video_bitrate, g_value_get_string (value)); + break; + case PROP_AUDIO_CODEC: + bacon_video_widget_properties_set_label (props->acodec, g_value_get_string (value)); + break; + case PROP_AUDIO_CHANNELS: + bacon_video_widget_properties_set_label (props->channels, g_value_get_string (value)); + break; + case PROP_AUDIO_SAMPLERATE: + bacon_video_widget_properties_set_label (props->samplerate, g_value_get_string (value)); + break; + case PROP_AUDIO_BITRATE: + bacon_video_widget_properties_set_label (props->audio_bitrate, g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } } -void -bacon_video_widget_properties_set_label (BaconVideoWidgetProperties *props, - const char *name, - const char *text) +static void +bacon_video_widget_properties_set_label (GtkLabel *label, + const char *text) { - GtkLabel *item; + gtk_label_set_text (label, text); - g_return_if_fail (props != NULL); - g_return_if_fail (BACON_IS_VIDEO_WIDGET_PROPERTIES (props)); - g_return_if_fail (name != NULL); + gtk_widget_set_visible (GTK_WIDGET (label), text != NULL && *text != '\0'); +} - item = GTK_LABEL (gtk_builder_get_object (props->xml, name)); - g_return_if_fail (item != NULL); - gtk_label_set_text (item, text); +static void +bacon_video_widget_properties_init (BaconVideoWidgetProperties *props) +{ + gtk_widget_init_template (GTK_WIDGET (props)); - gtk_widget_set_visible (GTK_WIDGET (item), text != NULL && *text != '\0'); + bacon_video_widget_properties_reset (props); } void bacon_video_widget_properties_reset (BaconVideoWidgetProperties *props) { - GtkWidget *item; - g_return_if_fail (props != NULL); g_return_if_fail (BACON_IS_VIDEO_WIDGET_PROPERTIES (props)); - item = GTK_WIDGET (gtk_builder_get_object (props->xml, "video_vbox")); - gtk_widget_show (item); - item = GTK_WIDGET (gtk_builder_get_object (props->xml, "video")); - gtk_widget_set_sensitive (item, FALSE); - item = GTK_WIDGET (gtk_builder_get_object (props->xml, "audio")); - gtk_widget_set_sensitive (item, FALSE); + gtk_widget_show (props->video_vbox); + gtk_widget_set_sensitive (props->video, FALSE); + gtk_widget_set_sensitive (props->audio, FALSE); /* Title */ - bacon_video_widget_properties_set_label (props, "title", NULL); + bacon_video_widget_properties_set_label (props->title, NULL); /* Artist */ - bacon_video_widget_properties_set_label (props, "artist", NULL); + bacon_video_widget_properties_set_label (props->artist, NULL); /* Album */ - bacon_video_widget_properties_set_label (props, "album", NULL); + bacon_video_widget_properties_set_label (props->album, NULL); /* Year */ - bacon_video_widget_properties_set_label (props, "year", NULL); + bacon_video_widget_properties_set_label (props->year, NULL); /* Duration */ bacon_video_widget_properties_set_duration (props, 0); /* Comment */ - bacon_video_widget_properties_set_label (props, "comment", ""); + bacon_video_widget_properties_set_label (props->comment, ""); /* Container */ - bacon_video_widget_properties_set_label (props, "container", NULL); + bacon_video_widget_properties_set_label (props->container, NULL); /* Dimensions */ - bacon_video_widget_properties_set_label (props, "dimensions", C_("Dimensions", "N/A")); + bacon_video_widget_properties_set_label (props->dimensions, C_("Dimensions", "N/A")); /* Video Codec */ - bacon_video_widget_properties_set_label (props, "vcodec", C_("Video codec", "N/A")); + bacon_video_widget_properties_set_label (props->vcodec, C_("Video codec", "N/A")); /* Video Bitrate */ - bacon_video_widget_properties_set_label (props, "video_bitrate", + bacon_video_widget_properties_set_label (props->video_bitrate, C_("Video bit rate", "N/A")); /* Framerate */ - bacon_video_widget_properties_set_label (props, "framerate", + bacon_video_widget_properties_set_label (props->framerate, C_("Frame rate", "N/A")); /* Audio Bitrate */ - bacon_video_widget_properties_set_label (props, "audio_bitrate", + bacon_video_widget_properties_set_label (props->audio_bitrate, C_("Audio bit rate", "N/A")); /* Audio Codec */ - bacon_video_widget_properties_set_label (props, "acodec", C_("Audio codec", "N/A")); + bacon_video_widget_properties_set_label (props->acodec, C_("Audio codec", "N/A")); /* Sample rate */ - bacon_video_widget_properties_set_label (props, "samplerate", _("0 Hz")); + bacon_video_widget_properties_set_label (props->samplerate, _("0 Hz")); /* Channels */ - bacon_video_widget_properties_set_label (props, "channels", _("0 Channels")); + bacon_video_widget_properties_set_label (props->channels, _("0 Channels")); } static char * @@ -204,7 +420,7 @@ bacon_video_widget_properties_set_duration (BaconVideoWidgetProperties *props, return; string = time_to_string_text (_time); - bacon_video_widget_properties_set_label (props, "duration", string); + bacon_video_widget_properties_set_label (props->duration, string); g_free (string); props->time = _time; @@ -215,20 +431,15 @@ bacon_video_widget_properties_set_has_type (BaconVideoWidgetProperties *props, gboolean has_video, gboolean has_audio) { - GtkWidget *item; - g_return_if_fail (props != NULL); g_return_if_fail (BACON_IS_VIDEO_WIDGET_PROPERTIES (props)); /* Video */ - item = GTK_WIDGET (gtk_builder_get_object (props->xml, "video")); - gtk_widget_set_sensitive (item, has_video); - item = GTK_WIDGET (gtk_builder_get_object (props->xml, "video_vbox")); - gtk_widget_set_visible (item, has_video); + gtk_widget_set_sensitive (props->video, has_video); + gtk_widget_set_visible (props->video_vbox, has_video); /* Audio */ - item = GTK_WIDGET (gtk_builder_get_object (props->xml, "audio")); - gtk_widget_set_sensitive (item, has_audio); + gtk_widget_set_sensitive (props->audio, has_audio); } void @@ -254,35 +465,15 @@ bacon_video_widget_properties_set_framerate (BaconVideoWidgetProperties *props, } else { temp = g_strdup (C_("Frame rate", "N/A")); } - bacon_video_widget_properties_set_label (props, "framerate", temp); + bacon_video_widget_properties_set_label (props->framerate, temp); g_free (temp); } GtkWidget* -bacon_video_widget_properties_new (void) +bacon_video_widget_properties_new (GtkWindow *transient_for) { - BaconVideoWidgetProperties *props; - GtkBuilder *xml; - GtkWidget *vbox; - - xml = gtk_builder_new (); - gtk_builder_set_translation_domain (xml, GETTEXT_PACKAGE); - if (gtk_builder_add_from_resource (xml, "/org/gnome/totem/properties/properties.ui", NULL) == 0) { - g_object_unref (xml); - return NULL; - } - - props = BACON_VIDEO_WIDGET_PROPERTIES (g_object_new - (BACON_TYPE_VIDEO_WIDGET_PROPERTIES, NULL)); - - props->xml = xml; - vbox = GTK_WIDGET (gtk_builder_get_object (props->xml, "sw_properties")); - gtk_box_pack_start (GTK_BOX (props), vbox, TRUE, TRUE, 0); - - bacon_video_widget_properties_reset (props); - - gtk_widget_show (GTK_WIDGET (vbox)); - - return GTK_WIDGET (props); + return g_object_new (BACON_TYPE_VIDEO_WIDGET_PROPERTIES, + "transient-for", transient_for, + NULL); } diff --git a/src/plugins/properties/bacon-video-widget-properties.h b/src/plugins/properties/bacon-video-widget-properties.h index b664a3f98..8abbac51e 100644 --- a/src/plugins/properties/bacon-video-widget-properties.h +++ b/src/plugins/properties/bacon-video-widget-properties.h @@ -22,18 +22,15 @@ #pragma once -#include +#include #define BACON_TYPE_VIDEO_WIDGET_PROPERTIES (bacon_video_widget_properties_get_type ()) -G_DECLARE_FINAL_TYPE(BaconVideoWidgetProperties, bacon_video_widget_properties, BACON, VIDEO_WIDGET_PROPERTIES, GtkBox) +G_DECLARE_FINAL_TYPE(BaconVideoWidgetProperties, bacon_video_widget_properties, BACON, VIDEO_WIDGET_PROPERTIES, GtkDialog) GType bacon_video_widget_properties_get_type (void); -GtkWidget *bacon_video_widget_properties_new (void); +GtkWidget *bacon_video_widget_properties_new (GtkWindow *transient_for); void bacon_video_widget_properties_reset (BaconVideoWidgetProperties *props); -void bacon_video_widget_properties_set_label (BaconVideoWidgetProperties *props, - const char *name, - const char *text); void bacon_video_widget_properties_set_duration (BaconVideoWidgetProperties *props, int duration); void bacon_video_widget_properties_set_has_type (BaconVideoWidgetProperties *props, diff --git a/src/plugins/properties/properties.ui b/src/plugins/properties/properties.ui index 9f52fb602..86387f451 100644 --- a/src/plugins/properties/properties.ui +++ b/src/plugins/properties/properties.ui @@ -2,852 +2,860 @@ - - true - true - 480 - never - - + diff --git a/src/plugins/properties/totem-movie-properties.c b/src/plugins/properties/totem-movie-properties.c index 8850cd4d4..33e781456 100644 --- a/src/plugins/properties/totem-movie-properties.c +++ b/src/plugins/properties/totem-movie-properties.c @@ -48,7 +48,6 @@ typedef struct { PeasExtensionBase parent; GtkWidget *props; - GtkWidget *dialog; guint handler_id_stream_length; guint handler_id_main_page; GSimpleAction *props_action; @@ -65,8 +64,8 @@ TOTEM_PLUGIN_REGISTER(TOTEM_TYPE_MOVIE_PROPERTIES_PLUGIN, bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), \ type, &value); \ if ((temp = g_value_get_string (&value)) != NULL) { \ - bacon_video_widget_properties_set_label (props, name, \ - temp); \ + g_object_set (G_OBJECT (props), name, \ + temp, NULL); \ } \ g_value_unset (&value); \ } while (0) @@ -81,7 +80,7 @@ TOTEM_PLUGIN_REGISTER(TOTEM_TYPE_MOVIE_PROPERTIES_PLUGIN, g_value_get_int (&value)); \ else \ temp = g_strdup (empty); \ - bacon_video_widget_properties_set_label (props, name, temp); \ + g_object_set (G_OBJECT (props), name, temp, NULL); \ g_free (temp); \ g_value_unset (&value); \ } while (0) @@ -99,7 +98,7 @@ TOTEM_PLUGIN_REGISTER(TOTEM_TYPE_MOVIE_PROPERTIES_PLUGIN, y = g_value_get_int (&value); \ g_value_unset (&value); \ temp = g_strdup_printf (gettext (format), x, y); \ - bacon_video_widget_properties_set_label (props, name, temp); \ + g_object_set (G_OBJECT (props), name, temp, NULL); \ g_free (temp); \ } while (0) @@ -117,7 +116,7 @@ update_properties_from_bvw (BaconVideoWidgetProperties *props, bvw = BACON_VIDEO_WIDGET (widget); /* General */ - UPDATE_FROM_STRING (BVW_INFO_TITLE, "title"); + UPDATE_FROM_STRING (BVW_INFO_TITLE, "media-title"); UPDATE_FROM_STRING (BVW_INFO_ARTIST, "artist"); UPDATE_FROM_STRING (BVW_INFO_ALBUM, "album"); UPDATE_FROM_STRING (BVW_INFO_YEAR, "year"); @@ -148,7 +147,7 @@ update_properties_from_bvw (BaconVideoWidgetProperties *props, { UPDATE_FROM_INT2 (BVW_INFO_DIMENSION_X, BVW_INFO_DIMENSION_Y, "dimensions", N_("%d × %d")); - UPDATE_FROM_STRING (BVW_INFO_VIDEO_CODEC, "vcodec"); + UPDATE_FROM_STRING (BVW_INFO_VIDEO_CODEC, "video-codec"); UPDATE_FROM_INT (BVW_INFO_VIDEO_BITRATE, "video_bitrate", N_("%d kbps"), C_("Stream bit rate", "N/A")); @@ -160,9 +159,9 @@ update_properties_from_bvw (BaconVideoWidgetProperties *props, /* Audio */ if (has_audio != FALSE) { - UPDATE_FROM_INT (BVW_INFO_AUDIO_BITRATE, "audio_bitrate", + UPDATE_FROM_INT (BVW_INFO_AUDIO_BITRATE, "audio-bitrate", N_("%d kbps"), C_("Stream bit rate", "N/A")); - UPDATE_FROM_STRING (BVW_INFO_AUDIO_CODEC, "acodec"); + UPDATE_FROM_STRING (BVW_INFO_AUDIO_CODEC, "audio-codec"); UPDATE_FROM_INT (BVW_INFO_AUDIO_SAMPLE_RATE, "samplerate", N_("%d Hz"), C_("Sample rate", "N/A")); UPDATE_FROM_STRING (BVW_INFO_AUDIO_CHANNELS, "channels"); @@ -182,7 +181,7 @@ main_page_notify_cb (TotemObject *totem, g_object_get (G_OBJECT (totem), "main-page", &main_page, NULL); if (g_strcmp0 (main_page, "player") == 0) - gtk_widget_hide (pi->dialog); + gtk_widget_hide (pi->props); g_free (main_page); } @@ -253,7 +252,7 @@ properties_action_cb (GSimpleAction *simple, totem = g_object_get_data (G_OBJECT (pi), "object"); g_object_get (G_OBJECT (totem), "main-page", &main_page, NULL); if (g_strcmp0 (main_page, "player") == 0) - gtk_widget_show (pi->dialog); + gtk_widget_show (pi->props); g_free (main_page); } @@ -270,24 +269,15 @@ impl_activate (PeasActivatable *plugin) pi = TOTEM_MOVIE_PROPERTIES_PLUGIN (plugin); totem = g_object_get_data (G_OBJECT (plugin), "object"); - pi->props = bacon_video_widget_properties_new (); - gtk_widget_show (pi->props); + parent = totem_object_get_main_window (totem); + + pi->props = bacon_video_widget_properties_new (parent); gtk_widget_set_sensitive (pi->props, FALSE); - parent = totem_object_get_main_window (totem); - pi->dialog = gtk_dialog_new_with_buttons (_("Properties"), - parent, - GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_USE_HEADER_BAR, - NULL, - GTK_RESPONSE_CLOSE, - NULL); g_object_unref (parent); - g_signal_connect (pi->dialog, "delete-event", - G_CALLBACK (gtk_widget_hide_on_delete), NULL); - g_signal_connect (pi->dialog, "response", + + g_signal_connect (pi->props, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); - gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (pi->dialog))), - pi->props); /* Properties action */ pi->props_action = g_simple_action_new ("properties", NULL); -- cgit v1.2.1