1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
#include <unistd.h>
/*
* Glib/Gtk+-2.0
*/
#include <gtk/gtk.h>
#include <glib/gprintf.h>
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;
} |
Partager