private void Upload() { album.UploadProgress += HandleUploadProgress; sent_bytes = 0; approx_size = 0; System.Console.WriteLine("Starting Upload to Picasa"); FilterSet filters = new FilterSet(); filters.Add(new JpegFilter()); if (scale) { filters.Add(new ResizeFilter((uint)size)); } if (rotate) { filters.Add(new OrientationFilter()); } while (photo_index < items.Length) { try { IBrowsableItem item = items[photo_index]; FileInfo file_info; Console.WriteLine("uploading {0}", photo_index); progress_dialog.Message = String.Format(Catalog.GetString("Uploading picture \"{0}\" ({1} of {2})"), item.Name, photo_index + 1, items.Length); photo_index++; FilterRequest request = new FilterRequest(item.DefaultVersionUri); filters.Convert(request); file_info = new FileInfo(request.Current.LocalPath); if (approx_size == 0) //first image { approx_size = file_info.Length * items.Length; } else { approx_size = sent_bytes * items.Length / (photo_index - 1); } PicasaPicture picture = album.UploadPicture(request.Current.LocalPath, Path.ChangeExtension(item.Name, "jpg"), item.Description); if (Core.Database != null && item is Photo) { Core.Database.Exports.Create((item as Photo).Id, (item as Photo).DefaultVersionId, ExportStore.PicasaExportType, picture.Link); } sent_bytes += file_info.Length; request.Dispose(); //tagging if (item.Tags != null) { foreach (Tag tag in item.Tags) { picture.AddTag(tag.Name); } } } catch (System.Exception e) { progress_dialog.Message = String.Format(Catalog.GetString("Error Uploading To Gallery: {0}"), e.Message); progress_dialog.ProgressText = Catalog.GetString("Error"); System.Console.WriteLine(e); if (progress_dialog.PerformRetrySkip()) { photo_index--; } } } progress_dialog.Message = Catalog.GetString("Done Sending Photos"); progress_dialog.Fraction = 1.0; progress_dialog.ProgressText = Catalog.GetString("Upload Complete"); progress_dialog.ButtonLabel = Gtk.Stock.Ok; if (browser) { GnomeUtil.UrlShow(null, album.Link); } }