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 |