Use a more reliable way of setting the initial state of PsppireDialogAction objects.
[pspp] / src / ui / gui / psppire-dialog-action.h
index 39963798430d212ee87184f96f938489139280b3..8f79acc4c0dedd9dbec693543c5f1a60ded6dbd9 100644 (file)
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
-/* 
-   This is a an abstract base class, deriving from GtkAction.
+/*
+   This is a an abstract base class, which implements GAction.
    It's purpose is to abstract the way in which dialog boxes behave.
-   That is, this action will fire whenever a dialog box is to be 
+   That is, this action will fire whenever a dialog box is to be
    popped up.
-   
-   Additionally, most dialog boxes generate syntax to 
+
+   Additionally, most dialog boxes generate syntax to
    be run by the pspp back-end.  This provides an abstraction
    to do that.  The programmer needs only to provide the function
    to generate the syntax.  This base class looks after the rest.
@@ -67,42 +67,41 @@ typedef struct _PsppireDialogActionClass  PsppireDialogActionClass;
 
 struct _PsppireDialogAction
 {
-  GtkAction parent;
+  GObject parent;
 
   /*< private >*/
-  GtkUIManager *uim;
-
+  GVariantType *parameter_type;
   GtkWidget *source;
   GtkWidget *dialog;
 
   GtkWidget *toplevel;
   PsppireDict *dict;
+
+  gboolean activated;
 };
 
 struct _PsppireDialogActionClass
 {
-  GtkActionClass parent_class;
-  void   (*activate) (PsppireDialogAction *);
-  char * (*generate_syntax) (PsppireDialogAction *);
+  GObjectClass parent_class;
+  GtkBuilder * (*initial_activate) (PsppireDialogAction *, GVariant *);
+  void   (*activate) (PsppireDialogAction *, GVariant *);
+  char * (*generate_syntax) (const PsppireDialogAction *);
 };
 
 GType psppire_dialog_action_get_type (void) ;
 
 typedef void (*PsppireDialogActionRefresh) (PsppireDialogAction *) ;
 
-void psppire_dialog_action_set_refresh (PsppireDialogAction *pda, 
+void psppire_dialog_action_set_refresh (PsppireDialogAction *pda,
                                        PsppireDialogActionRefresh refresh);
 
-void psppire_dialog_action_set_valid_predicate (PsppireDialogAction *act, 
+void psppire_dialog_action_set_valid_predicate (PsppireDialogAction *act,
                                                ContentsAreValid dialog_state_valid);
 
-typedef void (*activation) (GtkAction *);
-
-void psppire_dialog_action_set_activation (gpointer class, activation a);
-
-GHashTable *psppire_dialog_action_get_hash_table (PsppireDialogAction *act);
+GtkBuilder * psppire_dialog_action_get_xml (PsppireDialogAction *da);
 
 
+void psppire_dialog_action_activate_null (PsppireDialogAction *act);
 
 G_END_DECLS