forked from AuroraMiddleware/gtk
inspector: Make the resource tab play videos
We can do this easily, so why not. This can be seen in action with gtk-logo.webm, e.g. in gtk4-demo.
This commit is contained in:
parent
f6af2d63b0
commit
2dfd1404ff
@ -30,6 +30,8 @@
|
|||||||
#include "gtktreeselection.h"
|
#include "gtktreeselection.h"
|
||||||
#include "gtktreestore.h"
|
#include "gtktreestore.h"
|
||||||
#include "gtkeventcontrollerkey.h"
|
#include "gtkeventcontrollerkey.h"
|
||||||
|
#include "gtkpicture.h"
|
||||||
|
#include "gtkmediafile.h"
|
||||||
|
|
||||||
#include <glib/gi18n-lib.h>
|
#include <glib/gi18n-lib.h>
|
||||||
|
|
||||||
@ -51,6 +53,7 @@ struct _GtkInspectorResourceListPrivate
|
|||||||
{
|
{
|
||||||
GtkTreeStore *model;
|
GtkTreeStore *model;
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
|
GtkWidget *video;
|
||||||
GtkWidget *image;
|
GtkWidget *image;
|
||||||
GtkWidget *content;
|
GtkWidget *content;
|
||||||
GtkWidget *name_label;
|
GtkWidget *name_label;
|
||||||
@ -193,9 +196,11 @@ populate_details (GtkInspectorResourceList *rl,
|
|||||||
gchar *text;
|
gchar *text;
|
||||||
gchar *content_image;
|
gchar *content_image;
|
||||||
gchar *content_text;
|
gchar *content_text;
|
||||||
|
gchar *content_video;
|
||||||
|
|
||||||
content_image = g_content_type_from_mime_type ("image/*");
|
content_image = g_content_type_from_mime_type ("image/*");
|
||||||
content_text = g_content_type_from_mime_type ("text/*");
|
content_text = g_content_type_from_mime_type ("text/*");
|
||||||
|
content_video = g_content_type_from_mime_type ("video/*");
|
||||||
|
|
||||||
data = g_bytes_get_data (bytes, &size);
|
data = g_bytes_get_data (bytes, &size);
|
||||||
type = g_content_type_guess (name, data, size, NULL);
|
type = g_content_type_guess (name, data, size, NULL);
|
||||||
@ -215,9 +220,20 @@ populate_details (GtkInspectorResourceList *rl,
|
|||||||
}
|
}
|
||||||
else if (g_content_type_is_a (type, content_image))
|
else if (g_content_type_is_a (type, content_image))
|
||||||
{
|
{
|
||||||
gtk_image_set_from_resource (GTK_IMAGE (rl->priv->image), path);
|
gtk_picture_set_resource (GTK_PICTURE (rl->priv->image), path);
|
||||||
gtk_stack_set_visible_child_name (GTK_STACK (rl->priv->content), "image");
|
gtk_stack_set_visible_child_name (GTK_STACK (rl->priv->content), "image");
|
||||||
}
|
}
|
||||||
|
else if (g_content_type_is_a (type, content_video))
|
||||||
|
{
|
||||||
|
GtkMediaStream *stream;
|
||||||
|
|
||||||
|
stream = gtk_media_file_new_for_resource (path);
|
||||||
|
gtk_media_stream_set_loop (GTK_MEDIA_STREAM (stream), TRUE);
|
||||||
|
gtk_picture_set_paintable (GTK_PICTURE (rl->priv->image), GDK_PAINTABLE (stream));
|
||||||
|
gtk_stack_set_visible_child_name (GTK_STACK (rl->priv->content), "image");
|
||||||
|
gtk_media_stream_play (GTK_MEDIA_STREAM (stream));
|
||||||
|
g_object_unref (stream);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gtk_text_buffer_set_text (rl->priv->buffer, "", 0);
|
gtk_text_buffer_set_text (rl->priv->buffer, "", 0);
|
||||||
|
@ -230,7 +230,7 @@
|
|||||||
<class name="view"/>
|
<class name="view"/>
|
||||||
</style>
|
</style>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage" id="image">
|
<object class="GtkPicture" id="image">
|
||||||
<property name="halign">center</property>
|
<property name="halign">center</property>
|
||||||
<property name="valign">center</property>
|
<property name="valign">center</property>
|
||||||
</object>
|
</object>
|
||||||
|
Loading…
Reference in New Issue
Block a user