コード例 #1
0
 protected static string CreateFilterEntry(ImageEditor e)
 {
     string fileDialogDescription = e.GetFileDialogDescription();
     string str2 = CreateExtensionsString(e.GetExtensions(), ",");
     string str3 = CreateExtensionsString(e.GetExtensions(), ";");
     return (fileDialogDescription + "(" + str2 + ")|" + str3);
 }
コード例 #2
0
        /// <include file='doc\ImageEditor.uex' path='docs/doc[@for="ImageEditor.CreateFilterEntry"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        protected static string CreateFilterEntry(ImageEditor e)
        {
            string desc      = e.GetFileDialogDescription();
            string exts      = CreateExtensionsString(e.GetExtensions(), ",");
            string extsSemis = CreateExtensionsString(e.GetExtensions(), ";");

            return(desc + "(" + exts + ")|" + extsSemis);
        }
コード例 #3
0
ファイル: ImageEditor.cs プロジェクト: ZeroInfinite/winforms
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (!provider.TryGetService(out IWindowsFormsEditorService editorService))
            {
                return(value);
            }

            if (_fileDialog is null)
            {
                _fileDialog = new OpenFileDialog();
                string filter = CreateFilterEntry(this);
                foreach (Type extender in GetImageExtenders())
                {
                    // Skip invalid extenders.
                    if (extender is null || !typeof(ImageEditor).IsAssignableFrom(extender))
                    {
                        continue;
                    }

                    ImageEditor e = (ImageEditor)Activator.CreateInstance(
                        extender,
                        BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance,
                        null,
                        null,
                        null);

                    Type myClass = GetType();
                    if (!myClass.Equals(e.GetType()) && e != null && myClass.IsInstanceOfType(e))
                    {
                        filter += $"|{CreateFilterEntry(e)}";
                    }
                }

                _fileDialog.Filter = filter;
            }

            IntPtr hwndFocus = User32.GetFocus();

            try
            {
                if (_fileDialog.ShowDialog() == DialogResult.OK)
                {
                    using FileStream stream = new(_fileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                    value = LoadFromStream(stream);
                }
            }
            finally
            {
                if (hwndFocus != IntPtr.Zero)
                {
                    User32.SetFocus(hwndFocus);
                }
            }

            return(value);
        }
コード例 #4
0
ファイル: ImageEditor.cs プロジェクト: pmq20/mono_forked
        protected static string CreateFilterEntry(ImageEditor e)
        {
            StringBuilder sb     = new StringBuilder();
            string        ExtStr = CreateExtensionsString(e.GetExtensions(), ";");

            sb.Append(e.GetFileDialogDescription());
            sb.Append(" (" + ExtStr + ")" + "|");
            sb.Append(ExtStr);
            return(sb.ToString());
        }
コード例 #5
0
ファイル: ImageEditor.cs プロジェクト: ZeroInfinite/winforms
        protected static string CreateFilterEntry(ImageEditor e)
        {
            ArgumentNullException.ThrowIfNull(e);

            string[] extenders   = e.GetExtensions();
            string   description = e.GetFileDialogDescription();
            string   extensions  = CreateExtensionsString(extenders, ",");
            string   extensionsWithSemicolons = CreateExtensionsString(extenders, ";");

            return($"{description}({extensions})|{extensionsWithSemicolons}");
        }
コード例 #6
0
        /// <summary>
        /// Edits the given object value using the editor style provided by
        /// GetEditorStyle. A service provider is provided so that any
        /// required editing services can be obtained.
        /// </summary>
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (provider != null)
            {
                if (provider.GetService(typeof(IWindowsFormsEditorService)) is IWindowsFormsEditorService edSvc)
                {
                    if (_fileDialog == null)
                    {
                        _fileDialog = new OpenFileDialog();
                        string filter = CreateFilterEntry(this);
                        foreach (Type extender in GetImageExtenders())
                        {
                            // Skip invalid extenders.
                            if (extender == null || !typeof(ImageEditor).IsAssignableFrom(extender))
                            {
                                continue;
                            }

                            ImageEditor e       = (ImageEditor)Activator.CreateInstance(extender, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance, null, null, null);
                            Type        myClass = GetType();
                            if (!myClass.Equals(e.GetType()) && e != null && myClass.IsInstanceOfType(e))
                            {
                                filter += "|" + CreateFilterEntry(e);
                            }
                        }

                        _fileDialog.Filter = filter;
                    }

                    IntPtr hwndFocus = UnsafeNativeMethods.GetFocus();
                    try
                    {
                        if (_fileDialog.ShowDialog() == DialogResult.OK)
                        {
                            using (var file = new FileStream(_fileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.Read))
                            {
                                value = LoadFromStream(file);
                            }
                        }
                    }
                    finally
                    {
                        if (hwndFocus != IntPtr.Zero)
                        {
                            UnsafeNativeMethods.SetFocus(new HandleRef(null, hwndFocus));
                        }
                    }
                }
            }

            return(value);
        }
コード例 #7
0
        protected static string CreateFilterEntry(ImageEditor e)
        {
            if (e == null)
            {
                throw new ArgumentNullException(nameof(e));
            }

            string[] extenders = e.GetExtensions();
            string   desc      = e.GetFileDialogDescription();
            string   exts      = CreateExtensionsString(extenders, ",");
            string   extsSemis = CreateExtensionsString(extenders, ";");

            return(desc + "(" + exts + ")|" + extsSemis);
        }
コード例 #8
0
        protected virtual string[] GetExtensions()
        {
            ArrayList list = new ArrayList();

            for (int i = 0; i < this.GetImageExtenders().Length; i++)
            {
                ImageEditor editor = (ImageEditor)Activator.CreateInstance(this.GetImageExtenders()[i], BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, null, null);
                if (!editor.GetType().Equals(typeof(ImageEditor)))
                {
                    list.AddRange(new ArrayList(editor.GetExtensions()));
                }
            }
            return((string[])list.ToArray(typeof(string)));
        }
コード例 #9
0
ファイル: ImageEditor.cs プロジェクト: weiplanet/winforms
        [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust.
        protected virtual string[] GetExtensions()
        {
            // We should probably smash them together...
            ArrayList list = new ArrayList();

            for (int i = 0; i < GetImageExtenders().Length; i++)
            {
                ImageEditor e = (ImageEditor)Activator.CreateInstance(GetImageExtenders()[i], BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance, null, null, null);   //.CreateInstance();
                if (e.GetType() != typeof(ImageEditor))
                {
                    list.AddRange(new ArrayList(e.GetExtensions()));
                }
            }
            return((string[])list.ToArray(typeof(string)));
        }
コード例 #10
0
ファイル: ImageEditor.cs プロジェクト: weiplanet/winforms
        [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust.
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (provider != null)
            {
                IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

                if (edSvc != null)
                {
                    if (fileDialog == null)
                    {
                        fileDialog = new OpenFileDialog();
                        string filter = CreateFilterEntry(this);
                        for (int i = 0; i < GetImageExtenders().Length; i++)
                        {
                            ImageEditor e           = (ImageEditor)Activator.CreateInstance(GetImageExtenders()[i], BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance, null, null, null); //.CreateInstance();
                            Type        myClass     = this.GetType();
                            Type        editorClass = e.GetType();
                            if (!myClass.Equals(editorClass) && e != null && myClass.IsInstanceOfType(e))
                            {
                                filter += "|" + CreateFilterEntry(e);
                            }
                        }
                        fileDialog.Filter = filter;
                    }

                    IntPtr hwndFocus = UnsafeNativeMethods.GetFocus();
                    try
                    {
                        if (fileDialog.ShowDialog() == DialogResult.OK)
                        {
                            FileStream file = new FileStream(fileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                            value = LoadFromStream(file);
                        }
                    }
                    finally
                    {
                        if (hwndFocus != IntPtr.Zero)
                        {
                            UnsafeNativeMethods.SetFocus(new HandleRef(null, hwndFocus));
                        }
                    }
                }
            }
            return(value);
        }
コード例 #11
0
 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 {
     if ((provider != null) && (((IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService))) != null))
     {
         if (this.fileDialog == null)
         {
             this.fileDialog = new OpenFileDialog();
             string str = CreateFilterEntry(this);
             for (int i = 0; i < this.GetImageExtenders().Length; i++)
             {
                 ImageEditor o     = (ImageEditor)Activator.CreateInstance(this.GetImageExtenders()[i], BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, null, null);
                 System.Type type  = base.GetType();
                 System.Type type2 = o.GetType();
                 if ((!type.Equals(type2) && (o != null)) && type.IsInstanceOfType(o))
                 {
                     str = str + "|" + CreateFilterEntry(o);
                 }
             }
             this.fileDialog.Filter = str;
         }
         IntPtr focus = System.Drawing.Design.UnsafeNativeMethods.GetFocus();
         try
         {
             if (this.fileDialog.ShowDialog() == DialogResult.OK)
             {
                 FileStream stream = new FileStream(this.fileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                 value = this.LoadFromStream(stream);
             }
         }
         finally
         {
             if (focus != IntPtr.Zero)
             {
                 System.Drawing.Design.UnsafeNativeMethods.SetFocus(new HandleRef(null, focus));
             }
         }
     }
     return(value);
 }
コード例 #12
0
 protected static string CreateFilterEntry(ImageEditor e)
 {
     throw null;
 }
コード例 #13
0
ファイル: ImageEditor.cs プロジェクト: Profit0004/mono
		protected static string CreateFilterEntry (ImageEditor e)
		{
			StringBuilder sb = new StringBuilder();
			string ExtStr = CreateExtensionsString (e.GetExtensions(), ";");

			sb.Append (e.GetFileDialogDescription());
			sb.Append (" (" + ExtStr + ")" + "|");
			sb.Append (ExtStr);
			return sb.ToString();
		}
コード例 #14
0
		public ImageIndexEditor():base()
		{
			m_ImageEditor=System.ComponentModel.TypeDescriptor.GetEditor(typeof(System.Drawing.Image),typeof(UITypeEditor)) as ImageEditor;
		}
コード例 #15
0
 protected static string CreateFilterEntry(System.Drawing.Design.ImageEditor e)
 {
     throw null;
 }