X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=clients%2Fgnome-trans-applet%2Fdolcon-trans-applet.c;h=ab31d3cb1bd70e4bc9985678039e1a42f0f2ae17;hb=a24f31ec316a25bb1805d205b80b326098330086;hp=46c58fc56ff2783f1ac60dd08d40c4313c8efc29;hpb=6431aca05e3425df8ac4c2ed4e621d191f01425f;p=doldaconnect.git diff --git a/clients/gnome-trans-applet/dolcon-trans-applet.c b/clients/gnome-trans-applet/dolcon-trans-applet.c index 46c58fc..ab31d3c 100644 --- a/clients/gnome-trans-applet/dolcon-trans-applet.c +++ b/clients/gnome-trans-applet/dolcon-trans-applet.c @@ -99,6 +99,7 @@ static gboolean updatetip(struct appletdata *data) static void update(struct appletdata *data) { char buf[256]; + size_t l; switch(data->conduit->state) { @@ -130,7 +131,15 @@ static void update(struct appletdata *data) gtk_progress_bar_set_fraction(data->pbar, 0); gtk_progress_bar_set_text(data->pbar, _("Initializing")); } - gtk_label_set_text(data->label, data->curdisplay->tag); + if((l = strlen(data->curdisplay->tag)) > 50) { + memcpy(buf, data->curdisplay->tag, 20); + memcpy(buf + 20, "...", 3); + memcpy(buf + 23 , data->curdisplay->tag + l - 20, 20); + buf[43] = 0; + gtk_label_set_text(data->label, buf); + } else { + gtk_label_set_text(data->label, data->curdisplay->tag); + } } break; } @@ -197,6 +206,34 @@ static gboolean trview_applet_button_press(GtkWidget *widget, GdkEventButton *ev return(FALSE); } +static gboolean trview_applet_scroll(GtkWidget *widget, GdkEventScroll *event, struct appletdata *data) +{ + struct transfer *tr; + + if(event->direction == GDK_SCROLL_DOWN) + { + if(data->curdisplay == NULL) + data->curdisplay = data->conduit->transfers; + else if(data->curdisplay->next == NULL) + data->curdisplay = data->conduit->transfers; + else + data->curdisplay = data->curdisplay->next; + update(data); + } else if(event->direction == GDK_SCROLL_UP) { + if(data->curdisplay == NULL) + { + data->curdisplay = data->conduit->transfers; + } else if(data->curdisplay->prev == NULL) { + for(tr = data->conduit->transfers; tr->next != NULL; tr = tr->next); + data->curdisplay = tr; + } else { + data->curdisplay = data->curdisplay->prev; + } + update(data); + } + return(TRUE); +} + static void trview_applet_destroy(GtkWidget *widget, struct appletdata *data) { freeconduit(data->conduit); @@ -235,6 +272,7 @@ static gboolean trview_applet_fill(PanelApplet *applet, const gchar *iid, gpoint panel_applet_setup_menu(applet, ctxtmenu, ctxtmenuverbs, data); g_signal_connect(applet, "button-press-event", (GCallback)trview_applet_button_press, data); + g_signal_connect(applet, "scroll-event", (GCallback)trview_applet_scroll, data); g_signal_connect(applet, "destroy", (GCallback)trview_applet_destroy, data); condtryconn(data->conduit);