public Gdk.Pixbuf GetImage(IProject project) { if (image != null) { return(image); } switch (source) { case ImageSource.Resource: if (project.ResourceProvider == null) { return(null); } System.IO.Stream s = project.ResourceProvider.GetResourceStream(name); if (s == null) { return(null); } try { return(image = new Gdk.Pixbuf(s)); } catch { // Not a valid image return(WidgetUtils.MissingIcon); } case ImageSource.Theme: return(image = WidgetUtils.LoadIcon(name, size)); case ImageSource.File: try { string file = Path.Combine(project.ImagesRootPath, name); return(image = new Gdk.Pixbuf(file)); } catch { return(WidgetUtils.MissingIcon); } } return(null); }