Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <gtk/gtk.h>
- #include <stdlib.h>
- #include <string.h>
- //##########################
- // Pages functions & var #
- //##########################
- static GtkWidget *assistant = NULL;
- static GtkWidget *progress_bar = NULL;
- static gboolean apply_changes_gradually (gpointer data) {
- gdouble fraction;
- /* Work, work, work... */
- fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));
- fraction += 0.05;
- if (fraction < 1.0) {
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);
- return TRUE;
- }
- else {
- /* Close automatically once changes are fully applied. */
- g_print ("Exiting\n");
- gtk_main_quit ();
- assistant = NULL;
- return FALSE;
- }
- }
- static void on_assistant_apply (GtkWidget *widget, gpointer data) {
- /* Start a timer to simulate changes taking a few seconds to apply. */
- g_timeout_add (100, apply_changes_gradually, NULL);
- }
- static void on_assistant_close_cancel (GtkWidget *widget, gpointer data) {
- GtkWidget **assistant = (GtkWidget **) data;
- gtk_widget_destroy (*assistant);
- *assistant = NULL;
- }
- static void on_assistant_prepare (GtkWidget *widget, GtkWidget *page, gpointer data) {
- gint current_page, n_pages;
- gchar *title;
- current_page = gtk_assistant_get_current_page (GTK_ASSISTANT (widget));
- n_pages = gtk_assistant_get_n_pages (GTK_ASSISTANT (widget));
- g_print ("page :%d\n",current_page);
- title = g_strdup_printf ("ShowBook client (%d/%d)", current_page + 1, n_pages);
- gtk_window_set_title (GTK_WINDOW (widget), title);
- g_free (title);
- /* The fourth page (counting from zero) is the progress page. The
- * user clicked Apply to get here so we tell the assistant to commit,
- * which means the changes up to this point are permanent and cannot
- * be cancelled or revisited. */
- if (current_page == 4)
- gtk_assistant_commit (GTK_ASSISTANT (widget));
- }
- static void on_entry_changed (GtkWidget *widget, gpointer data) {
- GtkAssistant *assistant = GTK_ASSISTANT (data);
- GtkWidget *current_page;
- gint page_number;
- const gchar *text;
- page_number = gtk_assistant_get_current_page (assistant);
- current_page = gtk_assistant_get_nth_page (assistant, page_number);
- text = gtk_entry_get_text (GTK_ENTRY (widget));
- if (text && *text)
- gtk_assistant_set_page_complete (assistant, current_page, TRUE);
- else
- gtk_assistant_set_page_complete (assistant, current_page, FALSE);
- }
- //######################
- // Pages #
- //######################
- static void create_page1 (GtkWidget *assistant) {
- GtkWidget *box, *label, *image, *current_page;
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_container_set_border_width (GTK_CONTAINER (box), 12);
- label = gtk_label_new ("Bienvenue dans l'assistant de réservation en ligne ShowBook.\n" "Cliquez sur le bouton en bas à droite pour continuer.");
- //gtk_label_get_layout_offsets (GTK_LABEL(label), NULL, NULL);
- gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
- image = gtk_image_new_from_file ("show.jpg");
- gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
- gtk_widget_show_all (box);
- gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
- gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Bienvenue");
- gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO);
- gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE);
- }
- static void create_page2 (GtkWidget *assistant) {
- GtkWidget *box, *label, *image, *current_page;
- box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
- gtk_container_set_border_width (GTK_CONTAINER (box), 12);
- label = gtk_label_new ("Nom du spectacle");
- //gtk_label_get_layout_offsets (GTK_LABEL(label), NULL, NULL);
- gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
- image = gtk_image_new_from_file ("title.jpg");
- gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
- gtk_widget_show_all (box);
- gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
- gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Choix");
- gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO);
- current_page = gtk_assistant_get_nth_page (GTK_ASSISTANT (assistant), 0);
- gtk_assistant_set_page_complete (GTK_ASSISTANT(assistant), current_page, TRUE);
- }
- static void create_page3 (GtkWidget *assistant) {
- GtkWidget *label;
- label = gtk_label_new ("This is a confirmation page, press 'Apply' to apply changes");
- gtk_widget_show (label);
- gtk_assistant_append_page (GTK_ASSISTANT (assistant), label);
- gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), label, GTK_ASSISTANT_PAGE_CONFIRM);
- gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE);
- gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, "Confirmation");
- }
- //######################
- // Window functions #
- //######################
- static gboolean delete_event( GtkWidget *widget, GdkEvent *event, gpointer data )
- {
- return FALSE;
- }
- static void destroy( GtkWidget *widget, gpointer data )
- {
- g_print ("Exiting\n");
- gtk_main_quit ();
- }
- //######################
- // Main #
- //######################
- int main( int argc, char *argv[] ) {
- /* Declarations */
- GtkWidget *window;
- GtkWidget *mainbox;
- GtkUIManager *ui;
- GtkActionGroup *actions;
- GError *error = NULL;
- gtk_init (&argc, &argv);
- /* Create a new window and set proprieties */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- assistant = gtk_assistant_new();
- gtk_window_set_title (GTK_WINDOW(assistant), "ShowBook client");
- gtk_window_set_default_size(GTK_WINDOW(assistant),800,600);
- gtk_window_set_screen (GTK_WINDOW (window),gtk_widget_get_screen (assistant));
- create_page1 (assistant);
- create_page2 (assistant);
- create_page3 (assistant);
- /* Define the main window box */
- // mainbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- // gtk_container_add (GTK_CONTAINER (assistant), mainbox);
- /* Define window signals */
- g_signal_connect (assistant, "delete-event",G_CALLBACK (delete_event), NULL);
- g_signal_connect (assistant, "destroy",G_CALLBACK (destroy), NULL);
- g_signal_connect (G_OBJECT (assistant), "cancel",
- G_CALLBACK (on_assistant_close_cancel), &assistant);
- g_signal_connect (G_OBJECT (assistant), "close",
- G_CALLBACK (on_assistant_close_cancel), &assistant);
- g_signal_connect (G_OBJECT (assistant), "apply",
- G_CALLBACK (on_assistant_apply), NULL);
- g_signal_connect (G_OBJECT (assistant), "prepare",
- G_CALLBACK (on_assistant_prepare), NULL);
- //gtk_container_set_border_width (GTK_CONTAINER (window), 10);
- /* Display the window */
- gtk_widget_show_all (assistant);
- /* Launch gtk */
- gtk_main ();
- //g_object_unref (ui);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement