#include "executor.h"
#include "helper.h"
#include "psppire-data-window.h"
+#include "builder-wrapper.h"
static void psppire_dialog_action_init (PsppireDialogAction *act);
static void psppire_dialog_action_class_init (PsppireDialogActionClass *class);
return t;
}
+GtkBuilder *
+psppire_dialog_action_get_xml (PsppireDialogAction *da)
+{
+ GHashTable *thing = psppire_dialog_action_get_hash_table (da);
+ GtkBuilder *xml = g_hash_table_lookup (thing, da);
+ return xml;
+}
+
static void
psppire_dialog_action_activate (PsppireDialogAction *act, GVariant *parameter)
wl = g_slist_prepend (wl, act->dialog);
g_object_set_data (G_OBJECT (act->toplevel), "widget-list", wl);
- if (class->activate)
- class->activate (act, parameter);
+ if (class->initial_activate)
+ {
+ GHashTable *thing = psppire_dialog_action_get_hash_table (act);
+ GtkBuilder *xml = g_hash_table_lookup (thing, act);
+ if (xml == NULL)
+ {
+ xml = class->initial_activate (act, parameter);
+ g_hash_table_insert (thing, act, xml);
+ }
+ }
+ if (class->activate)
+ {
+ GHashTable *thing = psppire_dialog_action_get_hash_table (act);
+ GtkBuilder *xml = g_hash_table_lookup (thing, act);
+ if (xml != NULL)
+ class->activate (act, parameter);
+ }
+
gtk_window_set_transient_for (GTK_WINDOW (act->dialog),
GTK_WINDOW (act->toplevel));
class->generate_syntax = NULL;
- class->activate = psppire_dialog_action_activate;
-
g_object_class_install_property (object_class,
PROP_TOPLEVEL,
toplevel_spec);
{
g_signal_connect_swapped (pda->dialog, "refresh", G_CALLBACK (refresh), pda);
}
-
-
-void
-psppire_dialog_action_set_activation (gpointer class, activation activate)
-{
- PSPPIRE_DIALOG_ACTION_CLASS (class)->activate = (void (*)(PsppireDialogAction *, GVariant *)) activate;
-}
-