Re: [Patch] Export to Original.



Hi!

I've made some additions to the original exporter. Things work rather
nicely, but somehow I get a strange nullpointer: 
(F-Spot:12733): Gtk-CRITICAL **: gtk_text_attributes_ref: assertion
`values != NULL' failed

(F-Spot:12733): Gtk-CRITICAL **: gtk_text_attributes_ref: assertion
`values != NULL' failed

Unhandled Exception: System.NullReferenceException: Object reference not
set to an instance of an object
in (unmanaged) (wrapper managed-to-native) Gtk.Application:gtk_main ()
in <0x00004> (wrapper managed-to-native) Gtk.Application:gtk_main ()
in <0x00007> Gtk.Application:Run ()
in <0x00007> Gnome.Program:Run ()
in [0x00076] (at /home/kriberg/skole/gnome-greier/f-spot/src/main.cs:30)
Driver:Main (string[])


My glade-foo isn't all that great either, as the description textview
expands the dialog window, allthough it shouldn't do.


-- 
Kristian Berg
? original-fixes.patch
? src/f-spot.gladep
Index: src/OriginalExport.cs
===================================================================
RCS file: /cvs/gnome/f-spot/src/OriginalExport.cs,v
retrieving revision 1.4
diff -u -r1.4 OriginalExport.cs
--- src/OriginalExport.cs	22 Jan 2005 02:09:35 -0000	1.4
+++ src/OriginalExport.cs	24 Jan 2005 01:33:46 -0000
@@ -38,16 +38,27 @@
 		//[Glade.Widget] Gtk.CheckButton meta_check;
 		[Glade.Widget] Gtk.CheckButton scale_check;
 		[Glade.Widget] Gtk.CheckButton open_check;
+		[Glade.Widget] Gtk.CheckButton high_quality_check;
+		[Glade.Widget] Gtk.CheckButton medium_quality_check;
+		[Glade.Widget] Gtk.CheckButton zip_check;
 
 		[Glade.Widget] Gtk.Entry width_entry;
 		[Glade.Widget] Gtk.Entry height_entry;
+		[Glade.Widget] Gtk.Entry title_entry;
+
+		[Glade.Widget] Gtk.TextView description_textview;
+		
 
 		Gnome.Vfs.Uri dest;
 		
 		int photo_index;
 		bool open;
+		bool high_quality;
+		bool medium_quality;
+		bool zip_files;
 		string gallery_name = "web-gallery";
-		// FIME this needs to be a real temp directory
+		string description = "";
+		// FIXME this needs to be a real temp directory
 		string gallery_path = Path.Combine (Path.GetTempPath (), "f-spot-original-" + System.DateTime.Now.Ticks.ToString ());
 
 		FSpot.ThreadProgressDialog progress_dialog;
@@ -112,7 +123,7 @@
 				if (dest.IsLocal)
 					gallery_path = Gnome.Vfs.Uri.GetLocalPathFromUri (dest.ToString ());
 
-				OriginalGallery gallery = new OriginalGallery(selection, gallery_path, gallery_name);
+				OriginalGallery gallery = new OriginalGallery(selection, gallery_path, gallery_name, high_quality, medium_quality, zip_files, description);
 				gallery.StartProcessing ();
 
 				// we've created the structure, now if the destination was local we are done
@@ -204,7 +215,19 @@
 
 			dest = new Gnome.Vfs.Uri (uri_entry.Text);
 			open = open_check.Active;
+			high_quality = high_quality_check.Active;
+			medium_quality = medium_quality_check.Active;
+			zip_files = zip_check.Active;
 
+			
+			if (title_entry.Text != "") {
+				this.gallery_name = title_entry.Text;
+			}
+			
+			if (description_textview.Buffer.Text != "") {
+				this.description = description_textview.Buffer.Text;
+			}
+				
 			command_thread = new System.Threading.Thread (new System.Threading.ThreadStart (Upload));
 			command_thread.Name = Mono.Posix.Catalog.GetString ("Transfering Pictures");
 
@@ -213,8 +236,7 @@
 			// 2: zipfiles
 			// 9: directories + info.txt + .htaccess
 			// this should actually be 1 anyway, because we transfer just one dir 
-			progress_dialog = new FSpot.ThreadProgressDialog (command_thread, 
-									  1);
+			progress_dialog = new FSpot.ThreadProgressDialog (command_thread, 1);
 			progress_dialog.Start ();
 		}
 	}
@@ -224,17 +246,25 @@
 		private IPhotoCollection selection;
 		private string gallery_name;
 		private string gallery_path;
+		private string description = "";
+		private bool high_quality;
+		private bool medium_quality;
+		private bool zip_files;
 		private bool setmtime = false;
 		private int photo_index = 1; //used to name files
 
 		FSpot.ThreadProgressDialog progress_dialog;
 		System.Threading.Thread command_thread;
 		
-		public OriginalGallery (IPhotoCollection selection, string path, string gallery_name)
+		public OriginalGallery (IPhotoCollection selection, string path, string gallery_name, bool high_quality, bool medium_quality, bool zip_files, string description)
 		{
 			this.selection = selection;
 			this.gallery_name = gallery_name;
 			this.gallery_path = Path.Combine (path, gallery_name);
+			this.high_quality = high_quality;
+			this.medium_quality = medium_quality;
+			this.zip_files = zip_files;
+			this.description = description;
 		}
 		
 		public void StartProcessing()
@@ -254,7 +284,7 @@
 					CreateImages(photo.Path);
 					CreateComments(photo.Path);
 
-					//Set the directory's mtime sa the oldest photo's one.
+					//Set the directory's mtime as the oldest photo's one.
 					if (!setmtime)
 					{
 						try {
@@ -265,8 +295,10 @@
 				
 					photo_index++;
 				}
-				CreateZipFile("mq");
-				CreateZipFile("hq");
+				if (zip_files) {
+					CreateZipFile("mq");
+					CreateZipFile("hq");
+				}
 			
 			} catch (System.Exception e) {
 				System.Console.WriteLine (e.ToString ());
@@ -279,11 +311,17 @@
 			try {
 				Directory.CreateDirectory(gallery_path);
 				Directory.CreateDirectory(SubdirPath ("thumbs"));
-				Directory.CreateDirectory(SubdirPath ("lq"));
-				Directory.CreateDirectory(SubdirPath ("mq"));
-				Directory.CreateDirectory(SubdirPath ("hq"));
 				Directory.CreateDirectory(SubdirPath ("comments"));
-				Directory.CreateDirectory(SubdirPath ("zip"));
+				Directory.CreateDirectory(SubdirPath ("lq"));
+				if (medium_quality) {
+					Directory.CreateDirectory(SubdirPath ("mq"));
+				}
+				if (high_quality) {
+					Directory.CreateDirectory(SubdirPath ("hq"));
+				}				
+				if (zip_files) {
+					Directory.CreateDirectory(SubdirPath ("zip"));
+				}
 			} catch {
 				Console.WriteLine("Error in creating directory" + gallery_path);
 			}
@@ -296,15 +334,20 @@
 			
 			string [] keys = {"quality"};
 			string [] values = {"75"};
+			string path;
 
 			// scale the images to different sizes
 		       
-			// High quality is the orignal image
-			File.Copy(photo_path, SubdirPath ("hq", img_name), true);
+			if (high_quality) {
+				// High quality is the orignal image
+				File.Copy(photo_path, SubdirPath ("hq", img_name), true);
+			}
 			
-			// Medium Quality
-			string path = SubdirPath ("mq", img_name);
-			source_image.Savev(path, "jpeg", keys, values);
+			if (medium_quality) {
+				// Medium Quality
+				path = SubdirPath ("mq", img_name);
+				source_image.Savev(path, "jpeg", keys, values);
+			}
 			
 			//low quality
 			Gdk.Pixbuf scaled = PixbufUtils.ScaleToMaxSize (source_image, 640, 480);
@@ -393,6 +436,8 @@
 		{
 			StreamWriter info = File.CreateText(Path.Combine (gallery_path, "info.txt"));
 			info.WriteLine("date|" + selection.Photos[0].Time.Date.ToString ("dd.MM.yyyy"));
+			if (description != "")
+				info.WriteLine("description|" + description);
 			info.Close();
 		}
 		
Index: src/f-spot.glade
===================================================================
RCS file: /cvs/gnome/f-spot/src/f-spot.glade,v
retrieving revision 1.66
diff -u -r1.66 f-spot.glade
--- src/f-spot.glade	21 Jan 2005 23:44:23 -0000	1.66
+++ src/f-spot.glade	24 Jan 2005 01:33:46 -0000
@@ -8791,79 +8791,107 @@
 		  <property name="shadow_type">GTK_SHADOW_NONE</property>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment40">
+		    <widget class="GtkVBox" id="vbox52">
 		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
 
 		      <child>
-			<widget class="GtkVBox" id="vbox52">
+			<widget class="GtkAlignment" id="alignment41">
 			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
 
 			  <child>
-			    <widget class="GtkHBox" id="hbox44">
+			    <widget class="GtkHBox" id="hbox45">
 			      <property name="visible">True</property>
 			      <property name="homogeneous">False</property>
-			      <property name="spacing">0</property>
+			      <property name="spacing">6</property>
 
 			      <child>
-				<widget class="GtkCheckButton" id="scale_check">
+				<widget class="GtkLabel" id="label135">
 				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes">Scale images to no larger than: </property>
-				  <property name="use_underline">True</property>
-				  <property name="relief">GTK_RELIEF_NORMAL</property>
-				  <property name="focus_on_click">True</property>
-				  <property name="active">False</property>
-				  <property name="inconsistent">True</property>
-				  <property name="draw_indicator">True</property>
+				  <property name="label" translatable="yes">Album title:</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
 				</widget>
 				<packing>
 				  <property name="padding">0</property>
 				  <property name="expand">False</property>
-				  <property name="fill">True</property>
+				  <property name="fill">False</property>
 				</packing>
 			      </child>
 
 			      <child>
-				<widget class="GtkEntry" id="width_entry">
+				<widget class="GtkEntry" id="title_entry">
 				  <property name="visible">True</property>
 				  <property name="can_focus">True</property>
 				  <property name="editable">True</property>
 				  <property name="visibility">True</property>
-				  <property name="max_length">3</property>
-				  <property name="text" translatable="yes"></property>
+				  <property name="max_length">0</property>
+				  <property name="text" translatable="yes">Web-gallery</property>
 				  <property name="has_frame">True</property>
 				  <property name="invisible_char">*</property>
 				  <property name="activates_default">False</property>
-				  <property name="width_chars">5</property>
 				</widget>
 				<packing>
 				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
 				</packing>
 			      </child>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment50">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox46">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">6</property>
 
 			      <child>
-				<widget class="GtkLabel" id="label132">
+				<widget class="GtkLabel" id="label136">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">x</property>
+				  <property name="label" translatable="yes">Description:</property>
 				  <property name="use_underline">False</property>
 				  <property name="use_markup">False</property>
 				  <property name="justify">GTK_JUSTIFY_LEFT</property>
 				  <property name="wrap">False</property>
 				  <property name="selectable">False</property>
 				  <property name="xalign">0.5</property>
-				  <property name="yalign">0.5</property>
+				  <property name="yalign">0</property>
 				  <property name="xpad">0</property>
 				  <property name="ypad">0</property>
 				</widget>
@@ -8875,32 +8903,267 @@
 			      </child>
 
 			      <child>
-				<widget class="GtkEntry" id="height_entry">
+				<widget class="GtkScrolledWindow" id="scrolledwindow5">
 				  <property name="visible">True</property>
 				  <property name="can_focus">True</property>
-				  <property name="editable">True</property>
-				  <property name="visibility">True</property>
-				  <property name="max_length">0</property>
-				  <property name="text" translatable="yes"></property>
-				  <property name="has_frame">True</property>
-				  <property name="invisible_char">*</property>
-				  <property name="activates_default">False</property>
-				  <property name="width_chars">5</property>
+				  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+				  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+				  <property name="shadow_type">GTK_SHADOW_IN</property>
+				  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+				  <child>
+				    <widget class="GtkTextView" id="description_textview">
+				      <property name="visible">True</property>
+				      <property name="can_focus">True</property>
+				      <property name="editable">True</property>
+				      <property name="overwrite">False</property>
+				      <property name="accepts_tab">True</property>
+				      <property name="justification">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap_mode">GTK_WRAP_WORD</property>
+				      <property name="cursor_visible">True</property>
+				      <property name="pixels_above_lines">0</property>
+				      <property name="pixels_below_lines">0</property>
+				      <property name="pixels_inside_wrap">0</property>
+				      <property name="left_margin">0</property>
+				      <property name="right_margin">0</property>
+				      <property name="indent">0</property>
+				      <property name="text" translatable="yes"></property>
+				    </widget>
+				  </child>
 				</widget>
 				<packing>
 				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment45">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="high_quality_check">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Create high quality images using original size</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment46">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="medium_quality_check">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Create medium quality images</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment40">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">24</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkVBox" id="vbox52">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">6</property>
+
+			      <child>
+				<widget class="GtkHBox" id="hbox44">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">0</property>
+
+				  <child>
+				    <widget class="GtkCheckButton" id="scale_check">
+				      <property name="visible">True</property>
+				      <property name="can_focus">True</property>
+				      <property name="label" translatable="yes">Scale images to no larger than: </property>
+				      <property name="use_underline">True</property>
+				      <property name="relief">GTK_RELIEF_NORMAL</property>
+				      <property name="focus_on_click">True</property>
+				      <property name="active">False</property>
+				      <property name="inconsistent">True</property>
+				      <property name="draw_indicator">True</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">True</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkEntry" id="width_entry">
+				      <property name="visible">True</property>
+				      <property name="can_focus">True</property>
+				      <property name="editable">True</property>
+				      <property name="visibility">True</property>
+				      <property name="max_length">3</property>
+				      <property name="text" translatable="yes"></property>
+				      <property name="has_frame">True</property>
+				      <property name="invisible_char">*</property>
+				      <property name="activates_default">False</property>
+				      <property name="width_chars">5</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="label132">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">x</property>
+				      <property name="use_underline">False</property>
+				      <property name="use_markup">False</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0.5</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkEntry" id="height_entry">
+				      <property name="visible">True</property>
+				      <property name="can_focus">True</property>
+				      <property name="editable">True</property>
+				      <property name="visibility">True</property>
+				      <property name="max_length">0</property>
+				      <property name="text" translatable="yes"></property>
+				      <property name="has_frame">True</property>
+				      <property name="invisible_char">*</property>
+				      <property name="activates_default">False</property>
+				      <property name="width_chars">5</property>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
 				</packing>
 			      </child>
 			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
 			  </child>
 			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment48">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="zip_check">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Create zip files.</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
 		      </child>
 		    </widget>
 		  </child>
@@ -8908,7 +9171,7 @@
 		  <child>
 		    <widget class="GtkLabel" id="label133">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;b&gt;Style&lt;/b&gt;</property>
+		      <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
 		      <property name="use_underline">False</property>
 		      <property name="use_markup">True</property>
 		      <property name="justify">GTK_JUSTIFY_LEFT</property>

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]