예제 #1
0
 public static void Open(Zetbox.App.GUI.Icon obj)
 {
     if (obj.Blob != null)
     {
         obj.Blob.Open();
     }
 }
예제 #2
0
        public static void preSet_Blob(Zetbox.App.GUI.Icon obj, PropertyPreSetterEventArgs <Zetbox.App.Base.Blob> e)
        {
            // Delete old blob
            if (e.OldValue != null && e.OldValue != e.NewValue)
            {
                obj.Context.Delete(e.OldValue);
            }

            e.Result = e.NewValue;
        }
예제 #3
0
        public static void Upload(Zetbox.App.GUI.Icon obj)
        {
            // UI Code in Custom Actions!
            // ASP.NET would have a big Problem with that function
            string path = _factory.GetSourceFileNameFromUser();

            if (!string.IsNullOrEmpty(path))
            {
                var fi = new System.IO.FileInfo(path);
                int id = obj.Context.CreateBlob(fi, fi.GetMimeType());
                obj.Blob     = obj.Context.Find <Zetbox.App.Base.Blob>(id);
                obj.IconFile = obj.Blob.OriginalName;
            }
        }
예제 #4
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (!_initialized)
            {
                return(Binding.DoNothing);
            }
            try
            {
                Zetbox.App.GUI.Icon icon = null;
                if (value is Zetbox.App.Base.ObjectClass)
                {
                    Zetbox.App.Base.ObjectClass objClass = (Zetbox.App.Base.ObjectClass)value;
                    icon = objClass.DefaultIcon;
                }
                else if (value is Zetbox.App.GUI.Icon)
                {
                    icon = (Zetbox.App.GUI.Icon)value;
                }
                else if (value is IDataObject)
                {
                    IDataObject obj = (IDataObject)value;
                    icon = obj.GetObjectClass(FrozenContext).DefaultIcon;
                }
                else if (value is Zetbox.Client.Presentables.ViewModel)
                {
                    icon = ((Zetbox.Client.Presentables.ViewModel)value).Icon;
                }

                if (icon == null)
                {
                    return(Binding.DoNothing);
                }
                else
                {
                    // Not initialized yet
                    if (icon.ObjectState == DataObjectState.New)
                    {
                        return(Binding.DoNothing);
                    }

                    BitmapImage bmp;
                    if (!_cache.TryGetValue(icon.ExportGuid, out bmp))
                    {
                        var realIcon = Context.FindPersistenceObject <Zetbox.App.GUI.Icon>(icon.ExportGuid);
                        if (realIcon.Blob == null)
                        {
                            Logging.Log.WarnFormat("Icon#{0} has no associated request", realIcon.ID);
                            return(Binding.DoNothing);
                        }
                        bmp = new BitmapImage();
                        bmp.BeginInit();
                        bmp.StreamSource = realIcon.Blob.GetStream();
                        bmp.EndInit();
                        _cache[icon.ExportGuid] = bmp;
                    }
                    return(bmp);
                }
            }
            catch (Exception ex)
            {
                Logging.Facade.Info("Error while loading Icon", ex);
                return(Binding.DoNothing);
            }
        }