Changeset 10101


Ignore:
Timestamp:
Feb 5, 2010, 1:59:44 PM (12 years ago)
Author:
charles
Message:

(trunk gtk) #2864 "when adding a non-BitTorrent? magnet link fails, explain why to the user" -- implemented for GTK+ client for 1.90

Location:
trunk/gtk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/add-dialog.c

    r10100 r10101  
    492492            else
    493493            {
    494                 GtkWidget * w = gtk_message_dialog_new( GTK_WINDOW( dialog ), 0,
    495                                                         GTK_MESSAGE_ERROR,
    496                                                         GTK_BUTTONS_CLOSE,
    497                                                         "%s", _( "Unrecognized URL" ) );
    498                 gtk_message_dialog_format_secondary_text( GTK_MESSAGE_DIALOG( w ),
    499                     _( "Transmission doesn't know how to use \"%s\"" ), url );
    500                 g_signal_connect_swapped( w, "response",
    501                                           G_CALLBACK( gtk_widget_destroy ), w );
    502                 gtk_widget_show( w );
     494                gtr_unrecognized_url_dialog( GTK_WIDGET( dialog ), url );
    503495                destroy = FALSE;
    504496            }
  • trunk/gtk/tr-core.c

    r10084 r10101  
    10431043{
    10441044    tr_session * session = tr_core_session( core );
    1045 
    1046     if( gtr_is_magnet_link( url ) || gtr_is_hex_hashcode( url ) )
     1045    const gboolean is_magnet_link = gtr_is_magnet_link( url );
     1046
     1047    if( is_magnet_link || gtr_is_hex_hashcode( url ) )
    10471048    {
    10481049        int err;
     
    10551056        err = tr_ctorSetMetainfoFromMagnetLink( ctor, url );
    10561057
    1057         if( !err )
     1058        if( err )
     1059        {
     1060            gtr_unrecognized_url_dialog( NULL, url );
     1061            tr_ctorFree( ctor );
     1062        }
     1063        else
    10581064        {
    10591065            tr_session * session = tr_core_session( core );
     
    10631069            else
    10641070                g_message( "tr_torrent_new_ctor err %d", err );
    1065         }
    1066         else
    1067         {
    1068             GtkWidget * w = gtk_message_dialog_new( NULL, 0,
    1069                                                     GTK_MESSAGE_ERROR,
    1070                                                     GTK_BUTTONS_CLOSE,
    1071                                                     "%s", _( "Unrecognized URL" ) );
    1072             gtk_message_dialog_format_secondary_text( GTK_MESSAGE_DIALOG( w ),
    1073                 _( "Transmission doesn't know how to use \"%s\"" ), url );
    1074             g_signal_connect_swapped( w, "response",
    1075                                       G_CALLBACK( gtk_widget_destroy ), w );
    1076             gtk_widget_show( w );
    1077             tr_ctorFree( ctor );
    10781071        }
    10791072
  • trunk/gtk/util.c

    r10079 r10101  
    352352}
    353353
     354static GtkWindow *
     355getWindow( GtkWidget * w )
     356{
     357    if( w == NULL )
     358        return NULL;
     359
     360    if( GTK_IS_WINDOW( w ) )
     361        return GTK_WINDOW( w );
     362
     363    return GTK_WINDOW( gtk_widget_get_ancestor( w, GTK_TYPE_WINDOW ) );
     364}
     365
    354366void
    355367addTorrentErrorDialog( GtkWidget *  child,
     
    357369                       const char * filename )
    358370{
    359     GtkWidget *  w;
    360     GtkWidget *  win;
     371    char * secondary;
    361372    const char * fmt;
    362     char *       secondary;
     373    GtkWidget * w;
     374    GtkWindow * win = getWindow( child );
    363375
    364376    switch( err )
     
    369381    }
    370382    secondary = g_strdup_printf( fmt, filename );
    371     win = ( !child || GTK_IS_WINDOW( child ) )
    372           ? child
    373           : gtk_widget_get_ancestor( child ? GTK_WIDGET(
    374                                          child ) : NULL, GTK_TYPE_WINDOW );
    375     w = gtk_message_dialog_new( GTK_WINDOW( win ),
    376                                GTK_DIALOG_DESTROY_WITH_PARENT,
    377                                GTK_MESSAGE_ERROR,
    378                                GTK_BUTTONS_CLOSE,
    379                                "%s", _( "Error opening torrent" ) );
     383
     384    w = gtk_message_dialog_new( win,
     385                                GTK_DIALOG_DESTROY_WITH_PARENT,
     386                                GTK_MESSAGE_ERROR,
     387                                GTK_BUTTONS_CLOSE,
     388                                "%s", _( "Error opening torrent" ) );
    380389    gtk_message_dialog_format_secondary_text( GTK_MESSAGE_DIALOG( w ),
    381390                                              "%s", secondary );
     
    385394    g_free( secondary );
    386395}
     396
    387397typedef void ( PopupFunc )( GtkWidget*, GdkEventButton* );
    388398
     
    807817#endif
    808818}
     819
     820void
     821gtr_unrecognized_url_dialog( GtkWidget * parent, const char * url )
     822{
     823    const char * xt = "xt=urn:btih";
     824
     825    GtkWindow * window = getWindow( parent );
     826
     827    GString * gstr = g_string_new( NULL );
     828
     829    GtkWidget * w = gtk_message_dialog_new( window, 0,
     830                                            GTK_MESSAGE_ERROR,
     831                                            GTK_BUTTONS_CLOSE,
     832                                            "%s", _( "Unrecognized URL" ) );
     833
     834    g_string_append_printf( gstr, _( "Transmission doesn't know how to use \"%s\"" ), url );
     835
     836    if( gtr_is_magnet_link( url ) && ( strstr( url, xt ) == NULL ) )
     837    {
     838        g_string_append_printf( gstr, "\n \n" );
     839        g_string_append_printf( gstr, _( "This magnet link appears to be intended for something other than BitTorrent.  BitTorrent magnet links have a section containing \"%s\"." ), xt );
     840    }
     841
     842    gtk_message_dialog_format_secondary_text( GTK_MESSAGE_DIALOG( w ), "%s", gstr->str );
     843    g_signal_connect_swapped( w, "response", G_CALLBACK( gtk_widget_destroy ), w );
     844    gtk_widget_show( w );
     845    g_string_free( gstr, TRUE );
     846}
  • trunk/gtk/util.h

    r10079 r10101  
    134134***/
    135135
     136void gtr_unrecognized_url_dialog( GtkWidget * parent, const char * url );
     137
     138
    136139void addTorrentErrorDialog( GtkWidget  * window_or_child,
    137140                            int          err,
Note: See TracChangeset for help on using the changeset viewer.