Changeset 4248
- Timestamp:
- Dec 20, 2007, 7:21:21 PM (15 years ago)
- Location:
- trunk/gtk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/main.c
r4222 r4248 749 749 updatemodel(gpointer gdata) { 750 750 struct cbdata *data = gdata; 751 float up, down;752 751 753 752 if( !data->closing && 0 < global_sigcount ) … … 761 760 762 761 /* update the main window's statusbar and toolbar buttons */ 763 if( NULL != data->wind ) 764 { 765 tr_torrentRates( tr_core_handle( data->core ), &down, &up ); 766 tr_window_update( data->wind, down, up ); 767 } 762 if( data->wind ) 763 tr_window_update( data->wind ); 768 764 769 765 /* update the message window */ -
trunk/gtk/tr_prefs.c
r4240 r4248 30 30 cf_check_older_configs( ); 31 31 32 pref_string_set_default ( PREF_KEY_STATUS_BAR_STATS, "total-ratio" ); 32 33 pref_flag_set_default ( PREF_KEY_STATUS_BAR, TRUE ); 33 34 pref_flag_set_default ( PREF_KEY_TOOLBAR, TRUE ); -
trunk/gtk/tr_prefs.h
r4240 r4248 40 40 #define PREF_KEY_MINIMAL_VIEW "minimal-view" 41 41 #define PREF_KEY_STATUS_BAR "show-status-bar" 42 #define PREF_KEY_STATUS_BAR_STATS "status-bar-stats" 42 43 #define PREF_KEY_TOOLBAR "show-toolbar" 43 44 -
trunk/gtk/tr_window.c
r4240 r4248 55 55 GtkWidget * toolbar; 56 56 GtkWidget * status; 57 GtkWidget * status_menu; 57 58 GtkWidget * ul_lb; 58 59 GtkWidget * dl_lb; … … 164 165 g_object_set( p->toolbar, "visible", isEnabled, NULL ); 165 166 } 167 else if( !strcmp( key, PREF_KEY_STATUS_BAR_STATS ) ) 168 { 169 tr_window_update( (TrWindow*)wind ); 170 } 166 171 } 167 172 … … 169 174 privateFree( gpointer vprivate ) 170 175 { 171 PrivateData * p = ( PrivateData*) vprivate;176 PrivateData * p = ( PrivateData * ) vprivate; 172 177 g_signal_handler_disconnect( p->core, p->pref_handler_id ); 173 178 g_free( p ); 179 } 180 181 static void 182 onYinYangReleased( GtkWidget * w UNUSED, GdkEventButton * button UNUSED, gpointer vprivate ) 183 { 184 PrivateData * p = ( PrivateData * ) vprivate; 185 gtk_menu_popup( GTK_MENU( p->status_menu ), 0, 0, 0, 0, 0, gtk_get_current_event_time( ) ); 186 } 187 188 #define STATS_MODE "stats-mode" 189 190 static struct { 191 const char *val, *i18n; 192 } stats_modes[] = { 193 { "total-ratio", N_("Total Ratio") }, 194 { "session-ratio", N_("Session Ratio") }, 195 { "total-transfer", N_("Total Transfer") }, 196 { "session-transfer", N_("Session Transfer") } 197 }; 198 199 static void 200 status_menu_toggled_cb( GtkCheckMenuItem * menu_item, 201 gpointer vprivate ) 202 { 203 if( gtk_check_menu_item_get_active( menu_item ) ) 204 { 205 PrivateData * p = (PrivateData*) vprivate; 206 const char * val = g_object_get_data( G_OBJECT( menu_item ), STATS_MODE ); 207 tr_core_set_pref( p->core, PREF_KEY_STATUS_BAR_STATS, val ); 208 } 174 209 } 175 210 … … 181 216 tr_window_new( GtkUIManager * ui_manager, TrCore * core ) 182 217 { 218 int i, n; 219 int status_stats_mode; 220 char * pch; 183 221 PrivateData * p = g_new( PrivateData, 1 ); 184 GtkWidget *vbox, *w, *self, *h ;222 GtkWidget *vbox, *w, *self, *h, *c; 185 223 186 224 /* make the window */ … … 205 243 gtk_box_pack_start( GTK_BOX(vbox), w, FALSE, FALSE, 0 ); 206 244 245 /* status menu */ 246 GtkWidget * menu = p->status_menu = gtk_menu_new( ); 247 status_stats_mode = 0; 248 GSList * l = NULL; 249 pch = pref_string_get( PREF_KEY_STATUS_BAR_STATS ); 250 for( i=0, n=G_N_ELEMENTS(stats_modes); i<n; ++i ) 251 { 252 const char * val = stats_modes[i].val; 253 w = gtk_radio_menu_item_new_with_label( l, _( stats_modes[i].i18n ) ); 254 l = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM(w) ); 255 gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(w), !strcmp( val, pch ) ); 256 g_object_set_data( G_OBJECT(w), STATS_MODE, (gpointer)stats_modes[i].val ); 257 g_signal_connect( w, "toggled", G_CALLBACK(status_menu_toggled_cb), p ); 258 gtk_menu_shell_append( GTK_MENU_SHELL(menu), w ); 259 gtk_widget_show( w ); 260 } 261 g_free( pch ); 262 207 263 /* statusbar */ 208 264 h = p->status = gtk_hbox_new( FALSE, GUI_PAD ); … … 222 278 223 279 w = gtk_image_new_from_stock( "tr-yin-yang", (GtkIconSize)-1 ); 280 c = gtk_event_box_new( ); 281 gtk_container_add( GTK_CONTAINER(c), w ); 282 w = c; 283 g_signal_connect( w, "button-release-event", G_CALLBACK(onYinYangReleased), p ); 224 284 gtk_box_pack_start( GTK_BOX(h), w, FALSE, FALSE, 0 ); 225 285 w = p->stats_lb = gtk_label_new( NULL ); … … 246 306 prefsChanged( core, PREF_KEY_MINIMAL_VIEW, self ); 247 307 prefsChanged( core, PREF_KEY_STATUS_BAR, self ); 308 prefsChanged( core, PREF_KEY_STATUS_BAR_STATS, self ); 248 309 prefsChanged( core, PREF_KEY_TOOLBAR, self ); 249 310 p->core = core; … … 255 316 256 317 void 257 tr_window_update( TrWindow * self , float downspeed, float upspeed)318 tr_window_update( TrWindow * self ) 258 319 { 259 320 PrivateData * p = get_private_data( self ); 260 char up[32], down[32], buf[64]; 261 struct tr_session_stats stats; 262 tr_handle * handle = tr_core_handle( p->core ); 263 264 tr_strlspeed( buf, downspeed, sizeof( buf ) ); 265 gtk_label_set_text( GTK_LABEL( p->dl_lb ), buf ); 266 267 tr_strlspeed( buf, upspeed, sizeof( buf ) ); 268 gtk_label_set_text( GTK_LABEL( p->ul_lb ), buf ); 269 270 tr_getCumulativeSessionStats( handle, &stats ); 271 tr_strlsize( up, stats.uploadedBytes, sizeof( up ) ); 272 tr_strlsize( down, stats.downloadedBytes, sizeof( down ) ); 273 g_snprintf( buf, sizeof( buf ), _( "Down: %s Up: %s" ), down, up ); 274 gtk_label_set_text( GTK_LABEL( p->stats_lb ), buf ); 321 tr_handle * handle = NULL; 322 323 if( p && p->core ) 324 handle = tr_core_handle( p->core ); 325 326 if( handle ) 327 { 328 char * pch; 329 float u, d; 330 char up[32], down[32], buf[64]; 331 struct tr_session_stats stats; 332 333 tr_torrentRates( handle, &d, &u ); 334 tr_strlspeed( buf, d, sizeof( buf ) ); 335 gtk_label_set_text( GTK_LABEL( p->dl_lb ), buf ); 336 tr_strlspeed( buf, u, sizeof( buf ) ); 337 gtk_label_set_text( GTK_LABEL( p->ul_lb ), buf ); 338 339 pch = pref_string_get( PREF_KEY_STATUS_BAR_STATS ); 340 if( !strcmp( pch, "session-ratio" ) ) { 341 tr_getSessionStats( handle, &stats ); 342 g_snprintf( buf, sizeof(buf), _("Ratio: %.1f"), stats.ratio ); 343 } else if( !strcmp( pch, "session-transfer" ) ) { 344 tr_getSessionStats( handle, &stats ); 345 tr_strlsize( up, stats.uploadedBytes, sizeof( up ) ); 346 tr_strlsize( down, stats.downloadedBytes, sizeof( down ) ); 347 g_snprintf( buf, sizeof( buf ), _( "Down: %s Up: %s" ), down, up ); 348 } else if( !strcmp( pch, "total-transfer" ) ) { 349 tr_getCumulativeSessionStats( handle, &stats ); 350 tr_strlsize( up, stats.uploadedBytes, sizeof( up ) ); 351 tr_strlsize( down, stats.downloadedBytes, sizeof( down ) ); 352 g_snprintf( buf, sizeof( buf ), _( "Down: %s Up: %s" ), down, up ); 353 } else { /* default is total-ratio */ 354 tr_getCumulativeSessionStats( handle, &stats ); 355 g_snprintf( buf, sizeof(buf), _("Ratio: %.1f"), stats.ratio ); 356 } 357 g_free( pch ); 358 gtk_label_set_text( GTK_LABEL( p->stats_lb ), buf ); 359 } 275 360 } 276 361 -
trunk/gtk/tr_window.h
r4222 r4248 35 35 GtkWidget * tr_window_new( GtkUIManager*, TrCore * core ); 36 36 37 void tr_window_update( TrWindow * wind , float downspeed, float upspeed);37 void tr_window_update( TrWindow * wind ); 38 38 39 39 #endif
Note: See TracChangeset
for help on using the changeset viewer.