diff options
Diffstat (limited to 'ShiftOS_TheReturn/AppearanceManager.cs')
| -rw-r--r-- | ShiftOS_TheReturn/AppearanceManager.cs | 179 |
1 files changed, 91 insertions, 88 deletions
diff --git a/ShiftOS_TheReturn/AppearanceManager.cs b/ShiftOS_TheReturn/AppearanceManager.cs index dc88092..7cf06c9 100644 --- a/ShiftOS_TheReturn/AppearanceManager.cs +++ b/ShiftOS_TheReturn/AppearanceManager.cs @@ -38,6 +38,7 @@ using static ShiftOS.Engine.SaveSystem; namespace ShiftOS.Engine { + // Provides functionality for managing windows within ShiftOS. public static class AppearanceManager { [Obsolete("Please use Localization.GetAllLanguages().")] @@ -46,46 +47,21 @@ namespace ShiftOS.Engine return Localization.GetAllLanguages(); } - public static void AddFocusEvents(Control ctrl, Control child) - { - child.Enter += (o, a) => - { - ctrl.BringToFront(); - }; - child.MouseDown += (o, a) => - { - ctrl.BringToFront(); - }; - - foreach (Control c in child.Controls) - { - c.Enter += (o, a) => - { - ctrl.BringToFront(); - }; - c.MouseDown += (o, a) => - { - ctrl.BringToFront(); - }; - - try - { - AddFocusEvents(ctrl, c); - } - catch { } - } - } - + // Sets the title text of the specified window. public static void SetWindowTitle(IShiftOSWindow window, string title) { + if (window == null) + throw new ArgumentNullException("window", "The window cannot be null."); winmgr.SetTitle(window, title); } + //HEY LETS FIND THE WINDOWS public static IEnumerable<Type> GetAllWindowTypes() { List<Type> types = new List<Type>(); foreach(var file in System.IO.Directory.GetFiles(Environment.CurrentDirectory)) { + // hey if a thing is an exe or a dll show up plz kthx if(file.EndsWith(".exe") || file.EndsWith(".dll")) { try @@ -103,8 +79,11 @@ namespace ShiftOS.Engine return types; } + // hey you know that window we just made appear? well give it its title public static string GetDefaultTitle(Type winType) { + if (winType == null) + throw new ArgumentNullException("winType"); foreach(var attrib in winType.GetCustomAttributes(false)) { if(attrib is DefaultTitleAttribute) @@ -115,140 +94,155 @@ namespace ShiftOS.Engine return winType.Name; } - public static string LastTerminalText { get; set; } + // Current cursor position of the console public static int CurrentPosition { get; set; } + + // We don't know what this does. It may be gone if it does nothing. public static int LastLength { get; set; } + // Minimize a window. public static void Minimize(IWindowBorder form) { + if (form == null) + //FUCK WHY THE FUCK IS THIS NULL + throw new ArgumentNullException("form"); + if (winmgr == null) + //FUCK THIS PART OF THE ENGINE WASNT TURNED ON YET + throw new EngineModuleDisabledException(); winmgr.Minimize(form); } + // Maximizes a window! :D public static void Maximize(IWindowBorder form) { + if (form == null) + //AHHHH SHOULDNT BE NULLLLLL + throw new ArgumentNullException("form"); + if (winmgr == null) + //WHY ARE YOU DOING THIS PART OF THE ENGINE IT WASNT ENABLED FUCK + throw new EngineModuleDisabledException(); winmgr.Maximize(form); } - + // Provides a list of all open ShiftOS windows. public static List<IWindowBorder> OpenForms = new List<IWindowBorder>(); - public static bool CanOpenWindow(IShiftOSWindow form) - { -#if !MUD_RAPIDDEV - if (ServerManager.IsSingleplayer) - { - foreach (var attr in form.GetType().GetCustomAttributes(false)) - { - if (attr is MultiplayerOnlyAttribute) - return false; - } - } -#endif - return true; - } - + // Decorates a window with a border, then shows the window. public static void SetupWindow(IShiftOSWindow form) { + if (form == null) + //YOU GET THE POINT THIS REALLY SHOULDNT BE NULL + throw new ArgumentNullException("form"); + if (winmgr == null) + //SAME HERE + throw new EngineModuleDisabledException(); winmgr.SetupWindow(form); Desktop.ResetPanelButtons(); } + // Closes the specified window. SHOCKED YOU ARE I KNOW, HOW COULD YOU HAVE GUESSED public static void Close(IShiftOSWindow win) { + if (win == null) + //NOPE SHOULDNT BE NULL + throw new ArgumentNullException("win"); + if (winmgr == null) + //WHY IS THIS NULL + throw new EngineModuleDisabledException(); winmgr.Close(win); Desktop.ResetPanelButtons(); } + + // Decorates a window with a border, then shows the window, as a dialog box. public static void SetupDialog(IShiftOSWindow form) { + if (form == null) + //NULLLLLLLLL + throw new ArgumentNullException("form"); + if (winmgr == null) + //ASGDFHASDGF + throw new EngineModuleDisabledException(); winmgr.SetupDialog(form); Desktop.ResetPanelButtons(); } + // The underlying window manager for this engine module private static WindowManager winmgr = null; - public static double Measure(this string text, Font font) - { - return Graphics.FromImage(new Bitmap(1, 1)).MeasureString(text, font).Width; - } - + // Initiate this engine module, and perform mandatory configuration. public static void Initiate(WindowManager mgr) { - winmgr = mgr; + winmgr = mgr; // A working, configured window manager to use as a backend for this module } - [Obsolete("This is a stub.")] - public static void DoWinformsSkinningMagicOnWpf(this UserControl ctrl) - { - //SetupControls(ctrl); - } + // Raised when the engine is entering its shutdown phase. Save your work! public static event EmptyEventHandler OnExit; + // Starts the engine's exit routine, firing the OnExit event. internal static void Exit() { OnExit?.Invoke(); //disconnect from MUD ServerManager.Disconnect(); + Desktop.InvokeOnWorkerThread(() => + { + Process.GetCurrentProcess().Kill(); //bye bye + }); } - - internal static bool BordersHidden(Form frm) - { - string t = frm.Tag as string; - if (t == null) - return false; - - return t.Contains("hidden"); - } - + // The current terminal body control. public static ITerminalWidget ConsoleOut { get; set; } + // Redirects the .NET to a new TerminalTextWriter instance. public static void StartConsoleOut() { - Console.SetOut(new TerminalTextWriter()); + Console.SetOut(new TerminalTextWriter()); //"plz start writing text .NET kthx" } + // Invokes an action on the window management thread. public static void Invoke(Action act) { winmgr.InvokeAction(act); } } + // Provides the base functionality for a ShiftOS terminal. public interface ITerminalWidget { - void Write(string text); - void WriteLine(string text); - void Clear(); - void SelectBottom(); + void Write(string text); // Actually write text to this Terminal! :D:D:D:D + void WriteLine(string text); // Write text to this Terminal, followed by a newline. + void Clear(); // Clear the contents of this Terminal, i bet you wouldve never guessed that + void SelectBottom(); // Move the cursor to the last character in the Terminal. } + // makes the window manager actually do its job public abstract class WindowManager { - public abstract void Minimize(IWindowBorder border); - public abstract void Maximize(IWindowBorder border); - - public abstract void Close(IShiftOSWindow win); - - public abstract void SetupWindow(IShiftOSWindow win); - public abstract void SetupDialog(IShiftOSWindow win); - - public abstract void InvokeAction(Action act); - - public abstract void SetTitle(IShiftOSWindow win, string title); + public abstract void Minimize(IWindowBorder border); // guess what this does + public abstract void Maximize(IWindowBorder border); // ooh this too + public abstract void Close(IShiftOSWindow win); // omg this probably does something + public abstract void SetupWindow(IShiftOSWindow win); // i cant think of what this does + public abstract void SetupDialog(IShiftOSWindow win); // how about this??????? + public abstract void InvokeAction(Action act); // i wonder what this invokes + public abstract void SetTitle(IShiftOSWindow win, string title); // what is a title again } + // Provides the base functionality for a typical ShiftOS window border, what did you expect public interface IWindowBorder { - void Close(); - string Text { get; set; } - IShiftOSWindow ParentWindow { get; set; } + void Close(); // CLOSES THE BORDER ALONG WITH ITS WINDOW!!!!!!! HOLY SHIT I DIDNT EXPECT THAT + string Text { get; set; } // title text exists now + IShiftOSWindow ParentWindow { get; set; } // Gets or sets the underlying for this border. } - + + // Provides a way of setting default title text for classes. public class DefaultTitleAttribute : Attribute { + // oy if you cant find a title this is the one you should use public DefaultTitleAttribute(string title) { Title = title; @@ -257,4 +251,13 @@ namespace ShiftOS.Engine public string Title { get; private set; } } + // An exception that is thrown when mandatory configuration to run a specific method or module hasn't been done yet. + public class EngineModuleDisabledException : Exception + { + // FUCK WE DIDNT ORDER THINGS RIGHT + public EngineModuleDisabledException() : base("This engine module has not yet been enabled.") + { + //FUCK + } + } } |
