Hi,

I'm just looking at this bug and am trying to work out what to do with the the 
image filepath once I have gotten it from the user. FYI, I'm new to Pixbuf and 
friends...

Here is my dodgy work in progress code (warts and all)

----------------------------------------------------------------------------------------
  private void HandleExternalFileSelectionChanged (object sender, EventArgs 
args)
                {
                        // FIXME: Declan asks, Is the following needed?
                         //if (args.ResponseId != Gtk.ResponseType.Ok) {
                                // FIXME this is to work around a bug in gtk+ 
where
                                // the filesystem events are still listened to 
when
                                // a FileChooserButton is destroyed but not 
finalized
                                // and an event comes in that wants to update 
the child widgets.
                         //       Dialog.Destroy ();
                         //       external_photo_chooser.Dispose ();
                         //       external_photo_chooser = null;
                         //       return;
                        //}

                        if (external_photo_chooser.Uri != null) {
                                Gnome.Vfs.Uri dest = new Gnome.Vfs.Uri 
(external_photo_chooser.Uri);
                                Console.WriteLine (external_photo_chooser.Uri);

//START OF COPY AND PASTED CODE FROM HandleSelectionChanged
                                int x, y, width, height;
                                Gdk.Pixbuf tmp = null;

                                image_view.GetSelection (out x, out y, out 
width, out height);

                                if (image_view.Pixbuf != null) {
                                        if (width > 0 && height > 0) {
                                                //tmp = new Gdk.Pixbuf 
(image_view.Pixbuf, x, y, width, height);
                                                tmp = new 
Gdk.Pixbuf(external_photo_chooser.Uri, x, y, width, height);

                                                PreviewPixbuf = 
PixbufUtils.TagIconFromPixbuf (tmp);

                                                tmp.Dispose ();
                                        } else {
                                                PreviewPixbuf = 
PixbufUtils.TagIconFromPixbuf (image_view.Pixbuf);
                                        }
                                }
//END OF COPY AND PASTED CODE

                        }
                        Console.WriteLine ("Happy talk like a pirate day!");
                }
----------------------------------------------------------------------------------------

I select a photo and ok the Edit Icon dialog and nothing much happens. Then I 
ok the Edit Tag dialog (which opened the Edit Icon dialog) and get the error

---------------------------------------------------------------------------------------
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixdata_from_pixbuf: assertion 
`GDK_IS_PIXBUF (pixbuf)' failed

(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixdata_serialize: assertion 
`pixdata->magic == GDK_PIXBUF_MAGIC_NUMBER' failed
error System.ArgumentNullException: Argument cannot be null.
  at <0x00000> <unknown method>
  at (wrapper managed-to-native) 
System.Runtime.InteropServices.Marshal:copy_from_unmanaged 
(intptr,int,System.Array,int)
  at System.Runtime.InteropServices.Marshal.Copy (IntPtr source, System.Byte[] 
destination, Int32 startIndex, Int32 length) [0x00000] 
  at PixbufSerializer.Serialize (Gdk.Pixbuf pixbuf) [0x00000] 
  at TagStore.GetIconString (.Tag tag) [0x00000] 
  at TagStore.Commit (.DbItem item, Boolean update_xmp) [0x00000] 
  at TagCommands+Edit.Execute (.Tag t) [0x00000] 

(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `pixbuf 
!= NULL' failed
(f-spot:20102): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `pixbuf 
!= NULL' failed

-------------------------------------------------------------------------------------

Why isn't an icon being generated from the file the user entered? Also, any 
tips on getting the preview image to change in the Edit Icon dialog?

All the best,
Declan
_______________________________________________
F-spot-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/f-spot-list

Reply via email to