Blame gladeui/glade-signal-class.c

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
}