mirror of
https://github.com/ZuneDev/MicrosoftIris.git
synced 2026-07-27 13:13:29 -07:00
Add project files.
This commit is contained in:
@@ -0,0 +1,425 @@
|
||||
// Decompiled with JetBrains decompiler
|
||||
// Type: Microsoft.Iris.Window
|
||||
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
||||
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
|
||||
// Assembly location: C:\Program Files\Zune\UIX.dll
|
||||
|
||||
using Microsoft.Iris.Drawing;
|
||||
using Microsoft.Iris.Library;
|
||||
using Microsoft.Iris.Render;
|
||||
using Microsoft.Iris.Session;
|
||||
using Microsoft.Iris.UI;
|
||||
using Microsoft.Iris.ViewItems;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
|
||||
namespace Microsoft.Iris
|
||||
{
|
||||
public class Window : INotifyPropertyChanged
|
||||
{
|
||||
private WindowPositionPolicy _initialPositionPolicy;
|
||||
private UIForm _form;
|
||||
|
||||
internal Window(UIForm form)
|
||||
{
|
||||
_form = form;
|
||||
_form.CloseRequested += new FormCloseRequestedHandler(OnCloseRequested);
|
||||
_form.SessionConnect += new FormSessionConnectHandler(OnSessionConnect);
|
||||
_form.PropertyChanged += new FormPropertyChangedHandler(OnPropertyChanged);
|
||||
}
|
||||
|
||||
public WindowSize InitialClientSize
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
Size initialClientSize = _form.InitialClientSize;
|
||||
return new WindowSize(initialClientSize.Width, initialClientSize.Height);
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.InitialClientSize = new Size(value.Width, value.Height);
|
||||
}
|
||||
}
|
||||
|
||||
public WindowSize ClientSize
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
Size clientSize = _form.ClientSize;
|
||||
return new WindowSize(clientSize.Width, clientSize.Height);
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.ClientSize = new Size(value.Width, value.Height);
|
||||
}
|
||||
}
|
||||
|
||||
public WindowPosition Position
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
Point position = _form.Position;
|
||||
return new WindowPosition(position.X, position.Y);
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.Position = new Point(value.X, value.Y);
|
||||
}
|
||||
}
|
||||
|
||||
public WindowState WindowState
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.WindowState;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.WindowState = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Visible
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.Visible;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.Visible = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Active => _form.ActivationState;
|
||||
|
||||
public bool MouseActive => !_form.MouseIsIdle;
|
||||
|
||||
public string GetSavedPosition() => GetSavedPosition(false);
|
||||
|
||||
public string GetSavedPosition(bool disallowMinimized)
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
FormPlacement finalPlacement = _form.FinalPlacement;
|
||||
if (finalPlacement.ShowState == 2U && disallowMinimized)
|
||||
finalPlacement.ShowState = 1U;
|
||||
return InvariantString.Format("{0},{1},{2},{3},{4},{5},{6}", finalPlacement.ShowState, finalPlacement.NormalPosition.X, finalPlacement.NormalPosition.Y, finalPlacement.NormalPosition.Width, finalPlacement.NormalPosition.Height, finalPlacement.MaximizedLocation.X, finalPlacement.MaximizedLocation.Y);
|
||||
}
|
||||
|
||||
public void SetSavedInitialPosition(string cookie) => SetSavedInitialPositionWorker(cookie, 0U);
|
||||
|
||||
public void SetSavedInitialPosition(string cookie, WindowState stateOverride)
|
||||
{
|
||||
uint showStateOverride;
|
||||
switch (stateOverride)
|
||||
{
|
||||
case WindowState.Normal:
|
||||
showStateOverride = 1U;
|
||||
break;
|
||||
case WindowState.Minimized:
|
||||
showStateOverride = 2U;
|
||||
break;
|
||||
case WindowState.Maximized:
|
||||
showStateOverride = 3U;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("Invalid WindowState value");
|
||||
}
|
||||
SetSavedInitialPositionWorker(cookie, showStateOverride);
|
||||
}
|
||||
|
||||
private void SetSavedInitialPositionWorker(string cookie, uint showStateOverride)
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
string[] strArray = cookie != null ? cookie.Split(',') : throw new ArgumentNullException(nameof(cookie));
|
||||
bool flag = false;
|
||||
if (strArray.Length == 7)
|
||||
{
|
||||
try
|
||||
{
|
||||
FormPlacement formPlacement;
|
||||
formPlacement.ShowState = uint.Parse(strArray[0], NumberFormatInfo.InvariantInfo);
|
||||
formPlacement.NormalPosition = new Rectangle(int.Parse(strArray[1], NumberFormatInfo.InvariantInfo), int.Parse(strArray[2], NumberFormatInfo.InvariantInfo), int.Parse(strArray[3], NumberFormatInfo.InvariantInfo), int.Parse(strArray[4], NumberFormatInfo.InvariantInfo));
|
||||
formPlacement.MaximizedLocation = new Point(int.Parse(strArray[5], NumberFormatInfo.InvariantInfo), int.Parse(strArray[6], NumberFormatInfo.InvariantInfo));
|
||||
if (showStateOverride != 0U)
|
||||
formPlacement.ShowState = showStateOverride;
|
||||
if (formPlacement.NormalPosition.Width != 0)
|
||||
{
|
||||
if (formPlacement.NormalPosition.Height != 0)
|
||||
_form.InitialPlacement = formPlacement;
|
||||
}
|
||||
}
|
||||
catch (FormatException ex)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
catch (OverflowException ex)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
flag = true;
|
||||
if (flag)
|
||||
throw new ArgumentOutOfRangeException("Invalid saved window position.");
|
||||
}
|
||||
|
||||
public string Caption
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.Text;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.Text = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool AlwaysOnTop
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.AlwaysOnTop;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.AlwaysOnTop = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowInTaskbar
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.ShowInTaskbar;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.ShowInTaskbar = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowWindowFrame
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.ShowWindowFrame;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.ShowWindowFrame = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowShadow
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.ShowShadow;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.ShowShadow = value;
|
||||
}
|
||||
}
|
||||
|
||||
public MaximizeMode MaximizeMode
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.MaximizeMode;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.MaximizeMode = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool RespectsStartupSettings
|
||||
{
|
||||
get => _form.RespectsStartupSettings;
|
||||
set => _form.RespectsStartupSettings = value;
|
||||
}
|
||||
|
||||
public WindowPositionPolicy InitialPositionPolicy
|
||||
{
|
||||
get => _initialPositionPolicy;
|
||||
set
|
||||
{
|
||||
_form.StartCentered = (value & WindowPositionPolicy.CenterOnWorkArea) != WindowPositionPolicy.None;
|
||||
_form.StartInWorkArea = (value & WindowPositionPolicy.ConstrainToWorkArea) != WindowPositionPolicy.None;
|
||||
_initialPositionPolicy = value;
|
||||
}
|
||||
}
|
||||
|
||||
public IntPtr Handle
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.__WindowHandle;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetBackgroundColor(WindowColor color)
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.SetBackgroundColor(color.GetInternalColor());
|
||||
}
|
||||
|
||||
public int MouseIdleTimeout
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.MouseIdleTimeout;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.MouseIdleTimeout = value >= 0 ? value : throw new ArgumentOutOfRangeException(nameof(value));
|
||||
}
|
||||
}
|
||||
|
||||
public bool HideMouseOnIdle
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.HideMouseOnIdle;
|
||||
}
|
||||
set
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.HideMouseOnIdle = value;
|
||||
}
|
||||
}
|
||||
|
||||
public void RequestLoad(string source) => RequestLoad(source, null);
|
||||
|
||||
public void RequestLoad(string source, PropertyValue[] properties)
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
if (source == null)
|
||||
throw new ArgumentNullException(nameof(source));
|
||||
Vector<UIPropertyRecord> properties1 = null;
|
||||
if (properties != null)
|
||||
{
|
||||
properties1 = new Vector<UIPropertyRecord>(properties.Length);
|
||||
foreach (PropertyValue property in properties)
|
||||
properties1.Add(new UIPropertyRecord()
|
||||
{
|
||||
Name = property.Name,
|
||||
Value = property.Value
|
||||
});
|
||||
}
|
||||
_form.RequestLoad(source, properties1);
|
||||
}
|
||||
|
||||
public void SetIcon(string moduleName, int resourceID)
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
if (moduleName == null)
|
||||
throw new ArgumentNullException(nameof(moduleName));
|
||||
_form.SetIcon(moduleName, (uint)resourceID, IconFlags.All);
|
||||
}
|
||||
|
||||
public void SetShadowEdgeImages(bool fActiveEdges, Image[] images)
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
if (images == null || images.Length != 4)
|
||||
throw new ArgumentException("Must provide exactly 4 images: LTRB edges", nameof(images));
|
||||
for (int index = 0; index < 4; ++index)
|
||||
{
|
||||
if (images[index] == null)
|
||||
throw new ArgumentException("Edge image cannot be null", "image[idx]:" + index.ToString());
|
||||
if (string.IsNullOrEmpty(images[index].Source))
|
||||
throw new ArgumentException("Edge image cannot have null or empty Source", "image[idx]:" + index.ToString());
|
||||
}
|
||||
UIImage[] images1 = new UIImage[4];
|
||||
for (int index = 0; index < 4; ++index)
|
||||
images1[index] = images[index].UIImage;
|
||||
_form.SetShadowImages(fActiveEdges, images1);
|
||||
}
|
||||
|
||||
public object SaveKeyFocus()
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _form.SaveKeyFocus();
|
||||
}
|
||||
|
||||
public void RestoreKeyFocus(object handle)
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
if (handle is SavedKeyFocus state)
|
||||
_form.RestoreKeyFocus(state);
|
||||
else if (handle != null)
|
||||
throw new ArgumentException("RestoreKeyFocus expects an object given out from SaveKeyFocus");
|
||||
}
|
||||
|
||||
public void Close()
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.Close();
|
||||
}
|
||||
|
||||
public void ForceClose()
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_form.ForceClose();
|
||||
}
|
||||
|
||||
private void OnCloseRequested(FormCloseReason nReason, ref bool block)
|
||||
{
|
||||
if (CloseRequested == null)
|
||||
return;
|
||||
WindowCloseRequestedEventArgs args = new WindowCloseRequestedEventArgs();
|
||||
CloseRequested(this, args);
|
||||
block = args.Block;
|
||||
}
|
||||
|
||||
public event WindowCloseRequestedHandler CloseRequested;
|
||||
|
||||
private void OnSessionConnect(object sender, bool fIsConnected)
|
||||
{
|
||||
if (SessionConnected == null)
|
||||
return;
|
||||
SessionConnected(sender, fIsConnected);
|
||||
}
|
||||
|
||||
public event SessionConnectedHandler SessionConnected;
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
private void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
if (PropertyChanged == null)
|
||||
return;
|
||||
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user