/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2004 Free Software Foundation
+ Copyright (C) 2004, 2009, 2010, 2011, 2012 Free Software Foundation
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
#ifndef __MISC_H__
#define __MISC_H__
-#include "relocatable.h"
-#include <data/value.h>
#include <data/format.h>
+#include <data/value.h>
#include <gtk/gtk.h>
-#include <glade/glade.h>
-
-
-/*
- GtkRecentChooserMenu was added in 2.10.0
- but it didn't support GtkRecentFilters until
- 2.10.2
-*/
-#define RECENT_LISTS_AVAILABLE GTK_CHECK_VERSION (2, 10, 2)
+#include "psppire-dict.h"
-/* Formats a value according to FORMAT
- The returned string must be freed when no longer required */
-gchar * value_to_text (union value v, struct fmt_spec format);
+gchar *paste_syntax_to_window (gchar *syntax);
+struct fmt_spec;
-gboolean text_to_value (const gchar *text, union value *v,
- struct fmt_spec format);
+/* Returns a new GParamSpec for a string. An attempt to store the empty string
+ in the parameter will be silently translated into storing a null pointer. */
+static inline GParamSpec *
+null_if_empty_param (const gchar *name, const gchar *nick,
+ const gchar *blurb, const gchar *default_value,
+ GParamFlags flags)
+{
+ GParamSpec *param;
-GtkWidget * get_widget_assert (GladeXML *xml, const gchar *name);
+ param = g_param_spec_string (name, nick, blurb, default_value, flags);
+ ((GParamSpecString *) param)->null_fold_if_empty = TRUE;
+ return param;
+}
-/* Converts a string in the pspp locale to utf-8 */
-char * pspp_locale_to_utf8 (const gchar *text, gssize len, GError **err);
+gchar * value_to_text (union value v, const struct variable *);
+gchar * value_to_text__ (union value v, const struct fmt_spec *,
+ const char *encoding);
-void connect_help (GladeXML *);
+union value *text_to_value (const gchar *text, const struct variable *,
+ union value *);
+union value *text_to_value__ (const gchar *text, const struct fmt_spec *,
+ const gchar *encoding, union value *);
-void reference_manual (GtkMenuItem *, gpointer);
+/* Create a deep copy of SRC */
+GtkListStore * clone_list_store (const GtkListStore *src);
-struct getl_interface;
-void execute_syntax (struct getl_interface *sss);
+/* gtk_box_pack_start_defaults is deprecated.
+ Therefore we roll our own until a better solution is found */
+static inline void
+psppire_box_pack_start_defaults (GtkBox *box, GtkWidget *widget)
+{
+ gtk_box_pack_start (box, widget, TRUE, TRUE, 0);
+}
+/* Starting with gcc8 the warning Wcast-function-type will
+ trigger if no intermediate (void (*)(void)) cast is done
+ for a function cast to GFunc when the number of parameters
+ is not 2. The reason is that the compiler behaviour in this
+ situation is undefined according to C standard although many
+ implementations rely on this. */
+#define GFUNC_COMPAT_CAST(x) ((GFunc) (void (*)(void)) (x))
-#define XML_NEW(FILE) \
- glade_xml_new (relocate(PKGDATADIR "/" FILE), NULL, NULL)
-
-
-void marshaller_VOID__INT_INT_INT (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
+/* Return the width of an upper case M (in pixels) when rendered onto
+ WIDGET with its current style. */
+gdouble width_of_m (GtkWidget *widget);
#endif
+