Blame gladeui/glade-accumulators.c

Packit 1e8aac
/*
Packit 1e8aac
 * glade-clipboard.c - An object for handling Cut/Copy/Paste.
Packit 1e8aac
 *
Packit 1e8aac
 * Copyright (C) 2005 The GNOME Foundation.
Packit 1e8aac
 *
Packit 1e8aac
 * Author(s):
Packit 1e8aac
 *      Tristan Van Berkom <tvb@gnome.org>
Packit 1e8aac
 *
Packit 1e8aac
 * This program is free software; you can redistribute it and/or
Packit 1e8aac
 * modify it under the terms of the GNU General Public License
Packit 1e8aac
 * as published by the Free Software Foundation; either version 2
Packit 1e8aac
 * of the License, or (at your option) any later version.
Packit 1e8aac
 *
Packit 1e8aac
 * This program is distributed in the hope that it will be useful,
Packit 1e8aac
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 1e8aac
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 1e8aac
 * GNU General Public License for more details.
Packit 1e8aac
 *
Packit 1e8aac
 * You should have received a copy of the GNU General Public License
Packit 1e8aac
 * along with this program; if not, write to the Free Software
Packit 1e8aac
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
Packit 1e8aac
 * USA.
Packit 1e8aac
 */
Packit 1e8aac
Packit 1e8aac
#include "config.h"
Packit 1e8aac
Packit 1e8aac
#include "glade-accumulators.h"
Packit 1e8aac
Packit 1e8aac
#include <glib-object.h>
Packit 1e8aac
Packit 1e8aac
Packit 1e8aac
gboolean
Packit 1e8aac
_glade_single_object_accumulator (GSignalInvocationHint *ihint,
Packit 1e8aac
				  GValue *return_accu,
Packit 1e8aac
				  const GValue *handler_return, gpointer dummy)
Packit 1e8aac
{
Packit 1e8aac
  GObject *object = g_value_get_object (handler_return);
Packit 1e8aac
  g_value_set_object (return_accu, object);
Packit 1e8aac
Packit 1e8aac
  return (object == NULL);
Packit 1e8aac
}
Packit 1e8aac
Packit 1e8aac
gboolean
Packit 1e8aac
_glade_integer_handled_accumulator (GSignalInvocationHint *ihint,
Packit 1e8aac
				    GValue *return_accu,
Packit 1e8aac
				    const GValue *handler_return,
Packit 1e8aac
				    gpointer dummy)
Packit 1e8aac
{
Packit 1e8aac
  gboolean continue_emission;
Packit 1e8aac
  gint retval;
Packit 1e8aac
Packit 1e8aac
  retval = g_value_get_int (handler_return);
Packit 1e8aac
  g_value_set_int (return_accu, retval >> 1);
Packit 1e8aac
  continue_emission = !(retval & 1);
Packit 1e8aac
Packit 1e8aac
  return continue_emission;
Packit 1e8aac
}
Packit 1e8aac
Packit 1e8aac
/* From gtkmain.c */
Packit 1e8aac
gboolean
Packit 1e8aac
_glade_boolean_handled_accumulator (GSignalInvocationHint *ihint,
Packit 1e8aac
				    GValue *return_accu,
Packit 1e8aac
				    const GValue *handler_return,
Packit 1e8aac
				    gpointer dummy)
Packit 1e8aac
{
Packit 1e8aac
  gboolean continue_emission;
Packit 1e8aac
  gboolean signal_handled;
Packit 1e8aac
Packit 1e8aac
  signal_handled = g_value_get_boolean (handler_return);
Packit 1e8aac
  g_value_set_boolean (return_accu, signal_handled);
Packit 1e8aac
  continue_emission = !signal_handled;
Packit 1e8aac
Packit 1e8aac
  return continue_emission;
Packit 1e8aac
}
Packit 1e8aac
Packit 1e8aac
gboolean
Packit 1e8aac
_glade_string_accumulator (GSignalInvocationHint *ihint,
Packit 1e8aac
			   GValue *return_accu,
Packit 1e8aac
			   const GValue *handler_return, gpointer dummy)
Packit 1e8aac
{
Packit 1e8aac
  const gchar *handler_str;
Packit 1e8aac
Packit 1e8aac
  g_free ((void *) g_value_get_string (return_accu));
Packit 1e8aac
Packit 1e8aac
  handler_str = g_value_get_string (handler_return);
Packit 1e8aac
  g_value_set_string (return_accu, handler_str);
Packit 1e8aac
Packit 1e8aac
  return (handler_str == NULL);
Packit 1e8aac
}
Packit 1e8aac
Packit 1e8aac
gboolean
Packit 1e8aac
_glade_strv_handled_accumulator (GSignalInvocationHint *ihint,
Packit 1e8aac
                                 GValue *return_accu,
Packit 1e8aac
                                 const GValue *handler_return, gpointer dummy)
Packit 1e8aac
{
Packit 1e8aac
  const gchar **handler_strv;
Packit 1e8aac
Packit 1e8aac
  handler_strv = g_value_get_boxed (handler_return);
Packit 1e8aac
  g_value_set_boxed (return_accu, handler_strv);
Packit 1e8aac
Packit 1e8aac
  return (handler_strv == NULL);
Packit 1e8aac
}
Packit 1e8aac
Packit 1e8aac
gboolean
Packit 1e8aac
_glade_stop_emission_accumulator (GSignalInvocationHint *ihint,
Packit 1e8aac
				  GValue *return_accu,
Packit 1e8aac
				  const GValue *handler_return, gpointer dummy)
Packit 1e8aac
{
Packit 1e8aac
  g_value_copy (handler_return, return_accu);
Packit 1e8aac
Packit 1e8aac
  return FALSE;
Packit 1e8aac
}