#include /* * Glib/Gtk+-2.0 */ #include #include enum { Name, Progress, N_COLUMN }; static GtkTreeStore *load_tree; static GtkWidget *pWindow; static void download (GtkWidget *pWidget, gpointer id) { GtkTreeIter pIter; gint iTotal = 101; gint i; //gdouble fract; //GtkWidget *bar; //bar = gtk_progress_bar_new(); gtk_tree_store_append(load_tree, &pIter, NULL); gtk_tree_store_set(load_tree, &pIter, Name, "filename.iso", Progress, (gdouble)0, -1); //gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(bar), (gdouble)1); for(i = 0 ; i < iTotal ; ++i) { //fract = (gdouble)i / (gdouble)iTotal; //fprintf(stderr, "--> %.2f\n", fract); gtk_tree_store_set(load_tree, &pIter, Name, "filename.iso", Progress, (gdouble)i, -1); //gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(bar), fract); //sleep(1); gtk_main_iteration (); } } /* * Main program for daemon. */ int main (int argc, char **argv) { GtkWidget *pVBox; GtkWidget *pToolbar = NULL; GtkWidget *load_scrollbar; GtkWidget *List_HBox; GtkWidget *pNotebook; GtkWidget *load_view; GtkWidget *pTabLabel; GtkTreeViewColumn *pColumn = NULL; GtkCellRenderer *pCellRenderer; gtk_init(&argc, &argv); /* Creation de la fenetre principale * pWindows = principale Windows */ pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), " -Test- "); gtk_window_set_default_size(GTK_WINDOW(pWindow), 640, 480); g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); /* Creation de la pVBox */ pVBox = gtk_vbox_new(FALSE, 0); /* Ajout de la pVBox dans la fenetre */ gtk_container_add(GTK_CONTAINER(pWindow), pVBox); /* Creation de la barre d'outils */ pToolbar = gtk_toolbar_new(); /* Ajout de la barre d'outil dans pVBox */ gtk_box_pack_start(GTK_BOX(pVBox), pToolbar, FALSE, FALSE, 0); // Creation a partir de stock gtk_toolbar_insert_stock(GTK_TOOLBAR(pToolbar), GTK_STOCK_ADD, "Download", NULL, G_CALLBACK(download), pColumn, -1); // Creation a partir de stock gtk_toolbar_insert_stock(GTK_TOOLBAR(pToolbar), GTK_STOCK_QUIT, "Quit", NULL, G_CALLBACK(gtk_main_quit), pColumn, -1); // Modification de la taille des icones gtk_toolbar_set_icon_size(GTK_TOOLBAR(pToolbar), GTK_ICON_SIZE_DIALOG); // Affichage uniquement des icones gtk_toolbar_set_style(GTK_TOOLBAR(pToolbar), GTK_TOOLBAR_ICONS); /************************/ /* Creation de la liste */ /************************/ /* Creation de la box horizontale qui va contenir la liste */ List_HBox = gtk_hbox_new(TRUE, 0); /* Ajout de la List_HBox dans la pVBox */ gtk_box_pack_start(GTK_BOX(pVBox), List_HBox, TRUE, TRUE, 0); /**********************/ /* Rajout des onglets */ /**********************/ /* Creation du GtkNotebook */ pNotebook = gtk_notebook_new(); /* Position des onglets : en haut */ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(pNotebook), GTK_POS_TOP); gtk_notebook_set_scrollable(GTK_NOTEBOOK(pNotebook), 1 ); gtk_box_pack_start(GTK_BOX(List_HBox), pNotebook, TRUE, TRUE, 0); /****************************************/ /* creation de l'onglet Download/Upload */ /****************************************/ // Mise en place d'un arbre vide // Creation du modele load_tree = gtk_tree_store_new(N_COLUMN, G_TYPE_STRING, G_TYPE_DOUBLE); // Creation de la vue load_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(load_tree)); // Creation de la premiere colonne pCellRenderer = gtk_cell_renderer_text_new(); pColumn = gtk_tree_view_column_new_with_attributes("Nom du fichier", pCellRenderer, "text", Name, NULL); // Ajout de la colonne à la vue gtk_tree_view_append_column(GTK_TREE_VIEW(load_view), pColumn); // Creation de la troisieme colonne pCellRenderer = gtk_cell_renderer_progress_new(); pColumn = gtk_tree_view_column_new_with_attributes("Progression", pCellRenderer, "value", Progress, NULL); // Ajout de la colonne à la vue gtk_tree_view_append_column(GTK_TREE_VIEW(load_view), pColumn); // Ajout de la scrollbar verticale load_scrollbar = gtk_scrolled_window_new(NULL, NULL); /* Ligne qui fait chier */ gtk_container_add(GTK_CONTAINER(load_scrollbar), load_view); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(load_scrollbar), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(load_scrollbar), GTK_SHADOW_IN); /* Creation de la tabulation de la liste */ pTabLabel = gtk_label_new("Download/Upload"); gtk_notebook_append_page(GTK_NOTEBOOK(pNotebook), load_scrollbar, pTabLabel); gtk_widget_show_all(pWindow); gtk_main(); return 0; }