Use real Gtk TreeView progress bars, finally!
[doldaconnect.git] / clients / gtk2 / dolcon.c
index 9da836b..c96498f 100644 (file)
@@ -47,7 +47,6 @@
 #endif
 #include "dolcon.h"
 #include "hublist.h"
-#include "progressbar.h"
 
 #define TRHISTSIZE 10
 
@@ -292,6 +291,27 @@ char *bytes2si(long long bytes)
     return(ret);
 }
 
+void progressfunc(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
+{
+    int totalc, curc;
+    int total, cur;
+    char buf[64];
+    
+    totalc = (GPOINTER_TO_INT(data) & 0xff00) >> 8;
+    curc = GPOINTER_TO_INT(data) & 0xff;
+    gtk_tree_model_get(model, iter, totalc, &total, curc, &cur, -1);
+    if(total < 1)
+       g_object_set(rend, "value", GINT_TO_POINTER(0), NULL);
+    else
+       g_object_set(rend, "value", GINT_TO_POINTER((int)(((double)cur / (double)total) * 100)), NULL);
+    if(cur < 0) {
+       g_object_set(rend, "text", "", NULL);
+    } else {
+       snprintf(buf, 64, "%'i", cur);
+       g_object_set(rend, "text", buf, NULL);
+    }
+}
+
 void percentagefunc(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
 {
     int colnum;
@@ -2208,18 +2228,22 @@ int main(int argc, char **argv)
     textdomain(PACKAGE);
     gtk_init(&argc, &argv);
     connlocal = 0;
-    while((c = getopt(argc, argv, "lh")) != -1) {
+    while((c = getopt(argc, argv, "lhV")) != -1) {
        switch(c) {
        case 'l':
            connlocal = 1;
            break;
        case 'h':
-           printf("usage: dolcon [-hl]\n");
+           printf("usage: dolcon [-hlV]\n");
            printf("\t-h\tDisplay this help message\n");
            printf("\t-l\tConnect to the locally running daemon\n");
+           printf("\t-V\tDisplay version info and exit\n");
+           exit(0);
+       case 'V':
+           printf("%s", RELEASEINFO);
            exit(0);
        default:
-           fprintf(stderr, "usage: dolcon [-hl]\n");
+           fprintf(stderr, "usage: dolcon [-hlV]\n");
            exit(1);
        }
     }