コード例 #1
0
        /// <summary>
        /// Delete a display.
        /// </summary>
        /// <param name="pDisplay">The display we want to delete.</param>
        public static void DeleteDisplay(Display pDisplay)
        {
            // Check we have good data.
            if (pDisplay == null)
            {
                throw new ArgumentNullException("Cannot delete a null display.");
            }
            if (pDisplay.IsDeleted())
            {
                throw new ArgumentNullException("Cannot delete a deleted display.");
            }

            // Remove it from its surface, if attached.
            var pSurface = pDisplay.ActiveSurface;

            if (pSurface != null)
            {
                pSurface.Authority_DetachDisplay(pDisplay);
            }

            // Release any resources created for it.
            pDisplay.Authority_Delete();

            // Remove it from the list of displays.
            Authority._ActiveDisplays.Remove(pDisplay);

            // Log the happening.  That is a weird film btw.
            Log.Write("Display '" + pDisplay.ToString() + "' deleted.", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }
コード例 #2
0
        /// <summary>
        /// Remove a display from its current surface. Use with care.
        /// </summary>
        /// <remarks>N.B You must call 'pDisplay.Delete()' when you are finished with it if you don't put it back on a surface.</remarks>
        /// <param name="pDisplay">The display we want to remove from its surface.</param>
        public static void RemoveDisplay(Display pDisplay)
        {
            // Check we have good data.
            if (pDisplay == null)
            {
                throw new ArgumentNullException("Cannot remove a null display.");
            }
            if (pDisplay.IsDeleted())
            {
                throw new ArgumentNullException("Cannot remove a deleted display.");
            }

            // Remove the view from the current surface.
            var pOldSurface = pDisplay.ActiveSurface;

            if (pOldSurface != null)
            {
                pDisplay.ActiveSurface.Authority_DetachDisplay(pDisplay);
            }

            // Remove it from the list of displays.
            Authority._ActiveDisplays.Remove(pDisplay);

            // Write a log message.
            Log.Write("Display '" + pDisplay.ToString() + "' removed.", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }
コード例 #3
0
        /// <summary>
        /// Move a display from one surface to another.
        /// </summary>
        /// <param name="pDisplay">The display we want to move.</param>
        /// <param name="pNewSurface">The surface we want to move it too.</param>
        public static void MoveDisplay(Display pDisplay, Surface pNewSurface)
        {
            // Check we have good data.
            if (pDisplay == null)
            {
                throw new ArgumentNullException("Cannot move a null display.");
            }
            if (pNewSurface == null)
            {
                throw new ArgumentNullException("Cannot move display to a null surface.");
            }
            if (pDisplay.IsDeleted())
            {
                throw new ArgumentNullException("Cannot move a deleted display.");
            }
            if (pNewSurface.IsDeleted())
            {
                throw new ArgumentNullException("Cannot move display to a deleted surface.");
            }

            // Drop if the new and old are the same.
            if (pDisplay.ActiveSurface == pNewSurface)
            {
                return;
            }

            // Check we can move to the new surface.
            if (pNewSurface.ActiveDisplay != null)
            {
                throw new Exception("Cannot move a display to the new surface because it is currently occupied.");
            }

            // Remove the view from the current surface.
            var pOldSurface = pDisplay.ActiveSurface;

            if (pOldSurface != null)
            {
                pDisplay.ActiveSurface.Authority_DetachDisplay(pDisplay);
            }

            // Attach it to the new one.
            pNewSurface.Authority_AttachDisplay(pDisplay);

            // Write a log message.
            Log.Write("Display moved from '" + pOldSurface.ToString() + "' to '" + pNewSurface.ToString() + "'.", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }
コード例 #4
0
        /// <summary>
        /// Show a display on a given surface.
        /// </summary>
        /// <remarks>This will throw exceptions if this is not possible.  Ensure neither the display is already open or the surface is occupied.</remarks>
        /// <param name="pDisplay">The display to show.</param>
        /// <param name="pSurface">The surface to show it on.</param>
        public static void ShowDisplay(Display pDisplay, Surface pSurface)
        {
            // Check we have good data.
            if (pDisplay == null)
            {
                throw new ArgumentNullException("Cannot show null display.");
            }
            if (pSurface == null)
            {
                throw new ArgumentNullException("Cannot show display on a null surface.");
            }
            if (pDisplay.IsDeleted())
            {
                throw new ArgumentNullException("Cannot show a deleted display.");
            }
            if (pSurface.IsDeleted())
            {
                throw new ArgumentNullException("Cannot show display on a deleted surface.");
            }

            // Check neither the display or surface are occupied.
            if (pDisplay.ActiveSurface != null)
            {
                throw new Exception("Cannot show this display because it is already active somewhere else.");
            }
            if (pSurface.ActiveDisplay != null)
            {
                throw new Exception("Cannot show a display on this surface because it is currently occupied.");
            }

            // Attach it to the surface.
            pSurface.Authority_AttachDisplay(pDisplay);
            Authority._ActiveDisplays.Add(pDisplay);

            // Write a log message.
            Log.Write("Attached display '" + pDisplay.ToString() + "' to surface '" + pSurface.Identifier + "'", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }
コード例 #5
0
ファイル: Authority.cs プロジェクト: iNabarawy/ubidisplays
        /// <summary>
        /// Delete a display.
        /// </summary>
        /// <param name="pDisplay">The display we want to delete.</param>
        public static void DeleteDisplay(Display pDisplay)
        {
            // Check we have good data.
            if (pDisplay == null) throw new ArgumentNullException("Cannot delete a null display.");
            if (pDisplay.IsDeleted()) throw new ArgumentNullException("Cannot delete a deleted display.");

            // Remove it from its surface, if attached.
            var pSurface = pDisplay.ActiveSurface;
            if (pSurface != null)
            {
                pSurface.Authority_DetachDisplay(pDisplay);
            }

            // Release any resources created for it.
            pDisplay.Authority_Delete();

            // Remove it from the list of displays.
            Authority._ActiveDisplays.Remove(pDisplay);

            // Log the happening.  That is a weird film btw.
            Log.Write("Display '"+pDisplay.ToString()+"' deleted.", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }
コード例 #6
0
ファイル: Authority.cs プロジェクト: iNabarawy/ubidisplays
        /// <summary>
        /// Remove a display from its current surface. Use with care.
        /// </summary>
        /// <remarks>N.B You must call 'pDisplay.Delete()' when you are finished with it if you don't put it back on a surface.</remarks>
        /// <param name="pDisplay">The display we want to remove from its surface.</param>
        public static void RemoveDisplay(Display pDisplay)
        {
            // Check we have good data.
            if (pDisplay == null) throw new ArgumentNullException("Cannot remove a null display.");
            if (pDisplay.IsDeleted()) throw new ArgumentNullException("Cannot remove a deleted display.");

            // Remove the view from the current surface.
            var pOldSurface = pDisplay.ActiveSurface;
            if (pOldSurface != null)
                pDisplay.ActiveSurface.Authority_DetachDisplay(pDisplay);

            // Remove it from the list of displays.
            Authority._ActiveDisplays.Remove(pDisplay);

            // Write a log message.
            Log.Write("Display '"+pDisplay.ToString()+"' removed.", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }
コード例 #7
0
ファイル: Authority.cs プロジェクト: iNabarawy/ubidisplays
        /// <summary>
        /// Move a display from one surface to another.
        /// </summary>
        /// <param name="pDisplay">The display we want to move.</param>
        /// <param name="pNewSurface">The surface we want to move it too.</param>
        public static void MoveDisplay(Display pDisplay, Surface pNewSurface)
        {
            // Check we have good data.
            if (pDisplay == null) throw new ArgumentNullException("Cannot move a null display.");
            if (pNewSurface == null) throw new ArgumentNullException("Cannot move display to a null surface.");
            if (pDisplay.IsDeleted()) throw new ArgumentNullException("Cannot move a deleted display.");
            if (pNewSurface.IsDeleted()) throw new ArgumentNullException("Cannot move display to a deleted surface.");

            // Drop if the new and old are the same.
            if (pDisplay.ActiveSurface == pNewSurface)
                return;
            
            // Check we can move to the new surface.
            if (pNewSurface.ActiveDisplay != null)
                throw new Exception("Cannot move a display to the new surface because it is currently occupied.");

            // Remove the view from the current surface.
            var pOldSurface = pDisplay.ActiveSurface;
            if (pOldSurface != null)
                pDisplay.ActiveSurface.Authority_DetachDisplay(pDisplay);

            // Attach it to the new one.
            pNewSurface.Authority_AttachDisplay(pDisplay);

            // Write a log message.
            Log.Write("Display moved from '" + pOldSurface.ToString()+ "' to '"+pNewSurface.ToString()+"'.", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }
コード例 #8
0
ファイル: Authority.cs プロジェクト: iNabarawy/ubidisplays
        /// <summary>
        /// Show a display on a given surface.
        /// </summary>
        /// <remarks>This will throw exceptions if this is not possible.  Ensure neither the display is already open or the surface is occupied.</remarks>
        /// <param name="pDisplay">The display to show.</param>
        /// <param name="pSurface">The surface to show it on.</param>
        public static void ShowDisplay(Display pDisplay, Surface pSurface)
        {
            // Check we have good data.
            if (pDisplay == null) throw new ArgumentNullException("Cannot show null display.");
            if (pSurface == null) throw new ArgumentNullException("Cannot show display on a null surface.");
            if (pDisplay.IsDeleted()) throw new ArgumentNullException("Cannot show a deleted display.");
            if (pSurface.IsDeleted()) throw new ArgumentNullException("Cannot show display on a deleted surface.");

            // Check neither the display or surface are occupied.
            if (pDisplay.ActiveSurface != null) throw new Exception("Cannot show this display because it is already active somewhere else.");
            if (pSurface.ActiveDisplay != null) throw new Exception("Cannot show a display on this surface because it is currently occupied.");

            // Attach it to the surface.
            pSurface.Authority_AttachDisplay(pDisplay);
            Authority._ActiveDisplays.Add(pDisplay);

            // Write a log message.
            Log.Write("Attached display '"+pDisplay.ToString()+"' to surface '"+pSurface.Identifier+"'", AUTHORITY_LOG_SOURCE, Log.Type.DisplayInfo);
        }