Diff of /trunk/src/project.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 179 by harbaum, Thu Jun 18 12:15:17 2009 UTC revision 185 by harbaum, Mon Jun 29 14:07:46 2009 UTC
# Line 1236  gboolean project_load(appdata_t *appdata Line 1236  gboolean project_load(appdata_t *appdata
1236    g_free(proj_name);    g_free(proj_name);
1237    return TRUE;    return TRUE;
1238  }  }
1239    
1240    /* ------------------- project setup wizard ----------------- */
1241    
1242    typedef struct {
1243      GtkWidget *widget;
1244      gint index;
1245      const gchar *title;
1246      GtkAssistantPageType type;
1247      gboolean complete;
1248    } wizard_page_t;
1249    
1250    static gint on_assistant_destroy(GtkWidget *widget, gpointer data) {
1251      return FALSE;
1252    }
1253    
1254    void project_wizard(appdata_t *appdata) {
1255      wizard_page_t page[5] = {
1256        { NULL, -1, "Introduction",           GTK_ASSISTANT_PAGE_INTRO,    TRUE},
1257        { NULL, -1, NULL,                     GTK_ASSISTANT_PAGE_CONTENT,  FALSE},
1258        { NULL, -1, "Click the Check Button", GTK_ASSISTANT_PAGE_CONTENT,  FALSE},
1259        { NULL, -1, "Click the Button",       GTK_ASSISTANT_PAGE_PROGRESS, FALSE},
1260        { NULL, -1, "Confirmation",           GTK_ASSISTANT_PAGE_CONFIRM,  TRUE},
1261      };
1262    
1263      GtkWidget *assistant = gtk_assistant_new();
1264      gtk_widget_set_size_request (assistant, 450, 300);
1265    
1266      /* Add five pages to the GtkAssistant dialog. */
1267      int i;
1268      for (i = 0; i < 5; i++) {
1269        char *str = g_strdup_printf("Page %d", i);
1270        page[i].widget = gtk_label_new(str);
1271        g_free(str);
1272    
1273        page[i].index = gtk_assistant_append_page(GTK_ASSISTANT (assistant),
1274                                                  page[i].widget);
1275    
1276        gtk_assistant_set_page_title (GTK_ASSISTANT (assistant),
1277                                      page[i].widget, page[i].title);
1278        gtk_assistant_set_page_type (GTK_ASSISTANT (assistant),
1279                                      page[i].widget, page[i].type);
1280    
1281        /* Set the introduction and conclusion pages as complete so they can be
1282         * incremented or closed. */
1283        gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant),
1284                                         page[i].widget, page[i].complete);
1285      }
1286    
1287      /* make it a modal subdialog of the main window */
1288      gtk_window_set_modal(GTK_WINDOW(assistant), TRUE);
1289      gtk_window_set_transient_for(GTK_WINDOW(assistant),
1290                                   GTK_WINDOW(appdata->window));
1291    
1292      gtk_widget_show_all(assistant);
1293    
1294      g_signal_connect(G_OBJECT(assistant), "destroy",
1295                       G_CALLBACK(on_assistant_destroy), NULL);
1296    
1297      do {
1298        if(gtk_events_pending())
1299          gtk_main_iteration();
1300        else
1301          usleep(100000);
1302    
1303        putchar('.'); fflush(stdout);
1304      } while(1);
1305    
1306      gtk_widget_destroy(assistant);
1307    }
1308    
1309    
1310  // vim:et:ts=8:sw=2:sts=2:ai  // vim:et:ts=8:sw=2:sts=2:ai

Legend:
Removed from v.179  
changed lines
  Added in v.185