static gboolean invoke_before_next_vfunc (ModestWizardDialog *wizard_dialog);
static void invoke_enable_buttons_vfunc (ModestWizardDialog *wizard_dialog);
+static void invoke_update_model_vfunc (ModestWizardDialog *wizard_dialog);
+static gboolean invoke_save_vfunc (ModestWizardDialog *wizard_dialog);
enum {
PROP_ZERO,
object_class->get_property = get_property;
object_class->finalize = finalize;
+ wizard_dialog_class->before_next = NULL;
+ wizard_dialog_class->update_model = NULL;
+ wizard_dialog_class->save = NULL;
+ wizard_dialog_class->enable_buttons = NULL;
+
/**
* ModestWizardDialog:wizard-name:
*
/* connect to dialog's response signal */
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (response), NULL);
+
}
#if GTK_CHECK_VERSION(2, 10, 0) /* These signals were added in GTK+ 2.10: */
#endif /* GTK_CHECK_VERSION */
static void
+on_notebook_switch_page (GtkNotebook *notebook,
+ GtkNotebookPage *page,
+ guint page_num,
+ ModestWizardDialog *self)
+{
+ g_return_if_fail (MODEST_IS_WIZARD_DIALOG(self));
+
+ create_title (self);
+}
+
+static void
connect_to_notebook_signals(ModestWizardDialog* dialog)
{
#if GTK_CHECK_VERSION(2, 10, 0) /* These signals were added in GTK+ 2.10: */
g_signal_connect (G_OBJECT (priv->notebook), "page-removed",
G_CALLBACK (on_notebook_page_removed), dialog);
#endif /* GTK_CHECK_VERSION */
+ g_signal_connect_after (G_OBJECT (priv->notebook), "switch-page",
+ G_CALLBACK (on_notebook_switch_page), dialog);
}
}
}
+static void
+invoke_update_model_vfunc (ModestWizardDialog *wizard_dialog)
+{
+ ModestWizardDialogClass *klass = MODEST_WIZARD_DIALOG_GET_CLASS (wizard_dialog);
+
+ /* Call the vfunc, which may be overridden by derived classes: */
+ if (klass->update_model) {
+ (*(klass->update_model)) (wizard_dialog);
+ }
+}
+
+static gboolean
+invoke_save_vfunc (ModestWizardDialog *wizard_dialog)
+{
+ ModestWizardDialogClass *klass = MODEST_WIZARD_DIALOG_GET_CLASS (wizard_dialog);
+
+ /* Call the vfunc, which may be overridden by derived classes: */
+ if (klass->save) {
+ return (*(klass->save)) (wizard_dialog);
+ } else {
+ return TRUE;
+ }
+}
+
void
modest_wizard_dialog_set_response_override_handler (ModestWizardDialog *wizard_dialog,
ModestWizardDialogResponseOverrideFunc callback)
priv->override_func = callback;
}
+
+void
+modest_wizard_dialog_update_model (ModestWizardDialog *wizard_dialog)
+{
+ g_return_if_fail (MODEST_IS_WIZARD_DIALOG (wizard_dialog));
+
+ invoke_update_model_vfunc (wizard_dialog);
+}
+
+gboolean
+modest_wizard_dialog_save (ModestWizardDialog *wizard_dialog)
+{
+ g_return_val_if_fail (MODEST_IS_WIZARD_DIALOG (wizard_dialog), FALSE);
+
+ return invoke_save_vfunc (wizard_dialog);
+}