diff --git a/gtk/actions.c b/gtk/actions.c index 218da889b..9e3f44cee 100644 --- a/gtk/actions.c +++ b/gtk/actions.c @@ -99,7 +99,7 @@ toggle_pref_cb ( GtkToggleAction * action, gpointer user_data UNUSED ) static GtkToggleActionEntry pref_toggle_entries[] = { { "minimal-view", NULL, - N_("_Minimal View"), "M", NULL, G_CALLBACK(toggle_pref_cb), FALSE }, + N_("_Minimal View"), "M", NULL, G_CALLBACK(toggle_pref_cb), FALSE }, { "sort-reversed", NULL, N_("_Reverse Sort Order"), NULL, NULL, G_CALLBACK(toggle_pref_cb), FALSE } }; @@ -112,7 +112,8 @@ static GtkActionEntry entries[] = { "edit-menu", NULL, N_("_Edit"), NULL, NULL, NULL }, { "help-menu", NULL, N_("_Help"), NULL, NULL, NULL }, { "priority-menu", NULL, N_("_Priority"), NULL, NULL, NULL }, - { "add-torrent", GTK_STOCK_OPEN, NULL, NULL, N_("Open Torrent"), G_CALLBACK(action_cb) }, + { "add-torrent", GTK_STOCK_OPEN, + NULL, NULL, N_("Open Torrent"), G_CALLBACK(action_cb) }, { "start-torrent", GTK_STOCK_MEDIA_PLAY, N_("_Start"), "S", NULL, G_CALLBACK(action_cb) }, { "show-stats", NULL, N_("_Statistics"), NULL, NULL, G_CALLBACK(action_cb) }, @@ -164,7 +165,6 @@ typedef struct } BuiltinIconInfo; -/* only one icon now... but room to grow ;) */ const BuiltinIconInfo my_builtin_icons [] = { { tr_icon_logo, "transmission-logo" }, @@ -255,7 +255,8 @@ actions_init( GtkUIManager * ui_manager, gpointer callback_user_data ) callback_user_data ); for( i=0, n=G_N_ELEMENTS(pref_toggle_entries); ileftUntilDone == 0; const uint64_t haveTotal = torStat->haveUnchecked + torStat->haveValid; - const tr_info * info = tr_torrentInfo( tor ); const int isSeed = torStat->haveValid >= info->totalSize; - char buf1[128], buf2[128], buf3[128]; + char buf1[32], buf2[32], buf3[32]; char * str; if( !allDownloaded ) @@ -99,9 +98,9 @@ getProgressString( const tr_torrent * tor, const tr_stat * torStat ) } static char* -getShortStatusString( const tr_stat * torStat ) +getShortStatusString( const tr_stat * torStat ) { - char upStr[64], downStr[64]; + char upStr[32], downStr[32]; GString * gstr = g_string_new( NULL ); switch( torStat->status ) @@ -118,18 +117,20 @@ getShortStatusString( const tr_stat * torStat ) g_string_append_printf( gstr, _("Verifying local data (%.1f%% tested)"), torStat->recheckProgress * 100.0 ); - case TR_STATUS_DOWNLOAD: - tr_strlspeed( downStr, torStat->rateDownload, sizeof(downStr) ), + case TR_STATUS_DOWNLOAD: { + tr_strlspeed( downStr, torStat->rateDownload, sizeof(downStr) ); tr_strlspeed( upStr, torStat->rateUpload, sizeof(upStr) ); - g_string_append_printf( gstr, _("DL: %s, UL: %s"), downStr, upStr ); + g_string_append_printf( gstr, _("Down: %s, Up: %s"), downStr, upStr ); break; + } case TR_STATUS_SEED: - case TR_STATUS_DONE: + case TR_STATUS_DONE: { tr_strlspeed( upStr, torStat->rateUpload, sizeof(upStr) ); - g_string_append_printf( gstr, _("Ratio: %.1f, UL: %s"), + g_string_append_printf( gstr, _("Ratio: %.1f, Up: %s"), torStat->ratio*100.0, upStr ); break; + } default: break; @@ -164,21 +165,21 @@ getStatusString( const tr_stat * torStat ) case TR_STATUS_DOWNLOAD: g_string_append_printf( gstr, - ngettext( _("Downloading from %d of %d connected peer" ), - _("Downloading from %d of %d connected peers" ), - torStat->peersConnected ), - torStat->peersSendingToUs, - torStat->peersConnected ); + ngettext( _("Downloading from %d of %d connected peer" ), + _("Downloading from %d of %d connected peers" ), + torStat->peersConnected ), + torStat->peersSendingToUs, + torStat->peersConnected ); break; case TR_STATUS_DONE: case TR_STATUS_SEED: g_string_append_printf( gstr, - ngettext( _( "Seeding to %d of %d connected peer" ), - _( "Seeding to %d of %d connected peers" ), - torStat->peersGettingFromUs ), - torStat->peersGettingFromUs, - torStat->peersConnected ); + ngettext( _( "Seeding to %d of %d connected peer" ), + _( "Seeding to %d of %d connected peers" ), + torStat->peersGettingFromUs ), + torStat->peersGettingFromUs, + torStat->peersConnected ); break; } @@ -187,12 +188,12 @@ getStatusString( const tr_stat * torStat ) char ulbuf[64], dlbuf[64]; if (torStat->status == TR_STATUS_DOWNLOAD) - g_string_append_printf( gstr, _(" - DL: %s, UL: %s" ), - tr_strlspeed( dlbuf, torStat->rateDownload, sizeof(dlbuf) ), - tr_strlspeed( ulbuf, torStat->rateUpload, sizeof(ulbuf) ) ); + g_string_append_printf( gstr, _(" - Down: %s, Up: %s" ), + tr_strlspeed( dlbuf, torStat->rateDownload, sizeof(dlbuf) ), + tr_strlspeed( ulbuf, torStat->rateUpload, sizeof(ulbuf) ) ); else - g_string_append_printf( gstr, _(" - UL: %s" ), - tr_strlspeed( ulbuf, torStat->rateUpload, sizeof(ulbuf) ) ); + g_string_append_printf( gstr, _(" - Up: %s" ), + tr_strlspeed( ulbuf, torStat->rateUpload, sizeof(ulbuf) ) ); } return g_string_free( gstr, FALSE ); @@ -214,10 +215,10 @@ struct TorrentCellRendererPrivate gboolean gradient; GdkColor color_paused[2]; GdkColor color_verified[2]; + GdkColor color_verifying[2]; GdkColor color_missing[2]; GdkColor color_unwanted[2]; GdkColor color_unavailable[2]; - GdkColor color_verifying[2]; GdkColor color_seeding[2]; }; @@ -241,7 +242,6 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell, const char * name = info->name; const tr_stat * torStat = tr_torrentStat( (tr_torrent*)tor ); char * str; - int tmp_w, tmp_h; int w=0, h=0; struct TorrentCellRendererPrivate * p = self->priv; @@ -251,29 +251,30 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell, if( p->minimal ) { int w1, w2, h1, h2; - char * shortStatusString = getShortStatusString( torStat ); + char * shortStatus = getShortStatusString( torStat ); g_object_set( p->text_renderer, "text", name, NULL ); gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w1, &h1 ); - str = g_markup_printf_escaped( "%s", shortStatusString ); + str = g_markup_printf_escaped( "%s", shortStatus ); g_object_set( p->text_renderer, "markup", str, NULL ); gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w2, &h2 ); h += MAX( h1, h2 ); w = MAX( w, w1+GUI_PAD_BIG+w2 ); g_free( str ); - g_free( shortStatusString ); + g_free( shortStatus ); } else { - char * progressString = getProgressString( tor, torStat ); + int w1, h1; + char * progressString = getProgressString( info, torStat ); str = g_markup_printf_escaped( "%s\n%s", name, progressString ); g_object_set( p->text_renderer, "markup", str, NULL ); gtk_cell_renderer_get_size( p->text_renderer, - widget, NULL, NULL, NULL, &tmp_w, &tmp_h ); - h += tmp_h; - w = MAX( w, tmp_w ); + widget, NULL, NULL, NULL, &w1, &h1 ); + h += h1; + w = MAX( w, w1 ); g_free( str ); g_free( progressString ); } @@ -281,13 +282,14 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell, /* below the progressbar */ if( !p->minimal ) { + int w1, h1; char * statusString = getStatusString( torStat ); str = g_markup_printf_escaped( "%s", statusString ); g_object_set( p->text_renderer, "markup", str, NULL ); gtk_cell_renderer_get_size( p->text_renderer, - widget, NULL, NULL, NULL, &tmp_w, &tmp_h ); - h += tmp_h; - w = MAX( w, tmp_w ); + widget, NULL, NULL, NULL, &w1, &h1 ); + h += h1; + w = MAX( w, w1 ); g_free( str ); g_free( statusString ); } @@ -361,8 +363,10 @@ drawRegularBar( TorrentCellRenderer * self, #if 1 const double verified = torStat->haveValid / (double)info->totalSize; const double unverified = torStat->haveUnchecked / (double)info->totalSize; - const double unavailable = ( torStat->desiredSize - torStat->desiredAvailable ) / (double)info->totalSize; - const double unwanted = ( info->totalSize - torStat->desiredSize ) / (double)info->totalSize; + const double unavailable = ( torStat->desiredSize + - torStat->desiredAvailable ) / (double)info->totalSize; + const double unwanted = ( info->totalSize + - torStat->desiredSize ) / (double)info->totalSize; #else /* for testing */ const double verified = 0.5; const double unverified = 0.1; @@ -436,7 +440,7 @@ drawRegularBar( TorrentCellRenderer * self, if( isChecking ) { const int checkedWidth = torStat->recheckProgress * area->width; - int h2 = area->height / 2; + const int h2 = area->height / 2; rect = *area; rect.y += h2; rect.height -= h2; @@ -462,8 +466,8 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, GdkDrawable * window, GtkWidget * widget, GdkRectangle * background_area, - GdkRectangle * cell_area, - GdkRectangle * expose_area, + GdkRectangle * cell_area UNUSED, + GdkRectangle * expose_area UNUSED, GtkCellRendererState flags) { TorrentCellRenderer * self = TORRENT_CELL_RENDERER( cell ); @@ -473,7 +477,7 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, const tr_info * info = tr_torrentInfo( tor ); const char * name = info->name; const tr_stat * torStat = tr_torrentStat( (tr_torrent*)tor ); - char * progressString = getProgressString( tor, torStat ); + char * progressString = getProgressString( info, torStat ); char * statusString = getStatusString( torStat ); char * str; GdkRectangle my_bg; @@ -488,14 +492,7 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, my_bg.x += xpad; my_bg.y += ypad; my_bg.width -= xpad*2; - my_cell = *cell_area; - my_cell.x += xpad; - my_cell.y += ypad; - my_cell.width -= xpad*2; - my_expose = *expose_area; - my_expose.x += xpad; - my_expose.y += ypad; - my_expose.width -= xpad*2; + my_cell = my_expose = my_bg; /* above the progressbar */ if( !p->minimal ) @@ -507,8 +504,8 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, NULL ); gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h ); - my_bg.height = h; - my_cell.height = h; + my_bg.height = + my_cell.height = my_expose.height = h; g_object_set( p->text_renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL ); @@ -522,7 +519,7 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, else { int w1, w2, h1, h2, tmp_h; - char * shortStatusString = getShortStatusString( torStat ); + char * shortStatus = getShortStatusString( torStat ); GdkRectangle tmp_bg, tmp_cell, tmp_expose; /* get the dimensions for the name */ @@ -533,7 +530,7 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, widget, NULL, NULL, NULL, &w1, &h1 ); /* get the dimensions for the short status string */ - str = g_markup_printf_escaped( "%s", shortStatusString ); + str = g_markup_printf_escaped( "%s", shortStatus ); g_object_set( p->text_renderer, "markup", str, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL ); @@ -544,7 +541,7 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, /* short status */ tmp_bg.x = my_bg.width - w2; - tmp_bg.y = my_bg.y; + tmp_bg.y = my_bg.y + (h2-h1)/2; tmp_bg.width = w2; tmp_bg.height = tmp_h; tmp_expose = tmp_cell = tmp_bg; @@ -567,7 +564,7 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, &tmp_bg, &tmp_cell, &tmp_expose, flags ); g_free( str ); - g_free( shortStatusString ); + g_free( shortStatus ); my_bg.y = tmp_bg.y + tmp_bg.height; my_cell.y = tmp_cell.y + tmp_cell.height; @@ -590,8 +587,8 @@ torrent_cell_renderer_render( GtkCellRenderer * cell, NULL ); gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h ); - my_bg.height = h; - my_cell.height = h; + my_bg.height = + my_cell.height = my_expose.height = h; gtk_cell_renderer_render( p->text_renderer, window, widget, @@ -620,10 +617,10 @@ torrent_cell_renderer_set_property( GObject * object, switch( property_id ) { - case P_TORRENT: p->tor = g_value_get_pointer( v ); break; - case P_BAR_HEIGHT: p->bar_height = g_value_get_int( v ); break; - case P_MINIMAL: p->minimal = g_value_get_boolean( v ); break; - case P_GRADIENT: p->gradient = g_value_get_boolean( v ); break; + case P_TORRENT: p->tor = g_value_get_pointer( v ); break; + case P_BAR_HEIGHT: p->bar_height = g_value_get_int( v ); break; + case P_MINIMAL: p->minimal = g_value_get_boolean( v ); break; + case P_GRADIENT: p->gradient = g_value_get_boolean( v ); break; case P_SHOW_UNAVAILABLE: p->show_unavailable = g_value_get_boolean( v ); break; case P_COLOR_MISSING: v2c( &p->color_missing[0], v ); break; case P_COLOR_MISSING_2: v2c( &p->color_missing[1], v ); break; @@ -665,10 +662,10 @@ torrent_cell_renderer_get_property( GObject * object, switch( property_id ) { - case P_TORRENT: g_value_set_pointer( v, p->tor ); break; - case P_BAR_HEIGHT: g_value_set_int( v, p->bar_height ); break; - case P_MINIMAL: g_value_set_boolean( v, p->minimal ); break; - case P_GRADIENT: g_value_set_boolean( v, p->gradient ); break; + case P_TORRENT: g_value_set_pointer( v, p->tor ); break; + case P_BAR_HEIGHT: g_value_set_int( v, p->bar_height ); break; + case P_MINIMAL: g_value_set_boolean( v, p->minimal ); break; + case P_GRADIENT: g_value_set_boolean( v, p->gradient ); break; case P_SHOW_UNAVAILABLE: g_value_set_boolean( v, p->show_unavailable ); break; case P_COLOR_MISSING: c2v( v, &p->color_missing[0] ); break; case P_COLOR_MISSING_2: c2v( v, &p->color_missing[1] ); break; @@ -694,14 +691,15 @@ static void torrent_cell_renderer_class_init( TorrentCellRendererClass * klass ) { GObjectClass * gobject_class = G_OBJECT_CLASS( klass ); - GtkCellRendererClass * cell_renderer_class = GTK_CELL_RENDERER_CLASS( klass ); + GtkCellRendererClass * cell_class = GTK_CELL_RENDERER_CLASS( klass ); - g_type_class_add_private( klass, sizeof(struct TorrentCellRendererPrivate) ); + g_type_class_add_private( klass, + sizeof(struct TorrentCellRendererPrivate) ); parent_class = (GtkCellRendererClass*) g_type_class_peek_parent( klass ); - cell_renderer_class->render = torrent_cell_renderer_render; - cell_renderer_class->get_size = torrent_cell_renderer_get_size; + cell_class->render = torrent_cell_renderer_render; + cell_class->get_size = torrent_cell_renderer_get_size; gobject_class->set_property = torrent_cell_renderer_set_property; gobject_class->get_property = torrent_cell_renderer_get_property; @@ -789,8 +787,8 @@ torrent_cell_renderer_init( GTypeInstance * instance, gpointer g_class UNUSED ) struct TorrentCellRendererPrivate * p; p = self->priv = G_TYPE_INSTANCE_GET_PRIVATE( self, - TORRENT_CELL_RENDERER_TYPE, - struct TorrentCellRendererPrivate ); + TORRENT_CELL_RENDERER_TYPE, + struct TorrentCellRendererPrivate ); p->tor = NULL; p->text_renderer = gtk_cell_renderer_text_new( ); diff --git a/gtk/tr_core.c b/gtk/tr_core.c index 7934c2406..a63c457a4 100644 --- a/gtk/tr_core.c +++ b/gtk/tr_core.c @@ -282,46 +282,32 @@ static void setSort( TrCore * core, const char * mode, gboolean isReversed ) { int col = MC_TORRENT_RAW; - GtkSortType type; + GtkSortType type = isReversed ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; GtkTreeSortable * sortable = GTK_TREE_SORTABLE( core->model ); if( !strcmp( mode, "sort-by-activity" ) ) - { - type = isReversed ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; gtk_tree_sortable_set_sort_func( sortable, col, compareByActivity, NULL, NULL ); - } else if( !strcmp( mode, "sort-by-date-added" ) ) - { - type = isReversed ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; gtk_tree_sortable_set_sort_func( sortable, col, compareByDateAdded, NULL, NULL ); - } else if( !strcmp( mode, "sort-by-progress" ) ) - { - type = isReversed ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; gtk_tree_sortable_set_sort_func( sortable, col, compareByProgress, NULL, NULL ); - } else if( !strcmp( mode, "sort-by-state" ) ) - { - type = isReversed ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; gtk_tree_sortable_set_sort_func( sortable, col, compareByState, NULL, NULL ); - } else if( !strcmp( mode, "sort-by-tracker" ) ) - { - type = isReversed ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; gtk_tree_sortable_set_sort_func( sortable, col, compareByTracker, NULL, NULL ); - } - else - { + else { type = isReversed ? GTK_SORT_DESCENDING : GTK_SORT_ASCENDING; gtk_tree_sortable_set_sort_func( sortable, col, compareByName, NULL, NULL ); } + gtk_tree_sortable_set_sort_column_id( sortable, col, type ); } static void prefsChanged( TrCore * core, const char * key, gpointer data UNUSED ) { - if( !strcmp( key, PREF_KEY_SORT_MODE ) || !strcmp( key, PREF_KEY_SORT_REVERSED ) ) + if( !strcmp( key, PREF_KEY_SORT_MODE ) + || !strcmp( key, PREF_KEY_SORT_REVERSED ) ) { char * mode = pref_string_get( PREF_KEY_SORT_MODE ); gboolean isReversed = pref_flag_get( PREF_KEY_SORT_REVERSED ); @@ -347,10 +333,6 @@ tr_core_init( GTypeInstance * instance, gpointer g_class SHUTUP ) G_TYPE_INT /* ID for IPC */ }; -#ifdef REFDBG - fprintf( stderr, "core %p init\n", self ); -#endif - /* create the model used to store torrent data */ g_assert( ALEN( types ) == MC_ROW_COUNT ); store = gtk_list_store_newv( MC_ROW_COUNT, types ); @@ -367,7 +349,7 @@ tr_core_get_type( void ) { static GType type = 0; - if( 0 == type ) + if( !type ) { static const GTypeInfo info = { diff --git a/gtk/tr_window.c b/gtk/tr_window.c index 7265e4ec2..a3e695559 100644 --- a/gtk/tr_window.c +++ b/gtk/tr_window.c @@ -123,7 +123,8 @@ makeview( PrivateData * p ) g_signal_connect( view, "popup-menu", G_CALLBACK(on_popup_menu), NULL ); g_signal_connect( view, "button-press-event", - G_CALLBACK(on_tree_view_button_pressed), (void *) on_popup_menu); + G_CALLBACK(on_tree_view_button_pressed), + (void *) on_popup_menu); g_signal_connect( view, "row-activated", G_CALLBACK(view_row_activated), NULL); @@ -218,7 +219,8 @@ tr_window_new( GtkUIManager * ui_manager, TrCore * core ) /* listen for prefs changes that affect the window */ prefsChanged( core, PREF_KEY_MINIMAL_VIEW, self ); p->core = core; - p->pref_handler_id = g_signal_connect( core, "prefs-changed", G_CALLBACK(prefsChanged), self ); + p->pref_handler_id = g_signal_connect( core, "prefs-changed", + G_CALLBACK(prefsChanged), self ); return self; } @@ -227,8 +229,8 @@ void tr_window_update( TrWindow * self, float downspeed, float upspeed ) { PrivateData * p = get_private_data( self ); - char speedStr[64]; - char buf[128]; + char speedStr[32]; + char buf[64]; tr_strlspeed( speedStr, downspeed, sizeof(speedStr) ); g_snprintf( buf, sizeof(buf), _("Total DL: %s"), speedStr );