diff options
| author | Michael VanOverbeek <[email protected]> | 2016-07-25 12:57:52 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-07-25 12:57:52 -0400 |
| commit | 46c1c31302f111a1f3ec23a70e6f3986a9aa2a27 (patch) | |
| tree | f00af7ea3f6ad2641fb26fa1d310fd8b7179b39c /source/ShiftUI/Enums/DataFormats.cs | |
| parent | af48e774189596b8d7a058c564a7d6d75205ca03 (diff) | |
| parent | 6fa16209519896de09949a27425dff00ebf2970a (diff) | |
| download | shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.tar.gz shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.tar.bz2 shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.zip | |
Merge pull request #17 from MichaelTheShifter/shiftui_integration
Shiftui integration
Diffstat (limited to 'source/ShiftUI/Enums/DataFormats.cs')
| -rw-r--r-- | source/ShiftUI/Enums/DataFormats.cs | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/source/ShiftUI/Enums/DataFormats.cs b/source/ShiftUI/Enums/DataFormats.cs new file mode 100644 index 0000000..a70851d --- /dev/null +++ b/source/ShiftUI/Enums/DataFormats.cs @@ -0,0 +1,229 @@ +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// Copyright (c) 2005 Novell, Inc. (http://www.novell.com) +// +// Authors: +// Peter Bartok ([email protected]) +// +// + +// COMPLETE + +using System; +using System.Collections; +using System.Text; + +namespace ShiftUI +{ + public class DataFormats + { + public class Format + { + static readonly object lockobj = new object (); + + private static Format formats; + private string name; + private int id; + private Format next; + internal bool is_serializable; + + public Format (string name, int id) + { + this.name = name; + this.id = id; + + lock (lockobj) { + if (formats == null) + formats = this; + else { + Format f = formats; + while (f.next != null) + f = f.next; + f.next = this; + } + } + } + + #region Public Instance Properties + public int Id { + get { + return this.id; + } + } + + public string Name { + get { + return this.name; + } + } + + internal Format Next { + get { + return this.next; + } + } + #endregion // Public Instance Properties + + #region Private Methods + internal static Format Add (string name) + { + Format f; + + f = Find (name); + if (f == null) { + IntPtr cliphandle; + + cliphandle = XplatUI.ClipboardOpen (false); + f = new Format (name, XplatUI.ClipboardGetID (cliphandle, name)); + XplatUI.ClipboardClose (cliphandle); + } + return f; + } + + internal static Format Add (int id) { + Format f; + + f = Find (id); + if (f == null) + f = new Format("Format" + id.ToString(), id); + return f; + } + + internal static Format Find (int id) { + Format f; + + f = formats; + while ((f != null) && (f.Id != id)) + f = f.next; + return f; + } + + internal static Format Find (string name) { + Format f; + + f = formats; + while ((f != null) && (!f.Name.Equals(name))) + f = f.next; + return f; + } + + internal static Format List { + get { + return formats; + } + } + #endregion // Private Methods + } + + private DataFormats () + { + } + + #region Public Static Fields + public static readonly string Bitmap = "Bitmap"; + public static readonly string CommaSeparatedValue = "Csv"; + public static readonly string Dib = "DeviceIndependentBitmap"; + public static readonly string Dif = "DataInterchangeFormat"; + public static readonly string EnhancedMetafile = "EnhancedMetafile"; + public static readonly string FileDrop = "FileDrop"; + public static readonly string Html = "HTML Format"; + public static readonly string Locale = "Locale"; + public static readonly string MetafilePict = "MetaFilePict"; + public static readonly string OemText = "OEMText"; + public static readonly string Palette = "Palette"; + public static readonly string PenData = "PenData"; + public static readonly string Riff = "RiffAudio"; + public static readonly string Rtf = "Rich Text Format"; + public static readonly string Serializable = "WindowsForms10PersistentObject"; + public static readonly string StringFormat = "System.String"; + public static readonly string SymbolicLink = "SymbolicLink"; + public static readonly string Text = "Text"; + public static readonly string Tiff = "Tiff"; + public static readonly string UnicodeText = "UnicodeText"; + public static readonly string WaveAudio = "WaveAudio"; + #endregion // Public Static Fields + + private static object lock_object = new object (); + private static bool initialized; + + // we don't want to force the creation of a new format + internal static bool ContainsFormat (int id) + { + lock (lock_object) { + if (!initialized) + Init (); + + return Format.Find (id) != null; + } + } + + public static Format GetFormat (int id) + { + lock (lock_object) { + if (!initialized) + Init (); + return Format.Find (id); + } + } + + public static Format GetFormat (string format) + { + lock (lock_object) { + if (!initialized) + Init (); + return Format.Add (format); + } + } + + // Assumes we are locked on the lock_object when it is called + private static void Init () + { + if (initialized) + return; + IntPtr cliphandle = XplatUI.ClipboardOpen(false); + + new Format (Text, XplatUI.ClipboardGetID (cliphandle, Text)); + new Format (Bitmap, XplatUI.ClipboardGetID (cliphandle, Bitmap)); + new Format (MetafilePict, XplatUI.ClipboardGetID (cliphandle, MetafilePict)); + new Format (SymbolicLink, XplatUI.ClipboardGetID (cliphandle, SymbolicLink)); + new Format (Dif, XplatUI.ClipboardGetID (cliphandle, Dif)) ; + new Format (Tiff, XplatUI.ClipboardGetID (cliphandle, Tiff)); + new Format (OemText, XplatUI.ClipboardGetID (cliphandle, OemText)); + new Format (Dib, XplatUI.ClipboardGetID (cliphandle, Dib)); + new Format (Palette, XplatUI.ClipboardGetID (cliphandle, Palette)); + new Format (PenData, XplatUI.ClipboardGetID (cliphandle, PenData)); + new Format (Riff, XplatUI.ClipboardGetID (cliphandle, Riff)); + new Format (WaveAudio, XplatUI.ClipboardGetID (cliphandle, WaveAudio)); + new Format (UnicodeText, XplatUI.ClipboardGetID (cliphandle, UnicodeText)); + new Format (EnhancedMetafile, XplatUI.ClipboardGetID (cliphandle, EnhancedMetafile)); + new Format (FileDrop, XplatUI.ClipboardGetID (cliphandle, FileDrop)); + new Format (Locale, XplatUI.ClipboardGetID (cliphandle, Locale)); + new Format (CommaSeparatedValue, XplatUI.ClipboardGetID (cliphandle, CommaSeparatedValue)); + new Format (Html, XplatUI.ClipboardGetID (cliphandle, Html)); + new Format (Rtf, XplatUI.ClipboardGetID (cliphandle, Rtf)); + new Format (Serializable, XplatUI.ClipboardGetID (cliphandle, Serializable)); + new Format (StringFormat, XplatUI.ClipboardGetID (cliphandle, StringFormat)); + + XplatUI.ClipboardClose (cliphandle); + + initialized = true; + } + } +} |
