Browse Source

Import the action buttons plugin.

upstream/xfce4-panel-4.10.1
Nick Schermer 13 years ago
parent
commit
3a2cd51d06
  1. 1
      configure.in.in
  2. 1
      plugins/Makefile.am
  3. 78
      plugins/actions/Makefile.am
  4. 153
      plugins/actions/actions-dialog.glade
  5. 478
      plugins/actions/actions.c
  6. 9
      plugins/actions/actions.desktop.in.in
  7. 44
      plugins/actions/actions.h

1
configure.in.in

@ -231,6 +231,7 @@ libxfce4panel/libxfce4panel-1.0.pc
panel/Makefile
wrapper/Makefile
plugins/Makefile
plugins/actions/Makefile
plugins/clock/Makefile
plugins/launcher/Makefile
plugins/pager/Makefile

1
plugins/Makefile.am

@ -1,6 +1,7 @@
# $Id$
SUBDIRS = \
actions \
clock \
launcher \
pager \

78
plugins/actions/Makefile.am

@ -0,0 +1,78 @@
# $Id$
INCLUDES = \
-I$(top_srcdir) \
-DG_LOG_DOMAIN=\"libactions\" \
-DLOCALEDIR=\"$(localedir)\" \
$(PLATFORM_CPPFLAGS)
plugindir = \
$(libdir)/xfce4/panel-plugins
plugin_LTLIBRARIES = \
libactions.la
libactions_built_sources = \
actions-dialog_glade.h
libactions_la_SOURCES = \
$(libactions_built_sources) \
actions.c \
actions.h
libactions_la_CFLAGS = \
$(GTK_CFLAGS) \
$(LIBXFCE4UTIL_CFLAGS) \
$(LIBXFCE4UI_CFLAGS) \
$(PLATFORM_CFLAGS) \
$(EXO_CFLAGS) \
$(XFCONF_CFLAGS)
libactions_la_LDFLAGS = \
-avoid-version \
-module \
-no-undefined \
$(PLATFORM_LDFLAGS)
libactions_la_LIBADD = \
$(top_builddir)/libxfce4panel/libxfce4panel.la \
$(GTK_LIBS) \
$(LIBXFCE4UTIL_LIBS) \
$(LIBXFCE4UI_LIBS) \
$(EXO_LIBS) \
$(XFCONF_LIBS)
libactions_la_DEPENDENCIES = \
$(top_builddir)/libxfce4panel/libxfce4panel.la
if MAINTAINER_MODE
BUILT_SOURCES = \
$(libactions_built_sources)
DISTCLEANFILES = \
$(libactions_built_sources)
actions-dialog_glade.h: actions-dialog.glade
exo-csource --static --strip-comments --strip-content --name=actions_dialog_glade $< >$@
endif
#
# .desktop file
#
desktopdir = $(datadir)/xfce4/panel-plugins
desktop_in_in_files = actions.desktop.in.in
desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
actions.desktop.in: $(desktop_in_in_files)
sed -e "s,\@libdir\@,$(libdir),g" < $< > $@
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
EXTRA_DIST = \
actions-dialog.glade \
$(desktop_in_in_files)
DISTCLEANFILES = \
$(desktop_DATA) \
$(desktop_in_files)
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:

153
plugins/actions/actions-dialog.glade

@ -0,0 +1,153 @@
<?xml version="1.0"?>
<interface>
<!-- interface-requires gtk+ 2.12 -->
<!-- interface-requires libxfce4ui 4.5 -->
<!-- interface-naming-policy project-wide -->
<object class="XfceTitledDialog" id="dialog">
<property name="title" translatable="yes">Action Button Properties</property>
<property name="icon_name">gtk-properties</property>
<property name="type_hint">normal</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<object class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
<object class="GtkFrame" id="frame5">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<object class="GtkTable" id="table5">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="n_rows">2</property>
<property name="n_columns">2</property>
<property name="column_spacing">12</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_First button:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">first-action</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Second button:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">second-action</property>
</object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="first-action">
<property name="visible">True</property>
<property name="model">first-action-model</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="second-action">
<property name="visible">True</property>
<property name="model">second-action-model</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Button Actions&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child internal-child="action_area">
<object class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="close-button">
<property name="label" translatable="yes">gtk-close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
<action-widgets>
<action-widget response="0">close-button</action-widget>
</action-widgets>
</object>
<object class="GtkListStore" id="first-action-model">
<columns>
<!-- column-name title -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkListStore" id="second-action-model">
<columns>
<!-- column-name title -->
<column type="gchararray"/>
</columns>
</object>
</interface>

478
plugins/actions/actions.c

@ -0,0 +1,478 @@
/* $Id$ */
/*
* Copyright (c) 2005-2007 Jasper Huijsmans <jasper@xfce.org>
* Copyright (c) 2007-2009 Nick Schermer <nick@xfce.org>
*
* This program 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 program 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 program; 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
#include <gtk/gtk.h>
#include <libxfce4panel/libxfce4panel.h>
#include <libxfce4util/libxfce4util.h>
#include <libxfce4ui/libxfce4ui.h>
#include <xfconf/xfconf.h>
#include <exo/exo.h>
#include "actions.h"
#include "actions-dialog_glade.h"
static void actions_plugin_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void actions_plugin_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void actions_plugin_construct (XfcePanelPlugin *panel_plugin);
static void actions_plugin_free_data (XfcePanelPlugin *panel_plugin);
static gboolean actions_plugin_size_changed (XfcePanelPlugin *panel_plugin,
gint size);
static void actions_plugin_configure_plugin (XfcePanelPlugin *panel_plugin);
static void actions_plugin_orientation_changed (XfcePanelPlugin *panel_plugin,
GtkOrientation orientation);
static void actions_plugin_button_clicked (GtkWidget *button,
ActionsPlugin *plugin);
typedef enum
{
ACTION_DISABLED = 0,
ACTION_LOG_OUT_DIALOG,
ACTION_LOG_OUT,
ACTION_LOCK_SCREEN,
ACTION_SHUT_DOWN,
ACTION_RESTART,
ACTION_SUSPEND,
ACTION_HIBERNATE
}
ActionType;
typedef struct
{
ActionType type;
const gchar *title;
const gchar *icon_name;
const gchar *command;
}
ActionEntry;
struct _ActionsPluginClass
{
/* parent class */
XfcePanelPluginClass __parent__;
};
struct _ActionsPlugin
{
/* parent type */
XfcePanelPlugin __parent__;
/* xfconf channel */
XfconfChannel *channel;
/* widgets */
GtkWidget *box;
GtkWidget *first_button;
GtkWidget *first_image;
GtkWidget *second_button;
GtkWidget *second_image;
/* settings */
ActionType first_action;
ActionType second_action;
};
enum
{
PROP_0,
PROP_FIRST_ACTION,
PROP_SECOND_ACTION
};
static ActionEntry action_entries[] =
{
{ ACTION_DISABLED, N_("Disabled"),
NULL, NULL },
{ ACTION_LOG_OUT_DIALOG, N_("Log Out Dialog"),
"system-log-out", "xfce4-session-logout" },
{ ACTION_LOG_OUT, N_("Log Out"),
"system-log-out", "xfce4-session-logout --logout" },
{ ACTION_LOCK_SCREEN, N_("Lock Screen"),
"system-lock-screen", "xflock4" },
{ ACTION_SHUT_DOWN, N_("Shut Down"),
"system-shutdown", "xfce4-session-logout --halt" },
{ ACTION_RESTART, N_("Restart"),
"xfsm-reboot", "xfce4-session-logout --reboot" },
{ ACTION_SUSPEND, N_("Suspend"),
"system-suspend", "xfce4-session-logout --suspend" },
{ ACTION_HIBERNATE, N_("Hibernate"),
"system-hibernate", "xfce4-session-logout --hibernate" }
};
/* define the plugin */
XFCE_PANEL_DEFINE_PLUGIN (ActionsPlugin, actions_plugin)
static void
actions_plugin_class_init (ActionsPluginClass *klass)
{
XfcePanelPluginClass *plugin_class;
GObjectClass *gobject_class;
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->set_property = actions_plugin_set_property;
gobject_class->get_property = actions_plugin_get_property;
plugin_class = XFCE_PANEL_PLUGIN_CLASS (klass);
plugin_class->construct = actions_plugin_construct;
plugin_class->free_data = actions_plugin_free_data;
plugin_class->size_changed = actions_plugin_size_changed;
plugin_class->configure_plugin = actions_plugin_configure_plugin;
plugin_class->orientation_changed = actions_plugin_orientation_changed;
g_object_class_install_property (gobject_class,
PROP_FIRST_ACTION,
g_param_spec_uint ("first-action",
NULL, NULL,
ACTION_DISABLED,
ACTION_HIBERNATE - 1,
ACTION_LOG_OUT_DIALOG,
EXO_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
PROP_SECOND_ACTION,
g_param_spec_uint ("second-action",
NULL, NULL,
ACTION_DISABLED,
ACTION_HIBERNATE,
ACTION_DISABLED,
EXO_PARAM_READWRITE));
}
static void
actions_plugin_init (ActionsPlugin *plugin)
{
GtkWidget *widget;
ActionEntry *entry = &action_entries[ACTION_LOG_OUT_DIALOG];
/* initialize */
plugin->first_action = ACTION_LOG_OUT_DIALOG;
plugin->second_action = ACTION_DISABLED;
/* show the properties dialog */
xfce_panel_plugin_menu_show_configure (XFCE_PANEL_PLUGIN (plugin));
/* initialize xfconf */
xfconf_init (NULL);
plugin->box = xfce_hvbox_new (GTK_ORIENTATION_HORIZONTAL, TRUE, 0);
gtk_container_add (GTK_CONTAINER (plugin), plugin->box);
plugin->first_button = widget = xfce_panel_create_button ();
gtk_box_pack_start (GTK_BOX (plugin->box), widget, TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (widget), "clicked",
G_CALLBACK (actions_plugin_button_clicked), plugin);
gtk_widget_set_tooltip_text (widget, _(entry->title));
xfce_panel_plugin_add_action_widget (XFCE_PANEL_PLUGIN (plugin), widget);
gtk_widget_show (widget);
plugin->first_image = xfce_scaled_image_new_from_icon_name (entry->icon_name);
gtk_container_add (GTK_CONTAINER (widget), plugin->first_image);
gtk_widget_show (plugin->first_image);
plugin->second_button = widget = xfce_panel_create_button ();
gtk_box_pack_start (GTK_BOX (plugin->box), widget, TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (widget), "clicked",
G_CALLBACK (actions_plugin_button_clicked), plugin);
xfce_panel_plugin_add_action_widget (XFCE_PANEL_PLUGIN (plugin), widget);
plugin->second_image = xfce_scaled_image_new ();
gtk_container_add (GTK_CONTAINER (widget), plugin->second_image);
gtk_widget_show (plugin->second_image);
}
static void
actions_plugin_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
ActionsPlugin *plugin = XFCE_ACTIONS_PLUGIN (object);
switch (prop_id)
{
case PROP_FIRST_ACTION:
g_value_set_uint (value, plugin->first_action - 1);
break;
case PROP_SECOND_ACTION:
g_value_set_uint (value, plugin->second_action);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
actions_plugin_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
ActionsPlugin *plugin = XFCE_ACTIONS_PLUGIN (object);
ActionType action;
switch (prop_id)
{
case PROP_FIRST_ACTION:
/* set new value and update icon */
action = plugin->first_action = g_value_get_uint (value) + 1;
gtk_widget_set_tooltip_text (plugin->first_button,
_(action_entries[action].title));
xfce_scaled_image_set_from_icon_name (
XFCE_SCALED_IMAGE (plugin->first_image),
action_entries[action].icon_name);
break;
case PROP_SECOND_ACTION:
/* set new value */
action = plugin->second_action = g_value_get_uint (value);
/* update button visibility and icon */
if (action == ACTION_DISABLED)
{
gtk_widget_hide (plugin->second_button);
}
else
{
gtk_widget_show (plugin->second_button);
gtk_widget_set_tooltip_text (plugin->second_button,
_(action_entries[action].title));
xfce_scaled_image_set_from_icon_name (
XFCE_SCALED_IMAGE (plugin->second_image),
action_entries[action].icon_name);
}
/* update plugin size */
actions_plugin_size_changed (XFCE_PANEL_PLUGIN (plugin),
xfce_panel_plugin_get_size (XFCE_PANEL_PLUGIN (plugin)));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
actions_plugin_construct (XfcePanelPlugin *panel_plugin)
{
ActionsPlugin *plugin = XFCE_ACTIONS_PLUGIN (panel_plugin);
/* set the xfconf channel */
plugin->channel = xfce_panel_plugin_xfconf_channel_new (panel_plugin);
/* bind properties */
xfconf_g_property_bind (plugin->channel, "/first-action",
G_TYPE_UINT, plugin, "first-action");
xfconf_g_property_bind (plugin->channel, "/second-action",
G_TYPE_UINT, plugin, "second-action");
/* set orientation and size */
actions_plugin_orientation_changed (panel_plugin,
xfce_panel_plugin_get_orientation (panel_plugin));
/* show the plugin */
gtk_widget_show (plugin->box);
}
static void
actions_plugin_free_data (XfcePanelPlugin *panel_plugin)
{
ActionsPlugin *plugin = XFCE_ACTIONS_PLUGIN (panel_plugin);
panel_return_if_fail (XFCONF_IS_CHANNEL (plugin->channel));
/* release the xfonf channel */
g_object_unref (G_OBJECT (plugin->channel));
/* shutdown xfconf */
xfconf_shutdown ();
}
static gboolean
actions_plugin_size_changed (XfcePanelPlugin *panel_plugin,
gint size)
{
ActionsPlugin *plugin = XFCE_ACTIONS_PLUGIN (panel_plugin);
gint width, height;
/* init size */
width = height = size;
if (plugin->second_action != ACTION_DISABLED)
{
if (xfce_panel_plugin_get_orientation (panel_plugin) ==
GTK_ORIENTATION_HORIZONTAL)
width /= 2;
else
height /= 2;
}
/* set the plugin size */
gtk_widget_set_size_request (GTK_WIDGET (panel_plugin),
width, height);
return TRUE;
}
static void
actions_plugin_configure_plugin (XfcePanelPlugin *panel_plugin)
{
ActionsPlugin *plugin = XFCE_ACTIONS_PLUGIN (panel_plugin);
GtkBuilder *builder;
GObject *dialog;
GObject *object;
guint i;
panel_return_if_fail (XFCE_IS_ACTIONS_PLUGIN (plugin));
panel_return_if_fail (XFCONF_IS_CHANNEL (plugin->channel));
/* load the dialog from the glade file */
builder = gtk_builder_new ();
if (gtk_builder_add_from_string (builder, actions_dialog_glade,
actions_dialog_glade_length, NULL))
{
dialog = gtk_builder_get_object (builder, "dialog");
g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, builder);
xfce_panel_plugin_take_window (panel_plugin, GTK_WINDOW (dialog));
xfce_panel_plugin_block_menu (panel_plugin);
g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify)
xfce_panel_plugin_unblock_menu, panel_plugin);
object = gtk_builder_get_object (builder, "close-button");
g_signal_connect_swapped (G_OBJECT (object), "clicked",
G_CALLBACK (gtk_widget_destroy), dialog);
/* populate the first store */
object = gtk_builder_get_object (builder, "first-action-model");
for (i = 1; i < G_N_ELEMENTS (action_entries); i++)
gtk_list_store_insert_with_values (GTK_LIST_STORE (object), NULL, i - 1,
0, _(action_entries[i].title), -1);
object = gtk_builder_get_object (builder, "first-action");
exo_mutual_binding_new (G_OBJECT (plugin), "first-action",
G_OBJECT (object), "active");
/* populate the second store */
object = gtk_builder_get_object (builder, "second-action-model");
for (i = 0; i < G_N_ELEMENTS (action_entries); i++)
gtk_list_store_insert_with_values (GTK_LIST_STORE (object), NULL, i,
0, _(action_entries[i].title), -1);
object = gtk_builder_get_object (builder, "second-action");
exo_mutual_binding_new (G_OBJECT (plugin), "second-action",
G_OBJECT (object), "active");
gtk_widget_show (GTK_WIDGET (dialog));
}
else
{
/* release the builder */
g_object_unref (G_OBJECT (builder));
}
}
static void
actions_plugin_orientation_changed (XfcePanelPlugin *panel_plugin,
GtkOrientation orientation)
{
ActionsPlugin *plugin = XFCE_ACTIONS_PLUGIN (panel_plugin);
GtkOrientation box_orientation;
/* box orientation is opposite to the panel orientation */
if (orientation == GTK_ORIENTATION_HORIZONTAL)
box_orientation = GTK_ORIENTATION_VERTICAL;
else
box_orientation = GTK_ORIENTATION_HORIZONTAL;
/* set orientation */
xfce_hvbox_set_orientation (XFCE_HVBOX (plugin->box), box_orientation);
/* update the plugin size */
actions_plugin_size_changed (panel_plugin,
xfce_panel_plugin_get_size (panel_plugin));
}
static void
actions_plugin_button_clicked (GtkWidget *button,
ActionsPlugin *plugin)
{
ActionType action;
GError *error = NULL;
panel_return_if_fail (XFCE_IS_ACTIONS_PLUGIN (plugin));
/* get the action to execute */
if (button == plugin->first_button)
action = plugin->first_action;
else
action = plugin->second_action;
/* spawn the command */
if (!g_spawn_command_line_async (action_entries[action].command, &error))
{
/* show error */
xfce_dialog_show_error (gtk_widget_get_screen (button),
error, _("Failed to execute command \"%s\""),
action_entries[action].command);
g_error_free (error);
}
}

9
plugins/actions/actions.desktop.in.in

@ -0,0 +1,9 @@
[Xfce Panel]
Type=X-XFCE-PanelPlugin
Encoding=UTF-8
_Name=Action Buttons
_Comment=Log out, lock or other system actions
Icon=system-log-out
X-XFCE-Module=actions
X-XFCE-Module-Path=@libdir@/xfce4/panel-plugins
X-XFCE-External=FALSE

44
plugins/actions/actions.h

@ -0,0 +1,44 @@
/* $Id$ */
/*
* Copyright (c) 2005-2007 Jasper Huijsmans <jasper@xfce.org>
* Copyright (c) 2007-2009 Nick Schermer <nick@xfce.org>
*
* This program 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 program 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 program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __ACTIONS_H__
#define __ACTIONS_H__
#include <gtk/gtk.h>
G_BEGIN_DECLS
typedef struct _ActionsPluginClass ActionsPluginClass;
typedef struct _ActionsPlugin ActionsPlugin;
#define XFCE_TYPE_ACTIONS_PLUGIN (actions_plugin_get_type ())
#define XFCE_ACTIONS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFCE_TYPE_ACTIONS_PLUGIN, ActionsPlugin))
#define XFCE_ACTIONS_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XFCE_TYPE_ACTIONS_PLUGIN, ActionsPluginClass))
#define XFCE_IS_ACTIONS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFCE_TYPE_ACTIONS_PLUGIN))
#define XFCE_IS_ACTIONS_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFCE_TYPE_ACTIONS_PLUGIN))
#define XFCE_ACTIONS_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFCE_TYPE_ACTIONS_PLUGIN, ActionsPluginClass))
GType actions_plugin_get_type (void) G_GNUC_CONST;
void actions_plugin_register_type (GTypeModule *type_module);
G_END_DECLS
#endif /* !__ACTIONS_H__ */
Loading…
Cancel
Save