diff options
| author | Michael <[email protected]> | 2017-01-08 09:57:10 -0500 |
|---|---|---|
| committer | Michael <[email protected]> | 2017-01-08 09:57:10 -0500 |
| commit | f30dcf5ef41d54c588d7b42c48be8d941abba72e (patch) | |
| tree | 7705f99b965673b1c034ac2b1c56e65072c827df /ShiftOS.WinForms/WinformsWindowManager.cs | |
| parent | 69dfad54724d4176dfce238a8d7e73970e6eef24 (diff) | |
| download | shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.tar.gz shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.tar.bz2 shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.zip | |
Initial upload
Diffstat (limited to 'ShiftOS.WinForms/WinformsWindowManager.cs')
| -rw-r--r-- | ShiftOS.WinForms/WinformsWindowManager.cs | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/WinformsWindowManager.cs b/ShiftOS.WinForms/WinformsWindowManager.cs new file mode 100644 index 0000000..cec69a4 --- /dev/null +++ b/ShiftOS.WinForms/WinformsWindowManager.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms +{ + internal class WinformsWindowManager : WindowManager + { + public override void Close(IShiftOSWindow win) + { + (win as UserControl).Close(); + } + + public override void InvokeAction(Action act) + { + Desktop.InvokeOnWorkerThread(act); + } + + public override void Maximize(IWindowBorder form) + { + try + { + var deskSize = new Size(0, 0); + deskSize.Width = Screen.PrimaryScreen.Bounds.Width; + deskSize.Height = Screen.PrimaryScreen.Bounds.Height; + + deskSize.Height -= SkinEngine.LoadedSkin.DesktopPanelHeight; + + var deskStart = new Point((SkinEngine.LoadedSkin.DesktopPanelPosition == 0) ? SkinEngine.LoadedSkin.DesktopPanelHeight : 0, 0); + + (form as WindowBorder).Location = deskStart; + (form as WindowBorder).Size = deskSize; + + + } + catch + { + } + } + + public override void Minimize(IWindowBorder border) + { + try + { + + } + catch { } + } + + public override void SetupDialog(IShiftOSWindow form) + { + if (!Shiftorium.UpgradeAttributesUnlocked(form.GetType())) + { + Console.WriteLine("{APP_NOT_FOUND}"); + return; + } + + var wb = new WindowBorder(form as UserControl); + wb.IsDialog = true; + + + wb.Show(); + } + + public override void SetupWindow(IShiftOSWindow form) + { + if (!AppearanceManager.CanOpenWindow(form)) + { + Infobox.Show("{MULTIPLAYER_ONLY}", "{MULTIPLAYER_ONLY_EXP}"); + return; + } + + + if (!Shiftorium.UpgradeAttributesUnlocked(form.GetType())) + { + Console.WriteLine("{APP_NOT_FOUND}"); + return; + } + + if (SaveSystem.CurrentSave != null) + { + if (!form.GetType().Name.Contains(typeof(Applications.Dialog).Name)) + { + int maxWindows = 0; + + //Window manager will step in here. + if (Shiftorium.UpgradeInstalled("wm_unlimited_windows")) + { + maxWindows = 0; + } + else if (Shiftorium.UpgradeInstalled("wm_4_windows")) + { + maxWindows = 4; + } + else if (Shiftorium.UpgradeInstalled("window_manager")) + { + maxWindows = 2; + } + else + { + maxWindows = 1; + } + + + if (maxWindows > 0) + { + List<WindowBorder> formstoclose = new List<WindowBorder>(); + + foreach (WindowBorder frm in AppearanceManager.OpenForms) + { + formstoclose.Add(frm); + + } + + while (formstoclose.Count > maxWindows - 1) + { + formstoclose[0].Close(); + formstoclose.RemoveAt(0); + } + } + } + } + + var wb = new WindowBorder(form as UserControl); + + ControlManager.SetupWindows(); + } + } +} |
