/* Page Stepper Widget */ #ifndef PSTEPPER_H #define PSTEPPER_H #include /* * Page stepper structure: */ typedef struct { gboolean initialized; gboolean map_state; GtkAccelGroup *accelgrp; GtkWidget *toplevel, *pages_toplevel, *nariatives_toplevel, *buttons_toplevel; /* Current page and total pages. Note that total pages will * be used to indicate all array members here. */ gint current_page; gint total_pages; /* Array of page and nariative client set toplevel widgets. * Allocation size of array indicated by total_pages */ GtkWidget **page; GtkWidget **nariative_strip; /* Array if client data pointers for each page. Allocation size * indicated by total_pages. */ gpointer *client_data; /* Array of callback function pointers which correspond to * each page. Callback inputs are; page stepper pointer, * prev page, new page, client data * void (*page_cb)(gpointer, gint, gint, gpointer) */ void **page_cb; /* Exit client data and callback */ gpointer exit_client_data; void (*exit_cb)(gpointer, gint, gpointer); /* Finish client data and callback */ gpointer finish_client_data; void (*finish_cb)(gpointer, gint, gpointer); /* Label text used for back/exit button */ gchar *back_text, *exit_text; /* Label text used for next/finish button */ gchar *next_text, *finish_text; /* Back/exit and next/finish buttons */ GtkWidget *back_btn, *back_btn_label; GtkWidget *next_btn, *next_btn_label; } pstepper_struct; extern pstepper_struct *PStepperCreate( gchar *title, const gchar *back_text, const gchar *exit_text, const gchar *next_text, const gchar *finish_text, gint width, gint height, /* Can be 0 */ gpointer exit_client_data, void (*exit_cb)(gpointer, gint, gpointer), gpointer finish_client_data, void (*finish_cb)(gpointer, gint, gpointer) ); extern gint PStepperAppend( pstepper_struct *ps, GtkWidget *page, GtkWidget *nariative, gpointer client_data, void (*page_cb)(gpointer, gint, gint, gpointer) ); extern void PStepperChangePage( pstepper_struct *ps, gint page_num, gboolean report_change ); extern gint PStepperGetPage(pstepper_struct *ps); extern void PStepperMap(pstepper_struct *ps); extern void PStepperUnmap(pstepper_struct *ps); extern void PStepperDestroy(pstepper_struct *ps); #endif /* PSTEPPER_H */