static void onOpenURLResponse( GtkDialog * dialog, int response, gpointer user_data ) { gboolean destroy = TRUE; if( response == GTK_RESPONSE_ACCEPT ) { GtkWidget * e = GTK_WIDGET( g_object_get_data( G_OBJECT( dialog ), "url-entry" ) ); char * url = g_strdup( gtk_entry_get_text( GTK_ENTRY( e ) ) ); g_strstrip( url ); if( url && *url ) { TrCore * core = user_data; if( gtr_is_supported_url( url ) || gtr_is_magnet_link( url ) || gtr_is_hex_hashcode( url ) ) { tr_core_add_from_url( core, url ); } else { gtr_unrecognized_url_dialog( GTK_WIDGET( dialog ), url ); destroy = FALSE; } } g_free( url ); } if( destroy ) gtk_widget_destroy( GTK_WIDGET( dialog ) ); }
void gtr_paste_clipboard_url_into_entry( GtkWidget * e ) { size_t i; char * text[] = { gtk_clipboard_wait_for_text( gtk_clipboard_get( GDK_SELECTION_PRIMARY ) ), gtk_clipboard_wait_for_text( gtk_clipboard_get( GDK_SELECTION_CLIPBOARD ) ) }; for( i=0; i<G_N_ELEMENTS(text); ++i ) { char * s = text[i]; if( s && ( gtr_is_supported_url( s ) || gtr_is_magnet_link( s ) || gtr_is_hex_hashcode( s ) ) ) { gtk_entry_set_text( GTK_ENTRY( e ), s ); break; } } for( i=0; i<G_N_ELEMENTS(text); ++i ) g_free( text[i] ); }