|
Packit |
1e8aac |
/* glade-signal-class.c
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* Copyright (C) 2011 Openismus GmbH
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* Authors:
|
|
Packit |
1e8aac |
* Tristan Van Berkom <tristanvb@openismus.com>
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This library is free software; you can redistribute it and/or modify it
|
|
Packit |
1e8aac |
* under the terms of the GNU Lesser General Public License as
|
|
Packit |
1e8aac |
* published by the Free Software Foundation; either version 2.1 of
|
|
Packit |
1e8aac |
* the License, or (at your option) any later version.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This library is distributed in the hope that it will be useful, but
|
|
Packit |
1e8aac |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
1e8aac |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
1e8aac |
* Lesser General Public License for more details.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
1e8aac |
* License along with this program; if not, write to the Free Software
|
|
Packit |
1e8aac |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#include <config.h>
|
|
Packit |
1e8aac |
#include "glade-signal-class.h"
|
|
Packit |
1e8aac |
#include "glade-widget-adaptor.h"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
struct _GladeSignalClass
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeWidgetAdaptor *adaptor; /* The adaptor that originated this signal.
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
GSignalQuery query;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
guint16 version_since_major; /* Version in which this signal was */
|
|
Packit |
1e8aac |
guint16 version_since_minor; /* introduced
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
const gchar *name; /* Name of the signal, eg clicked */
|
|
Packit |
1e8aac |
const gchar *type; /* Name of the object class that this signal
|
|
Packit |
1e8aac |
* belongs to eg GtkButton */
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
guint deprecated : 1; /* True if this signal is deprecated */
|
|
Packit |
1e8aac |
};
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GladeSignalClass *
|
|
Packit |
1e8aac |
glade_signal_class_new (GladeWidgetAdaptor *adaptor,
|
|
Packit |
1e8aac |
GType for_type,
|
|
Packit |
1e8aac |
guint signal_id)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeSignalClass *class;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
class = g_slice_new0 (GladeSignalClass);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
class->adaptor = adaptor;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Since glib gave us this signal id... it should
|
|
Packit |
1e8aac |
* exist no matter what.
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
g_signal_query (signal_id, &(class->query));
|
|
Packit |
1e8aac |
if (class->query.signal_id == 0)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_critical ("glade_signal_class_new() called with an invalid signal id");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_signal_class_free (class);
|
|
Packit |
1e8aac |
return NULL;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
class->name = (class->query.signal_name);
|
|
Packit |
1e8aac |
class->type = g_type_name (for_type);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Initialize signal versions & deprecated to adaptor version */
|
|
Packit |
1e8aac |
class->version_since_major = GWA_VERSION_SINCE_MAJOR (adaptor);
|
|
Packit |
1e8aac |
class->version_since_minor = GWA_VERSION_SINCE_MINOR (adaptor);
|
|
Packit |
1e8aac |
class->deprecated = GWA_DEPRECATED (adaptor);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return class;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
glade_signal_class_free (GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_slice_free (GladeSignalClass, signal_class);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
glade_signal_class_update_from_node (GladeSignalClass *signal_class,
|
|
Packit |
1e8aac |
GladeXmlNode *node,
|
|
Packit |
1e8aac |
const gchar *domain)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_if_fail (signal_class != NULL);
|
|
Packit |
1e8aac |
g_return_if_fail (node != NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_xml_get_property_version (node, GLADE_TAG_VERSION_SINCE,
|
|
Packit |
1e8aac |
&signal_class->version_since_major,
|
|
Packit |
1e8aac |
&signal_class->version_since_minor);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
signal_class->deprecated =
|
|
Packit |
1e8aac |
glade_xml_get_property_boolean (node,
|
|
Packit |
1e8aac |
GLADE_TAG_DEPRECATED,
|
|
Packit |
1e8aac |
signal_class->deprecated);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GladeWidgetAdaptor *
|
|
Packit |
1e8aac |
glade_signal_class_get_adaptor (const GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_val_if_fail (signal_class != NULL, NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return signal_class->adaptor;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
G_CONST_RETURN gchar *
|
|
Packit |
1e8aac |
glade_signal_class_get_name (const GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_val_if_fail (signal_class != NULL, NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return signal_class->name;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
G_CONST_RETURN gchar *
|
|
Packit |
1e8aac |
glade_signal_class_get_type (const GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_val_if_fail (signal_class != NULL, NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return signal_class->type;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GSignalFlags
|
|
Packit |
1e8aac |
glade_signal_class_get_flags (const GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_val_if_fail (signal_class != NULL, 0);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return signal_class->query.signal_flags;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
glade_signal_class_set_since (GladeSignalClass *signal_class,
|
|
Packit |
1e8aac |
guint16 since_major,
|
|
Packit |
1e8aac |
guint16 since_minor)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_if_fail (signal_class != NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
signal_class->version_since_major = since_major;
|
|
Packit |
1e8aac |
signal_class->version_since_minor = since_minor;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
guint16
|
|
Packit |
1e8aac |
glade_signal_class_since_major (GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_val_if_fail (signal_class != NULL, 0);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return signal_class->version_since_major;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
guint16
|
|
Packit |
1e8aac |
glade_signal_class_since_minor (GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_val_if_fail (signal_class != NULL, 0);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return signal_class->version_since_minor;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
glade_signal_class_set_deprecated (GladeSignalClass *signal_class,
|
|
Packit |
1e8aac |
gboolean deprecated)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_if_fail (signal_class != NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
signal_class->deprecated = deprecated;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gboolean
|
|
Packit |
1e8aac |
glade_signal_class_deprecated (GladeSignalClass *signal_class)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_return_val_if_fail (signal_class != NULL, FALSE);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return signal_class->deprecated;
|
|
Packit |
1e8aac |
}
|