Changeset 4849
- Timestamp:
- Jan 28, 2008, 4:27:20 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1.0x/gtk/makemeta-ui.c
r4845 r4849 27 27 typedef struct 28 28 { 29 char torrent_name[2048];30 29 GtkWidget * size_lb; 31 30 GtkWidget * pieces_lb; … … 35 34 GtkWidget * private_check; 36 35 GtkWidget * dialog; 37 GtkWidget * progress_dialog; 36 38 37 tr_metainfo_builder * builder; 39 38 tr_handle * handle; 39 40 gboolean isBuilding; 40 41 } 41 42 MakeMetaUI; … … 51 52 52 53 static 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 } 54 refreshButtons( 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 62 static void 63 setIsBuilding( 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 ); 65 74 } 66 75 … … 77 86 fraction = (double)ui->builder->pieceIndex / denom; 78 87 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) ); 80 89 gtk_progress_bar_set_text( p, buf ); 81 90 82 91 if( ui->builder->isDone ) 83 92 { 84 GtkWidget * w;85 86 93 if( ui->builder->failed ) 87 94 { … … 89 96 ? _("Torrent creation aborted.") 90 97 : _("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 ); 97 101 } 98 102 else 99 103 { 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 ); 106 108 } 107 109 … … 119 121 { 120 122 MakeMetaUI * ui = (MakeMetaUI*) user_data; 121 GtkWidget *w, *p, *fr;122 123 char *tmp; 123 124 char buf[1024]; … … 126 127 if( response != GTK_RESPONSE_ACCEPT ) 127 128 { 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 129 144 return; 130 145 } 131 146 132 if( ui->builder == NULL )147 if( ui->builder == NULL || ui->isBuilding ) 133 148 return; 134 149 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 ); 144 151 145 152 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 ); 156 156 g_free( tmp ); 157 157 … … 163 163 164 164 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); 166 166 } 167 167 … … 176 176 char * filename; 177 177 char sizeStr[128]; 178 char buf[ 512];178 char buf[MAX_PATH_LENGTH]; 179 179 uint64_t totalSize=0; 180 180 int fileCount=0, pieceCount=0, pieceSize=0; … … 186 186 187 187 filename = gtk_file_chooser_get_filename( chooser ); 188 if( filename ) { 188 if( !filename ) 189 *buf = '\0'; 190 else { 189 191 ui->builder = tr_metaInfoBuilderCreate( ui->handle, filename ); 192 g_snprintf( buf, sizeof(buf), "%s.torrent (%d%%)", filename, 0 ); 190 193 g_free( filename ); 191 194 fileCount = ui->builder->fileCount; … … 194 197 pieceSize = ui->builder->pieceSize; 195 198 } 199 gtk_progress_bar_set_text( GTK_PROGRESS_BAR( ui->progressbar ), buf ); 200 refreshButtons( ui ); 196 201 197 202 tr_strlsize( sizeStr, totalSize, sizeof(sizeStr) ); … … 223 228 int row = 0; 224 229 GtkWidget *d, *t, *w, *h, *rb_file, *rb_dir; 230 GtkBox * main_vbox; 225 231 char name[256]; 226 232 MakeMetaUI * ui = g_new0 ( MakeMetaUI, 1 ); … … 231 237 GTK_DIALOG_DESTROY_WITH_PARENT, 232 238 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 239 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, 233 240 GTK_STOCK_NEW, GTK_RESPONSE_ACCEPT, 234 241 NULL ); … … 236 243 g_object_set_data_full( G_OBJECT(d), "ui", ui, freeMetaUI ); 237 244 ui->dialog = d; 245 main_vbox = GTK_BOX( GTK_DIALOG( d )->vbox ); 238 246 239 247 t = hig_workarea_create (); … … 292 300 hig_workarea_add_row (t, &row, name, w, NULL ); 293 301 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 ); 294 314 295 315 gtk_window_set_default_size( GTK_WINDOW(d), 400u, 0u ); 296 gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(d)->vbox), t );297 316 gtk_widget_show_all( GTK_DIALOG(d)->vbox ); 317 setIsBuilding( ui, FALSE ); 298 318 return d; 299 319 }
Note: See TracChangeset
for help on using the changeset viewer.