From 3ade071f273aaa973e44bf95d6b1d4913a18f03b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:39:48 +0200 Subject: Adding upstream version 43.2. Signed-off-by: Daniel Baumann --- .../audio-video-properties/totem-properties-main.c | 148 +++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 extensions/audio-video-properties/totem-properties-main.c (limited to 'extensions/audio-video-properties/totem-properties-main.c') diff --git a/extensions/audio-video-properties/totem-properties-main.c b/extensions/audio-video-properties/totem-properties-main.c new file mode 100644 index 0000000..d592ccd --- /dev/null +++ b/extensions/audio-video-properties/totem-properties-main.c @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2000, 2001 Eazel Inc. + * Copyright (C) 2003 Andrew Sobala + * Copyright (C) 2005 Bastien Nocera + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#define GST_USE_UNSTABLE_API 1 +#include + +#include "totem-properties-view.h" +#include "totem-gst-helpers.h" +#include + +#define WANT_MIME_TYPES 1 +#include "totem-mime-types.h" + +static GType tpp_type = 0; +static void properties_model_provider_iface_init + (NautilusPropertiesModelProviderInterface *iface); +static GList *totem_properties_get_models + (NautilusPropertiesModelProvider *provider, GList *files); + +static void +totem_properties_plugin_register_type (GTypeModule *module) +{ + const GTypeInfo info = { + sizeof (GObjectClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) NULL, + NULL, + NULL, + sizeof (GObject), + 0, + (GInstanceInitFunc) NULL + }; + const GInterfaceInfo properties_model_provider_iface_info = { + (GInterfaceInitFunc)properties_model_provider_iface_init, + NULL, + NULL + }; + + tpp_type = g_type_module_register_type (module, G_TYPE_OBJECT, + "TotemPropertiesPlugin", + &info, 0); + g_type_module_add_interface (module, + tpp_type, + NAUTILUS_TYPE_PROPERTIES_MODEL_PROVIDER, + &properties_model_provider_iface_info); +} + +static void +properties_model_provider_iface_init (NautilusPropertiesModelProviderInterface *iface) +{ + iface->get_models = totem_properties_get_models; +} + +static gpointer +init_backend (gpointer data) +{ + gst_init (NULL, NULL); + totem_gst_disable_display_decoders (); + return NULL; +} + +static GList * +totem_properties_get_models (NautilusPropertiesModelProvider *provider, + GList *files) +{ + static GOnce backend_inited = G_ONCE_INIT; + NautilusFileInfo *file; + char *uri; + NautilusPropertiesModel *model; + guint i; + gboolean found; + + /* only add properties model if a single file is selected */ + if (files == NULL || files->next != NULL) + return NULL; + file = files->data; + + /* only add the properties model to these mime types */ + found = FALSE; + for (i = 0; mime_types[i] != NULL; i++) { + if (nautilus_file_info_is_mime_type (file, mime_types[i])) { + found = TRUE; + break; + } + } + if (found == FALSE) + return NULL; + + /* okay, make the model, init'ing the backend first if necessary */ + g_once (&backend_inited, init_backend, NULL); + + uri = nautilus_file_info_get_uri (file); + model = totem_properties_view_new (uri); + g_free (uri); + + return g_list_prepend (NULL, model); +} + +/* --- extension interface --- */ +void +nautilus_module_initialize (GTypeModule *module) +{ + /* set up translation catalog */ + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + + totem_properties_plugin_register_type (module); + totem_properties_view_register_type (module); +} + +void +nautilus_module_shutdown (void) +{ +} + +void +nautilus_module_list_types (const GType **types, + int *num_types) +{ + static GType type_list[1]; + + type_list[0] = tpp_type; + *types = type_list; + *num_types = G_N_ELEMENTS (type_list); +} + -- cgit v1.2.3