Changeset 4849


Ignore:
Timestamp:
Jan 28, 2008, 4:27:20 AM (14 years ago)
Author:
charles
Message:

(gtk 1.0x) #654: "create new torrent" dialog cleanup by wereHamster and charles_

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.0x/gtk/makemeta-ui.c

    r4845 r4849  
    2727typedef struct
    2828{
    29     char torrent_name[2048];
    3029    GtkWidget * size_lb;
    3130    GtkWidget * pieces_lb;
     
    3534    GtkWidget * private_check;
    3635    GtkWidget * dialog;
    37     GtkWidget * progress_dialog;
     36
    3837    tr_metainfo_builder * builder;
    3938    tr_handle * handle;
     39
     40    gboolean isBuilding;
    4041}
    4142MakeMetaUI;
     
    5152
    5253static void
    53 progress_response_cb ( GtkDialog *d UNUSED, int response, gpointer user_data )
    54 {
    55     MakeMetaUI * ui = (MakeMetaUI *) user_data;
    56 
    57     if( response == GTK_RESPONSE_CANCEL )
    58     {
    59         ui->builder->abortFlag = TRUE;
    60     }
    61     else
    62     {
    63         gtk_widget_destroy( ui->dialog );
    64     }
     54refreshButtons( MakeMetaUI * ui )
     55{
     56    GtkDialog * d = GTK_DIALOG( ui->dialog );
     57    gtk_dialog_set_response_sensitive( d, GTK_RESPONSE_ACCEPT, !ui->isBuilding && ( ui->builder!=NULL ) );
     58    gtk_dialog_set_response_sensitive( d, GTK_RESPONSE_CLOSE, !ui->isBuilding );
     59    gtk_dialog_set_response_sensitive( d, GTK_RESPONSE_CANCEL, ui->isBuilding );
     60}
     61
     62static void
     63setIsBuilding( MakeMetaUI * ui, gboolean isBuilding )
     64{
     65    ui->isBuilding = isBuilding;
     66
     67    if( ui->builder != NULL )
     68        ui->builder->failed = FALSE;
     69
     70    if( !isBuilding )
     71        gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR( ui->progressbar ), 0 );
     72
     73    refreshButtons( ui );
    6574}
    6675
     
    7786    fraction = (double)ui->builder->pieceIndex / denom;
    7887    gtk_progress_bar_set_fraction( p, fraction );
    79     g_snprintf( buf, sizeof(buf), "%s (%d%%)", ui->torrent_name, (int)(fraction*100));
     88    g_snprintf( buf, sizeof(buf), "%s.torrent (%d%%)", ui->builder->top, (int)(fraction*100) );
    8089    gtk_progress_bar_set_text( p, buf );
    8190
    8291    if( ui->builder->isDone )
    8392    {
    84         GtkWidget * w;
    85 
    8693        if( ui->builder->failed )
    8794        {
     
    8996                ? _("Torrent creation aborted.")
    9097                : _("Torrent creation failed.");
    91             w = gtk_message_dialog_new (GTK_WINDOW(ui->progress_dialog),
    92                                         GTK_DIALOG_DESTROY_WITH_PARENT,
    93                                         GTK_MESSAGE_ERROR,
    94                                         GTK_BUTTONS_CLOSE, reason );
    95             gtk_dialog_run( GTK_DIALOG( w ) );
    96             gtk_widget_destroy( ui->progress_dialog );
     98
     99            gtk_progress_bar_set_text( p, reason );
     100            gtk_progress_bar_set_fraction( p, 0 );
    97101        }
    98102        else
    99103        {
    100             GtkWidget * w = ui->progress_dialog;
    101             gtk_window_set_title (GTK_WINDOW(ui->progress_dialog), _("Torrent Created"));
    102             gtk_dialog_set_response_sensitive (GTK_DIALOG(w), GTK_RESPONSE_CANCEL, FALSE);
    103             gtk_dialog_set_response_sensitive (GTK_DIALOG(w), GTK_RESPONSE_CLOSE, TRUE);
    104             gtk_progress_bar_set_text( p, buf );
    105         }
     104            gtk_progress_bar_set_text( p, _("Torrent Created") );
     105        }
     106
     107        setIsBuilding( ui, FALSE );
    106108    }
    107109
     
    119121{
    120122    MakeMetaUI * ui = (MakeMetaUI*) user_data;
    121     GtkWidget *w, *p, *fr;
    122123    char *tmp;
    123124    char buf[1024];
     
    126127    if( response != GTK_RESPONSE_ACCEPT )
    127128    {
    128         gtk_widget_destroy( GTK_WIDGET( d ) );
     129        if( ui->builder == NULL )
     130        {
     131            gtk_widget_destroy( GTK_WIDGET( d ) );
     132            return;
     133        }
     134
     135        if( ui->builder->isDone || !ui->isBuilding )
     136        {
     137            gtk_widget_destroy( ui->dialog );
     138        }
     139        else
     140        {
     141            ui->builder->abortFlag = TRUE;
     142        }
     143       
    129144        return;
    130145    }
    131146
    132     if( ui->builder == NULL )
     147    if( ui->builder == NULL || ui->isBuilding )
    133148        return;
    134149
    135     w = gtk_dialog_new_with_buttons( _("Making Torrent..."),
    136                                      GTK_WINDOW(d),
    137                                      GTK_DIALOG_DESTROY_WITH_PARENT,
    138                                      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
    139                                      GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
    140                                      NULL );
    141     g_signal_connect( w, "response", G_CALLBACK(progress_response_cb), ui );
    142     ui->progress_dialog = w;
    143     gtk_dialog_set_response_sensitive (GTK_DIALOG(w), GTK_RESPONSE_CLOSE, FALSE);
     150    setIsBuilding( ui, TRUE );
    144151
    145152    tmp = g_path_get_basename (ui->builder->top);
    146     g_snprintf( ui->torrent_name, sizeof(ui->torrent_name), "%s.torrent", tmp );
    147     g_snprintf( buf, sizeof(buf), "%s (%d%%)", ui->torrent_name, 0);
    148     p = ui->progressbar = gtk_progress_bar_new ();
    149     gtk_progress_bar_set_text( GTK_PROGRESS_BAR(p), buf );
    150     fr = gtk_frame_new (NULL);
    151     gtk_frame_set_shadow_type (GTK_FRAME(fr), GTK_SHADOW_NONE);
    152     gtk_container_set_border_width( GTK_CONTAINER(fr), 20 );
    153     gtk_container_add (GTK_CONTAINER(fr), p);
    154     gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(w)->vbox), fr );
    155     gtk_widget_show_all ( w );
     153    g_snprintf( buf, sizeof(buf), "%s.torrent (%d%%)", ui->builder->top, 0 );
     154
     155    gtk_progress_bar_set_text( GTK_PROGRESS_BAR(ui->progressbar), buf );
    156156    g_free( tmp );
    157157
     
    163163
    164164    tag = g_timeout_add (UPDATE_INTERVAL_MSEC, refresh_cb, ui);
    165     g_object_set_data_full (G_OBJECT(w), "tag", GUINT_TO_POINTER(tag), remove_tag);
     165    g_object_set_data_full (G_OBJECT(d), "tag", GUINT_TO_POINTER(tag), remove_tag);
    166166}
    167167
     
    176176    char * filename;
    177177    char sizeStr[128];
    178     char buf[512];
     178    char buf[MAX_PATH_LENGTH];
    179179    uint64_t totalSize=0;
    180180    int fileCount=0, pieceCount=0, pieceSize=0;
     
    186186
    187187    filename = gtk_file_chooser_get_filename( chooser );
    188     if( filename ) {
     188    if( !filename )
     189        *buf = '\0';
     190    else {
    189191        ui->builder = tr_metaInfoBuilderCreate( ui->handle, filename );
     192        g_snprintf( buf, sizeof(buf), "%s.torrent (%d%%)", filename, 0 );
    190193        g_free( filename );
    191194        fileCount = ui->builder->fileCount;
     
    194197        pieceSize = ui->builder->pieceSize;
    195198    }
     199    gtk_progress_bar_set_text( GTK_PROGRESS_BAR( ui->progressbar ), buf );
     200    refreshButtons( ui );
    196201
    197202    tr_strlsize( sizeStr, totalSize, sizeof(sizeStr) );
     
    223228    int row = 0;
    224229    GtkWidget *d, *t, *w, *h, *rb_file, *rb_dir;
     230    GtkBox * main_vbox;
    225231    char name[256];
    226232    MakeMetaUI * ui = g_new0 ( MakeMetaUI, 1 );
     
    231237                                     GTK_DIALOG_DESTROY_WITH_PARENT,
    232238                                     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
     239                                     GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
    233240                                     GTK_STOCK_NEW, GTK_RESPONSE_ACCEPT,
    234241                                     NULL );
     
    236243    g_object_set_data_full( G_OBJECT(d), "ui", ui, freeMetaUI );
    237244    ui->dialog = d;
     245    main_vbox = GTK_BOX( GTK_DIALOG( d )->vbox );
    238246
    239247    t = hig_workarea_create ();
     
    292300        hig_workarea_add_row (t, &row, name, w, NULL );
    293301
     302    hig_workarea_finish( t, &row );
     303    gtk_box_pack_start_defaults( main_vbox, t );
     304
     305    w = gtk_frame_new( NULL );
     306    gtk_frame_set_shadow_type( GTK_FRAME( w ), GTK_SHADOW_NONE );
     307    gtk_container_set_border_width( GTK_CONTAINER( w ), GUI_PAD_BIG );
     308   
     309        ui->progressbar = gtk_progress_bar_new( );
     310        gtk_progress_bar_set_text( GTK_PROGRESS_BAR( ui->progressbar), _( "No Files Selected" ) );
     311        gtk_container_add( GTK_CONTAINER( w ), ui->progressbar );
     312
     313    gtk_box_pack_start( main_vbox, w, FALSE, FALSE, GUI_PAD_BIG );
    294314
    295315    gtk_window_set_default_size( GTK_WINDOW(d), 400u, 0u );
    296     gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(d)->vbox), t );
    297316    gtk_widget_show_all( GTK_DIALOG(d)->vbox );
     317    setIsBuilding( ui, FALSE );
    298318    return d;
    299319}
Note: See TracChangeset for help on using the changeset viewer.