예제 #1
0
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 ) );
}
예제 #2
0
파일: util.c 프로젝트: ijuxda/transmission
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] );
}