X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=clients%2Fgtk2%2Fmain.c;h=8aa487c99f2fd557ad0398db98dc7d8eb3786d11;hb=cac656ef0444b50ab59b96b7f87d56f60bed6c2c;hp=a8507c755768dc41b6f8f995dd48f24597e24a7b;hpb=dd30d71bf2a8284c0ad25b712c9aed7bfe66b030;p=doldaconnect.git diff --git a/clients/gtk2/main.c b/clients/gtk2/main.c index a8507c7..8aa487c 100644 --- a/clients/gtk2/main.c +++ b/clients/gtk2/main.c @@ -147,6 +147,7 @@ gboolean cb_reslist_list_keypress(GtkWidget *widget, GdkEventKey *event, gpointe void dcfdcallback(gpointer data, gint source, GdkInputCondition condition); void srchstatupdate(void); void transnicebytefunc(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data); +void transnicebytefunc2(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data); void transspeedinfo(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data); void transerrorinfo(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data); void percentagefunc(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data); @@ -332,7 +333,7 @@ void updatehublist(void) } } -char *bytes2si(int bytes) +char *bytes2si(long long bytes) { int i; double b; @@ -340,7 +341,7 @@ char *bytes2si(int bytes) static char ret[64]; b = bytes; - for(i = 0; (b > 1024) && (i < 4); i++) + for(i = 0; (b >= 1024) && (i < 4); i++) b /= 1024; if(i == 0) sd = "B"; @@ -375,10 +376,6 @@ void transnicebytefunc(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeMod colnum = (int)data; gtk_tree_model_get(model, iter, colnum, &val, -1); -/* - if(val >= 0) - strcpy(buf, bytes2si(val)); -*/ if(val >= 0) snprintf(buf, 64, "%'i", val); else @@ -386,6 +383,21 @@ void transnicebytefunc(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeMod g_object_set(rend, "text", buf, NULL); } +void transnicebytefunc2(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data) +{ + int colnum; + long long val; + char buf[64]; + + colnum = (int)data; + gtk_tree_model_get(model, iter, colnum, &val, -1); + if(val >= 0) + strcpy(buf, bytes2si(val)); + else + strcpy(buf, _("Unknown")); + g_object_set(rend, "text", buf, NULL); +} + void hidezerofunc(GtkTreeViewColumn *col, GtkCellRenderer *rend, GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { int colnum, val; @@ -1435,13 +1447,23 @@ void cb_main_fnaddr_activate(GtkWidget *widget, gpointer data) void setpubhubmodel(GtkTreeModel *model, int sortcol, int numcols, int *cols, char **names) { GtkTreeViewColumn *col; + GtkCellRenderer *rnd; GtkTreeModel *sortmodel; int i; while((col = gtk_tree_view_get_column(GTK_TREE_VIEW(main_phublist), 0)) != NULL) gtk_tree_view_remove_column(GTK_TREE_VIEW(main_phublist), col); for(i = 0; i < numcols; i++) { - col = gtk_tree_view_column_new_with_attributes(names[i], gtk_cell_renderer_text_new(), "text", cols[i], NULL); + if(gtk_tree_model_get_column_type(model, cols[i]) == G_TYPE_INT64) + { + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, names[i]); + rnd = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, rnd, TRUE); + gtk_tree_view_column_set_cell_data_func(col, rnd, transnicebytefunc2, (gpointer)cols[i], NULL); + } else { + col = gtk_tree_view_column_new_with_attributes(names[i], gtk_cell_renderer_text_new(), "text", cols[i], NULL); + } gtk_tree_view_column_set_sort_column_id(col, cols[i]); gtk_tree_view_column_set_resizable(col, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(main_phublist), col);