[Xfce4-commits] <thunar:use-libxfce4ui> Link Thunar to libxfce4ui.
Nick Schermer
noreply at xfce.org
Sat Oct 17 18:26:02 CEST 2009
Updating branch refs/heads/nick/use-libxfce4ui
to 90b3d9fe2b4224103e67397db40f85c244bd1b55 (commit)
from fa0bb7d192ed8723d82fc6f2c2e94f8b794f9507 (commit)
commit 90b3d9fe2b4224103e67397db40f85c244bd1b55
Author: Nick Schermer <nick at xfce.org>
Date: Sat Oct 17 18:10:29 2009 +0200
Link Thunar to libxfce4ui.
This will drop some code from Thunar and share the
important code for spawning application with the rest
of Xfce.
configure.in.in | 1 +
thunar/Makefile.am | 10 +-
thunar/thunar-preferences-dialog.c | 3 +-
thunar/xfce-heading.c | 753 ------------------------------------
thunar/xfce-heading.h | 82 ----
thunar/xfce-titled-dialog.c | 368 ------------------
thunar/xfce-titled-dialog.h | 75 ----
7 files changed, 7 insertions(+), 1285 deletions(-)
diff --git a/configure.in.in b/configure.in.in
index a591e41..2ccfeac 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -144,6 +144,7 @@ XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.18.0])
XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.14.0])
XDT_CHECK_PACKAGE([GDK_PIXBUF], [gdk-pixbuf-2.0], [2.14.0])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.6.0])
+XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.7.0])
dnl ********************************************
dnl *** Check for session management support ***
diff --git a/thunar/Makefile.am b/thunar/Makefile.am
index 4f606b7..6c5b20c 100644
--- a/thunar/Makefile.am
+++ b/thunar/Makefile.am
@@ -215,11 +215,7 @@ Thunar_SOURCES = \
thunar-view.h \
thunar-window.c \
thunar-window.h \
- thunar-window-ui.h \
- xfce-heading.c \
- xfce-heading.h \
- xfce-titled-dialog.c \
- xfce-titled-dialog.h
+ thunar-window-ui.h
Thunar_CFLAGS = \
$(EXO_CFLAGS) \
@@ -227,6 +223,7 @@ Thunar_CFLAGS = \
$(GIO_CFLAGS) \
$(LIBSM_CFLAGS) \
$(LIBSTARTUP_NOTIFICATION_CFLAGS) \
+ $(LIBXFCE4UI_CFLAGS) \
$(PLATFORM_CFLAGS)
Thunar_LDFLAGS = \
@@ -241,7 +238,8 @@ Thunar_LDADD = \
$(GTHREAD_LIBS) \
$(GIO_LIBS) \
$(LIBSTARTUP_NOTIFICATION_LIBS) \
- $(LIBSM_LIBS)
+ $(LIBSM_LIBS) \
+ $(LIBXFCE4UI_LIBS)
Thunar_DEPENDENCIES = \
$(top_builddir)/tdb/libtdb.la \
diff --git a/thunar/thunar-preferences-dialog.c b/thunar/thunar-preferences-dialog.c
index 536e5c1..504db2c 100644
--- a/thunar/thunar-preferences-dialog.c
+++ b/thunar/thunar-preferences-dialog.c
@@ -21,6 +21,8 @@
#include <config.h>
#endif
+#include <libxfce4ui/libxfce4ui.h>
+
#include <thunar/sexy-url-label.h>
#include <thunar/thunar-compact-view.h>
#include <thunar/thunar-details-view.h>
@@ -33,7 +35,6 @@
#include <thunar/thunar-preferences.h>
#include <thunar/thunar-private.h>
#include <thunar/thunar-util.h>
-#include <thunar/xfce-titled-dialog.h>
diff --git a/thunar/xfce-heading.c b/thunar/xfce-heading.c
deleted file mode 100644
index ec738fc..0000000
--- a/thunar/xfce-heading.c
+++ /dev/null
@@ -1,753 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006 Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_MEMORY_H
-#include <memory.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include "xfce-heading.h"
-
-
-
-#define XFCE_HEADING_BORDER 6
-#define XFCE_HEADING_SPACING 12
-#define XFCE_HEADING_ICON_SIZE 48
-
-#define XFCE_HEADING_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), XFCE_TYPE_HEADING, XfceHeadingPrivate))
-
-
-
-/* Property identifiers */
-enum
-{
- PROP_0,
- PROP_ICON,
- PROP_ICON_NAME,
- PROP_SUBTITLE,
- PROP_TITLE,
-};
-
-
-
-static void xfce_heading_finalize (GObject *object);
-static void xfce_heading_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static void xfce_heading_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void xfce_heading_realize (GtkWidget *widget);
-static void xfce_heading_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void xfce_heading_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static gboolean xfce_heading_expose_event (GtkWidget *widget,
- GdkEventExpose *event);
-static AtkObject *xfce_heading_get_accessible (GtkWidget *widget);
-static PangoLayout *xfce_heading_make_layout (XfceHeading *heading);
-static GdkPixbuf *xfce_heading_make_pixbuf (XfceHeading *heading);
-
-
-
-struct _XfceHeadingPrivate
-{
- GdkPixbuf *icon;
- gchar *icon_name;
- gchar *subtitle;
- gchar *title;
-};
-
-
-
-G_DEFINE_TYPE (XfceHeading, xfce_heading, GTK_TYPE_WIDGET);
-
-
-
-static void
-xfce_heading_class_init (XfceHeadingClass *klass)
-{
- GtkWidgetClass *gtkwidget_class;
- GObjectClass *gobject_class;
-
- /* add our private data to the class */
- g_type_class_add_private (klass, sizeof (XfceHeadingPrivate));
-
- gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->finalize = xfce_heading_finalize;
- gobject_class->get_property = xfce_heading_get_property;
- gobject_class->set_property = xfce_heading_set_property;
-
- gtkwidget_class = GTK_WIDGET_CLASS (klass);
- gtkwidget_class->realize = xfce_heading_realize;
- gtkwidget_class->size_request = xfce_heading_size_request;
- gtkwidget_class->style_set = xfce_heading_style_set;
- gtkwidget_class->expose_event = xfce_heading_expose_event;
- gtkwidget_class->get_accessible = xfce_heading_get_accessible;
-
- /**
- * XfceHeading:icon:
- *
- * The #GdkPixbuf to display as icon, or %NULL to use the
- * "icon-name" property.
- *
- * Since: 4.4.0
- **/
- g_object_class_install_property (gobject_class,
- PROP_ICON,
- g_param_spec_object ("icon",
- "icon",
- "icon",
- GDK_TYPE_PIXBUF,
- G_PARAM_READWRITE));
-
- /**
- * XfceHeading:icon-name:
- *
- * If the "icon" property value is %NULL this is the name of
- * the icon to display instead (looked up using the icon theme).
- * If this property is also %NULL or the specified icon does not
- * exist in the selected icon theme, no icon will be displayed.
- *
- * Since: 4.4.0
- **/
- g_object_class_install_property (gobject_class,
- PROP_ICON_NAME,
- g_param_spec_string ("icon-name",
- "icon-name",
- "icon-name",
- NULL,
- G_PARAM_READWRITE));
-
- /**
- * XfceHeading:subtitle:
- *
- * The sub title that should be displayed below the
- * title. May be %NULL or the empty string to display
- * only the title.
- *
- * Since: 4.4.0
- **/
- g_object_class_install_property (gobject_class,
- PROP_SUBTITLE,
- g_param_spec_string ("subtitle",
- "subtitle",
- "subtitle",
- NULL,
- G_PARAM_READWRITE));
-
- /**
- * XfceHeading:title:
- *
- * The title text to display in the heading.
- *
- * Since: 4.4.0
- **/
- g_object_class_install_property (gobject_class,
- PROP_TITLE,
- g_param_spec_string ("title",
- "title",
- "title",
- NULL,
- G_PARAM_READWRITE));
-}
-
-
-
-static void
-xfce_heading_init (XfceHeading *heading)
-{
- /* setup the private data */
- heading->priv = XFCE_HEADING_GET_PRIVATE (heading);
-
- /* setup the widget parameters */
- GTK_WIDGET_UNSET_FLAGS (heading, GTK_NO_WINDOW);
-}
-
-
-
-static void
-xfce_heading_finalize (GObject *object)
-{
- XfceHeading *heading = XFCE_HEADING (object);
-
- /* release the private data */
- if (G_UNLIKELY (heading->priv->icon != NULL))
- g_object_unref (G_OBJECT (heading->priv->icon));
- g_free (heading->priv->icon_name);
- g_free (heading->priv->subtitle);
- g_free (heading->priv->title);
-
- (*G_OBJECT_CLASS (xfce_heading_parent_class)->finalize) (object);
-}
-
-
-
-static void
-xfce_heading_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- XfceHeading *heading = XFCE_HEADING (object);
-
- switch (prop_id)
- {
- case PROP_ICON:
- g_value_set_object (value, xfce_heading_get_icon (heading));
- break;
-
- case PROP_ICON_NAME:
- g_value_set_string (value, xfce_heading_get_icon_name (heading));
- break;
-
- case PROP_SUBTITLE:
- g_value_set_string (value, xfce_heading_get_subtitle (heading));
- break;
-
- case PROP_TITLE:
- g_value_set_string (value, xfce_heading_get_title (heading));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-
-static void
-xfce_heading_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- XfceHeading *heading = XFCE_HEADING (object);
-
- switch (prop_id)
- {
- case PROP_ICON:
- xfce_heading_set_icon (heading, g_value_get_object (value));
- break;
-
- case PROP_ICON_NAME:
- xfce_heading_set_icon_name (heading, g_value_get_string (value));
- break;
-
- case PROP_SUBTITLE:
- xfce_heading_set_subtitle (heading, g_value_get_string (value));
- break;
-
- case PROP_TITLE:
- xfce_heading_set_title (heading, g_value_get_string (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-
-static void
-xfce_heading_realize (GtkWidget *widget)
-{
- GdkWindowAttr attributes;
-
- /* mark the widget as realized */
- GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
-
- /* setup the window attributes */
- attributes.x = widget->allocation.x;
- attributes.y = widget->allocation.y;
- attributes.width = widget->allocation.width;
- attributes.height = widget->allocation.height;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = gtk_widget_get_events (widget)
- | GDK_EXPOSURE_MASK;
-
- /* allocate the widget window */
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes,
- GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP);
- gdk_window_set_user_data (widget->window, widget);
-
- /* connect the style to the window */
- widget->style = gtk_style_attach (widget->style, widget->window);
-
- /* set background color (using the base color) */
- gdk_window_set_background (widget->window, &widget->style->base[GTK_STATE_NORMAL]);
-}
-
-
-
-static void
-xfce_heading_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- XfceHeading *heading = XFCE_HEADING (widget);
- PangoLayout *layout;
- GdkPixbuf *pixbuf;
- gint layout_width;
- gint layout_height;
- gint pixbuf_width = 0;
- gint pixbuf_height = 0;
-
- /* determine the dimensions of the title text */
- layout = xfce_heading_make_layout (heading);
- pango_layout_get_pixel_size (layout, &layout_width, &layout_height);
- g_object_unref (G_OBJECT (layout));
-
- /* determine the dimensions of the pixbuf */
- pixbuf = xfce_heading_make_pixbuf (heading);
- if (G_LIKELY (pixbuf != NULL))
- {
- pixbuf_width = gdk_pixbuf_get_width (pixbuf);
- pixbuf_height = gdk_pixbuf_get_height (pixbuf);
- g_object_unref (G_OBJECT (pixbuf));
- }
-
- /* determine the base dimensions */
- requisition->width = layout_width + pixbuf_width + ((pixbuf_width > 0) ? XFCE_HEADING_SPACING : 0);
- requisition->height = MAX (XFCE_HEADING_ICON_SIZE, MAX (pixbuf_height, layout_height));
-
- /* add border size */
- requisition->width += 2 * XFCE_HEADING_BORDER;
- requisition->height += 2 * XFCE_HEADING_BORDER;
-}
-
-
-
-static void
-xfce_heading_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- /* check if we're already realized */
- if (GTK_WIDGET_REALIZED (widget))
- {
- /* set background color (using the base color) */
- gdk_window_set_background (widget->window, &widget->style->base[GTK_STATE_NORMAL]);
- }
-}
-
-
-
-static gboolean
-xfce_heading_expose_event (GtkWidget *widget,
- GdkEventExpose *event)
-{
- XfceHeading *heading = XFCE_HEADING (widget);
- PangoLayout *layout;
- GdkPixbuf *pixbuf;
- gboolean rtl;
- gint width;
- gint height;
- gint x;
- gint y;
-
- /* check if we should render from right to left */
- rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL);
-
- /* determine the initial horizontal position */
- x = (rtl ? widget->allocation.width - XFCE_HEADING_BORDER : XFCE_HEADING_BORDER);
-
- /* check if we have a pixbuf to render */
- pixbuf = xfce_heading_make_pixbuf (heading);
- if (G_LIKELY (pixbuf != NULL))
- {
- /* determine the pixbuf dimensions */
- width = gdk_pixbuf_get_width (pixbuf);
- height = gdk_pixbuf_get_height (pixbuf);
-
- /* determine the vertical position */
- y = (widget->allocation.height - height) / 2;
-
- /* render the pixbuf */
- gdk_draw_pixbuf (widget->window, widget->style->black_gc, pixbuf, 0, 0,
- (rtl ? x - width : x), y, width, height,
- GDK_RGB_DITHER_NORMAL, 0, 0);
-
- /* release the pixbuf */
- g_object_unref (G_OBJECT (pixbuf));
-
- /* advance the horizontal position */
- x += (rtl ? -1 : 1) * (width + XFCE_HEADING_SPACING);
- }
-
- /* generate the title layout */
- layout = xfce_heading_make_layout (heading);
- pango_layout_get_pixel_size (layout, &width, &height);
-
- /* determine the vertical position */
- y = (widget->allocation.height - height) / 2;
-
- /* render the title */
- gtk_paint_layout (widget->style, widget->window, GTK_WIDGET_STATE (widget), TRUE, &event->area,
- widget, "heading", (rtl ? x - width : x), y, layout);
-
- /* release the layout */
- g_object_unref (G_OBJECT (layout));
-
- return FALSE;
-}
-
-
-
-static AtkObject*
-xfce_heading_get_accessible (GtkWidget *widget)
-{
- AtkObject *object;
-
- object = (*GTK_WIDGET_CLASS (xfce_heading_parent_class)->get_accessible) (widget);
- atk_object_set_role (object, ATK_ROLE_HEADER);
-
- return object;
-}
-
-
-
-static PangoLayout*
-xfce_heading_make_layout (XfceHeading *heading)
-{
- PangoAttribute *attribute;
- PangoAttrList *attr_list;
- PangoLayout *layout;
- GString *text;
- gint title_length = 0;
-
- /* generate the full text */
- text = g_string_sized_new (128);
- if (G_LIKELY (heading->priv->title != NULL))
- {
- /* add the main title */
- title_length = strlen (heading->priv->title);
- g_string_append (text, heading->priv->title);
- }
- if (heading->priv->subtitle != NULL && *heading->priv->subtitle != '\0')
- {
- /* add an empty line between the title and the subtitle */
- if (G_LIKELY (heading->priv->title != NULL))
- g_string_append (text, "\n");
-
- /* add the subtitle */
- g_string_append (text, heading->priv->subtitle);
- }
-
- /* allocate and setup a new layout from the widget's context */
- layout = gtk_widget_create_pango_layout (GTK_WIDGET (heading), text->str);
-
- /* allocate an attribute list (large bold title) */
- attr_list = pango_attr_list_new ();
- attribute = pango_attr_scale_new (PANGO_SCALE_LARGE); /* large title */
- attribute->start_index = 0;
- attribute->end_index = title_length;
- pango_attr_list_insert (attr_list, attribute);
- attribute = pango_attr_weight_new (PANGO_WEIGHT_BOLD); /* bold title */
- attribute->start_index = 0;
- attribute->end_index = title_length;
- pango_attr_list_insert (attr_list, attribute);
- pango_layout_set_attributes (layout, attr_list);
- pango_attr_list_unref (attr_list);
-
- /* cleanup */
- g_string_free (text, TRUE);
-
- return layout;
-}
-
-
-
-static GdkPixbuf*
-xfce_heading_make_pixbuf (XfceHeading *heading)
-{
- GtkIconTheme *icon_theme;
- GdkPixbuf *pixbuf = NULL;
- GdkScreen *screen;
-
- if (G_UNLIKELY (heading->priv->icon != NULL))
- {
- /* just use the specified icon */
- pixbuf = g_object_ref (G_OBJECT (heading->priv->icon));
- }
- else if (G_LIKELY (heading->priv->icon_name != NULL))
- {
- /* determine the icon theme for the current screen */
- screen = gtk_widget_get_screen (GTK_WIDGET (heading));
- icon_theme = gtk_icon_theme_get_for_screen (screen);
-
- /* try to load the icon from the icon theme */
- pixbuf = gtk_icon_theme_load_icon (icon_theme, heading->priv->icon_name,
- XFCE_HEADING_ICON_SIZE,
- GTK_ICON_LOOKUP_USE_BUILTIN, NULL);
- }
-
- return pixbuf;
-}
-
-
-
-/**
- * xfce_heading_new:
- *
- * Allocates a new #XfceHeading instance.
- *
- * Return value: the newly allocated #XfceHeading.
- *
- * Since: 4.4.0
- **/
-GtkWidget*
-xfce_heading_new (void)
-{
- return g_object_new (XFCE_TYPE_HEADING, NULL);
-}
-
-
-
-/**
- * xfce_heading_get_icon:
- * @heading : a #XfceHeading.
- *
- * Returns the #GdkPixbuf that was set as icon for
- * @heading or %NULL if no icon is set. The returned
- * #GdkPixbuf object is owned by @heading.
- *
- * Return value: the icon for @heading, or %NULL.
- *
- * Since: 4.4.0
- **/
-GdkPixbuf*
-xfce_heading_get_icon (XfceHeading *heading)
-{
- g_return_val_if_fail (XFCE_IS_HEADING (heading), NULL);
- return heading->priv->icon;
-}
-
-
-
-/**
- * xfce_heading_set_icon:
- * @heading : a #XfceHeading.
- * @icon : the new icon or %NULL.
- *
- * If @icon is not %NULL, @heading will display the new @icon
- * aside the title. Else, if @icon is %NULL no icon is displayed
- * unless an icon name was set with xfce_heading_set_icon_name().
- *
- * Since: 4.4.0
- **/
-void
-xfce_heading_set_icon (XfceHeading *heading,
- GdkPixbuf *icon)
-{
- g_return_if_fail (XFCE_IS_HEADING (heading));
- g_return_if_fail (icon == NULL || GDK_IS_PIXBUF (icon));
-
- /* check if we have a new icon */
- if (G_LIKELY (heading->priv->icon != icon))
- {
- /* disconnect from the previous icon */
- if (G_LIKELY (heading->priv->icon != NULL))
- g_object_unref (G_OBJECT (heading->priv->icon));
-
- /* activate the new icon */
- heading->priv->icon = icon;
-
- /* connect to the new icon */
- if (G_LIKELY (icon != NULL))
- g_object_ref (G_OBJECT (icon));
-
- /* schedule a resize */
- gtk_widget_queue_resize (GTK_WIDGET (heading));
-
- /* notify listeners */
- g_object_notify (G_OBJECT (heading), "icon");
- }
-}
-
-
-
-/**
- * xfce_heading_get_icon_name:
- * @heading : a #XfceHeading.
- *
- * Returns the icon name previously set by a call to
- * xfce_heading_set_icon_name() or %NULL if no icon name
- * is set for @heading.
- *
- * Return value: the icon name for @heading, or %NULL.
- *
- * Since: 4.4.0
- **/
-G_CONST_RETURN gchar*
-xfce_heading_get_icon_name (XfceHeading *heading)
-{
- g_return_val_if_fail (XFCE_IS_HEADING (heading), NULL);
- return heading->priv->icon_name;
-}
-
-
-
-/**
- * xfce_heading_set_icon_name:
- * @heading : a #XfceHeading.
- * @icon_name : the new icon name, or %NULL.
- *
- * If @icon_name is not %NULL and the "icon" property is set to
- * %NULL, see xfce_heading_set_icon(), the @heading will display
- * the name icon identified by the @icon_name.
- *
- * Since: 4.4.0
- **/
-void
-xfce_heading_set_icon_name (XfceHeading *heading,
- const gchar *icon_name)
-{
- g_return_if_fail (XFCE_IS_HEADING (heading));
-
- /* release the previous icon name */
- g_free (heading->priv->icon_name);
-
- /* activate the new icon name */
- heading->priv->icon_name = g_strdup (icon_name);
-
- /* schedule a resize */
- gtk_widget_queue_resize (GTK_WIDGET (heading));
-
- /* notify listeners */
- g_object_notify (G_OBJECT (heading), "icon-name");
-}
-
-
-
-/**
- * xfce_heading_get_subtitle:
- * @heading : a #XfceHeading.
- *
- * Returns the sub title displayed below the
- * main title of the @heading, or %NULL if
- * no subtitle is set.
- *
- * Return value: the subtitle of @heading, or %NULL.
- *
- * Since: 4.4.0
- **/
-G_CONST_RETURN gchar*
-xfce_heading_get_subtitle (XfceHeading *heading)
-{
- g_return_val_if_fail (XFCE_IS_HEADING (heading), NULL);
- return heading->priv->subtitle;
-}
-
-
-
-/**
- * xfce_heading_set_subtitle:
- * @heading : a #XfceHeading.
- * @subtitle : the new subtitle for @heading, or %NULL.
- *
- * If @subtitle is not %NULL and not the empty string, it
- * will be displayed by @heading below the main title.
- *
- * Since: 4.4.0
- **/
-void
-xfce_heading_set_subtitle (XfceHeading *heading,
- const gchar *subtitle)
-{
- g_return_if_fail (XFCE_IS_HEADING (heading));
- g_return_if_fail (subtitle == NULL || g_utf8_validate (subtitle, -1, NULL));
-
- /* release the previous subtitle */
- g_free (heading->priv->subtitle);
-
- /* activate the new subtitle */
- heading->priv->subtitle = g_strdup (subtitle);
-
- /* schedule a resize */
- gtk_widget_queue_resize (GTK_WIDGET (heading));
-
- /* notify listeners */
- g_object_notify (G_OBJECT (heading), "subtitle");
-}
-
-
-
-/**
- * xfce_heading_get_title:
- * @heading : a #XfceHeading.
- *
- * Returns the title displayed by the @heading.
- *
- * Return value: the title displayed by the @heading.
- *
- * Since: 4.4.0
- **/
-G_CONST_RETURN gchar*
-xfce_heading_get_title (XfceHeading *heading)
-{
- g_return_val_if_fail (XFCE_IS_HEADING (heading), NULL);
- return heading->priv->title;
-}
-
-
-
-/**
- * xfce_heading_set_title:
- * @heading : a #XfceHeading.
- * @title : the new title for the @heading.
- *
- * Sets the title displayed by the @heading to the
- * specified @title.
- *
- * Since: 4.4.0
- **/
-void
-xfce_heading_set_title (XfceHeading *heading,
- const gchar *title)
-{
- g_return_if_fail (XFCE_IS_HEADING (heading));
- g_return_if_fail (title == NULL || g_utf8_validate (title, -1, NULL));
-
- /* release the previous title */
- g_free (heading->priv->title);
-
- /* activate the new title */
- heading->priv->title = g_strdup (title);
-
- /* schedule a resize */
- gtk_widget_queue_resize (GTK_WIDGET (heading));
-
- /* notify listeners */
- g_object_notify (G_OBJECT (heading), "title");
-}
-
-
diff --git a/thunar/xfce-heading.h b/thunar/xfce-heading.h
deleted file mode 100644
index a7df302..0000000
--- a/thunar/xfce-heading.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006 Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifndef __XFCE_HEADING_H__
-#define __XFCE_HEADING_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _XfceHeadingPrivate XfceHeadingPrivate;
-typedef struct _XfceHeadingClass XfceHeadingClass;
-typedef struct _XfceHeading XfceHeading;
-
-#define XFCE_TYPE_HEADING (xfce_heading_get_type ())
-#define XFCE_HEADING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFCE_TYPE_HEADING, XfceHeading))
-#define XFCE_HEADING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XFCE_TYPE_HEADING, XfceHeadingClass))
-#define XFCE_IS_HEADING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFCE_TYPE_HEADING))
-#define XFCE_IS_HEADING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFCE_TYPE_HEADING))
-#define XFCE_HEADING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFCE_TYPE_HEADING, XfceHeadingClass))
-
-struct _XfceHeadingClass
-{
- /*< private >*/
- GtkWidgetClass __parent__;
-
- /* reserved for future expansion */
- void (*reserved0) (void);
- void (*reserved1) (void);
- void (*reserved2) (void);
- void (*reserved3) (void);
- void (*reserved4) (void);
- void (*reserved5) (void);
-};
-
-struct _XfceHeading
-{
- /*< private >*/
- GtkWidget __parent__;
- XfceHeadingPrivate *priv;
-};
-
-GType xfce_heading_get_type (void) G_GNUC_CONST;
-
-GtkWidget *xfce_heading_new (void) G_GNUC_MALLOC;
-
-GdkPixbuf *xfce_heading_get_icon (XfceHeading *heading);
-void xfce_heading_set_icon (XfceHeading *heading,
- GdkPixbuf *icon);
-
-G_CONST_RETURN gchar *xfce_heading_get_icon_name (XfceHeading *heading);
-void xfce_heading_set_icon_name (XfceHeading *heading,
- const gchar *icon_name);
-
-G_CONST_RETURN gchar *xfce_heading_get_subtitle (XfceHeading *heading);
-void xfce_heading_set_subtitle (XfceHeading *heading,
- const gchar *subtitle);
-
-G_CONST_RETURN gchar *xfce_heading_get_title (XfceHeading *heading);
-void xfce_heading_set_title (XfceHeading *heading,
- const gchar *title);
-
-G_END_DECLS;
-
-#endif /* !__XFCE_HEADING_H__ */
diff --git a/thunar/xfce-titled-dialog.c b/thunar/xfce-titled-dialog.c
deleted file mode 100644
index 44b50fd..0000000
--- a/thunar/xfce-titled-dialog.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006 Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_STDARG_H
-#include <stdarg.h>
-#endif
-
-#include <gdk/gdkkeysyms.h>
-
-#include "xfce-heading.h"
-#include "xfce-titled-dialog.h"
-
-
-
-#define XFCE_TITLED_DIALOG_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), XFCE_TYPE_TITLED_DIALOG, XfceTitledDialogPrivate))
-
-
-
-/* Property identifiers */
-enum
-{
- PROP_0,
- PROP_SUBTITLE,
-};
-
-
-
-static void xfce_titled_dialog_finalize (GObject *object);
-static void xfce_titled_dialog_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static void xfce_titled_dialog_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void xfce_titled_dialog_close (GtkDialog *dialog);
-static void xfce_titled_dialog_update_heading (XfceTitledDialog *titled_dialog);
-
-
-
-struct _XfceTitledDialogPrivate
-{
- GtkWidget *heading;
- gchar *subtitle;
-};
-
-
-
-G_DEFINE_TYPE (XfceTitledDialog, xfce_titled_dialog, GTK_TYPE_DIALOG);
-
-
-
-static void
-xfce_titled_dialog_class_init (XfceTitledDialogClass *klass)
-{
- GtkDialogClass *gtkdialog_class;
- GtkBindingSet *binding_set;
- GObjectClass *gobject_class;
-
- /* add our private data to the class */
- g_type_class_add_private (klass, sizeof (XfceTitledDialogPrivate));
-
- gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->finalize = xfce_titled_dialog_finalize;
- gobject_class->get_property = xfce_titled_dialog_get_property;
- gobject_class->set_property = xfce_titled_dialog_set_property;
-
- gtkdialog_class = GTK_DIALOG_CLASS (klass);
- gtkdialog_class->close = xfce_titled_dialog_close;
-
- /**
- * XfceTitledDialog:subtitle:
- *
- * The subtitle displayed below the main dialog title.
- *
- * Since: 4.4.0
- **/
- g_object_class_install_property (gobject_class,
- PROP_SUBTITLE,
- g_param_spec_string ("subtitle",
- "subtitle",
- "subtitle",
- NULL,
- G_PARAM_READWRITE));
-
- /* connect additional key bindings to the GtkDialog::close action signal */
- binding_set = gtk_binding_set_by_class (klass);
- gtk_binding_entry_add_signal (binding_set, GDK_w, GDK_CONTROL_MASK, "close", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_W, GDK_CONTROL_MASK, "close", 0);
-}
-
-
-
-static void
-xfce_titled_dialog_init (XfceTitledDialog *titled_dialog)
-{
- GtkWidget *line;
- GtkWidget *vbox;
-
- /* connect the private data */
- titled_dialog->priv = XFCE_TITLED_DIALOG_GET_PRIVATE (titled_dialog);
-
- /* remove the main dialog box from the window */
- g_object_ref (G_OBJECT (GTK_DIALOG (titled_dialog)->vbox));
- gtk_container_remove (GTK_CONTAINER (titled_dialog), GTK_DIALOG (titled_dialog)->vbox);
-
- /* add a new vbox w/o border to the main window */
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (titled_dialog), vbox);
- gtk_widget_show (vbox);
-
- /* add the heading to the window */
- titled_dialog->priv->heading = xfce_heading_new ();
- gtk_box_pack_start (GTK_BOX (vbox), titled_dialog->priv->heading, FALSE, FALSE, 0);
- gtk_widget_show (titled_dialog->priv->heading);
-
- /* add the separator between header and content */
- line = gtk_hseparator_new ();
- gtk_box_pack_start (GTK_BOX (vbox), line, FALSE, FALSE, 0);
- gtk_widget_show (line);
-
- /* add the main dialog box to the new vbox */
- gtk_box_pack_start (GTK_BOX (vbox), GTK_DIALOG (titled_dialog)->vbox, TRUE, TRUE, 0);
- g_object_unref (G_OBJECT (GTK_DIALOG (titled_dialog)->vbox));
-
- /* make sure to update the heading whenever one of the relevant window properties changes */
- g_signal_connect (G_OBJECT (titled_dialog), "notify::icon", G_CALLBACK (xfce_titled_dialog_update_heading), NULL);
- g_signal_connect (G_OBJECT (titled_dialog), "notify::icon-name", G_CALLBACK (xfce_titled_dialog_update_heading), NULL);
- g_signal_connect (G_OBJECT (titled_dialog), "notify::title", G_CALLBACK (xfce_titled_dialog_update_heading), NULL);
-
- /* initially update the heading properties */
- xfce_titled_dialog_update_heading (titled_dialog);
-}
-
-
-
-
-static void
-xfce_titled_dialog_finalize (GObject *object)
-{
- XfceTitledDialog *titled_dialog = XFCE_TITLED_DIALOG (object);
-
- /* release the subtitle */
- g_free (titled_dialog->priv->subtitle);
-
- (*G_OBJECT_CLASS (xfce_titled_dialog_parent_class)->finalize) (object);
-}
-
-
-
-static void
-xfce_titled_dialog_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- XfceTitledDialog *titled_dialog = XFCE_TITLED_DIALOG (object);
-
- switch (prop_id)
- {
- case PROP_SUBTITLE:
- g_value_set_string (value, xfce_titled_dialog_get_subtitle (titled_dialog));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-
-static void
-xfce_titled_dialog_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- XfceTitledDialog *titled_dialog = XFCE_TITLED_DIALOG (object);
-
- switch (prop_id)
- {
- case PROP_SUBTITLE:
- xfce_titled_dialog_set_subtitle (titled_dialog, g_value_get_string (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-
-static void
-xfce_titled_dialog_close (GtkDialog *dialog)
-{
- GdkEvent *event;
-
- /* verify that the dialog is realized */
- if (G_LIKELY (GTK_WIDGET_REALIZED (dialog)))
- {
- /* send a delete event to the dialog */
- event = gdk_event_new (GDK_DELETE);
- event->any.window = g_object_ref (GTK_WIDGET (dialog)->window);
- event->any.send_event = TRUE;
- gtk_main_do_event (event);
- gdk_event_free (event);
- }
-}
-
-
-
-static void
-xfce_titled_dialog_update_heading (XfceTitledDialog *titled_dialog)
-{
- /* update the heading properties using the window property values */
- xfce_heading_set_icon (XFCE_HEADING (titled_dialog->priv->heading), gtk_window_get_icon (GTK_WINDOW (titled_dialog)));
- xfce_heading_set_icon_name (XFCE_HEADING (titled_dialog->priv->heading), gtk_window_get_icon_name (GTK_WINDOW (titled_dialog)));
- xfce_heading_set_title (XFCE_HEADING (titled_dialog->priv->heading), gtk_window_get_title (GTK_WINDOW (titled_dialog)));
-}
-
-
-
-/**
- * xfce_titled_dialog_new:
- *
- * Allocates a new #XfceTitledDialog instance.
- *
- * Return value: the newly allocated #XfceTitledDialog.
- *
- * Since: 4.4.0
- **/
-GtkWidget*
-xfce_titled_dialog_new (void)
-{
- return g_object_new (XFCE_TYPE_TITLED_DIALOG, NULL);
-}
-
-
-
-/**
- * xfce_titled_dialog_new_with_buttons:
- * @title : title of the dialog, or %NULL.
- * @parent : transient parent window of the dialog, or %NULL.
- * @flags : from #GtkDialogFlags.
- * @first_button_text : stock ID or text to go in first, or %NULL.
- * @... : response ID for the first button, then additional buttons, ending with %NULL.
- *
- * See the documentation of gtk_dialog_new_with_buttons() for details about the
- * parameters and the returned dialog.
- *
- * Return value: the newly allocated #XfceTitledDialog.
- *
- * Since: 4.4.0
- **/
-GtkWidget*
-xfce_titled_dialog_new_with_buttons (const gchar *title,
- GtkWindow *parent,
- GtkDialogFlags flags,
- const gchar *first_button_text,
- ...)
-{
- const gchar *button_text;
- GtkWidget *dialog;
- va_list args;
- gint response_id;
-
- /* allocate the dialog */
- dialog = g_object_new (XFCE_TYPE_TITLED_DIALOG,
- "destroy-with-parent", ((flags & GTK_DIALOG_DESTROY_WITH_PARENT) != 0),
- "has-separator", ((flags & GTK_DIALOG_NO_SEPARATOR) == 0),
- "modal", ((flags & GTK_DIALOG_MODAL) != 0),
- "title", title,
- NULL);
-
- /* set the transient parent (if any) */
- if (G_LIKELY (parent != NULL))
- gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
-
- /* add all additional buttons */
- va_start (args, first_button_text);
- for (button_text = first_button_text; button_text != NULL; )
- {
- response_id = va_arg (args, gint);
- gtk_dialog_add_button (GTK_DIALOG (dialog), button_text, response_id);
- button_text = va_arg (args, const gchar *);
- }
- va_end (args);
-
- return dialog;
-}
-
-
-
-/**
- * xfce_titled_dialog_get_subtitle:
- * @titled_dialog : a #XfceTitledDialog.
- *
- * Returns the subtitle of the @titled_dialog, or %NULL
- * if no subtitle is displayed in the @titled_dialog.
- *
- * Return value: the subtitle of @titled_dialog, or %NULL.
- *
- * Since: 4.4.0
- **/
-G_CONST_RETURN gchar*
-xfce_titled_dialog_get_subtitle (XfceTitledDialog *titled_dialog)
-{
- g_return_val_if_fail (XFCE_IS_TITLED_DIALOG (titled_dialog), NULL);
- return titled_dialog->priv->subtitle;
-}
-
-
-
-/**
- * xfce_titled_dialog_set_subtitle:
- * @titled_dialog : a #XfceTitledDialog.
- * @subtitle : the new subtitle for the @titled_dialog, or %NULL.
- *
- * Sets the subtitle displayed by @titled_dialog to @subtitle; if
- * @subtitle is %NULL no subtitle will be displayed by the @titled_dialog.
- *
- * Since: 4.4.0
- **/
-void
-xfce_titled_dialog_set_subtitle (XfceTitledDialog *titled_dialog,
- const gchar *subtitle)
-{
- g_return_if_fail (XFCE_IS_TITLED_DIALOG (titled_dialog));
- g_return_if_fail (subtitle == NULL || g_utf8_validate (subtitle, -1, NULL));
-
- /* release the previous subtitle */
- g_free (titled_dialog->priv->subtitle);
-
- /* activate the new subtitle */
- titled_dialog->priv->subtitle = g_strdup (subtitle);
-
- /* update the subtitle for the heading */
- xfce_heading_set_subtitle (XFCE_HEADING (titled_dialog->priv->heading), subtitle);
-
- /* notify listeners */
- g_object_notify (G_OBJECT (titled_dialog), "subtitle");
-}
-
-
diff --git a/thunar/xfce-titled-dialog.h b/thunar/xfce-titled-dialog.h
deleted file mode 100644
index d5410f2..0000000
--- a/thunar/xfce-titled-dialog.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006 Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library 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.
- */
-
-#ifndef __XFCE_TITLED_DIALOG_H__
-#define __XFCE_TITLED_DIALOG_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _XfceTitledDialogPrivate XfceTitledDialogPrivate;
-typedef struct _XfceTitledDialogClass XfceTitledDialogClass;
-typedef struct _XfceTitledDialog XfceTitledDialog;
-
-#define XFCE_TYPE_TITLED_DIALOG (xfce_titled_dialog_get_type ())
-#define XFCE_TITLED_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFCE_TYPE_TITLED_DIALOG, XfceTitledDialog))
-#define XFCE_TITLED_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XFCE_TYPE_TITLED_DIALOG, XfceTitledDialogClass))
-#define XFCE_IS_TITLED_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFCE_TYPE_TITLED_DIALOG))
-#define XFCE_IS_TITLED_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFCE_TYPE_TITLED_DIALOG))
-#define XFCE_TITLED_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFCE_TYPE_TITLED_DIALOG, XfceTitledDialogClass))
-
-struct _XfceTitledDialogClass
-{
- /*< private >*/
- GtkDialogClass __parent__;
-
- /* reserved for future expansion */
- void (*reserved0) (void);
- void (*reserved1) (void);
- void (*reserved2) (void);
- void (*reserved3) (void);
- void (*reserved4) (void);
- void (*reserved5) (void);
-};
-
-struct _XfceTitledDialog
-{
- /*< private >*/
- GtkDialog __parent__;
- XfceTitledDialogPrivate *priv;
-};
-
-GType xfce_titled_dialog_get_type (void) G_GNUC_CONST;
-
-GtkWidget *xfce_titled_dialog_new (void) G_GNUC_MALLOC;
-GtkWidget *xfce_titled_dialog_new_with_buttons (const gchar *title,
- GtkWindow *parent,
- GtkDialogFlags flags,
- const gchar *first_button_text,
- ...) G_GNUC_MALLOC;
-
-G_CONST_RETURN gchar *xfce_titled_dialog_get_subtitle (XfceTitledDialog *titled_dialog);
-void xfce_titled_dialog_set_subtitle (XfceTitledDialog *titled_dialog,
- const gchar *subtitle);
-
-G_END_DECLS;
-
-#endif /* !__XFCE_TITLED_DIALOG_H__ */
More information about the Xfce4-commits
mailing list