From f30dcf5ef41d54c588d7b42c48be8d941abba72e Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 8 Jan 2017 09:57:10 -0500 Subject: [PATCH] Initial upload --- .gitattributes | 63 + LICENSE | 2 +- Libraries/Discoursistency.Base.dll | Bin 0 -> 55808 bytes Libraries/Discoursistency.HTTP.dll | Bin 0 -> 19456 bytes Libraries/Discoursistency.Util.dll | Bin 0 -> 11264 bytes Libraries/IronPython.Modules.dll | Bin 0 -> 730624 bytes Libraries/NetSockets.dll | Bin 0 -> 24576 bytes ShiftOS.MFSProfiler/App.config | 6 + ShiftOS.MFSProfiler/Form1.Designer.cs | 248 ++ ShiftOS.MFSProfiler/Form1.cs | 111 + ShiftOS.MFSProfiler/Form1.resx | 120 + ShiftOS.MFSProfiler/Program.cs | 22 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 71 + ShiftOS.MFSProfiler/Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../ShiftOS.MFSProfiler.csproj | 100 + ShiftOS.Objects/DiscourseUser.cs | 18 + ShiftOS.Objects/Hack.cs | 76 + ShiftOS.Objects/Objects.cs | 141 + ShiftOS.Objects/Properties/AssemblyInfo.cs | 36 + ShiftOS.Objects/ShiftFS.cs | 374 ++ ShiftOS.Objects/ShiftOS.Objects.csproj | 75 + ShiftOS.Objects/ShiftOSMenuRenderer.cs | 27 + ShiftOS.Objects/packages.config | 4 + ShiftOS.Server/App.config | 6 + ShiftOS.Server/Program.cs | 964 +++++ ShiftOS.Server/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 97 + ShiftOS.Server/Properties/Resources.resx | 127 + ShiftOS.Server/Resources/Home.txt | 31 + ShiftOS.Server/Resources/NotFound.txt | 9 + ShiftOS.Server/ShiftOS.Server.csproj | 108 + ShiftOS.Server/WebAdmin.cs | 91 + ShiftOS.Server/packages.config | 8 + ShiftOS.Sites/information.txt | 14 + ShiftOS.WinForms/App.config | 14 + .../Applications/Artpad.Designer.cs | 3552 ++++++++++++++++ ShiftOS.WinForms/Applications/Artpad.cs | 1853 +++++++++ ShiftOS.WinForms/Applications/Artpad.resx | 138 + .../Applications/Chat.Designer.cs | 86 + ShiftOS.WinForms/Applications/Chat.cs | 93 + ShiftOS.WinForms/Applications/Chat.resx | 120 + .../Applications/CoherenceOverlay.Designer.cs | 37 + .../Applications/CoherenceOverlay.cs | 99 + .../Applications/ColorPicker.Designer.cs | 3570 +++++++++++++++++ ShiftOS.WinForms/Applications/ColorPicker.cs | 2358 +++++++++++ .../Applications/ColorPicker.resx | 120 + .../Applications/Dialog.Designer.cs | 38 + ShiftOS.WinForms/Applications/Dialog.cs | 38 + .../Applications/FileDialog.Designer.cs | 147 + ShiftOS.WinForms/Applications/FileDialog.cs | 256 ++ ShiftOS.WinForms/Applications/FileDialog.resx | 120 + .../Applications/FileSkimmer.Designer.cs | 86 + ShiftOS.WinForms/Applications/FileSkimmer.cs | 238 ++ .../Applications/FileSkimmer.resx | 120 + .../Applications/GraphicPicker.Designer.cs | 257 ++ .../Applications/GraphicPicker.cs | 116 + .../Applications/GraphicPicker.resx | 120 + .../Applications/MUDAuthenticator.Designer.cs | 213 + .../Applications/MUDAuthenticator.cs | 150 + .../Applications/MUDAuthenticator.resx | 120 + .../Applications/MUDControlCentre.Designer.cs | 617 +++ .../Applications/MUDControlCentre.cs | 314 ++ .../Applications/MUDControlCentre.resx | 126 + .../MUDPasswordCracker.Designer.cs | 102 + .../Applications/MUDPasswordCracker.cs | 105 + .../Applications/MUDPasswordCracker.resx | 120 + .../Applications/NameChanger.Designer.cs | 55 + ShiftOS.WinForms/Applications/NameChanger.cs | 48 + .../Applications/NameChanger.resx | 120 + .../Applications/Pong.Designer.cs | 706 ++++ ShiftOS.WinForms/Applications/Pong.cs | 631 +++ ShiftOS.WinForms/Applications/Pong.resx | 132 + .../Applications/Shifter.Designer.cs | 164 + ShiftOS.WinForms/Applications/Shifter.cs | 616 +++ ShiftOS.WinForms/Applications/Shifter.resx | 120 + .../ShiftoriumFrontend.Designer.cs | 237 ++ .../Applications/ShiftoriumFrontend.cs | 168 + .../Applications/ShiftoriumFrontend.resx | 120 + .../Applications/Skin Loader.Designer.cs | 460 +++ ShiftOS.WinForms/Applications/Skin Loader.cs | 306 ++ .../Applications/Skin Loader.resx | 126 + .../Applications/Terminal.Designer.cs | 65 + ShiftOS.WinForms/Applications/Terminal.cs | 306 ++ ShiftOS.WinForms/Applications/Terminal.cs.rej | 12 + ShiftOS.WinForms/Applications/Terminal.resx | 120 + .../Applications/TextPad.Designer.cs | 138 + ShiftOS.WinForms/Applications/TextPad.cs | 88 + ShiftOS.WinForms/Applications/TextPad.resx | 123 + .../Applications/VirusScanner.Designer.cs | 202 + ShiftOS.WinForms/Applications/VirusScanner.cs | 181 + .../Applications/VirusScanner.resx | 120 + .../Applications/mp3Player.Designer.cs | 97 + ShiftOS.WinForms/Applications/mp3Player.cs | 67 + ShiftOS.WinForms/Applications/mp3Player.resx | 120 + ShiftOS.WinForms/Commands.cs | 108 + .../Controls/ColorControl.Designer.cs | 69 + ShiftOS.WinForms/Controls/ColorControl.cs | 243 ++ .../Controls/ShiftedProgressBar.Designer.cs | 36 + .../Controls/ShiftedProgressBar.cs | 123 + ShiftOS.WinForms/Controls/TerminalBox.cs | 33 + ShiftOS.WinForms/Oobe.Designer.cs | 952 +++++ ShiftOS.WinForms/Oobe.cs | 407 ++ ShiftOS.WinForms/Oobe.resx | 120 + ShiftOS.WinForms/Program.cs | 180 + ShiftOS.WinForms/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 585 +++ ShiftOS.WinForms/Properties/Resources.resx | 265 ++ .../Properties/Settings.Designer.cs | 30 + ShiftOS.WinForms/Properties/Settings.settings | 7 + ShiftOS.WinForms/Resources/ArtPadOval.png | Bin 0 -> 49912 bytes .../Resources/ArtPadRectangle.png | Bin 0 -> 47715 bytes .../Resources/ArtPadcirclerubber.png | Bin 0 -> 50761 bytes .../Resources/ArtPadcirclerubberselected.png | Bin 0 -> 50132 bytes ShiftOS.WinForms/Resources/ArtPaderacer.png | Bin 0 -> 61665 bytes .../Resources/ArtPadfloodfill.png | Bin 0 -> 47957 bytes ShiftOS.WinForms/Resources/ArtPadlinetool.png | Bin 0 -> 48840 bytes ShiftOS.WinForms/Resources/ArtPadmagnify.png | Bin 0 -> 51680 bytes ShiftOS.WinForms/Resources/ArtPadnew.png | Bin 0 -> 48513 bytes ShiftOS.WinForms/Resources/ArtPadopen.png | Bin 0 -> 48573 bytes .../Resources/ArtPadpaintbrush.png | Bin 0 -> 49222 bytes ShiftOS.WinForms/Resources/ArtPadpencil.png | Bin 0 -> 48154 bytes .../Resources/ArtPadpixelplacer.png | Bin 0 -> 49614 bytes ShiftOS.WinForms/Resources/ArtPadredo.png | Bin 0 -> 62500 bytes ShiftOS.WinForms/Resources/ArtPadsave.png | Bin 0 -> 50125 bytes .../Resources/ArtPadsquarerubber.png | Bin 0 -> 47969 bytes .../Resources/ArtPadsquarerubberselected.png | Bin 0 -> 49971 bytes ShiftOS.WinForms/Resources/ArtPadtexttool.png | Bin 0 -> 47446 bytes ShiftOS.WinForms/Resources/ArtPadundo.png | Bin 0 -> 63747 bytes .../Resources/FloppyDriveIcon.png | Bin 0 -> 272 bytes ShiftOS.WinForms/Resources/Shiftorium.txt | 658 +++ ShiftOS.WinForms/Resources/Songs.txt | 4 + ShiftOS.WinForms/Resources/fileicon0.bmp | Bin 0 -> 208 bytes ShiftOS.WinForms/Resources/fileicon1.bmp | Bin 0 -> 594 bytes ShiftOS.WinForms/Resources/fileicon10.bmp | Bin 0 -> 270 bytes ShiftOS.WinForms/Resources/fileicon11.bmp | Bin 0 -> 498 bytes ShiftOS.WinForms/Resources/fileicon12.bmp | Bin 0 -> 430 bytes ShiftOS.WinForms/Resources/fileicon13.bmp | Bin 0 -> 469 bytes ShiftOS.WinForms/Resources/fileicon14.bmp | Bin 0 -> 413 bytes ShiftOS.WinForms/Resources/fileicon15.bmp | Bin 0 -> 527 bytes ShiftOS.WinForms/Resources/fileicon16.bmp | Bin 0 -> 606 bytes ShiftOS.WinForms/Resources/fileicon17.bmp | Bin 0 -> 471 bytes ShiftOS.WinForms/Resources/fileicon18.bmp | Bin 0 -> 449 bytes ShiftOS.WinForms/Resources/fileicon19.bmp | Bin 0 -> 548 bytes ShiftOS.WinForms/Resources/fileicon2.bmp | Bin 0 -> 429 bytes ShiftOS.WinForms/Resources/fileicon3.bmp | Bin 0 -> 345 bytes ShiftOS.WinForms/Resources/fileicon4.bmp | Bin 0 -> 251 bytes ShiftOS.WinForms/Resources/fileicon5.bmp | Bin 0 -> 295 bytes ShiftOS.WinForms/Resources/fileicon6.bmp | Bin 0 -> 557 bytes ShiftOS.WinForms/Resources/fileicon7.bmp | Bin 0 -> 851 bytes ShiftOS.WinForms/Resources/fileicon8.bmp | Bin 0 -> 605 bytes ShiftOS.WinForms/Resources/fileicon9.bmp | Bin 0 -> 483 bytes ShiftOS.WinForms/Resources/fileiconsaa.png | Bin 0 -> 288 bytes ShiftOS.WinForms/Resources/hello.txt | 1 + ShiftOS.WinForms/Resources/languages.txt | 4 + ShiftOS.WinForms/Resources/strings_de.txt | 227 ++ ShiftOS.WinForms/Resources/strings_en.txt | 226 ++ .../Resources/sys_shiftoriumstory.txt | 45 + ShiftOS.WinForms/ShiftOS.WinForms.csproj | 464 +++ .../Tools/ColorPickerDataBackend.cs | 81 + ShiftOS.WinForms/Tools/ControlManager.cs | 207 + ShiftOS.WinForms/Tools/DitheringEngine.cs | 378 ++ ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs | 494 +++ ShiftOS.WinForms/WFLanguageProvider.cs | 49 + ShiftOS.WinForms/WindowBorder.Designer.cs | 223 + ShiftOS.WinForms/WindowBorder.cs | 318 ++ ShiftOS.WinForms/WindowBorder.resx | 120 + ShiftOS.WinForms/WinformsDesktop.Designer.cs | 138 + ShiftOS.WinForms/WinformsDesktop.cs | 264 ++ ShiftOS.WinForms/WinformsWindowManager.cs | 135 + ShiftOS.WinForms/packages.config | 4 + ShiftOS.Wpf/App.config | 14 + ShiftOS.Wpf/App.xaml | 60 + ShiftOS.Wpf/App.xaml.cs | 59 + ShiftOS.Wpf/Applications/FileDialog.xaml | 29 + ShiftOS.Wpf/Applications/FileDialog.xaml.cs | 285 ++ ShiftOS.Wpf/Applications/FileSkimmer.xaml | 20 + ShiftOS.Wpf/Applications/FileSkimmer.xaml.cs | 300 ++ ShiftOS.Wpf/Applications/Infobox.xaml | 13 + ShiftOS.Wpf/Applications/Infobox.xaml.cs | 63 + ShiftOS.Wpf/Applications/MainWindow.xaml | 10 + ShiftOS.Wpf/Applications/MainWindow.xaml.cs | 179 + .../Applications/ShiftoriumFrontend.xaml | 24 + .../Applications/ShiftoriumFrontend.xaml.cs | 140 + ShiftOS.Wpf/Applications/SkinLoader.xaml | 75 + ShiftOS.Wpf/Applications/SkinLoader.xaml.cs | 176 + ShiftOS.Wpf/Applications/TextPad.xaml | 17 + ShiftOS.Wpf/Applications/TextPad.xaml.cs | 90 + ShiftOS.Wpf/Desktop.xaml | 29 + ShiftOS.Wpf/Desktop.xaml.cs | 201 + ShiftOS.Wpf/OOBE.xaml | 58 + ShiftOS.Wpf/OOBE.xaml.cs | 276 ++ ShiftOS.Wpf/Properties/AssemblyInfo.cs | 55 + ShiftOS.Wpf/Properties/Resources.Designer.cs | 71 + ShiftOS.Wpf/Properties/Resources.resx | 117 + ShiftOS.Wpf/Properties/Settings.Designer.cs | 30 + ShiftOS.Wpf/Properties/Settings.settings | 7 + ShiftOS.Wpf/ShiftOS.Wpf.csproj | 192 + ShiftOS.Wpf/SkinFrontend.cs | 33 + ShiftOS.Wpf/Startup.cs | 327 ++ ShiftOS.Wpf/WpfInfoboxFrontend.cs | 18 + ShiftOS.Wpf/WpfWindowBorder.xaml | 77 + ShiftOS.Wpf/WpfWindowBorder.xaml.cs | 375 ++ ShiftOS.Wpf/WpfWindowManager.cs | 63 + ShiftOS.Wpf/chats.json | 1 + ShiftOS.Wpf/engineconfig.json | 5 + ShiftOS.Wpf/packages.config | 4 + ShiftOS_TheReturn.sln | 52 + ShiftOS_TheReturn/AltTabWindow.Designer.cs | 42 + ShiftOS_TheReturn/AltTabWindow.cs | 29 + ShiftOS_TheReturn/AltTabWindow.resx | 120 + ShiftOS_TheReturn/App.config | 6 + ShiftOS_TheReturn/AppLauncherDaemon.cs | 67 + ShiftOS_TheReturn/AppearanceManager.cs | 184 + ShiftOS_TheReturn/AudioManager.cs | 42 + ShiftOS_TheReturn/Command.cs | 93 + ShiftOS_TheReturn/Commands.cs | 524 +++ ShiftOS_TheReturn/CrashHandler.Designer.cs | 151 + ShiftOS_TheReturn/CrashHandler.cs | 181 + ShiftOS_TheReturn/CtrlTabMenu.cs | 26 + ShiftOS_TheReturn/Desktop.cs | 96 + ShiftOS_TheReturn/FileSkimmerBackend.cs | 152 + ShiftOS_TheReturn/IShiftOSWindow.cs | 17 + ShiftOS_TheReturn/Infobox.cs | 38 + ShiftOS_TheReturn/Infobox.resx | 120 + ShiftOS_TheReturn/Localization.cs | 177 + ShiftOS_TheReturn/OutOfBoxExperience.cs | 63 + ShiftOS_TheReturn/OutOfBoxExperience.cs.rej | 105 + ShiftOS_TheReturn/Paths.cs | 139 + ShiftOS_TheReturn/Program.cs | 46 + ShiftOS_TheReturn/Properties/AssemblyInfo.cs | 40 + .../Properties/Resources.Designer.cs | 190 + ShiftOS_TheReturn/Properties/Resources.resx | 142 + .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 7 + ShiftOS_TheReturn/Resources/Shiftorium.txt | 594 +++ ShiftOS_TheReturn/Resources/Songs.txt | 4 + ShiftOS_TheReturn/Resources/hello.txt | 1 + ShiftOS_TheReturn/Resources/languages.txt | 4 + ShiftOS_TheReturn/Resources/secretlang.txt | 3 + ShiftOS_TheReturn/Resources/strings_de.txt | 225 ++ ShiftOS_TheReturn/Resources/strings_en.txt | 222 + ShiftOS_TheReturn/Resources/strings_ver.txt | 216 + .../Resources/sys_shiftoriumstory.txt | 45 + ShiftOS_TheReturn/SaveSystem.cs | 268 ++ ShiftOS_TheReturn/Scripting.cs | 484 +++ ShiftOS_TheReturn/ServerManager.cs | 177 + ShiftOS_TheReturn/ShiftOS.Engine.csproj | 261 ++ ShiftOS_TheReturn/Shiftorium.cs | 226 ++ ShiftOS_TheReturn/Skinning.cs | 967 +++++ ShiftOS_TheReturn/Story.cs | 241 ++ ShiftOS_TheReturn/TerminalBackend.cs | 211 + ShiftOS_TheReturn/TerminalTextWriter.cs | 75 + ShiftOS_TheReturn/VirusEngine.cs | 158 + ShiftOS_TheReturn/WinOpenAttribute.cs | 18 + ShiftOS_TheReturn/packages.config | 7 + 258 files changed, 42274 insertions(+), 1 deletion(-) create mode 100644 .gitattributes create mode 100644 Libraries/Discoursistency.Base.dll create mode 100644 Libraries/Discoursistency.HTTP.dll create mode 100644 Libraries/Discoursistency.Util.dll create mode 100644 Libraries/IronPython.Modules.dll create mode 100644 Libraries/NetSockets.dll create mode 100644 ShiftOS.MFSProfiler/App.config create mode 100644 ShiftOS.MFSProfiler/Form1.Designer.cs create mode 100644 ShiftOS.MFSProfiler/Form1.cs create mode 100644 ShiftOS.MFSProfiler/Form1.resx create mode 100644 ShiftOS.MFSProfiler/Program.cs create mode 100644 ShiftOS.MFSProfiler/Properties/AssemblyInfo.cs create mode 100644 ShiftOS.MFSProfiler/Properties/Resources.Designer.cs create mode 100644 ShiftOS.MFSProfiler/Properties/Resources.resx create mode 100644 ShiftOS.MFSProfiler/Properties/Settings.Designer.cs create mode 100644 ShiftOS.MFSProfiler/Properties/Settings.settings create mode 100644 ShiftOS.MFSProfiler/ShiftOS.MFSProfiler.csproj create mode 100644 ShiftOS.Objects/DiscourseUser.cs create mode 100644 ShiftOS.Objects/Hack.cs create mode 100644 ShiftOS.Objects/Objects.cs create mode 100644 ShiftOS.Objects/Properties/AssemblyInfo.cs create mode 100644 ShiftOS.Objects/ShiftFS.cs create mode 100644 ShiftOS.Objects/ShiftOS.Objects.csproj create mode 100644 ShiftOS.Objects/ShiftOSMenuRenderer.cs create mode 100644 ShiftOS.Objects/packages.config create mode 100644 ShiftOS.Server/App.config create mode 100644 ShiftOS.Server/Program.cs create mode 100644 ShiftOS.Server/Properties/AssemblyInfo.cs create mode 100644 ShiftOS.Server/Properties/Resources.Designer.cs create mode 100644 ShiftOS.Server/Properties/Resources.resx create mode 100644 ShiftOS.Server/Resources/Home.txt create mode 100644 ShiftOS.Server/Resources/NotFound.txt create mode 100644 ShiftOS.Server/ShiftOS.Server.csproj create mode 100644 ShiftOS.Server/WebAdmin.cs create mode 100644 ShiftOS.Server/packages.config create mode 100644 ShiftOS.Sites/information.txt create mode 100644 ShiftOS.WinForms/App.config create mode 100644 ShiftOS.WinForms/Applications/Artpad.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/Artpad.cs create mode 100644 ShiftOS.WinForms/Applications/Artpad.resx create mode 100644 ShiftOS.WinForms/Applications/Chat.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/Chat.cs create mode 100644 ShiftOS.WinForms/Applications/Chat.resx create mode 100644 ShiftOS.WinForms/Applications/CoherenceOverlay.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/CoherenceOverlay.cs create mode 100644 ShiftOS.WinForms/Applications/ColorPicker.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/ColorPicker.cs create mode 100644 ShiftOS.WinForms/Applications/ColorPicker.resx create mode 100644 ShiftOS.WinForms/Applications/Dialog.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/Dialog.cs create mode 100644 ShiftOS.WinForms/Applications/FileDialog.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/FileDialog.cs create mode 100644 ShiftOS.WinForms/Applications/FileDialog.resx create mode 100644 ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/FileSkimmer.cs create mode 100644 ShiftOS.WinForms/Applications/FileSkimmer.resx create mode 100644 ShiftOS.WinForms/Applications/GraphicPicker.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/GraphicPicker.cs create mode 100644 ShiftOS.WinForms/Applications/GraphicPicker.resx create mode 100644 ShiftOS.WinForms/Applications/MUDAuthenticator.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/MUDAuthenticator.cs create mode 100644 ShiftOS.WinForms/Applications/MUDAuthenticator.resx create mode 100644 ShiftOS.WinForms/Applications/MUDControlCentre.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/MUDControlCentre.cs create mode 100644 ShiftOS.WinForms/Applications/MUDControlCentre.resx create mode 100644 ShiftOS.WinForms/Applications/MUDPasswordCracker.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/MUDPasswordCracker.cs create mode 100644 ShiftOS.WinForms/Applications/MUDPasswordCracker.resx create mode 100644 ShiftOS.WinForms/Applications/NameChanger.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/NameChanger.cs create mode 100644 ShiftOS.WinForms/Applications/NameChanger.resx create mode 100644 ShiftOS.WinForms/Applications/Pong.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/Pong.cs create mode 100644 ShiftOS.WinForms/Applications/Pong.resx create mode 100644 ShiftOS.WinForms/Applications/Shifter.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/Shifter.cs create mode 100644 ShiftOS.WinForms/Applications/Shifter.resx create mode 100644 ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs create mode 100644 ShiftOS.WinForms/Applications/ShiftoriumFrontend.resx create mode 100644 ShiftOS.WinForms/Applications/Skin Loader.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/Skin Loader.cs create mode 100644 ShiftOS.WinForms/Applications/Skin Loader.resx create mode 100644 ShiftOS.WinForms/Applications/Terminal.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/Terminal.cs create mode 100644 ShiftOS.WinForms/Applications/Terminal.cs.rej create mode 100644 ShiftOS.WinForms/Applications/Terminal.resx create mode 100644 ShiftOS.WinForms/Applications/TextPad.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/TextPad.cs create mode 100644 ShiftOS.WinForms/Applications/TextPad.resx create mode 100644 ShiftOS.WinForms/Applications/VirusScanner.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/VirusScanner.cs create mode 100644 ShiftOS.WinForms/Applications/VirusScanner.resx create mode 100644 ShiftOS.WinForms/Applications/mp3Player.Designer.cs create mode 100644 ShiftOS.WinForms/Applications/mp3Player.cs create mode 100644 ShiftOS.WinForms/Applications/mp3Player.resx create mode 100644 ShiftOS.WinForms/Commands.cs create mode 100644 ShiftOS.WinForms/Controls/ColorControl.Designer.cs create mode 100644 ShiftOS.WinForms/Controls/ColorControl.cs create mode 100644 ShiftOS.WinForms/Controls/ShiftedProgressBar.Designer.cs create mode 100644 ShiftOS.WinForms/Controls/ShiftedProgressBar.cs create mode 100644 ShiftOS.WinForms/Controls/TerminalBox.cs create mode 100644 ShiftOS.WinForms/Oobe.Designer.cs create mode 100644 ShiftOS.WinForms/Oobe.cs create mode 100644 ShiftOS.WinForms/Oobe.resx create mode 100644 ShiftOS.WinForms/Program.cs create mode 100644 ShiftOS.WinForms/Properties/AssemblyInfo.cs create mode 100644 ShiftOS.WinForms/Properties/Resources.Designer.cs create mode 100644 ShiftOS.WinForms/Properties/Resources.resx create mode 100644 ShiftOS.WinForms/Properties/Settings.Designer.cs create mode 100644 ShiftOS.WinForms/Properties/Settings.settings create mode 100644 ShiftOS.WinForms/Resources/ArtPadOval.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadRectangle.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadcirclerubber.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadcirclerubberselected.png create mode 100644 ShiftOS.WinForms/Resources/ArtPaderacer.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadfloodfill.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadlinetool.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadmagnify.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadnew.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadopen.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadpaintbrush.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadpencil.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadpixelplacer.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadredo.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadsave.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadsquarerubber.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadsquarerubberselected.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadtexttool.png create mode 100644 ShiftOS.WinForms/Resources/ArtPadundo.png create mode 100644 ShiftOS.WinForms/Resources/FloppyDriveIcon.png create mode 100644 ShiftOS.WinForms/Resources/Shiftorium.txt create mode 100644 ShiftOS.WinForms/Resources/Songs.txt create mode 100644 ShiftOS.WinForms/Resources/fileicon0.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon1.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon10.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon11.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon12.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon13.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon14.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon15.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon16.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon17.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon18.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon19.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon2.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon3.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon4.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon5.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon6.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon7.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon8.bmp create mode 100644 ShiftOS.WinForms/Resources/fileicon9.bmp create mode 100644 ShiftOS.WinForms/Resources/fileiconsaa.png create mode 100644 ShiftOS.WinForms/Resources/hello.txt create mode 100644 ShiftOS.WinForms/Resources/languages.txt create mode 100644 ShiftOS.WinForms/Resources/strings_de.txt create mode 100644 ShiftOS.WinForms/Resources/strings_en.txt create mode 100644 ShiftOS.WinForms/Resources/sys_shiftoriumstory.txt create mode 100644 ShiftOS.WinForms/ShiftOS.WinForms.csproj create mode 100644 ShiftOS.WinForms/Tools/ColorPickerDataBackend.cs create mode 100644 ShiftOS.WinForms/Tools/ControlManager.cs create mode 100644 ShiftOS.WinForms/Tools/DitheringEngine.cs create mode 100644 ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs create mode 100644 ShiftOS.WinForms/WFLanguageProvider.cs create mode 100644 ShiftOS.WinForms/WindowBorder.Designer.cs create mode 100644 ShiftOS.WinForms/WindowBorder.cs create mode 100644 ShiftOS.WinForms/WindowBorder.resx create mode 100644 ShiftOS.WinForms/WinformsDesktop.Designer.cs create mode 100644 ShiftOS.WinForms/WinformsDesktop.cs create mode 100644 ShiftOS.WinForms/WinformsWindowManager.cs create mode 100644 ShiftOS.WinForms/packages.config create mode 100644 ShiftOS.Wpf/App.config create mode 100644 ShiftOS.Wpf/App.xaml create mode 100644 ShiftOS.Wpf/App.xaml.cs create mode 100644 ShiftOS.Wpf/Applications/FileDialog.xaml create mode 100644 ShiftOS.Wpf/Applications/FileDialog.xaml.cs create mode 100644 ShiftOS.Wpf/Applications/FileSkimmer.xaml create mode 100644 ShiftOS.Wpf/Applications/FileSkimmer.xaml.cs create mode 100644 ShiftOS.Wpf/Applications/Infobox.xaml create mode 100644 ShiftOS.Wpf/Applications/Infobox.xaml.cs create mode 100644 ShiftOS.Wpf/Applications/MainWindow.xaml create mode 100644 ShiftOS.Wpf/Applications/MainWindow.xaml.cs create mode 100644 ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml create mode 100644 ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml.cs create mode 100644 ShiftOS.Wpf/Applications/SkinLoader.xaml create mode 100644 ShiftOS.Wpf/Applications/SkinLoader.xaml.cs create mode 100644 ShiftOS.Wpf/Applications/TextPad.xaml create mode 100644 ShiftOS.Wpf/Applications/TextPad.xaml.cs create mode 100644 ShiftOS.Wpf/Desktop.xaml create mode 100644 ShiftOS.Wpf/Desktop.xaml.cs create mode 100644 ShiftOS.Wpf/OOBE.xaml create mode 100644 ShiftOS.Wpf/OOBE.xaml.cs create mode 100644 ShiftOS.Wpf/Properties/AssemblyInfo.cs create mode 100644 ShiftOS.Wpf/Properties/Resources.Designer.cs create mode 100644 ShiftOS.Wpf/Properties/Resources.resx create mode 100644 ShiftOS.Wpf/Properties/Settings.Designer.cs create mode 100644 ShiftOS.Wpf/Properties/Settings.settings create mode 100644 ShiftOS.Wpf/ShiftOS.Wpf.csproj create mode 100644 ShiftOS.Wpf/SkinFrontend.cs create mode 100644 ShiftOS.Wpf/Startup.cs create mode 100644 ShiftOS.Wpf/WpfInfoboxFrontend.cs create mode 100644 ShiftOS.Wpf/WpfWindowBorder.xaml create mode 100644 ShiftOS.Wpf/WpfWindowBorder.xaml.cs create mode 100644 ShiftOS.Wpf/WpfWindowManager.cs create mode 100644 ShiftOS.Wpf/chats.json create mode 100644 ShiftOS.Wpf/engineconfig.json create mode 100644 ShiftOS.Wpf/packages.config create mode 100644 ShiftOS_TheReturn.sln create mode 100644 ShiftOS_TheReturn/AltTabWindow.Designer.cs create mode 100644 ShiftOS_TheReturn/AltTabWindow.cs create mode 100644 ShiftOS_TheReturn/AltTabWindow.resx create mode 100644 ShiftOS_TheReturn/App.config create mode 100644 ShiftOS_TheReturn/AppLauncherDaemon.cs create mode 100644 ShiftOS_TheReturn/AppearanceManager.cs create mode 100644 ShiftOS_TheReturn/AudioManager.cs create mode 100644 ShiftOS_TheReturn/Command.cs create mode 100644 ShiftOS_TheReturn/Commands.cs create mode 100644 ShiftOS_TheReturn/CrashHandler.Designer.cs create mode 100644 ShiftOS_TheReturn/CrashHandler.cs create mode 100644 ShiftOS_TheReturn/CtrlTabMenu.cs create mode 100644 ShiftOS_TheReturn/Desktop.cs create mode 100644 ShiftOS_TheReturn/FileSkimmerBackend.cs create mode 100644 ShiftOS_TheReturn/IShiftOSWindow.cs create mode 100644 ShiftOS_TheReturn/Infobox.cs create mode 100644 ShiftOS_TheReturn/Infobox.resx create mode 100644 ShiftOS_TheReturn/Localization.cs create mode 100644 ShiftOS_TheReturn/OutOfBoxExperience.cs create mode 100644 ShiftOS_TheReturn/OutOfBoxExperience.cs.rej create mode 100644 ShiftOS_TheReturn/Paths.cs create mode 100644 ShiftOS_TheReturn/Program.cs create mode 100644 ShiftOS_TheReturn/Properties/AssemblyInfo.cs create mode 100644 ShiftOS_TheReturn/Properties/Resources.Designer.cs create mode 100644 ShiftOS_TheReturn/Properties/Resources.resx create mode 100644 ShiftOS_TheReturn/Properties/Settings.Designer.cs create mode 100644 ShiftOS_TheReturn/Properties/Settings.settings create mode 100644 ShiftOS_TheReturn/Resources/Shiftorium.txt create mode 100644 ShiftOS_TheReturn/Resources/Songs.txt create mode 100644 ShiftOS_TheReturn/Resources/hello.txt create mode 100644 ShiftOS_TheReturn/Resources/languages.txt create mode 100644 ShiftOS_TheReturn/Resources/secretlang.txt create mode 100644 ShiftOS_TheReturn/Resources/strings_de.txt create mode 100644 ShiftOS_TheReturn/Resources/strings_en.txt create mode 100644 ShiftOS_TheReturn/Resources/strings_ver.txt create mode 100644 ShiftOS_TheReturn/Resources/sys_shiftoriumstory.txt create mode 100644 ShiftOS_TheReturn/SaveSystem.cs create mode 100644 ShiftOS_TheReturn/Scripting.cs create mode 100644 ShiftOS_TheReturn/ServerManager.cs create mode 100644 ShiftOS_TheReturn/ShiftOS.Engine.csproj create mode 100644 ShiftOS_TheReturn/Shiftorium.cs create mode 100644 ShiftOS_TheReturn/Skinning.cs create mode 100644 ShiftOS_TheReturn/Story.cs create mode 100644 ShiftOS_TheReturn/TerminalBackend.cs create mode 100644 ShiftOS_TheReturn/TerminalTextWriter.cs create mode 100644 ShiftOS_TheReturn/VirusEngine.cs create mode 100644 ShiftOS_TheReturn/WinOpenAttribute.cs create mode 100644 ShiftOS_TheReturn/packages.config diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/LICENSE b/LICENSE index 58d98d3..0a69ab2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 shiftos-game +Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Libraries/Discoursistency.Base.dll b/Libraries/Discoursistency.Base.dll new file mode 100644 index 0000000000000000000000000000000000000000..bcff32f7887ae5e88cb121a16cdd33ab1574648d GIT binary patch literal 55808 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 UKg`Jk;e446?En4y|6L3GAAtLAsQ>@~ literal 0 HcmV?d00001 diff --git a/Libraries/Discoursistency.HTTP.dll b/Libraries/Discoursistency.HTTP.dll new file mode 100644 index 0000000000000000000000000000000000000000..637f7efa3c003dbe570eb136c71283ba0bc139d9 GIT binary patch literal 19456 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 Gf&T?3+zqGz literal 0 HcmV?d00001 diff --git a/Libraries/Discoursistency.Util.dll b/Libraries/Discoursistency.Util.dll new file mode 100644 index 0000000000000000000000000000000000000000..79aa121317747a65bac5182f0b94c7858b2443cf GIT binary patch literal 11264 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 z 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%0DN{82Iho-YvNl!se$8`28X)ch% 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%0AQSwD7Od)&IBedDkq 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 + + + + + \ No newline at end of file diff --git a/ShiftOS.MFSProfiler/Form1.Designer.cs b/ShiftOS.MFSProfiler/Form1.Designer.cs new file mode 100644 index 0000000..5abd139 --- /dev/null +++ b/ShiftOS.MFSProfiler/Form1.Designer.cs @@ -0,0 +1,248 @@ +namespace ShiftOS.MFSProfiler +{ + partial class Form1 + { + ///

+ /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.tvfiles = new System.Windows.Forms.TreeView(); + this.pnlfileinfo = new System.Windows.Forms.Panel(); + this.pnldirectorylisting = new System.Windows.Forms.Panel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.txtbinary = new System.Windows.Forms.TextBox(); + this.txtascii = new System.Windows.Forms.TextBox(); + this.lbfileinfo = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.pnlfileinfo.SuspendLayout(); + this.panel1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.tvfiles); + this.splitContainer1.Panel1.Controls.Add(this.panel1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.pnlfileinfo); + this.splitContainer1.Panel2.Controls.Add(this.pnldirectorylisting); + this.splitContainer1.Size = new System.Drawing.Size(739, 466); + this.splitContainer1.SplitterDistance = 246; + this.splitContainer1.TabIndex = 0; + // + // tvfiles + // + this.tvfiles.Dock = System.Windows.Forms.DockStyle.Fill; + this.tvfiles.Location = new System.Drawing.Point(0, 30); + this.tvfiles.Name = "tvfiles"; + this.tvfiles.Size = new System.Drawing.Size(246, 436); + this.tvfiles.TabIndex = 0; + this.tvfiles.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvfiles_AfterSelect); + // + // pnlfileinfo + // + this.pnlfileinfo.Controls.Add(this.groupBox2); + this.pnlfileinfo.Controls.Add(this.groupBox1); + this.pnlfileinfo.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlfileinfo.Location = new System.Drawing.Point(0, 0); + this.pnlfileinfo.Name = "pnlfileinfo"; + this.pnlfileinfo.Size = new System.Drawing.Size(489, 466); + this.pnlfileinfo.TabIndex = 0; + // + // pnldirectorylisting + // + this.pnldirectorylisting.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnldirectorylisting.Location = new System.Drawing.Point(0, 0); + this.pnldirectorylisting.Name = "pnldirectorylisting"; + this.pnldirectorylisting.Size = new System.Drawing.Size(489, 466); + this.pnldirectorylisting.TabIndex = 1; + // + // panel1 + // + this.panel1.Controls.Add(this.button1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(246, 30); + this.panel1.TabIndex = 1; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(4, 4); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 0; + this.button1.Text = "Mount file"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lbfileinfo); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox1.Location = new System.Drawing.Point(0, 0); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(489, 164); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "File record information"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.tabControl1); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Location = new System.Drawing.Point(0, 164); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(489, 302); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Contents"; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(3, 16); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(483, 283); + this.tabControl1.TabIndex = 0; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.txtascii); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(475, 257); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "ASCII"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.txtbinary); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(475, 257); + this.tabPage1.TabIndex = 2; + this.tabPage1.Text = "Binary"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // txtbinary + // + this.txtbinary.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtbinary.Location = new System.Drawing.Point(3, 3); + this.txtbinary.Multiline = true; + this.txtbinary.Name = "txtbinary"; + this.txtbinary.Size = new System.Drawing.Size(469, 251); + this.txtbinary.TabIndex = 0; + // + // txtascii + // + this.txtascii.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtascii.Location = new System.Drawing.Point(3, 3); + this.txtascii.Multiline = true; + this.txtascii.Name = "txtascii"; + this.txtascii.Size = new System.Drawing.Size(469, 251); + this.txtascii.TabIndex = 0; + // + // lbfileinfo + // + this.lbfileinfo.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbfileinfo.Location = new System.Drawing.Point(3, 16); + this.lbfileinfo.Name = "lbfileinfo"; + this.lbfileinfo.Size = new System.Drawing.Size(483, 145); + this.lbfileinfo.TabIndex = 0; + this.lbfileinfo.Text = "label1"; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(739, 466); + this.Controls.Add(this.splitContainer1); + this.Name = "Form1"; + this.Text = "Form1"; + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.pnlfileinfo.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.TreeView tvfiles; + private System.Windows.Forms.Panel pnldirectorylisting; + private System.Windows.Forms.Panel pnlfileinfo; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.TextBox txtascii; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TextBox txtbinary; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label lbfileinfo; + } +} + diff --git a/ShiftOS.MFSProfiler/Form1.cs b/ShiftOS.MFSProfiler/Form1.cs new file mode 100644 index 0000000..75025a9 --- /dev/null +++ b/ShiftOS.MFSProfiler/Form1.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static ShiftOS.Objects.ShiftFS.Utils; + +using ShiftOS.Engine; +using ShiftOS.Objects.ShiftFS; +using System.Threading; + +namespace ShiftOS.MFSProfiler +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + SetupTree(); + } + + public void SetupTree() + { + tvfiles.Nodes.Clear(); + + foreach(var dir in Mounts) + { + var mountNode = new TreeNode(); + mountNode.Text = dir.Name; + mountNode.Tag = Mounts.IndexOf(dir).ToString() + ":"; + + RecursiveDirectoryAdd(mountNode); + + tvfiles.Nodes.Add(mountNode); + } + } + + public void RecursiveDirectoryAdd(TreeNode node) + { + foreach (var dir in GetDirectories(node.Tag.ToString())) + { + var dirInf = GetDirectoryInfo(dir); + var child = new TreeNode(); + child.Text = dirInf.Name; + child.Tag = dir; + RecursiveDirectoryAdd(child); + node.Nodes.Add(child); + node.Expand(); + } + foreach (var dir in GetFiles(node.Tag.ToString())) + { + var dirInf = GetFileInfo(dir); + var child = new TreeNode(); + child.Text = dirInf.Name; + child.Tag = dir; + node.Nodes.Add(child); + node.Expand(); + } + } + + private void button1_Click(object sender, EventArgs e) + { + var opener = new OpenFileDialog(); + opener.Filter = "Mini Filesystem|*.mfs"; + opener.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); + opener.Title = "Mount filesystem"; + if(opener.ShowDialog() == DialogResult.OK) + { + Mount(System.IO.File.ReadAllText(opener.FileName)); + SetupTree(); + } + } + + private void tvfiles_AfterSelect(object sender, TreeViewEventArgs e) + { + try + { + if (FileExists(tvfiles.SelectedNode.Tag.ToString())) + { + pnlfileinfo.BringToFront(); + + txtascii.Text = ReadAllText(tvfiles.SelectedNode.Tag.ToString()); + txtbinary.Text = ""; + var finf = GetFileInfo(tvfiles.SelectedNode.Tag.ToString()); + var t = new Thread(new ThreadStart(() => + { + foreach (var b in finf.Data) + { + txtbinary.Invoke(new Action(() => + { + txtbinary.Text += b.ToString() + " "; + })); + } + })); + t.IsBackground = true; + t.Start(); + + + lbfileinfo.Text = $@"Name: {finf.Name} +Permissions: {finf.permissions} +Size: {finf.Data.Length} +System path: {tvfiles.SelectedNode.Tag.ToString()}"; + } + } catch { } + } + } +} diff --git a/ShiftOS.MFSProfiler/Form1.resx b/ShiftOS.MFSProfiler/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.MFSProfiler/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.MFSProfiler/Program.cs b/ShiftOS.MFSProfiler/Program.cs new file mode 100644 index 0000000..b8016f2 --- /dev/null +++ b/ShiftOS.MFSProfiler/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ShiftOS.MFSProfiler +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/ShiftOS.MFSProfiler/Properties/AssemblyInfo.cs b/ShiftOS.MFSProfiler/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7518f84 --- /dev/null +++ b/ShiftOS.MFSProfiler/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ShiftOS.MFSProfiler")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ShiftOS.MFSProfiler")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("af587f3f-ca85-4183-beeb-acf527b1fff3")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ShiftOS.MFSProfiler/Properties/Resources.Designer.cs b/ShiftOS.MFSProfiler/Properties/Resources.Designer.cs new file mode 100644 index 0000000..762a7d5 --- /dev/null +++ b/ShiftOS.MFSProfiler/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.MFSProfiler.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ShiftOS.MFSProfiler.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/ShiftOS.MFSProfiler/Properties/Resources.resx b/ShiftOS.MFSProfiler/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/ShiftOS.MFSProfiler/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.MFSProfiler/Properties/Settings.Designer.cs b/ShiftOS.MFSProfiler/Properties/Settings.Designer.cs new file mode 100644 index 0000000..bc3f96e --- /dev/null +++ b/ShiftOS.MFSProfiler/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.MFSProfiler.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/ShiftOS.MFSProfiler/Properties/Settings.settings b/ShiftOS.MFSProfiler/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/ShiftOS.MFSProfiler/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ShiftOS.MFSProfiler/ShiftOS.MFSProfiler.csproj b/ShiftOS.MFSProfiler/ShiftOS.MFSProfiler.csproj new file mode 100644 index 0000000..ce02df2 --- /dev/null +++ b/ShiftOS.MFSProfiler/ShiftOS.MFSProfiler.csproj @@ -0,0 +1,100 @@ + + + + + Debug + AnyCPU + {AF587F3F-CA85-4183-BEEB-ACF527B1FFF3} + WinExe + Properties + ShiftOS.MFSProfiler + ShiftOS.MFSProfiler + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {a069089a-8962-4607-b2b2-4cf4a371066e} + ShiftOS.Objects + + + {7c979b07-0585-4033-a110-e5555b9d6651} + ShiftOS.Engine + + + + + \ No newline at end of file diff --git a/ShiftOS.Objects/DiscourseUser.cs b/ShiftOS.Objects/DiscourseUser.cs new file mode 100644 index 0000000..d91b2e3 --- /dev/null +++ b/ShiftOS.Objects/DiscourseUser.cs @@ -0,0 +1,18 @@ +using Discoursistency.HTTP.Client; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Discoursistency.HTTP.Client.Models; + +namespace ShiftOS.Objects +{ + public class ShiftOSAuthAgent : Discoursistency.Base.Authentication.DiscourseAuthenticationService + { + public ShiftOSAuthAgent(IClient client) : base(client) + { + } + } + +} diff --git a/ShiftOS.Objects/Hack.cs b/ShiftOS.Objects/Hack.cs new file mode 100644 index 0000000..8967715 --- /dev/null +++ b/ShiftOS.Objects/Hack.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShiftOS.Objects +{ + public abstract class Exploit + { + public void BeginExploit(string remote_user, bool isMud) + { + var ctx = new ExploitContext(); + SendToMUD(remote_user, "hack_getcontext"); + MessageReceived += (u, c, j) => + { + + }; + ThisContext = ctx; + } + + public ExploitContext ThisContext { get; internal set; } + + public virtual void SendToMUD(string target_user, string command, string json = "") + { + ThisContext.IsMUDHack = false; + if (command == "hack_getcontext") + { + MessageReceived?.Invoke(target_user, "context_info", ExploitContext.CreateRandom()); + } + } + + public event MUDMessageEventHandler MessageReceived; + + + public abstract void OnRun(ExploitContext ctx); + } + + public delegate void MUDMessageEventHandler(string target_user, string command, string json); + + public class ExploitContext + { + public static string CreateRandom() + { + //We can't use JSON.NET. We must construct the JSON ourselves. + StringBuilder jBuilder = new StringBuilder(); + jBuilder.AppendLine("{"); + jBuilder.Append("\tIsMUDHack: \"false\","); + + jBuilder.AppendLine("}"); + return jBuilder.ToString(); + } + + /// + /// Gets or sets whether or not this exploit context belongs to a MUD hack session. + /// + public bool IsMUDHack { get; set; } + + /// + /// Gets or sets the target username for this exploit context. Used for talking with the MUD about it. + /// + public string TargetUsername { get; set; } + + /// + /// Gets or sets the target's locks. + /// + public List TargetLocks { get; set; } + + } + + public abstract class Lock + { + public abstract bool Unlocked { get; } + public abstract void Unlock(); + } +} diff --git a/ShiftOS.Objects/Objects.cs b/ShiftOS.Objects/Objects.cs new file mode 100644 index 0000000..bb5838e --- /dev/null +++ b/ShiftOS.Objects/Objects.cs @@ -0,0 +1,141 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShiftOS.Objects +{ + public enum LegionRole + { + Admin, + Manager, + Committed, + Trainee, + AwaitingInvite + } + + public enum LegionPublicity + { + Public, //Will display on the 'Join Legion' page, anyone can join + PublicInviteOnly, //Will display on the 'Join Legion' page but you must be invited + Unlisted, //Won't display on 'Join Legion', but anyone can join + UnlistedInviteOnly //Won't display in 'Join Legion', and admin/manager invitation is required. + } + + public class Legion + { + public string Name { get; set; } + public LegionPublicity Publicity { get; set; } + public ConsoleColor BannerColor { get; set; } + public string Description { get; set; } + public string ShortName { get; set; } + + public Dictionary Roles { get; set; } + public Dictionary RoleNames { get; set; } + + + } + + public class MUDMemo + { + public string UserFrom { get; set; } + public string UserTo { get; set; } + public MemoType Type { get; set; } + public string Body { get; set; } + public string Subject { get; set; } + } + + public class ClientSave + { + public string Username { get; set; } + public string Password { get; set; } + } + + public enum MemoType + { + Regular, + Job, + LegionInvite, + } + + + public class PongHighscore + { + public string UserName { get; set; } + public int HighestLevel { get; set; } + public int HighestCodepoints { get; set; } + } + + public class GUIDRequest + { + public string name { get; set; } + public string guid { get; set; } + } + + public class OnlineUser + { + public string Guid { get; set; } + public string Username { get; set; } + public string OnlineChat { get; set; } + } + + public class Channel + { + public string Name { get; set; } + public string ID { get; set; } + public string Topic { get; set; } + public int MaxUsers { get; set; } //0 for unlimited users (or the MUD maximum) + public List Users = new List(); + } + + + [Serializable] + public class ServerMessage + { + public string Name { get; set; } + public string Contents { get; set; } + public string GUID { get; set; } + } + + //Better to store this stuff server-side so we can do some neat stuff with hacking... + public class Save + { + public string Username { get; set; } + public int Codepoints { get; set; } + public Dictionary Upgrades { get; set; } + public int StoryPosition { get; set; } + public string Language { get; set; } + + public List CurrentLegions { get; set; } + + public int MajorVersion { get; set; } + public int MinorVersion { get; set; } + public int Revision { get; set; } + + public string Password { get; set; } + public string SystemName { get; set; } + + public string DiscourseName { get; set; } + + /// + /// If the user has entered their Discourse account into ShiftOS, this is the password they gave. + /// + /// ANY developer caught abusing this property will have their dev status revoked and their account PERMANENTLY SUSPENDED. - Michael + /// + public string DiscoursePass { get; set; } + + + public int CountUpgrades() + { + int count = 0; + foreach (var upg in Upgrades) + { + if (upg.Value == true) + count++; + } + return count; + } + } + +} diff --git a/ShiftOS.Objects/Properties/AssemblyInfo.cs b/ShiftOS.Objects/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6004a95 --- /dev/null +++ b/ShiftOS.Objects/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ShiftOS.Objects")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ShiftOS.Objects")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("a069089a-8962-4607-b2b2-4cf4a371066e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ShiftOS.Objects/ShiftFS.cs b/ShiftOS.Objects/ShiftFS.cs new file mode 100644 index 0000000..c9d87e3 --- /dev/null +++ b/ShiftOS.Objects/ShiftFS.cs @@ -0,0 +1,374 @@ +using System; +using Newtonsoft.Json; +using System.Collections.Generic; +using static ShiftOS.Objects.ShiftFS.Utils; +using System.Text; +using System.Threading; + +namespace ShiftOS.Objects.ShiftFS +{ + + public enum Permissions + { + User, + Administrator, + Superuser, + All + } + public class File + { + public string Name; + public byte[] Data; + public bool ReadAccessToLowUsers; + public Permissions permissions; + public System.IO.Stream GetStream() + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + return new System.IO.MemoryStream(Data); + } + else if (ReadAccessToLowUsers == true) + { + return new System.IO.MemoryStream(Data, false); + } + return null; + } + + public File(string name, byte[] data, bool ReadAccess_to_low_users, Permissions perm) + { + Name = name; + Data = data; + permissions = perm; + ReadAccessToLowUsers = ReadAccess_to_low_users; + } + } + public class Directory + { + public string Name; + public List Files = new List(); + public List Subdirectories = new List(); + public bool ReadAccessToLowUsers; + public Permissions permissions; + public void AddFile(File file) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + Files.Add(file); + } + } + public void RemoveFile(string name) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + Files.Remove(Files.Find(x => x.Name == name)); + } + } + public void RemoveFile(File file) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + Files.Remove(file); + } + } + public File FindFileByName(string name) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + return Files.Find(x => x.Name == name); + } + return null; + } + public void AddDirectory(Directory dir) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + Subdirectories.Add(dir); + } + } + public void RemoveDirectory(string name) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + Subdirectories.Remove(Subdirectories.Find(x => x.Name == name)); + } + } + public void RemoveDirectory(Directory dir) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + Subdirectories.Remove(dir); + } + } + public Directory FindDirectoryByName(string name) + { + if ((int)CurrentUser >= (int)permissions || permissions == Permissions.All) + { + return Subdirectories.Find(x => x.Name == name); + } + return null; + } + } + + public static class Utils + { + public static Permissions CurrentUser { get; set; } + + public static List Mounts { get; set; } + + static Utils() + { + if (Mounts == null) + Mounts = new List(); + + } + + public static void Mount(string json) + { + var dir = JsonConvert.DeserializeObject(json); + Mounts.Add(dir); + } + + public static void MountPersistent(string mfsFile) + { + var dir = JsonConvert.DeserializeObject(ReadAllText(mfsFile)); + Mounts.Add(dir); + string oldJson = JsonConvert.SerializeObject(dir); + var t = new Thread(new ThreadStart(() => + { + while (Mounts != null) + { + if (oldJson != JsonConvert.SerializeObject(dir)) + { + oldJson = JsonConvert.SerializeObject(dir); + WriteAllText(mfsFile, oldJson); + } + } + })); + t.IsBackground = true; + t.Start(); + } + + + public static void CreateDirectory(string path) + { + if (!DirectoryExists(path)) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 2; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + dir.AddDirectory(new Directory + { + Name = pathlist[pathlist.Length - 1], + permissions = CurrentUser, + }); + } + else + { + throw new Exception("The directory \"" + path + "\" already exists."); + } + } + + public static byte[] ReadAllBytes(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 2; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + var file = dir.FindFileByName(pathlist[pathlist.Length - 1]); + + return file.Data; + + } + + public static void WriteAllText(string path, string contents) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 2; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + + if (!FileExists(path)) + { + dir.AddFile(new File(pathlist[pathlist.Length - 1], Encoding.UTF8.GetBytes(contents), false, Permissions.All)); + } + else + { + var f = dir.FindFileByName(pathlist[pathlist.Length - 1]); + f.Data = Encoding.UTF8.GetBytes(contents); + } + + } + + + public static void Delete(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 2; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + + if (FileExists(path)) + { + dir.RemoveFile(pathlist[pathlist.Length - 1]); + } + else + { + dir.RemoveDirectory(pathlist[pathlist.Length - 1]); + } + + } + + + public static void WriteAllBytes(string path, byte[] contents) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 2; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + + if (!FileExists(path)) + { + dir.AddFile(new File(pathlist[pathlist.Length - 1], contents, false, Permissions.All)); + } + else + { + var f = dir.FindFileByName(pathlist[pathlist.Length - 1]); + f.Data = contents; + } + + } + + + + public static string ExportMount(int index) + { + var dir = Mounts[index]; + return JsonConvert.SerializeObject(dir, Formatting.Indented); + } + + public static bool DirectoryExists(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 1; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + return dir != null; + + } + + public static bool FileExists(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 2; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + return dir.FindFileByName(pathlist[pathlist.Length - 1]) != null; + + } + + public static Directory GetDirectoryInfo(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 1; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + if (path.EndsWith("/")) + path = path.Remove(path.Length - 1, 1); + return dir; + } + + public static string ReadAllText(string path) + { + return Encoding.UTF8.GetString(ReadAllBytes(path)); + } + + + + public static File GetFileInfo(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 2; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + return dir.FindFileByName(pathlist[pathlist.Length - 1]); + + } + + public static string[] GetDirectories(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for(int i = 1; i <= pathlist.Length - 1; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + if (path.EndsWith("/")) + path = path.Remove(path.Length - 1, 1); + + List paths = new List(); + + foreach(var subdir in dir.Subdirectories) + { + paths.Add(path + "/" + subdir.Name); + } + paths.Sort(); + return paths.ToArray(); + } + + public static string[] GetFiles(string path) + { + string[] pathlist = path.Split('/'); + int vol = Convert.ToInt32(pathlist[0].Replace(":", "")); + var dir = Mounts[vol]; + for (int i = 1; i <= pathlist.Length - 1; i++) + { + dir = dir.FindDirectoryByName(pathlist[i]); + } + if (path.EndsWith("/")) + path = path.Remove(path.Length - 1, 1); + + List paths = new List(); + + foreach (var subdir in dir.Files) + { + paths.Add(path + "/" + subdir.Name); + } + paths.Sort(); + return paths.ToArray(); + } + + public static void WriteAllText(string v, object p) + { + throw new NotImplementedException(); + } + } +} diff --git a/ShiftOS.Objects/ShiftOS.Objects.csproj b/ShiftOS.Objects/ShiftOS.Objects.csproj new file mode 100644 index 0000000..84d7ea8 --- /dev/null +++ b/ShiftOS.Objects/ShiftOS.Objects.csproj @@ -0,0 +1,75 @@ + + + + + Debug + AnyCPU + {A069089A-8962-4607-B2B2-4CF4A371066E} + Library + Properties + ShiftOS.Objects + ShiftOS.Objects + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\Libraries\Discoursistency.Base.dll + + + ..\Libraries\Discoursistency.HTTP.dll + + + ..\Libraries\Discoursistency.Util.dll + + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ShiftOS.Objects/ShiftOSMenuRenderer.cs b/ShiftOS.Objects/ShiftOSMenuRenderer.cs new file mode 100644 index 0000000..0e8fa05 --- /dev/null +++ b/ShiftOS.Objects/ShiftOSMenuRenderer.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ShiftOS.Objects +{ + class ShiftOSMenuRenderer : ToolStripProfessionalRenderer + { + public ShiftOSMenuRenderer() : base(new ShiftOSColorTable()) + { + + } + + protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) + { + + } + } + + public class ShiftOSColorTable : ProfessionalColorTable + { + + } +} diff --git a/ShiftOS.Objects/packages.config b/ShiftOS.Objects/packages.config new file mode 100644 index 0000000..9d64bf3 --- /dev/null +++ b/ShiftOS.Objects/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ShiftOS.Server/App.config b/ShiftOS.Server/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/ShiftOS.Server/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ShiftOS.Server/Program.cs b/ShiftOS.Server/Program.cs new file mode 100644 index 0000000..768ed08 --- /dev/null +++ b/ShiftOS.Server/Program.cs @@ -0,0 +1,964 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ShiftOS.Objects; +using NetSockets; +using System.IO; +using Newtonsoft.Json; +using System.Net; +using System.Net.Sockets; +using Nancy.Hosting.Self; +using Nancy; +using Nancy.Authentication.Basic; +using Nancy.Security; +using Nancy.TinyIoc; +using Nancy.Bootstrapper; + +namespace ShiftOS.Server +{ + public interface IUserMapper + { + /// + /// Get the real username from an identifier + /// + /// User identifier + /// The current NancyFx context + /// Matching populated IUserIdentity object, or empty + IUserIdentity GetUserFromIdentifier(Guid identifier, NancyContext context); + } + + public class MUDUserValidator : IUserValidator + { + public IUserIdentity Validate(string username, string password) + { + if(username == Program.AdminUsername && password == Program.AdminPassword) + { + return null; + } + else + { + return null; + } + } + } + + public class MUDUserIdentity : IUserIdentity + { + public IEnumerable Claims + { + get + { + return null; + } + } + + public string UserName + { + get + { + return uname; + } + } + + public string uname = ""; + + public MUDUserIdentity(string username) + { + uname = username; + } + } + + public class AuthenticationBootstrapper : DefaultNancyBootstrapper + { + protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) + { + base.ApplicationStartup(container, pipelines); + + pipelines.EnableBasicAuthentication(new BasicAuthenticationConfiguration( + container.Resolve(), + "MUD", UserPromptBehaviour.NonAjax)); + } + } + + public class Program + { + public static string AdminUsername = "admin"; + public static string AdminPassword = "admin"; + + + + public static NetObjectServer server; + + public delegate void StringEventHandler(string str); + + public static event StringEventHandler ServerStarted; + + public static void SaveChats() + { + List saved = new List(); + foreach(var chat in chats) + { + saved.Add(new Channel + { + ID = chat.ID, + Name = chat.Name, + MaxUsers = chat.MaxUsers, + Topic = chat.Topic, + Users = new List() + }); + } + File.WriteAllText("chats.json", JsonConvert.SerializeObject(saved)); + } + + public static void LoadChats() + { + chats = Newtonsoft.Json.JsonConvert.DeserializeObject>(File.ReadAllText("chats.json")); + } + + public static void Main(string[] args) + { + if (!Directory.Exists("saves")) + { + Directory.CreateDirectory("saves"); + } + + if(!File.Exists("chats.json")) + { + SaveChats(); + } + else + { + LoadChats(); + } + + if(!Directory.Exists("scripts")) + { + Console.WriteLine("Creating scripts directory..."); + Directory.CreateDirectory("scripts"); + Console.WriteLine("NOTE: This MUD is not just gonna generate scripts for you. You're going to need to write them. YOU are DevX."); + } + + Console.WriteLine("Starting server..."); + server = new NetObjectServer(); + + server.OnStarted += (o, a) => + { + Console.WriteLine($"Server started on address {server.Address}, port {server.Port}."); + ServerStarted?.Invoke(server.Address.MapToIPv4().ToString()); + }; + + server.OnStopped += (o, a) => + { + Console.WriteLine("WARNING! Server stopped."); + }; + + server.OnError += (o, a) => + { + Console.WriteLine("ERROR: " + a.Exception.Message); + }; + + server.OnClientAccepted += (o, a) => + { + Console.WriteLine("Client connected."); + server.DispatchTo(a.Guid, new NetObject("welcome", new ServerMessage { Name = "Welcome", Contents = a.Guid.ToString(), GUID = "Server" })); + }; + + server.OnReceived += (o, a) => + { + var obj = a.Data.Object; + + var msg = obj as ServerMessage; + + if(msg != null) + { + Interpret(msg); + } + }; + + IPAddress defaultAddress = null; + + var host = Dns.GetHostEntry(Dns.GetHostName()); + foreach (var ip in host.AddressList) + { + if (ip.AddressFamily == AddressFamily.InterNetwork) + { + defaultAddress = ip; + } + } + + try + { + server.Start(defaultAddress, 13370); + } + catch + { + Console.WriteLine("So we tried to bind the server to your IP address automatically, but your operating system or the .NET environment you are in (possibly Mono on Linux) is preventing us from doing so. We'll try to bind to the loopback IP address (127.0.0.1) and if that doesn't work, the multi-user domain software may not be compatible with this OS or .NET environment."); + server.Stop(); + server.Start(IPAddress.Loopback, 13370); + + } + + var hConf = new HostConfiguration(); + hConf.UrlReservations.CreateAutomatically = true; + + var nancy = new NancyHost(hConf, new Uri("http://localhost:13371/")); + + server.OnStopped += (o, a) => + { + nancy.Stop(); + }; + + nancy.Start(); + } + + public static bool UserInChat(Channel chan, Save user) + { + foreach(var usr in chan.Users) + { + if(usr.Username == user.Username) + { + return true; + } + } + return false; + } + + + + public static void Interpret(ServerMessage msg) + { + Dictionary args = null; + + try + { + Console.WriteLine($@"Message received from {msg.GUID}: {msg.Name} + +Contents: +{msg.Contents}"); + + if (!string.IsNullOrWhiteSpace(msg.Contents)) + { + try + { + //It's gotta be JSON. + if (msg.Contents.StartsWith("{")) + { + args = JsonConvert.DeserializeObject>(msg.Contents); + } + } + catch + { + //Damnit, we were wrong. + args = null; + } + } + + switch (msg.Name) + { + case "mud_login": + if (args["username"] != null && args["password"] != null) + { + foreach(var savefile in Directory.GetFiles("saves")) + { + try + { + var save = JsonConvert.DeserializeObject(File.ReadAllText(savefile)); + + if(save.Username == args["username"].ToString() && save.Password == args["password"].ToString()) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("mud_savefile", new ServerMessage + { + Name = "mud_savefile", + GUID = "server", + Contents = File.ReadAllText(savefile) + })); + return; + } + } + catch { } + } + server.DispatchTo(new Guid(msg.GUID), new NetObject("auth_failed", new ServerMessage + { + Name = "mud_login_denied", + GUID = "server" + })); + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("auth_failed", new ServerMessage + { + Name = "mud_login_denied", + GUID = "server" + })); + } + break; + case "legion_create": + List legions = new List(); + if (File.Exists("legions.json")) + legions = JsonConvert.DeserializeObject>(File.ReadAllText("legions.json")); + + var l = JsonConvert.DeserializeObject(msg.Contents); + + legions.Add(l); + + File.WriteAllText("legions.json", JsonConvert.SerializeObject(legions, Formatting.Indented)); + break; + case "legion_get_all": + List allLegions = new List(); + + if (File.Exists("legions.json")) + allLegions = JsonConvert.DeserializeObject>(File.ReadAllText("legions.json")); + + server.DispatchTo(new Guid(msg.GUID), new NetObject("alllegions", new ServerMessage + { + Name = "legion_all", + GUID = "server", + Contents = JsonConvert.SerializeObject(allLegions) + })); + break; + case "legion_get_users": + var lgn = JsonConvert.DeserializeObject(msg.Contents); + + List userIDs = new List(); + + foreach (var savfile in Directory.GetFiles("saves")) + { + try + { + var savefilecontents = JsonConvert.DeserializeObject(File.ReadAllText(savfile)); + if (savefilecontents.CurrentLegions.Contains(lgn.ShortName)) + { + userIDs.Add($"{savefilecontents.Username}@{savefilecontents.SystemName}"); + } + } + catch { } + } + + server.DispatchTo(new Guid(msg.GUID), new NetObject("userlist", new ServerMessage + { + Name = "legion_users_found", + GUID = "server", + Contents = JsonConvert.SerializeObject(userIDs) + })); + break; + case "user_get_legion": + var userSave = JsonConvert.DeserializeObject(msg.Contents); + + if (File.Exists("legions.json")) + { + var legionList = JsonConvert.DeserializeObject>(File.ReadAllText("legions.json")); + foreach (var legion in legionList) + { + if (userSave.CurrentLegions.Contains(legion.ShortName)) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("reply", new ServerMessage + { + Name = "user_legion", + GUID = "server", + Contents = JsonConvert.SerializeObject(legion) + })); + return; + } + } + } + + server.DispatchTo(new Guid(msg.GUID), new NetObject("fuck", new ServerMessage + { + Name = "user_not_found_in_legion", + GUID = "server" + })); + + break; + case "mud_save": + var sav = JsonConvert.DeserializeObject(msg.Contents); + File.WriteAllText("saves/" + sav.Username + ".save", JsonConvert.SerializeObject(sav, Formatting.Indented)); + + server.DispatchTo(new Guid(msg.GUID), new NetObject("auth_failed", new ServerMessage + { + Name = "mud_saved", + GUID = "server" + })); + + break; + case "mud_checkuserexists": + if (args["username"] != null && args["password"] != null) + { + foreach (var savefile in Directory.GetFiles("saves")) + { + try + { + var save = JsonConvert.DeserializeObject(File.ReadAllText(savefile)); + + if (save.Username == args["username"].ToString() && save.Password == args["password"].ToString()) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("mud_savefile", new ServerMessage + { + Name = "mud_found", + GUID = "server", + })); + return; + } + } + catch { } + } + server.DispatchTo(new Guid(msg.GUID), new NetObject("auth_failed", new ServerMessage + { + Name = "mud_notfound", + GUID = "server" + })); + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("auth_failed", new ServerMessage + { + Name = "mud_notfound", + GUID = "server" + })); + } + break; + break; + case "pong_gethighscores": + if (File.Exists("pong_highscores.json")) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("pongstuff", new ServerMessage + { + Name = "pong_highscores", + GUID = "server", + Contents = File.ReadAllText("pong_highscores.json") + })); + } + break; + case "get_memos_for_user": + if(args["username"] != null) + { + string usrname = args["username"].ToString(); + + List mmos = new List(); + + if (File.Exists("memos.json")) + { + foreach(var mmo in JsonConvert.DeserializeObject(File.ReadAllText("memos.json"))) + { + if(mmo.UserTo == usrname) + { + mmos.Add(mmo); + } + } + } + + server.DispatchTo(new Guid(msg.GUID), new NetObject("mud_memos", new ServerMessage + { + Name = "mud_usermemos", + GUID = "server", + Contents = JsonConvert.SerializeObject(mmos) + })); + } + break; + case "mud_post_memo": + MUDMemo memo = JsonConvert.DeserializeObject(msg.Contents); + List memos = new List(); + + if (File.Exists("memos.json")) + memos = JsonConvert.DeserializeObject>(File.ReadAllText("memos.json")); + + memos.Add(memo); + File.WriteAllText("memos.txt", JsonConvert.SerializeObject(memos)); + + + break; + case "pong_sethighscore": + var hs = new List(); + if (File.Exists("pong_highscores.json")) + hs = JsonConvert.DeserializeObject>(File.ReadAllText("ponghighscores.json")); + + var newHS = JsonConvert.DeserializeObject(msg.Contents); + for (int i = 0; i <= hs.Count; i++) + { + try + { + if (hs[i].UserName == newHS.UserName) + { + if (newHS.HighestLevel > hs[i].HighestLevel) + hs[i].HighestLevel = newHS.HighestLevel; + if (newHS.HighestCodepoints > hs[i].HighestCodepoints) + hs[i].HighestCodepoints = newHS.HighestCodepoints; + File.WriteAllText("pong_highscores.json", JsonConvert.SerializeObject(hs)); + return; + + } + } + catch + { + + } + } + hs.Add(newHS); + File.WriteAllText("pong_highscores.json", JsonConvert.SerializeObject(hs)); + return; + case "getvirusdb": + if (!File.Exists("virus.db")) + File.WriteAllText("virus.db", "{}"); + + server.DispatchTo(new Guid(msg.GUID), new NetObject("vdb", new ServerMessage + { + Name = "virusdb", + GUID = "server", + Contents = File.ReadAllText("virus.db") + })); + break; + case "getvirus": + Dictionary virusDB = new Dictionary(); + + if (File.Exists("virus.db")) + virusDB = JsonConvert.DeserializeObject>(File.ReadAllText("virus.db")); + + foreach (var kv in virusDB) + { + if (kv.Key == msg.Contents) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("response", new ServerMessage + { + Name = "mud_virus", + GUID = "server", + Contents = kv.Value, + })); + return; + } + } + + + break; + case "mud_scanvirus": + Dictionary _virusDB = new Dictionary(); + + bool addIfNotFound = true; + + if (msg.Contents.Contains("||scanonly")) + addIfNotFound = false; + + msg.Contents = msg.Contents.Replace("||scanonly", ""); + + if(File.Exists("virus.db")) + _virusDB = JsonConvert.DeserializeObject>(File.ReadAllText("virus.db")); + + foreach(var kv in _virusDB) + { + if(kv.Value == msg.Contents) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("response", new ServerMessage + { + Name = "mud_virus_signature", + GUID = "server", + Contents = kv.Key, + })); + return; + } + } + + if (addIfNotFound == true) + { + string newguid = Guid.NewGuid().ToString(); + _virusDB.Add(newguid, msg.Contents); + File.WriteAllText("virus.db", JsonConvert.SerializeObject(_virusDB, Formatting.Indented)); + server.DispatchTo(new Guid(msg.GUID), new NetObject("response", new ServerMessage + { + Name = "mud_virus_signature", + GUID = "server", + Contents = newguid, + })); + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("response", new ServerMessage + { + Name = "mud_virus_signature", + GUID = "server", + Contents = "unknown", + })); + } + return; + + case "chat_join": + if (args.ContainsKey("id")) + { + var cuser = new Save(); + if (args.ContainsKey("user")) + { + cuser = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(args["user"])); + + + } + int index = -1; + string chat_id = args["id"] as string; + foreach(var chat in chats) + { + if(chat.ID == chat_id) + { + if(chat.Users.Count < chat.MaxUsers || chat.MaxUsers == 0) + { + //user can join chat. + if(cuser != null) + { + index = chats.IndexOf(chat); + } + } + } + } + if(index > -1) + { + chats[index].Users.Add(cuser); + server.DispatchAll(new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{chat_id}: {cuser.Username} {{CHAT_HAS_JOINED}}" + })); + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{chat_id}: {{CHAT_NOT_FOUND_OR_TOO_MANY_MEMBERS}}" + })); + } + } + break; + case "chat": + if (args.ContainsKey("id")) + { + var cuser = new Save(); + if (args.ContainsKey("user")) + { + cuser = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(args["user"])); + + + } + string message = ""; + if (args.ContainsKey("msg")) + message = args["msg"] as string; + + int index = -1; + string chat_id = args["id"] as string; + foreach (var chat in chats) + { + if (chat.ID == chat_id) + { + if (cuser != null && !string.IsNullOrWhiteSpace(message) && UserInChat(chat, cuser)) + { + index = chats.IndexOf(chat); + } + } + } + if (index > -1) + { + server.DispatchAll(new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{chat_id}/{cuser.Username}: {message}" + })); + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{chats[index].ID}: {{CHAT_NOT_FOUND_OR_NOT_IN_CHAT}}" + })); + } + } + + break; + case "chat_leave": + if (args.ContainsKey("id")) + { + var cuser = new Save(); + if (args.ContainsKey("user")) + { + cuser = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(args["user"])); + + + } + int index = -1; + string chat_id = args["id"] as string; + foreach (var chat in chats) + { + if (chat.ID == chat_id) + { + if (cuser != null && UserInChat(chat, cuser)) + { + index = chats.IndexOf(chat); + } + } + } + if (index > -1) + { + server.DispatchAll(new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{chats[index].ID}: {cuser.Username} {{HAS_LEFT_CHAT}}" + })); + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{chat_id}: {{CHAT_NOT_FOUND_OR_NOT_IN_CHAT}}" + })); + } + } + break; + case "chat_create": + string id = ""; + string topic = ""; + string name = ""; + int max_users = 0; + + if (args.ContainsKey("id")) + id = args["id"] as string; + if (args.ContainsKey("topic")) + name = args["topic"] as string; + if (args.ContainsKey("name")) + topic = args["name"] as string; + if (args.ContainsKey("max_users")) + max_users = Convert.ToInt32(args["max_users"].ToString()); + + bool id_taken = false; + + foreach(var chat in chats) + { + if (chat.ID == id) + id_taken = true; + } + + if (id_taken == false) + { + chats.Add(new Channel + { + ID = id, + Name = name, + Topic = topic, + MaxUsers = max_users, + Users = new List() + }); + SaveChats(); + server.DispatchTo(new Guid(msg.GUID), new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{id}: {{SUCCESSFULLY_CREATED_CHAT}}" + })); + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("broadcast", new ServerMessage + { + Name = "cbroadcast", + GUID = "server", + Contents = $"{id}: {{ID_TAKEN}}" + })); + } + + break; + case "broadcast": + string text = msg.Contents; + if (!string.IsNullOrWhiteSpace(text)) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("runme", new ServerMessage + { + Name = "broadcast", + GUID = "Server", + Contents = text + + })); + } + break; + case "lua_up": + string lua = msg.Contents; + string firstLine = lua.Split(new[] { Environment.NewLine }, StringSplitOptions.None)[0]; + firstLine = firstLine.Remove(0, 3); //delete the comment + string[] a = firstLine.Split('.'); + if(!Directory.Exists("scripts/" + a[0])) + { + Directory.CreateDirectory($"scripts/{a[0]}"); + } + File.WriteAllText($"scripts/{a[0]}/{a[1]}.lua", lua); + break; + case "mudhack_init": + if (MUDHackPasswords.ContainsKey(msg.GUID)) + MUDHackPasswords.Remove(msg.GUID); + + MUDHackPasswords.Add(msg.GUID, GenerateRandomPassword()); + + + server.DispatchTo(new Guid(msg.GUID), new NetObject("mudhack_init", new ServerMessage + { + Name = "mudhack_init", + GUID = "SERVER", + Contents = MUDHackPasswords[msg.GUID], + })); + + break; + case "mudhack_verify": + if (!MUDHackPasswords.ContainsKey(msg.GUID)) + { + + server.DispatchTo(new Guid(msg.GUID), new NetObject("mudhack_init", new ServerMessage + { + Name = "server_error", + GUID = "SERVER", + Contents = "{SRV_HACK_NOT_INITIATED}", + })); + return; + } + + string pass = ""; + if (args.ContainsKey("pass")) + pass = args["pass"] as string; + + if(pass == MUDHackPasswords[msg.GUID]) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("mudhack_init", new ServerMessage + { + Name = "mudhack_granted", + GUID = "SERVER", + })); + + } + else + { + + server.DispatchTo(new Guid(msg.GUID), new NetObject("mudhack_init", new ServerMessage + { + Name = "mudhack_denied", + GUID = "SERVER", + })); + } + break; + case "mudhack_killpass": + if (MUDHackPasswords.ContainsKey(msg.GUID)) + MUDHackPasswords.Remove(msg.GUID); + break; + case "mudhack_getallusers": + List users = new List(); + + foreach (var chat in chats) + { + foreach(var usr in chat.Users) + { + var ousr = new OnlineUser(); + ousr.Username = usr.Username; + ousr.OnlineChat = chat.ID; + users.Add(ousr); + } + } + + server.DispatchTo(new Guid(msg.GUID), new NetObject("mudhack_users", new ServerMessage + { + Name = "mudhack_users", + GUID = "SERVER", + Contents = JsonConvert.SerializeObject(users), + })); + break; + case "getguid_reply": + msg.GUID = "server"; + //The message's GUID was manipulated by the client to send to another client. + //So we can just bounce back the message to the other client. + server.DispatchTo(new Guid(msg.GUID), new NetObject("bounce", msg)); + break; + case "getguid_send": + string username = msg.Contents; + string guid = msg.GUID; + server.DispatchAll(new NetObject("are_you_this_guy", new ServerMessage + { + Name = "getguid_fromserver", + GUID = guid, + Contents = username, + })); + break; + case "script": + string user = ""; + string script = ""; + string sArgs = ""; + + if (!args.ContainsKey("user")) + throw new Exception("No 'user' arg specified in message to server"); + + if (!args.ContainsKey("script")) + throw new Exception("No 'script' arg specified in message to server"); + + if (!args.ContainsKey("args")) + throw new Exception("No 'args' arg specified in message to server"); + + user = args["user"] as string; + script = args["script"] as string; + sArgs = args["args"] as string; + + if(File.Exists($"scripts/{user}/{script}.lua")) + { + var script_arguments = JsonConvert.DeserializeObject>(sArgs); + server.DispatchTo(new Guid(msg.GUID), new NetObject("runme", new ServerMessage { + Name="run", + GUID="Server", + Contents = $@"{{ + script:""{File.ReadAllText($"scripts/{user}/{script}.lua").Replace("\"", "\\\"")}"", + args:""{sArgs}"" +}}" + })); + } + else + { + throw new Exception($"{user}.{script}: Script not found."); + } + break; + default: + throw new Exception($"Server couldn't decipher this message:\n\n{JsonConvert.SerializeObject(msg)}"); + } + } + catch(Exception ex) + { + Console.WriteLine("An error occurred with that one."); + Console.WriteLine(ex); + + server.DispatchTo(new Guid(msg.GUID), new NetObject("error", new ServerMessage { Name = "Error", GUID = "Server", Contents = JsonConvert.SerializeObject(ex) })); + } + } + + public static string GenerateRandomPassword() + { + return Guid.NewGuid().ToString(); + } + + public static Dictionary MUDHackPasswords = new Dictionary(); + + public static void Stop() + { + try + { + if (server.IsOnline) + { + try + { + server.Stop(); + } + catch + { + + } + } + server = null; + } + catch { } + } + + public static List chats = new List(); + } +} diff --git a/ShiftOS.Server/Properties/AssemblyInfo.cs b/ShiftOS.Server/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..631aa86 --- /dev/null +++ b/ShiftOS.Server/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ShiftOS.Server")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ShiftOS.Server")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("226c63b4-e60d-4949-b4e7-7a2ddbb96776")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ShiftOS.Server/Properties/Resources.Designer.cs b/ShiftOS.Server/Properties/Resources.Designer.cs new file mode 100644 index 0000000..4ceddac --- /dev/null +++ b/ShiftOS.Server/Properties/Resources.Designer.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.Server.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ShiftOS.Server.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to <html> + /// <head> + /// <title>ShiftOS Multi-User Domain &bull; Admin Panel</title> + /// </head> + /// <body> + /// <h1>Welcome.</h1> + /// <p>There's nothing here, but hey, it works!</p> + /// </body> + ///</html>. + /// + internal static string Home { + get { + return ResourceManager.GetString("Home", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <html> + /// <head> + /// <title>Multi-User Domain &bull; Administration Panel - Page not found.</title> + /// </head> + /// <body> + /// <h1>This page wasn't found.</h1> + /// <p>We couldn't find this page...</p> + /// </body> + ///</html>. + /// + internal static string NotFound { + get { + return ResourceManager.GetString("NotFound", resourceCulture); + } + } + } +} diff --git a/ShiftOS.Server/Properties/Resources.resx b/ShiftOS.Server/Properties/Resources.resx new file mode 100644 index 0000000..cd10c06 --- /dev/null +++ b/ShiftOS.Server/Properties/Resources.resx @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Home.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\NotFound.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + \ No newline at end of file diff --git a/ShiftOS.Server/Resources/Home.txt b/ShiftOS.Server/Resources/Home.txt new file mode 100644 index 0000000..41c8995 --- /dev/null +++ b/ShiftOS.Server/Resources/Home.txt @@ -0,0 +1,31 @@ + + + ShiftOS Multi-User Domain • Admin Panel + + + + + + + + + +
+ + {BODY} + +
+

MUD server on {IP_ADDR}:{PORT}

+
+
+ + \ No newline at end of file diff --git a/ShiftOS.Server/Resources/NotFound.txt b/ShiftOS.Server/Resources/NotFound.txt new file mode 100644 index 0000000..cd65829 --- /dev/null +++ b/ShiftOS.Server/Resources/NotFound.txt @@ -0,0 +1,9 @@ + + + Multi-User Domain • Administration Panel - Page not found. + + +

This page wasn't found.

+

We couldn't find this page...

+ + \ No newline at end of file diff --git a/ShiftOS.Server/ShiftOS.Server.csproj b/ShiftOS.Server/ShiftOS.Server.csproj new file mode 100644 index 0000000..8db678e --- /dev/null +++ b/ShiftOS.Server/ShiftOS.Server.csproj @@ -0,0 +1,108 @@ + + + + + Debug + AnyCPU + {226C63B4-E60D-4949-B4E7-7A2DDBB96776} + Exe + Properties + ShiftOS.Server + ShiftOS.Server + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\DynamicLua.1.1.2.0\lib\net40-Client\DynamicLua.dll + True + + + ..\packages\Nancy.1.4.1\lib\net40\Nancy.dll + True + + + ..\packages\Nancy.Authentication.Basic.1.4.1\lib\net40\Nancy.Authentication.Basic.dll + True + + + ..\packages\Nancy.Hosting.Self.1.4.1\lib\net40\Nancy.Hosting.Self.dll + True + + + ..\Libraries\NetSockets.dll + + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + True + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + + + + + {a069089a-8962-4607-b2b2-4cf4a371066e} + ShiftOS.Objects + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + + + + \ No newline at end of file diff --git a/ShiftOS.Server/WebAdmin.cs b/ShiftOS.Server/WebAdmin.cs new file mode 100644 index 0000000..cf21181 --- /dev/null +++ b/ShiftOS.Server/WebAdmin.cs @@ -0,0 +1,91 @@ +using Nancy; +using Nancy.Security; +using NetSockets; +using Newtonsoft.Json; +using ShiftOS.Objects; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace ShiftOS.Server +{ + public class WebAdmin : NancyModule + { + private Guid thisGuid { get; set; } + + public WebAdmin() + { + this.RequiresAuthentication(); + + + client = new NetObjectClient(); + + client.OnReceived += (o, a) => + { + var msg = a.Data.Object as ServerMessage; + if (msg.Name == "Welcome") + { + thisGuid = new Guid(msg.Contents); + } + }; + + client.Connect(Program.server.Address.MapToIPv4().ToString(), 13370); + + string template = Properties.Resources.Home; + + Get["/"] = _ => { return GetPage(template, "index.html"); }; + Get["/{page}"] = parameters => + { + return GetPage(template, parameters.page); + }; + } + + public NetObjectClient client = new NetObjectClient(); + + public string GetPage(string template, string page) + { + string pageContents = File.ReadAllText("adm/" + page); + + string page_text = template.Replace("{BODY}", pageContents); + + page_text = page_text.Replace("{IP_ADDR}", client.RemoteHost.ToString()); + page_text = page_text.Replace("{PORT}", client.RemotePort.ToString()); + + return page_text; + } + + public string GrabResource(string page) + { + var type = this.GetType(); + foreach(var property in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) + { + foreach(var attr in property.GetCustomAttributes(false)) + { + if(attr is PageAttribute) + { + if(page == (attr as PageAttribute).Name) + { + return property.GetGetMethod().Invoke(this, null) as string; + } + } + } + } + + return Properties.Resources.NotFound; + } + } + + public class PageAttribute :Attribute + { + public PageAttribute(string name) + { + Name = name; + } + + public string Name { get; set; } + } +} diff --git a/ShiftOS.Server/packages.config b/ShiftOS.Server/packages.config new file mode 100644 index 0000000..3e07118 --- /dev/null +++ b/ShiftOS.Server/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/ShiftOS.Sites/information.txt b/ShiftOS.Sites/information.txt new file mode 100644 index 0000000..1e8c4d9 --- /dev/null +++ b/ShiftOS.Sites/information.txt @@ -0,0 +1,14 @@ +The ShiftOS Site repo was moved to automate deployment. + +However, this also comes at a toll to the rest of you developers: + +To help protect the automated deployment system from griefing, trolling etc. from other developers - nobody will have access to this other repo. + +There are only two people who are allowed access to the website repository: + +- Me (NarodGaming): I own and run the website itself, i even own the hardware it runs on. +- Michael: He owns the damn project, and is trustworthy. + +If you believe that you should have access, just PM me on Discord on the forums, and I'll give it a think. + +Sorry for any inconvinience caused - but I hope you understand. \ No newline at end of file diff --git a/ShiftOS.WinForms/App.config b/ShiftOS.WinForms/App.config new file mode 100644 index 0000000..71a06ba --- /dev/null +++ b/ShiftOS.WinForms/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Artpad.Designer.cs b/ShiftOS.WinForms/Applications/Artpad.Designer.cs new file mode 100644 index 0000000..b2e7121 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Artpad.Designer.cs @@ -0,0 +1,3552 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class Artpad + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.pgcontents = new System.Windows.Forms.Panel(); + this.pnldrawingbackground = new System.Windows.Forms.Panel(); + this.pnlinitialcanvassettings = new System.Windows.Forms.Panel(); + this.btncancel = new System.Windows.Forms.Button(); + this.btncreate = new System.Windows.Forms.Button(); + this.Label11 = new System.Windows.Forms.Label(); + this.lbltotalpixels = new System.Windows.Forms.Label(); + this.txtnewcanvasheight = new System.Windows.Forms.TextBox(); + this.Label10 = new System.Windows.Forms.Label(); + this.txtnewcanvaswidth = new System.Windows.Forms.TextBox(); + this.Label9 = new System.Windows.Forms.Label(); + this.pnlpalettesize = new System.Windows.Forms.Panel(); + this.txttopspace = new System.Windows.Forms.TextBox(); + this.Label40 = new System.Windows.Forms.Label(); + this.txtsidespace = new System.Windows.Forms.TextBox(); + this.Label41 = new System.Windows.Forms.Label(); + this.btnchangesizecancel = new System.Windows.Forms.Button(); + this.btnsetsize = new System.Windows.Forms.Button(); + this.txtcolorpalletheight = new System.Windows.Forms.TextBox(); + this.Label42 = new System.Windows.Forms.Label(); + this.txtcolorpalletwidth = new System.Windows.Forms.TextBox(); + this.Label43 = new System.Windows.Forms.Label(); + this.picdrawingdisplay = new System.Windows.Forms.PictureBox(); + this.pnlbottompanel = new System.Windows.Forms.Panel(); + this.pnlpallet = new System.Windows.Forms.Panel(); + this.flowcolours = new System.Windows.Forms.FlowLayoutPanel(); + this.colourpallet1 = new System.Windows.Forms.Panel(); + this.colourpallet2 = new System.Windows.Forms.Panel(); + this.colourpallet3 = new System.Windows.Forms.Panel(); + this.colourpallet4 = new System.Windows.Forms.Panel(); + this.colourpallet5 = new System.Windows.Forms.Panel(); + this.colourpallet6 = new System.Windows.Forms.Panel(); + this.colourpallet7 = new System.Windows.Forms.Panel(); + this.colourpallet8 = new System.Windows.Forms.Panel(); + this.colourpallet9 = new System.Windows.Forms.Panel(); + this.colourpallet10 = new System.Windows.Forms.Panel(); + this.colourpallet11 = new System.Windows.Forms.Panel(); + this.colourpallet12 = new System.Windows.Forms.Panel(); + this.colourpallet13 = new System.Windows.Forms.Panel(); + this.colourpallet14 = new System.Windows.Forms.Panel(); + this.colourpallet15 = new System.Windows.Forms.Panel(); + this.colourpallet16 = new System.Windows.Forms.Panel(); + this.colourpallet17 = new System.Windows.Forms.Panel(); + this.colourpallet18 = new System.Windows.Forms.Panel(); + this.colourpallet19 = new System.Windows.Forms.Panel(); + this.colourpallet20 = new System.Windows.Forms.Panel(); + this.colourpallet21 = new System.Windows.Forms.Panel(); + this.colourpallet22 = new System.Windows.Forms.Panel(); + this.colourpallet23 = new System.Windows.Forms.Panel(); + this.colourpallet24 = new System.Windows.Forms.Panel(); + this.colourpallet25 = new System.Windows.Forms.Panel(); + this.colourpallet26 = new System.Windows.Forms.Panel(); + this.colourpallet27 = new System.Windows.Forms.Panel(); + this.colourpallet28 = new System.Windows.Forms.Panel(); + this.colourpallet29 = new System.Windows.Forms.Panel(); + this.colourpallet30 = new System.Windows.Forms.Panel(); + this.colourpallet31 = new System.Windows.Forms.Panel(); + this.colourpallet32 = new System.Windows.Forms.Panel(); + this.colourpallet33 = new System.Windows.Forms.Panel(); + this.colourpallet34 = new System.Windows.Forms.Panel(); + this.colourpallet35 = new System.Windows.Forms.Panel(); + this.colourpallet36 = new System.Windows.Forms.Panel(); + this.colourpallet37 = new System.Windows.Forms.Panel(); + this.colourpallet38 = new System.Windows.Forms.Panel(); + this.colourpallet39 = new System.Windows.Forms.Panel(); + this.colourpallet40 = new System.Windows.Forms.Panel(); + this.colourpallet41 = new System.Windows.Forms.Panel(); + this.colourpallet42 = new System.Windows.Forms.Panel(); + this.colourpallet43 = new System.Windows.Forms.Panel(); + this.colourpallet44 = new System.Windows.Forms.Panel(); + this.colourpallet45 = new System.Windows.Forms.Panel(); + this.colourpallet46 = new System.Windows.Forms.Panel(); + this.colourpallet47 = new System.Windows.Forms.Panel(); + this.colourpallet48 = new System.Windows.Forms.Panel(); + this.colourpallet49 = new System.Windows.Forms.Panel(); + this.colourpallet50 = new System.Windows.Forms.Panel(); + this.colourpallet51 = new System.Windows.Forms.Panel(); + this.colourpallet52 = new System.Windows.Forms.Panel(); + this.colourpallet53 = new System.Windows.Forms.Panel(); + this.colourpallet54 = new System.Windows.Forms.Panel(); + this.colourpallet55 = new System.Windows.Forms.Panel(); + this.colourpallet56 = new System.Windows.Forms.Panel(); + this.colourpallet57 = new System.Windows.Forms.Panel(); + this.colourpallet58 = new System.Windows.Forms.Panel(); + this.colourpallet59 = new System.Windows.Forms.Panel(); + this.colourpallet60 = new System.Windows.Forms.Panel(); + this.colourpallet61 = new System.Windows.Forms.Panel(); + this.colourpallet62 = new System.Windows.Forms.Panel(); + this.colourpallet63 = new System.Windows.Forms.Panel(); + this.colourpallet64 = new System.Windows.Forms.Panel(); + this.colourpallet65 = new System.Windows.Forms.Panel(); + this.colourpallet66 = new System.Windows.Forms.Panel(); + this.colourpallet67 = new System.Windows.Forms.Panel(); + this.colourpallet68 = new System.Windows.Forms.Panel(); + this.colourpallet69 = new System.Windows.Forms.Panel(); + this.colourpallet70 = new System.Windows.Forms.Panel(); + this.colourpallet71 = new System.Windows.Forms.Panel(); + this.colourpallet72 = new System.Windows.Forms.Panel(); + this.colourpallet73 = new System.Windows.Forms.Panel(); + this.colourpallet74 = new System.Windows.Forms.Panel(); + this.colourpallet75 = new System.Windows.Forms.Panel(); + this.colourpallet76 = new System.Windows.Forms.Panel(); + this.colourpallet77 = new System.Windows.Forms.Panel(); + this.colourpallet78 = new System.Windows.Forms.Panel(); + this.colourpallet79 = new System.Windows.Forms.Panel(); + this.colourpallet80 = new System.Windows.Forms.Panel(); + this.colourpallet81 = new System.Windows.Forms.Panel(); + this.colourpallet82 = new System.Windows.Forms.Panel(); + this.colourpallet83 = new System.Windows.Forms.Panel(); + this.colourpallet84 = new System.Windows.Forms.Panel(); + this.colourpallet85 = new System.Windows.Forms.Panel(); + this.colourpallet86 = new System.Windows.Forms.Panel(); + this.colourpallet87 = new System.Windows.Forms.Panel(); + this.colourpallet88 = new System.Windows.Forms.Panel(); + this.colourpallet89 = new System.Windows.Forms.Panel(); + this.colourpallet90 = new System.Windows.Forms.Panel(); + this.colourpallet91 = new System.Windows.Forms.Panel(); + this.colourpallet92 = new System.Windows.Forms.Panel(); + this.colourpallet93 = new System.Windows.Forms.Panel(); + this.colourpallet94 = new System.Windows.Forms.Panel(); + this.colourpallet95 = new System.Windows.Forms.Panel(); + this.colourpallet96 = new System.Windows.Forms.Panel(); + this.colourpallet97 = new System.Windows.Forms.Panel(); + this.colourpallet98 = new System.Windows.Forms.Panel(); + this.colourpallet99 = new System.Windows.Forms.Panel(); + this.colourpallet100 = new System.Windows.Forms.Panel(); + this.colourpallet101 = new System.Windows.Forms.Panel(); + this.colourpallet102 = new System.Windows.Forms.Panel(); + this.colourpallet103 = new System.Windows.Forms.Panel(); + this.colourpallet104 = new System.Windows.Forms.Panel(); + this.colourpallet105 = new System.Windows.Forms.Panel(); + this.colourpallet106 = new System.Windows.Forms.Panel(); + this.colourpallet107 = new System.Windows.Forms.Panel(); + this.colourpallet108 = new System.Windows.Forms.Panel(); + this.colourpallet109 = new System.Windows.Forms.Panel(); + this.colourpallet110 = new System.Windows.Forms.Panel(); + this.colourpallet111 = new System.Windows.Forms.Panel(); + this.colourpallet112 = new System.Windows.Forms.Panel(); + this.colourpallet113 = new System.Windows.Forms.Panel(); + this.colourpallet114 = new System.Windows.Forms.Panel(); + this.colourpallet115 = new System.Windows.Forms.Panel(); + this.colourpallet116 = new System.Windows.Forms.Panel(); + this.colourpallet117 = new System.Windows.Forms.Panel(); + this.colourpallet118 = new System.Windows.Forms.Panel(); + this.colourpallet119 = new System.Windows.Forms.Panel(); + this.colourpallet120 = new System.Windows.Forms.Panel(); + this.colourpallet121 = new System.Windows.Forms.Panel(); + this.colourpallet122 = new System.Windows.Forms.Panel(); + this.colourpallet123 = new System.Windows.Forms.Panel(); + this.colourpallet124 = new System.Windows.Forms.Panel(); + this.colourpallet125 = new System.Windows.Forms.Panel(); + this.colourpallet126 = new System.Windows.Forms.Panel(); + this.colourpallet127 = new System.Windows.Forms.Panel(); + this.colourpallet128 = new System.Windows.Forms.Panel(); + this.Label4 = new System.Windows.Forms.Label(); + this.line6 = new System.Windows.Forms.Panel(); + this.pnltoolproperties = new System.Windows.Forms.Panel(); + this.pnlpixelplacersettings = new System.Windows.Forms.Panel(); + this.lblpixelplacerhelp = new System.Windows.Forms.Label(); + this.btnpixelplacermovementmode = new System.Windows.Forms.Button(); + this.Label8 = new System.Windows.Forms.Label(); + this.pnlovaltoolsettings = new System.Windows.Forms.Panel(); + this.Label20 = new System.Windows.Forms.Label(); + this.btnovalfillonoff = new System.Windows.Forms.Button(); + this.pnlovalfillcolour = new System.Windows.Forms.Panel(); + this.txtovalborderwidth = new System.Windows.Forms.TextBox(); + this.Label21 = new System.Windows.Forms.Label(); + this.Label22 = new System.Windows.Forms.Label(); + this.Label23 = new System.Windows.Forms.Label(); + this.pnleracertoolsettings = new System.Windows.Forms.Panel(); + this.Label28 = new System.Windows.Forms.Label(); + this.btneracersquare = new System.Windows.Forms.Button(); + this.btneracercircle = new System.Windows.Forms.Button(); + this.Label24 = new System.Windows.Forms.Label(); + this.txteracersize = new System.Windows.Forms.TextBox(); + this.Label26 = new System.Windows.Forms.Label(); + this.Label27 = new System.Windows.Forms.Label(); + this.pnllinetoolsettings = new System.Windows.Forms.Panel(); + this.Label29 = new System.Windows.Forms.Label(); + this.txtlinewidth = new System.Windows.Forms.TextBox(); + this.Label30 = new System.Windows.Forms.Label(); + this.Label31 = new System.Windows.Forms.Label(); + this.pnlpaintbrushtoolsettings = new System.Windows.Forms.Panel(); + this.Label36 = new System.Windows.Forms.Label(); + this.btnpaintsquareshape = new System.Windows.Forms.Button(); + this.btnpaintcircleshape = new System.Windows.Forms.Button(); + this.Label37 = new System.Windows.Forms.Label(); + this.txtpaintbrushsize = new System.Windows.Forms.TextBox(); + this.Label38 = new System.Windows.Forms.Label(); + this.Label39 = new System.Windows.Forms.Label(); + this.pnltexttoolsettings = new System.Windows.Forms.Panel(); + this.Label35 = new System.Windows.Forms.Label(); + this.combofontstyle = new System.Windows.Forms.ComboBox(); + this.txtdrawstringtext = new System.Windows.Forms.TextBox(); + this.combodrawtextfont = new System.Windows.Forms.ComboBox(); + this.Label25 = new System.Windows.Forms.Label(); + this.txtdrawtextsize = new System.Windows.Forms.TextBox(); + this.Label32 = new System.Windows.Forms.Label(); + this.Label33 = new System.Windows.Forms.Label(); + this.Label34 = new System.Windows.Forms.Label(); + this.pnlpixelsettersettings = new System.Windows.Forms.Panel(); + this.btnpixelsettersetpixel = new System.Windows.Forms.Button(); + this.txtpixelsetterycoordinate = new System.Windows.Forms.TextBox(); + this.txtpixelsetterxcoordinate = new System.Windows.Forms.TextBox(); + this.Label3 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.pnlmagnifiersettings = new System.Windows.Forms.Panel(); + this.btnzoomout = new System.Windows.Forms.Button(); + this.btnzoomin = new System.Windows.Forms.Button(); + this.lblzoomlevel = new System.Windows.Forms.Label(); + this.Label7 = new System.Windows.Forms.Label(); + this.pnlfloodfillsettings = new System.Windows.Forms.Panel(); + this.Label12 = new System.Windows.Forms.Label(); + this.Label15 = new System.Windows.Forms.Label(); + this.pnlsquaretoolsettings = new System.Windows.Forms.Panel(); + this.Label19 = new System.Windows.Forms.Label(); + this.btnsquarefillonoff = new System.Windows.Forms.Button(); + this.pnlsquarefillcolour = new System.Windows.Forms.Panel(); + this.txtsquareborderwidth = new System.Windows.Forms.TextBox(); + this.Label16 = new System.Windows.Forms.Label(); + this.Label18 = new System.Windows.Forms.Label(); + this.Label17 = new System.Windows.Forms.Label(); + this.pnlpencilsettings = new System.Windows.Forms.Panel(); + this.btnpencilsize3 = new System.Windows.Forms.Button(); + this.btnpencilsize2 = new System.Windows.Forms.Button(); + this.btnpencilsize1 = new System.Windows.Forms.Button(); + this.Label14 = new System.Windows.Forms.Label(); + this.Label6 = new System.Windows.Forms.Label(); + this.Label5 = new System.Windows.Forms.Label(); + this.line5 = new System.Windows.Forms.Panel(); + this.line3 = new System.Windows.Forms.Panel(); + this.pnltools = new System.Windows.Forms.Panel(); + this.pnltoolpositioner = new System.Windows.Forms.FlowLayoutPanel(); + this.btnpixelsetter = new System.Windows.Forms.Button(); + this.btnpixelplacer = new System.Windows.Forms.Button(); + this.btnpencil = new System.Windows.Forms.Button(); + this.btnfloodfill = new System.Windows.Forms.Button(); + this.btnoval = new System.Windows.Forms.Button(); + this.btnsquare = new System.Windows.Forms.Button(); + this.btnlinetool = new System.Windows.Forms.Button(); + this.btnpaintbrush = new System.Windows.Forms.Button(); + this.btntexttool = new System.Windows.Forms.Button(); + this.btneracer = new System.Windows.Forms.Button(); + this.btnnew = new System.Windows.Forms.Button(); + this.btnmagnify = new System.Windows.Forms.Button(); + this.btnopen = new System.Windows.Forms.Button(); + this.btnsave = new System.Windows.Forms.Button(); + this.btnundo = new System.Windows.Forms.Button(); + this.btnredo = new System.Windows.Forms.Button(); + this.line1 = new System.Windows.Forms.Panel(); + this.pnltoolpreview = new System.Windows.Forms.Panel(); + this.Label13 = new System.Windows.Forms.Label(); + this.picpreview = new System.Windows.Forms.PictureBox(); + this.lbltoolselected = new System.Windows.Forms.Label(); + this.line4 = new System.Windows.Forms.Panel(); + this.line2 = new System.Windows.Forms.Panel(); + this.tmrcodepointcooldown = new System.Windows.Forms.Timer(this.components); + this.tmrshowearnedcodepoints = new System.Windows.Forms.Timer(this.components); + this.pullbs = new System.Windows.Forms.Timer(this.components); + this.pullbottom = new System.Windows.Forms.Timer(this.components); + this.pullside = new System.Windows.Forms.Timer(this.components); + this.tmrsetupui = new System.Windows.Forms.Timer(this.components); + this.pgcontents.SuspendLayout(); + this.pnldrawingbackground.SuspendLayout(); + this.pnlinitialcanvassettings.SuspendLayout(); + this.pnlpalettesize.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picdrawingdisplay)).BeginInit(); + this.pnlbottompanel.SuspendLayout(); + this.pnlpallet.SuspendLayout(); + this.flowcolours.SuspendLayout(); + this.pnltoolproperties.SuspendLayout(); + this.pnlpixelplacersettings.SuspendLayout(); + this.pnlovaltoolsettings.SuspendLayout(); + this.pnleracertoolsettings.SuspendLayout(); + this.pnllinetoolsettings.SuspendLayout(); + this.pnlpaintbrushtoolsettings.SuspendLayout(); + this.pnltexttoolsettings.SuspendLayout(); + this.pnlpixelsettersettings.SuspendLayout(); + this.pnlmagnifiersettings.SuspendLayout(); + this.pnlfloodfillsettings.SuspendLayout(); + this.pnlsquaretoolsettings.SuspendLayout(); + this.pnlpencilsettings.SuspendLayout(); + this.pnltools.SuspendLayout(); + this.pnltoolpositioner.SuspendLayout(); + this.pnltoolpreview.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picpreview)).BeginInit(); + this.SuspendLayout(); + // + // pgcontents + // + this.pgcontents.BackColor = System.Drawing.Color.White; + this.pgcontents.Controls.Add(this.pnldrawingbackground); + this.pgcontents.Controls.Add(this.pnlbottompanel); + this.pgcontents.Controls.Add(this.pnltools); + this.pgcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.pgcontents.Location = new System.Drawing.Point(0, 0); + this.pgcontents.Name = "pgcontents"; + this.pgcontents.Size = new System.Drawing.Size(802, 598); + this.pgcontents.TabIndex = 20; + // + // pnldrawingbackground + // + this.pnldrawingbackground.AutoScroll = true; + this.pnldrawingbackground.BackColor = System.Drawing.Color.Gray; + this.pnldrawingbackground.Controls.Add(this.pnlinitialcanvassettings); + this.pnldrawingbackground.Controls.Add(this.pnlpalettesize); + this.pnldrawingbackground.Controls.Add(this.picdrawingdisplay); + this.pnldrawingbackground.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnldrawingbackground.Location = new System.Drawing.Point(120, 0); + this.pnldrawingbackground.Name = "pnldrawingbackground"; + this.pnldrawingbackground.Size = new System.Drawing.Size(682, 498); + this.pnldrawingbackground.TabIndex = 2; + // + // pnlinitialcanvassettings + // + this.pnlinitialcanvassettings.BackColor = System.Drawing.Color.White; + this.pnlinitialcanvassettings.Controls.Add(this.btncancel); + this.pnlinitialcanvassettings.Controls.Add(this.btncreate); + this.pnlinitialcanvassettings.Controls.Add(this.Label11); + this.pnlinitialcanvassettings.Controls.Add(this.lbltotalpixels); + this.pnlinitialcanvassettings.Controls.Add(this.txtnewcanvasheight); + this.pnlinitialcanvassettings.Controls.Add(this.Label10); + this.pnlinitialcanvassettings.Controls.Add(this.txtnewcanvaswidth); + this.pnlinitialcanvassettings.Controls.Add(this.Label9); + this.pnlinitialcanvassettings.Location = new System.Drawing.Point(223, 178); + this.pnlinitialcanvassettings.Name = "pnlinitialcanvassettings"; + this.pnlinitialcanvassettings.Size = new System.Drawing.Size(223, 100); + this.pnlinitialcanvassettings.TabIndex = 1; + // + // btncancel + // + this.btncancel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btncancel.Location = new System.Drawing.Point(7, 66); + this.btncancel.Name = "btncancel"; + this.btncancel.Size = new System.Drawing.Size(102, 28); + this.btncancel.TabIndex = 7; + this.btncancel.Text = "Cancel"; + this.btncancel.UseVisualStyleBackColor = true; + this.btncancel.Click += new System.EventHandler(this.btncancel_Click); + // + // btncreate + // + this.btncreate.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btncreate.Location = new System.Drawing.Point(114, 66); + this.btncreate.Name = "btncreate"; + this.btncreate.Size = new System.Drawing.Size(102, 28); + this.btncreate.TabIndex = 6; + this.btncreate.Text = "Create"; + this.btncreate.UseVisualStyleBackColor = true; + this.btncreate.Click += new System.EventHandler(this.btncreate_Click); + // + // Label11 + // + this.Label11.AutoSize = true; + this.Label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label11.Location = new System.Drawing.Point(124, 9); + this.Label11.Name = "Label11"; + this.Label11.Size = new System.Drawing.Size(88, 20); + this.Label11.TabIndex = 5; + this.Label11.Text = "Total Pixels"; + // + // lbltotalpixels + // + this.lbltotalpixels.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbltotalpixels.Location = new System.Drawing.Point(114, 30); + this.lbltotalpixels.Name = "lbltotalpixels"; + this.lbltotalpixels.Size = new System.Drawing.Size(106, 29); + this.lbltotalpixels.TabIndex = 4; + this.lbltotalpixels.Text = "0"; + this.lbltotalpixels.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // txtnewcanvasheight + // + this.txtnewcanvasheight.BackColor = System.Drawing.Color.White; + this.txtnewcanvasheight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtnewcanvasheight.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtnewcanvasheight.Location = new System.Drawing.Point(59, 37); + this.txtnewcanvasheight.MaxLength = 4; + this.txtnewcanvasheight.Name = "txtnewcanvasheight"; + this.txtnewcanvasheight.Size = new System.Drawing.Size(54, 22); + this.txtnewcanvasheight.TabIndex = 3; + this.txtnewcanvasheight.TextChanged += new System.EventHandler(this.txtnewcanvaswidth_TextChanged); + // + // Label10 + // + this.Label10.AutoSize = true; + this.Label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label10.Location = new System.Drawing.Point(8, 40); + this.Label10.Name = "Label10"; + this.Label10.Size = new System.Drawing.Size(50, 16); + this.Label10.TabIndex = 2; + this.Label10.Text = "Height:"; + // + // txtnewcanvaswidth + // + this.txtnewcanvaswidth.BackColor = System.Drawing.Color.White; + this.txtnewcanvaswidth.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtnewcanvaswidth.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtnewcanvaswidth.Location = new System.Drawing.Point(59, 9); + this.txtnewcanvaswidth.MaxLength = 4; + this.txtnewcanvaswidth.Name = "txtnewcanvaswidth"; + this.txtnewcanvaswidth.Size = new System.Drawing.Size(54, 22); + this.txtnewcanvaswidth.TabIndex = 1; + this.txtnewcanvaswidth.TextChanged += new System.EventHandler(this.txtnewcanvaswidth_TextChanged); + // + // Label9 + // + this.Label9.AutoSize = true; + this.Label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label9.Location = new System.Drawing.Point(8, 12); + this.Label9.Name = "Label9"; + this.Label9.Size = new System.Drawing.Size(45, 16); + this.Label9.TabIndex = 0; + this.Label9.Text = "Width:"; + // + // pnlpalettesize + // + this.pnlpalettesize.BackColor = System.Drawing.Color.White; + this.pnlpalettesize.Controls.Add(this.txttopspace); + this.pnlpalettesize.Controls.Add(this.Label40); + this.pnlpalettesize.Controls.Add(this.txtsidespace); + this.pnlpalettesize.Controls.Add(this.Label41); + this.pnlpalettesize.Controls.Add(this.btnchangesizecancel); + this.pnlpalettesize.Controls.Add(this.btnsetsize); + this.pnlpalettesize.Controls.Add(this.txtcolorpalletheight); + this.pnlpalettesize.Controls.Add(this.Label42); + this.pnlpalettesize.Controls.Add(this.txtcolorpalletwidth); + this.pnlpalettesize.Controls.Add(this.Label43); + this.pnlpalettesize.Location = new System.Drawing.Point(207, 178); + this.pnlpalettesize.Name = "pnlpalettesize"; + this.pnlpalettesize.Size = new System.Drawing.Size(259, 100); + this.pnlpalettesize.TabIndex = 2; + this.pnlpalettesize.Visible = false; + // + // txttopspace + // + this.txttopspace.BackColor = System.Drawing.Color.White; + this.txttopspace.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txttopspace.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txttopspace.Location = new System.Drawing.Point(198, 38); + this.txttopspace.Name = "txttopspace"; + this.txttopspace.Size = new System.Drawing.Size(54, 22); + this.txttopspace.TabIndex = 11; + // + // Label40 + // + this.Label40.AutoSize = true; + this.Label40.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label40.Location = new System.Drawing.Point(115, 40); + this.Label40.Name = "Label40"; + this.Label40.Size = new System.Drawing.Size(79, 16); + this.Label40.TabIndex = 10; + this.Label40.Text = "Top Space:"; + // + // txtsidespace + // + this.txtsidespace.BackColor = System.Drawing.Color.White; + this.txtsidespace.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtsidespace.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtsidespace.Location = new System.Drawing.Point(198, 10); + this.txtsidespace.Name = "txtsidespace"; + this.txtsidespace.Size = new System.Drawing.Size(54, 22); + this.txtsidespace.TabIndex = 9; + // + // Label41 + // + this.Label41.AutoSize = true; + this.Label41.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label41.Location = new System.Drawing.Point(115, 12); + this.Label41.Name = "Label41"; + this.Label41.Size = new System.Drawing.Size(82, 16); + this.Label41.TabIndex = 8; + this.Label41.Text = "Side Space:"; + // + // btnchangesizecancel + // + this.btnchangesizecancel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnchangesizecancel.Location = new System.Drawing.Point(7, 66); + this.btnchangesizecancel.Name = "btnchangesizecancel"; + this.btnchangesizecancel.Size = new System.Drawing.Size(121, 28); + this.btnchangesizecancel.TabIndex = 7; + this.btnchangesizecancel.Text = "Close"; + this.btnchangesizecancel.UseVisualStyleBackColor = true; + // + // btnsetsize + // + this.btnsetsize.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnsetsize.Location = new System.Drawing.Point(133, 66); + this.btnsetsize.Name = "btnsetsize"; + this.btnsetsize.Size = new System.Drawing.Size(119, 28); + this.btnsetsize.TabIndex = 6; + this.btnsetsize.Text = "Set Size"; + this.btnsetsize.UseVisualStyleBackColor = true; + // + // txtcolorpalletheight + // + this.txtcolorpalletheight.BackColor = System.Drawing.Color.White; + this.txtcolorpalletheight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtcolorpalletheight.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtcolorpalletheight.Location = new System.Drawing.Point(59, 37); + this.txtcolorpalletheight.Name = "txtcolorpalletheight"; + this.txtcolorpalletheight.Size = new System.Drawing.Size(54, 22); + this.txtcolorpalletheight.TabIndex = 3; + // + // Label42 + // + this.Label42.AutoSize = true; + this.Label42.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label42.Location = new System.Drawing.Point(8, 40); + this.Label42.Name = "Label42"; + this.Label42.Size = new System.Drawing.Size(50, 16); + this.Label42.TabIndex = 2; + this.Label42.Text = "Height:"; + // + // txtcolorpalletwidth + // + this.txtcolorpalletwidth.BackColor = System.Drawing.Color.White; + this.txtcolorpalletwidth.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtcolorpalletwidth.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtcolorpalletwidth.Location = new System.Drawing.Point(59, 9); + this.txtcolorpalletwidth.Name = "txtcolorpalletwidth"; + this.txtcolorpalletwidth.Size = new System.Drawing.Size(54, 22); + this.txtcolorpalletwidth.TabIndex = 1; + // + // Label43 + // + this.Label43.AutoSize = true; + this.Label43.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label43.Location = new System.Drawing.Point(8, 12); + this.Label43.Name = "Label43"; + this.Label43.Size = new System.Drawing.Size(45, 16); + this.Label43.TabIndex = 0; + this.Label43.Text = "Width:"; + // + // picdrawingdisplay + // + this.picdrawingdisplay.BackColor = System.Drawing.Color.White; + this.picdrawingdisplay.Location = new System.Drawing.Point(180, 108); + this.picdrawingdisplay.Name = "picdrawingdisplay"; + this.picdrawingdisplay.Size = new System.Drawing.Size(100, 50); + this.picdrawingdisplay.TabIndex = 0; + this.picdrawingdisplay.TabStop = false; + this.picdrawingdisplay.Visible = false; + this.picdrawingdisplay.Paint += new System.Windows.Forms.PaintEventHandler(this.picdrawingdisplay_Paint); + this.picdrawingdisplay.MouseDown += new System.Windows.Forms.MouseEventHandler(this.picdrawingdisplay_MouseDown); + this.picdrawingdisplay.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picdrawingdisplay_MouseMove); + this.picdrawingdisplay.MouseUp += new System.Windows.Forms.MouseEventHandler(this.picdrawingdisplay_MouseUp); + // + // pnlbottompanel + // + this.pnlbottompanel.Controls.Add(this.pnlpallet); + this.pnlbottompanel.Controls.Add(this.pnltoolproperties); + this.pnlbottompanel.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pnlbottompanel.Location = new System.Drawing.Point(120, 498); + this.pnlbottompanel.Name = "pnlbottompanel"; + this.pnlbottompanel.Size = new System.Drawing.Size(682, 100); + this.pnlbottompanel.TabIndex = 1; + // + // pnlpallet + // + this.pnlpallet.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pnlpallet.Controls.Add(this.flowcolours); + this.pnlpallet.Controls.Add(this.Label4); + this.pnlpallet.Controls.Add(this.line6); + this.pnlpallet.Location = new System.Drawing.Point(457, 0); + this.pnlpallet.Name = "pnlpallet"; + this.pnlpallet.Size = new System.Drawing.Size(225, 100); + this.pnlpallet.TabIndex = 0; + // + // flowcolours + // + this.flowcolours.Controls.Add(this.colourpallet1); + this.flowcolours.Controls.Add(this.colourpallet2); + this.flowcolours.Controls.Add(this.colourpallet3); + this.flowcolours.Controls.Add(this.colourpallet4); + this.flowcolours.Controls.Add(this.colourpallet5); + this.flowcolours.Controls.Add(this.colourpallet6); + this.flowcolours.Controls.Add(this.colourpallet7); + this.flowcolours.Controls.Add(this.colourpallet8); + this.flowcolours.Controls.Add(this.colourpallet9); + this.flowcolours.Controls.Add(this.colourpallet10); + this.flowcolours.Controls.Add(this.colourpallet11); + this.flowcolours.Controls.Add(this.colourpallet12); + this.flowcolours.Controls.Add(this.colourpallet13); + this.flowcolours.Controls.Add(this.colourpallet14); + this.flowcolours.Controls.Add(this.colourpallet15); + this.flowcolours.Controls.Add(this.colourpallet16); + this.flowcolours.Controls.Add(this.colourpallet17); + this.flowcolours.Controls.Add(this.colourpallet18); + this.flowcolours.Controls.Add(this.colourpallet19); + this.flowcolours.Controls.Add(this.colourpallet20); + this.flowcolours.Controls.Add(this.colourpallet21); + this.flowcolours.Controls.Add(this.colourpallet22); + this.flowcolours.Controls.Add(this.colourpallet23); + this.flowcolours.Controls.Add(this.colourpallet24); + this.flowcolours.Controls.Add(this.colourpallet25); + this.flowcolours.Controls.Add(this.colourpallet26); + this.flowcolours.Controls.Add(this.colourpallet27); + this.flowcolours.Controls.Add(this.colourpallet28); + this.flowcolours.Controls.Add(this.colourpallet29); + this.flowcolours.Controls.Add(this.colourpallet30); + this.flowcolours.Controls.Add(this.colourpallet31); + this.flowcolours.Controls.Add(this.colourpallet32); + this.flowcolours.Controls.Add(this.colourpallet33); + this.flowcolours.Controls.Add(this.colourpallet34); + this.flowcolours.Controls.Add(this.colourpallet35); + this.flowcolours.Controls.Add(this.colourpallet36); + this.flowcolours.Controls.Add(this.colourpallet37); + this.flowcolours.Controls.Add(this.colourpallet38); + this.flowcolours.Controls.Add(this.colourpallet39); + this.flowcolours.Controls.Add(this.colourpallet40); + this.flowcolours.Controls.Add(this.colourpallet41); + this.flowcolours.Controls.Add(this.colourpallet42); + this.flowcolours.Controls.Add(this.colourpallet43); + this.flowcolours.Controls.Add(this.colourpallet44); + this.flowcolours.Controls.Add(this.colourpallet45); + this.flowcolours.Controls.Add(this.colourpallet46); + this.flowcolours.Controls.Add(this.colourpallet47); + this.flowcolours.Controls.Add(this.colourpallet48); + this.flowcolours.Controls.Add(this.colourpallet49); + this.flowcolours.Controls.Add(this.colourpallet50); + this.flowcolours.Controls.Add(this.colourpallet51); + this.flowcolours.Controls.Add(this.colourpallet52); + this.flowcolours.Controls.Add(this.colourpallet53); + this.flowcolours.Controls.Add(this.colourpallet54); + this.flowcolours.Controls.Add(this.colourpallet55); + this.flowcolours.Controls.Add(this.colourpallet56); + this.flowcolours.Controls.Add(this.colourpallet57); + this.flowcolours.Controls.Add(this.colourpallet58); + this.flowcolours.Controls.Add(this.colourpallet59); + this.flowcolours.Controls.Add(this.colourpallet60); + this.flowcolours.Controls.Add(this.colourpallet61); + this.flowcolours.Controls.Add(this.colourpallet62); + this.flowcolours.Controls.Add(this.colourpallet63); + this.flowcolours.Controls.Add(this.colourpallet64); + this.flowcolours.Controls.Add(this.colourpallet65); + this.flowcolours.Controls.Add(this.colourpallet66); + this.flowcolours.Controls.Add(this.colourpallet67); + this.flowcolours.Controls.Add(this.colourpallet68); + this.flowcolours.Controls.Add(this.colourpallet69); + this.flowcolours.Controls.Add(this.colourpallet70); + this.flowcolours.Controls.Add(this.colourpallet71); + this.flowcolours.Controls.Add(this.colourpallet72); + this.flowcolours.Controls.Add(this.colourpallet73); + this.flowcolours.Controls.Add(this.colourpallet74); + this.flowcolours.Controls.Add(this.colourpallet75); + this.flowcolours.Controls.Add(this.colourpallet76); + this.flowcolours.Controls.Add(this.colourpallet77); + this.flowcolours.Controls.Add(this.colourpallet78); + this.flowcolours.Controls.Add(this.colourpallet79); + this.flowcolours.Controls.Add(this.colourpallet80); + this.flowcolours.Controls.Add(this.colourpallet81); + this.flowcolours.Controls.Add(this.colourpallet82); + this.flowcolours.Controls.Add(this.colourpallet83); + this.flowcolours.Controls.Add(this.colourpallet84); + this.flowcolours.Controls.Add(this.colourpallet85); + this.flowcolours.Controls.Add(this.colourpallet86); + this.flowcolours.Controls.Add(this.colourpallet87); + this.flowcolours.Controls.Add(this.colourpallet88); + this.flowcolours.Controls.Add(this.colourpallet89); + this.flowcolours.Controls.Add(this.colourpallet90); + this.flowcolours.Controls.Add(this.colourpallet91); + this.flowcolours.Controls.Add(this.colourpallet92); + this.flowcolours.Controls.Add(this.colourpallet93); + this.flowcolours.Controls.Add(this.colourpallet94); + this.flowcolours.Controls.Add(this.colourpallet95); + this.flowcolours.Controls.Add(this.colourpallet96); + this.flowcolours.Controls.Add(this.colourpallet97); + this.flowcolours.Controls.Add(this.colourpallet98); + this.flowcolours.Controls.Add(this.colourpallet99); + this.flowcolours.Controls.Add(this.colourpallet100); + this.flowcolours.Controls.Add(this.colourpallet101); + this.flowcolours.Controls.Add(this.colourpallet102); + this.flowcolours.Controls.Add(this.colourpallet103); + this.flowcolours.Controls.Add(this.colourpallet104); + this.flowcolours.Controls.Add(this.colourpallet105); + this.flowcolours.Controls.Add(this.colourpallet106); + this.flowcolours.Controls.Add(this.colourpallet107); + this.flowcolours.Controls.Add(this.colourpallet108); + this.flowcolours.Controls.Add(this.colourpallet109); + this.flowcolours.Controls.Add(this.colourpallet110); + this.flowcolours.Controls.Add(this.colourpallet111); + this.flowcolours.Controls.Add(this.colourpallet112); + this.flowcolours.Controls.Add(this.colourpallet113); + this.flowcolours.Controls.Add(this.colourpallet114); + this.flowcolours.Controls.Add(this.colourpallet115); + this.flowcolours.Controls.Add(this.colourpallet116); + this.flowcolours.Controls.Add(this.colourpallet117); + this.flowcolours.Controls.Add(this.colourpallet118); + this.flowcolours.Controls.Add(this.colourpallet119); + this.flowcolours.Controls.Add(this.colourpallet120); + this.flowcolours.Controls.Add(this.colourpallet121); + this.flowcolours.Controls.Add(this.colourpallet122); + this.flowcolours.Controls.Add(this.colourpallet123); + this.flowcolours.Controls.Add(this.colourpallet124); + this.flowcolours.Controls.Add(this.colourpallet125); + this.flowcolours.Controls.Add(this.colourpallet126); + this.flowcolours.Controls.Add(this.colourpallet127); + this.flowcolours.Controls.Add(this.colourpallet128); + this.flowcolours.Dock = System.Windows.Forms.DockStyle.Bottom; + this.flowcolours.Location = new System.Drawing.Point(0, 27); + this.flowcolours.Name = "flowcolours"; + this.flowcolours.Padding = new System.Windows.Forms.Padding(1, 1, 0, 0); + this.flowcolours.Size = new System.Drawing.Size(225, 73); + this.flowcolours.TabIndex = 12; + // + // colourpallet1 + // + this.colourpallet1.BackColor = System.Drawing.Color.Black; + this.colourpallet1.Location = new System.Drawing.Point(2, 1); + this.colourpallet1.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet1.Name = "colourpallet1"; + this.colourpallet1.Size = new System.Drawing.Size(12, 8); + this.colourpallet1.TabIndex = 5; + this.colourpallet1.Visible = false; + // + // colourpallet2 + // + this.colourpallet2.BackColor = System.Drawing.Color.Black; + this.colourpallet2.Location = new System.Drawing.Point(15, 1); + this.colourpallet2.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet2.Name = "colourpallet2"; + this.colourpallet2.Size = new System.Drawing.Size(12, 8); + this.colourpallet2.TabIndex = 9; + this.colourpallet2.Visible = false; + // + // colourpallet3 + // + this.colourpallet3.BackColor = System.Drawing.Color.Black; + this.colourpallet3.Location = new System.Drawing.Point(28, 1); + this.colourpallet3.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet3.Name = "colourpallet3"; + this.colourpallet3.Size = new System.Drawing.Size(12, 8); + this.colourpallet3.TabIndex = 13; + this.colourpallet3.Visible = false; + // + // colourpallet4 + // + this.colourpallet4.BackColor = System.Drawing.Color.Black; + this.colourpallet4.Location = new System.Drawing.Point(41, 1); + this.colourpallet4.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet4.Name = "colourpallet4"; + this.colourpallet4.Size = new System.Drawing.Size(12, 8); + this.colourpallet4.TabIndex = 9; + this.colourpallet4.Visible = false; + // + // colourpallet5 + // + this.colourpallet5.BackColor = System.Drawing.Color.Black; + this.colourpallet5.Location = new System.Drawing.Point(54, 1); + this.colourpallet5.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet5.Name = "colourpallet5"; + this.colourpallet5.Size = new System.Drawing.Size(12, 8); + this.colourpallet5.TabIndex = 18; + this.colourpallet5.Visible = false; + // + // colourpallet6 + // + this.colourpallet6.BackColor = System.Drawing.Color.Black; + this.colourpallet6.Location = new System.Drawing.Point(67, 1); + this.colourpallet6.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet6.Name = "colourpallet6"; + this.colourpallet6.Size = new System.Drawing.Size(12, 8); + this.colourpallet6.TabIndex = 17; + this.colourpallet6.Visible = false; + // + // colourpallet7 + // + this.colourpallet7.BackColor = System.Drawing.Color.Black; + this.colourpallet7.Location = new System.Drawing.Point(80, 1); + this.colourpallet7.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet7.Name = "colourpallet7"; + this.colourpallet7.Size = new System.Drawing.Size(12, 8); + this.colourpallet7.TabIndex = 14; + this.colourpallet7.Visible = false; + // + // colourpallet8 + // + this.colourpallet8.BackColor = System.Drawing.Color.Black; + this.colourpallet8.Location = new System.Drawing.Point(93, 1); + this.colourpallet8.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet8.Name = "colourpallet8"; + this.colourpallet8.Size = new System.Drawing.Size(12, 8); + this.colourpallet8.TabIndex = 13; + this.colourpallet8.Visible = false; + // + // colourpallet9 + // + this.colourpallet9.BackColor = System.Drawing.Color.Black; + this.colourpallet9.Location = new System.Drawing.Point(106, 1); + this.colourpallet9.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet9.Name = "colourpallet9"; + this.colourpallet9.Size = new System.Drawing.Size(12, 8); + this.colourpallet9.TabIndex = 15; + this.colourpallet9.Visible = false; + // + // colourpallet10 + // + this.colourpallet10.BackColor = System.Drawing.Color.Black; + this.colourpallet10.Location = new System.Drawing.Point(119, 1); + this.colourpallet10.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet10.Name = "colourpallet10"; + this.colourpallet10.Size = new System.Drawing.Size(12, 8); + this.colourpallet10.TabIndex = 11; + this.colourpallet10.Visible = false; + // + // colourpallet11 + // + this.colourpallet11.BackColor = System.Drawing.Color.Black; + this.colourpallet11.Location = new System.Drawing.Point(132, 1); + this.colourpallet11.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet11.Name = "colourpallet11"; + this.colourpallet11.Size = new System.Drawing.Size(12, 8); + this.colourpallet11.TabIndex = 12; + this.colourpallet11.Visible = false; + // + // colourpallet12 + // + this.colourpallet12.BackColor = System.Drawing.Color.Black; + this.colourpallet12.Location = new System.Drawing.Point(145, 1); + this.colourpallet12.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet12.Name = "colourpallet12"; + this.colourpallet12.Size = new System.Drawing.Size(12, 8); + this.colourpallet12.TabIndex = 16; + this.colourpallet12.Visible = false; + // + // colourpallet13 + // + this.colourpallet13.BackColor = System.Drawing.Color.Black; + this.colourpallet13.Location = new System.Drawing.Point(158, 1); + this.colourpallet13.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet13.Name = "colourpallet13"; + this.colourpallet13.Size = new System.Drawing.Size(12, 8); + this.colourpallet13.TabIndex = 10; + this.colourpallet13.Visible = false; + // + // colourpallet14 + // + this.colourpallet14.BackColor = System.Drawing.Color.Black; + this.colourpallet14.Location = new System.Drawing.Point(171, 1); + this.colourpallet14.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet14.Name = "colourpallet14"; + this.colourpallet14.Size = new System.Drawing.Size(12, 8); + this.colourpallet14.TabIndex = 20; + this.colourpallet14.Visible = false; + // + // colourpallet15 + // + this.colourpallet15.BackColor = System.Drawing.Color.Black; + this.colourpallet15.Location = new System.Drawing.Point(184, 1); + this.colourpallet15.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet15.Name = "colourpallet15"; + this.colourpallet15.Size = new System.Drawing.Size(12, 8); + this.colourpallet15.TabIndex = 14; + this.colourpallet15.Visible = false; + // + // colourpallet16 + // + this.colourpallet16.BackColor = System.Drawing.Color.Black; + this.colourpallet16.Location = new System.Drawing.Point(197, 1); + this.colourpallet16.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet16.Name = "colourpallet16"; + this.colourpallet16.Size = new System.Drawing.Size(12, 8); + this.colourpallet16.TabIndex = 16; + this.colourpallet16.Visible = false; + // + // colourpallet17 + // + this.colourpallet17.BackColor = System.Drawing.Color.Black; + this.colourpallet17.Location = new System.Drawing.Point(210, 1); + this.colourpallet17.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet17.Name = "colourpallet17"; + this.colourpallet17.Size = new System.Drawing.Size(12, 8); + this.colourpallet17.TabIndex = 11; + this.colourpallet17.Visible = false; + // + // colourpallet18 + // + this.colourpallet18.BackColor = System.Drawing.Color.Black; + this.colourpallet18.Location = new System.Drawing.Point(2, 10); + this.colourpallet18.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet18.Name = "colourpallet18"; + this.colourpallet18.Size = new System.Drawing.Size(12, 8); + this.colourpallet18.TabIndex = 8; + this.colourpallet18.Visible = false; + // + // colourpallet19 + // + this.colourpallet19.BackColor = System.Drawing.Color.Black; + this.colourpallet19.Location = new System.Drawing.Point(15, 10); + this.colourpallet19.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet19.Name = "colourpallet19"; + this.colourpallet19.Size = new System.Drawing.Size(12, 8); + this.colourpallet19.TabIndex = 24; + this.colourpallet19.Visible = false; + // + // colourpallet20 + // + this.colourpallet20.BackColor = System.Drawing.Color.Black; + this.colourpallet20.Location = new System.Drawing.Point(28, 10); + this.colourpallet20.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet20.Name = "colourpallet20"; + this.colourpallet20.Size = new System.Drawing.Size(12, 8); + this.colourpallet20.TabIndex = 12; + this.colourpallet20.Visible = false; + // + // colourpallet21 + // + this.colourpallet21.BackColor = System.Drawing.Color.Black; + this.colourpallet21.Location = new System.Drawing.Point(41, 10); + this.colourpallet21.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet21.Name = "colourpallet21"; + this.colourpallet21.Size = new System.Drawing.Size(12, 8); + this.colourpallet21.TabIndex = 20; + this.colourpallet21.Visible = false; + // + // colourpallet22 + // + this.colourpallet22.BackColor = System.Drawing.Color.Black; + this.colourpallet22.Location = new System.Drawing.Point(54, 10); + this.colourpallet22.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet22.Name = "colourpallet22"; + this.colourpallet22.Size = new System.Drawing.Size(12, 8); + this.colourpallet22.TabIndex = 8; + this.colourpallet22.Visible = false; + // + // colourpallet23 + // + this.colourpallet23.BackColor = System.Drawing.Color.Black; + this.colourpallet23.Location = new System.Drawing.Point(67, 10); + this.colourpallet23.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet23.Name = "colourpallet23"; + this.colourpallet23.Size = new System.Drawing.Size(12, 8); + this.colourpallet23.TabIndex = 19; + this.colourpallet23.Visible = false; + // + // colourpallet24 + // + this.colourpallet24.BackColor = System.Drawing.Color.Black; + this.colourpallet24.Location = new System.Drawing.Point(80, 10); + this.colourpallet24.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet24.Name = "colourpallet24"; + this.colourpallet24.Size = new System.Drawing.Size(12, 8); + this.colourpallet24.TabIndex = 10; + this.colourpallet24.Visible = false; + // + // colourpallet25 + // + this.colourpallet25.BackColor = System.Drawing.Color.Black; + this.colourpallet25.Location = new System.Drawing.Point(93, 10); + this.colourpallet25.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet25.Name = "colourpallet25"; + this.colourpallet25.Size = new System.Drawing.Size(12, 8); + this.colourpallet25.TabIndex = 15; + this.colourpallet25.Visible = false; + // + // colourpallet26 + // + this.colourpallet26.BackColor = System.Drawing.Color.Black; + this.colourpallet26.Location = new System.Drawing.Point(106, 10); + this.colourpallet26.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet26.Name = "colourpallet26"; + this.colourpallet26.Size = new System.Drawing.Size(12, 8); + this.colourpallet26.TabIndex = 23; + this.colourpallet26.Visible = false; + // + // colourpallet27 + // + this.colourpallet27.BackColor = System.Drawing.Color.Black; + this.colourpallet27.Location = new System.Drawing.Point(119, 10); + this.colourpallet27.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet27.Name = "colourpallet27"; + this.colourpallet27.Size = new System.Drawing.Size(12, 8); + this.colourpallet27.TabIndex = 6; + this.colourpallet27.Visible = false; + // + // colourpallet28 + // + this.colourpallet28.BackColor = System.Drawing.Color.Black; + this.colourpallet28.Location = new System.Drawing.Point(132, 10); + this.colourpallet28.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet28.Name = "colourpallet28"; + this.colourpallet28.Size = new System.Drawing.Size(12, 8); + this.colourpallet28.TabIndex = 19; + this.colourpallet28.Visible = false; + // + // colourpallet29 + // + this.colourpallet29.BackColor = System.Drawing.Color.Black; + this.colourpallet29.Location = new System.Drawing.Point(145, 10); + this.colourpallet29.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet29.Name = "colourpallet29"; + this.colourpallet29.Size = new System.Drawing.Size(12, 8); + this.colourpallet29.TabIndex = 22; + this.colourpallet29.Visible = false; + // + // colourpallet30 + // + this.colourpallet30.BackColor = System.Drawing.Color.Black; + this.colourpallet30.Location = new System.Drawing.Point(158, 10); + this.colourpallet30.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet30.Name = "colourpallet30"; + this.colourpallet30.Size = new System.Drawing.Size(12, 8); + this.colourpallet30.TabIndex = 18; + this.colourpallet30.Visible = false; + // + // colourpallet31 + // + this.colourpallet31.BackColor = System.Drawing.Color.Black; + this.colourpallet31.Location = new System.Drawing.Point(171, 10); + this.colourpallet31.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet31.Name = "colourpallet31"; + this.colourpallet31.Size = new System.Drawing.Size(12, 8); + this.colourpallet31.TabIndex = 21; + this.colourpallet31.Visible = false; + // + // colourpallet32 + // + this.colourpallet32.BackColor = System.Drawing.Color.Black; + this.colourpallet32.Location = new System.Drawing.Point(184, 10); + this.colourpallet32.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet32.Name = "colourpallet32"; + this.colourpallet32.Size = new System.Drawing.Size(12, 8); + this.colourpallet32.TabIndex = 17; + this.colourpallet32.Visible = false; + // + // colourpallet33 + // + this.colourpallet33.BackColor = System.Drawing.Color.Black; + this.colourpallet33.Location = new System.Drawing.Point(197, 10); + this.colourpallet33.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet33.Name = "colourpallet33"; + this.colourpallet33.Size = new System.Drawing.Size(12, 8); + this.colourpallet33.TabIndex = 50; + this.colourpallet33.Visible = false; + // + // colourpallet34 + // + this.colourpallet34.BackColor = System.Drawing.Color.Black; + this.colourpallet34.Location = new System.Drawing.Point(210, 10); + this.colourpallet34.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet34.Name = "colourpallet34"; + this.colourpallet34.Size = new System.Drawing.Size(12, 8); + this.colourpallet34.TabIndex = 46; + this.colourpallet34.Visible = false; + // + // colourpallet35 + // + this.colourpallet35.BackColor = System.Drawing.Color.Black; + this.colourpallet35.Location = new System.Drawing.Point(2, 19); + this.colourpallet35.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet35.Name = "colourpallet35"; + this.colourpallet35.Size = new System.Drawing.Size(12, 8); + this.colourpallet35.TabIndex = 53; + this.colourpallet35.Visible = false; + // + // colourpallet36 + // + this.colourpallet36.BackColor = System.Drawing.Color.Black; + this.colourpallet36.Location = new System.Drawing.Point(15, 19); + this.colourpallet36.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet36.Name = "colourpallet36"; + this.colourpallet36.Size = new System.Drawing.Size(12, 8); + this.colourpallet36.TabIndex = 48; + this.colourpallet36.Visible = false; + // + // colourpallet37 + // + this.colourpallet37.BackColor = System.Drawing.Color.Black; + this.colourpallet37.Location = new System.Drawing.Point(28, 19); + this.colourpallet37.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet37.Name = "colourpallet37"; + this.colourpallet37.Size = new System.Drawing.Size(12, 8); + this.colourpallet37.TabIndex = 54; + this.colourpallet37.Visible = false; + // + // colourpallet38 + // + this.colourpallet38.BackColor = System.Drawing.Color.Black; + this.colourpallet38.Location = new System.Drawing.Point(41, 19); + this.colourpallet38.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet38.Name = "colourpallet38"; + this.colourpallet38.Size = new System.Drawing.Size(12, 8); + this.colourpallet38.TabIndex = 26; + this.colourpallet38.Visible = false; + // + // colourpallet39 + // + this.colourpallet39.BackColor = System.Drawing.Color.Black; + this.colourpallet39.Location = new System.Drawing.Point(54, 19); + this.colourpallet39.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet39.Name = "colourpallet39"; + this.colourpallet39.Size = new System.Drawing.Size(12, 8); + this.colourpallet39.TabIndex = 55; + this.colourpallet39.Visible = false; + // + // colourpallet40 + // + this.colourpallet40.BackColor = System.Drawing.Color.Black; + this.colourpallet40.Location = new System.Drawing.Point(67, 19); + this.colourpallet40.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet40.Name = "colourpallet40"; + this.colourpallet40.Size = new System.Drawing.Size(12, 8); + this.colourpallet40.TabIndex = 41; + this.colourpallet40.Visible = false; + // + // colourpallet41 + // + this.colourpallet41.BackColor = System.Drawing.Color.Black; + this.colourpallet41.Location = new System.Drawing.Point(80, 19); + this.colourpallet41.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet41.Name = "colourpallet41"; + this.colourpallet41.Size = new System.Drawing.Size(12, 8); + this.colourpallet41.TabIndex = 31; + this.colourpallet41.Visible = false; + // + // colourpallet42 + // + this.colourpallet42.BackColor = System.Drawing.Color.Black; + this.colourpallet42.Location = new System.Drawing.Point(93, 19); + this.colourpallet42.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet42.Name = "colourpallet42"; + this.colourpallet42.Size = new System.Drawing.Size(12, 8); + this.colourpallet42.TabIndex = 49; + this.colourpallet42.Visible = false; + // + // colourpallet43 + // + this.colourpallet43.BackColor = System.Drawing.Color.Black; + this.colourpallet43.Location = new System.Drawing.Point(106, 19); + this.colourpallet43.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet43.Name = "colourpallet43"; + this.colourpallet43.Size = new System.Drawing.Size(12, 8); + this.colourpallet43.TabIndex = 27; + this.colourpallet43.Visible = false; + // + // colourpallet44 + // + this.colourpallet44.BackColor = System.Drawing.Color.Black; + this.colourpallet44.Location = new System.Drawing.Point(119, 19); + this.colourpallet44.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet44.Name = "colourpallet44"; + this.colourpallet44.Size = new System.Drawing.Size(12, 8); + this.colourpallet44.TabIndex = 51; + this.colourpallet44.Visible = false; + // + // colourpallet45 + // + this.colourpallet45.BackColor = System.Drawing.Color.Black; + this.colourpallet45.Location = new System.Drawing.Point(132, 19); + this.colourpallet45.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet45.Name = "colourpallet45"; + this.colourpallet45.Size = new System.Drawing.Size(12, 8); + this.colourpallet45.TabIndex = 36; + this.colourpallet45.Visible = false; + // + // colourpallet46 + // + this.colourpallet46.BackColor = System.Drawing.Color.Black; + this.colourpallet46.Location = new System.Drawing.Point(145, 19); + this.colourpallet46.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet46.Name = "colourpallet46"; + this.colourpallet46.Size = new System.Drawing.Size(12, 8); + this.colourpallet46.TabIndex = 56; + this.colourpallet46.Visible = false; + // + // colourpallet47 + // + this.colourpallet47.BackColor = System.Drawing.Color.Black; + this.colourpallet47.Location = new System.Drawing.Point(158, 19); + this.colourpallet47.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet47.Name = "colourpallet47"; + this.colourpallet47.Size = new System.Drawing.Size(12, 8); + this.colourpallet47.TabIndex = 28; + this.colourpallet47.Visible = false; + // + // colourpallet48 + // + this.colourpallet48.BackColor = System.Drawing.Color.Black; + this.colourpallet48.Location = new System.Drawing.Point(171, 19); + this.colourpallet48.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet48.Name = "colourpallet48"; + this.colourpallet48.Size = new System.Drawing.Size(12, 8); + this.colourpallet48.TabIndex = 33; + this.colourpallet48.Visible = false; + // + // colourpallet49 + // + this.colourpallet49.BackColor = System.Drawing.Color.Black; + this.colourpallet49.Location = new System.Drawing.Point(184, 19); + this.colourpallet49.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet49.Name = "colourpallet49"; + this.colourpallet49.Size = new System.Drawing.Size(12, 8); + this.colourpallet49.TabIndex = 43; + this.colourpallet49.Visible = false; + // + // colourpallet50 + // + this.colourpallet50.BackColor = System.Drawing.Color.Black; + this.colourpallet50.Location = new System.Drawing.Point(197, 19); + this.colourpallet50.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet50.Name = "colourpallet50"; + this.colourpallet50.Size = new System.Drawing.Size(12, 8); + this.colourpallet50.TabIndex = 40; + this.colourpallet50.Visible = false; + // + // colourpallet51 + // + this.colourpallet51.BackColor = System.Drawing.Color.Black; + this.colourpallet51.Location = new System.Drawing.Point(210, 19); + this.colourpallet51.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet51.Name = "colourpallet51"; + this.colourpallet51.Size = new System.Drawing.Size(12, 8); + this.colourpallet51.TabIndex = 52; + this.colourpallet51.Visible = false; + // + // colourpallet52 + // + this.colourpallet52.BackColor = System.Drawing.Color.Black; + this.colourpallet52.Location = new System.Drawing.Point(2, 28); + this.colourpallet52.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet52.Name = "colourpallet52"; + this.colourpallet52.Size = new System.Drawing.Size(12, 8); + this.colourpallet52.TabIndex = 32; + this.colourpallet52.Visible = false; + // + // colourpallet53 + // + this.colourpallet53.BackColor = System.Drawing.Color.Black; + this.colourpallet53.Location = new System.Drawing.Point(15, 28); + this.colourpallet53.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet53.Name = "colourpallet53"; + this.colourpallet53.Size = new System.Drawing.Size(12, 8); + this.colourpallet53.TabIndex = 44; + this.colourpallet53.Visible = false; + // + // colourpallet54 + // + this.colourpallet54.BackColor = System.Drawing.Color.Black; + this.colourpallet54.Location = new System.Drawing.Point(28, 28); + this.colourpallet54.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet54.Name = "colourpallet54"; + this.colourpallet54.Size = new System.Drawing.Size(12, 8); + this.colourpallet54.TabIndex = 35; + this.colourpallet54.Visible = false; + // + // colourpallet55 + // + this.colourpallet55.BackColor = System.Drawing.Color.Black; + this.colourpallet55.Location = new System.Drawing.Point(41, 28); + this.colourpallet55.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet55.Name = "colourpallet55"; + this.colourpallet55.Size = new System.Drawing.Size(12, 8); + this.colourpallet55.TabIndex = 34; + this.colourpallet55.Visible = false; + // + // colourpallet56 + // + this.colourpallet56.BackColor = System.Drawing.Color.Black; + this.colourpallet56.Location = new System.Drawing.Point(54, 28); + this.colourpallet56.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet56.Name = "colourpallet56"; + this.colourpallet56.Size = new System.Drawing.Size(12, 8); + this.colourpallet56.TabIndex = 42; + this.colourpallet56.Visible = false; + // + // colourpallet57 + // + this.colourpallet57.BackColor = System.Drawing.Color.Black; + this.colourpallet57.Location = new System.Drawing.Point(67, 28); + this.colourpallet57.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet57.Name = "colourpallet57"; + this.colourpallet57.Size = new System.Drawing.Size(12, 8); + this.colourpallet57.TabIndex = 38; + this.colourpallet57.Visible = false; + // + // colourpallet58 + // + this.colourpallet58.BackColor = System.Drawing.Color.Black; + this.colourpallet58.Location = new System.Drawing.Point(80, 28); + this.colourpallet58.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet58.Name = "colourpallet58"; + this.colourpallet58.Size = new System.Drawing.Size(12, 8); + this.colourpallet58.TabIndex = 39; + this.colourpallet58.Visible = false; + // + // colourpallet59 + // + this.colourpallet59.BackColor = System.Drawing.Color.Black; + this.colourpallet59.Location = new System.Drawing.Point(93, 28); + this.colourpallet59.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet59.Name = "colourpallet59"; + this.colourpallet59.Size = new System.Drawing.Size(12, 8); + this.colourpallet59.TabIndex = 45; + this.colourpallet59.Visible = false; + // + // colourpallet60 + // + this.colourpallet60.BackColor = System.Drawing.Color.Black; + this.colourpallet60.Location = new System.Drawing.Point(106, 28); + this.colourpallet60.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet60.Name = "colourpallet60"; + this.colourpallet60.Size = new System.Drawing.Size(12, 8); + this.colourpallet60.TabIndex = 47; + this.colourpallet60.Visible = false; + // + // colourpallet61 + // + this.colourpallet61.BackColor = System.Drawing.Color.Black; + this.colourpallet61.Location = new System.Drawing.Point(119, 28); + this.colourpallet61.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet61.Name = "colourpallet61"; + this.colourpallet61.Size = new System.Drawing.Size(12, 8); + this.colourpallet61.TabIndex = 30; + this.colourpallet61.Visible = false; + // + // colourpallet62 + // + this.colourpallet62.BackColor = System.Drawing.Color.Black; + this.colourpallet62.Location = new System.Drawing.Point(132, 28); + this.colourpallet62.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet62.Name = "colourpallet62"; + this.colourpallet62.Size = new System.Drawing.Size(12, 8); + this.colourpallet62.TabIndex = 37; + this.colourpallet62.Visible = false; + // + // colourpallet63 + // + this.colourpallet63.BackColor = System.Drawing.Color.Black; + this.colourpallet63.Location = new System.Drawing.Point(145, 28); + this.colourpallet63.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet63.Name = "colourpallet63"; + this.colourpallet63.Size = new System.Drawing.Size(12, 8); + this.colourpallet63.TabIndex = 29; + this.colourpallet63.Visible = false; + // + // colourpallet64 + // + this.colourpallet64.BackColor = System.Drawing.Color.Black; + this.colourpallet64.Location = new System.Drawing.Point(158, 28); + this.colourpallet64.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet64.Name = "colourpallet64"; + this.colourpallet64.Size = new System.Drawing.Size(12, 8); + this.colourpallet64.TabIndex = 25; + this.colourpallet64.Visible = false; + // + // colourpallet65 + // + this.colourpallet65.BackColor = System.Drawing.Color.Black; + this.colourpallet65.Location = new System.Drawing.Point(171, 28); + this.colourpallet65.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet65.Name = "colourpallet65"; + this.colourpallet65.Size = new System.Drawing.Size(12, 8); + this.colourpallet65.TabIndex = 57; + this.colourpallet65.Visible = false; + // + // colourpallet66 + // + this.colourpallet66.BackColor = System.Drawing.Color.Black; + this.colourpallet66.Location = new System.Drawing.Point(184, 28); + this.colourpallet66.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet66.Name = "colourpallet66"; + this.colourpallet66.Size = new System.Drawing.Size(12, 8); + this.colourpallet66.TabIndex = 61; + this.colourpallet66.Visible = false; + // + // colourpallet67 + // + this.colourpallet67.BackColor = System.Drawing.Color.Black; + this.colourpallet67.Location = new System.Drawing.Point(197, 28); + this.colourpallet67.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet67.Name = "colourpallet67"; + this.colourpallet67.Size = new System.Drawing.Size(12, 8); + this.colourpallet67.TabIndex = 69; + this.colourpallet67.Visible = false; + // + // colourpallet68 + // + this.colourpallet68.BackColor = System.Drawing.Color.Black; + this.colourpallet68.Location = new System.Drawing.Point(210, 28); + this.colourpallet68.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet68.Name = "colourpallet68"; + this.colourpallet68.Size = new System.Drawing.Size(12, 8); + this.colourpallet68.TabIndex = 62; + this.colourpallet68.Visible = false; + // + // colourpallet69 + // + this.colourpallet69.BackColor = System.Drawing.Color.Black; + this.colourpallet69.Location = new System.Drawing.Point(2, 37); + this.colourpallet69.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet69.Name = "colourpallet69"; + this.colourpallet69.Size = new System.Drawing.Size(12, 8); + this.colourpallet69.TabIndex = 79; + this.colourpallet69.Visible = false; + // + // colourpallet70 + // + this.colourpallet70.BackColor = System.Drawing.Color.Black; + this.colourpallet70.Location = new System.Drawing.Point(15, 37); + this.colourpallet70.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet70.Name = "colourpallet70"; + this.colourpallet70.Size = new System.Drawing.Size(12, 8); + this.colourpallet70.TabIndex = 77; + this.colourpallet70.Visible = false; + // + // colourpallet71 + // + this.colourpallet71.BackColor = System.Drawing.Color.Black; + this.colourpallet71.Location = new System.Drawing.Point(28, 37); + this.colourpallet71.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet71.Name = "colourpallet71"; + this.colourpallet71.Size = new System.Drawing.Size(12, 8); + this.colourpallet71.TabIndex = 71; + this.colourpallet71.Visible = false; + // + // colourpallet72 + // + this.colourpallet72.BackColor = System.Drawing.Color.Black; + this.colourpallet72.Location = new System.Drawing.Point(41, 37); + this.colourpallet72.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet72.Name = "colourpallet72"; + this.colourpallet72.Size = new System.Drawing.Size(12, 8); + this.colourpallet72.TabIndex = 70; + this.colourpallet72.Visible = false; + // + // colourpallet73 + // + this.colourpallet73.BackColor = System.Drawing.Color.Black; + this.colourpallet73.Location = new System.Drawing.Point(54, 37); + this.colourpallet73.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet73.Name = "colourpallet73"; + this.colourpallet73.Size = new System.Drawing.Size(12, 8); + this.colourpallet73.TabIndex = 74; + this.colourpallet73.Visible = false; + // + // colourpallet74 + // + this.colourpallet74.BackColor = System.Drawing.Color.Black; + this.colourpallet74.Location = new System.Drawing.Point(67, 37); + this.colourpallet74.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet74.Name = "colourpallet74"; + this.colourpallet74.Size = new System.Drawing.Size(12, 8); + this.colourpallet74.TabIndex = 66; + this.colourpallet74.Visible = false; + // + // colourpallet75 + // + this.colourpallet75.BackColor = System.Drawing.Color.Black; + this.colourpallet75.Location = new System.Drawing.Point(80, 37); + this.colourpallet75.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet75.Name = "colourpallet75"; + this.colourpallet75.Size = new System.Drawing.Size(12, 8); + this.colourpallet75.TabIndex = 67; + this.colourpallet75.Visible = false; + // + // colourpallet76 + // + this.colourpallet76.BackColor = System.Drawing.Color.Black; + this.colourpallet76.Location = new System.Drawing.Point(93, 37); + this.colourpallet76.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet76.Name = "colourpallet76"; + this.colourpallet76.Size = new System.Drawing.Size(12, 8); + this.colourpallet76.TabIndex = 76; + this.colourpallet76.Visible = false; + // + // colourpallet77 + // + this.colourpallet77.BackColor = System.Drawing.Color.Black; + this.colourpallet77.Location = new System.Drawing.Point(106, 37); + this.colourpallet77.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet77.Name = "colourpallet77"; + this.colourpallet77.Size = new System.Drawing.Size(12, 8); + this.colourpallet77.TabIndex = 64; + this.colourpallet77.Visible = false; + // + // colourpallet78 + // + this.colourpallet78.BackColor = System.Drawing.Color.Black; + this.colourpallet78.Location = new System.Drawing.Point(119, 37); + this.colourpallet78.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet78.Name = "colourpallet78"; + this.colourpallet78.Size = new System.Drawing.Size(12, 8); + this.colourpallet78.TabIndex = 84; + this.colourpallet78.Visible = false; + // + // colourpallet79 + // + this.colourpallet79.BackColor = System.Drawing.Color.Black; + this.colourpallet79.Location = new System.Drawing.Point(132, 37); + this.colourpallet79.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet79.Name = "colourpallet79"; + this.colourpallet79.Size = new System.Drawing.Size(12, 8); + this.colourpallet79.TabIndex = 72; + this.colourpallet79.Visible = false; + // + // colourpallet80 + // + this.colourpallet80.BackColor = System.Drawing.Color.Black; + this.colourpallet80.Location = new System.Drawing.Point(145, 37); + this.colourpallet80.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet80.Name = "colourpallet80"; + this.colourpallet80.Size = new System.Drawing.Size(12, 8); + this.colourpallet80.TabIndex = 75; + this.colourpallet80.Visible = false; + // + // colourpallet81 + // + this.colourpallet81.BackColor = System.Drawing.Color.Black; + this.colourpallet81.Location = new System.Drawing.Point(158, 37); + this.colourpallet81.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet81.Name = "colourpallet81"; + this.colourpallet81.Size = new System.Drawing.Size(12, 8); + this.colourpallet81.TabIndex = 65; + this.colourpallet81.Visible = false; + // + // colourpallet82 + // + this.colourpallet82.BackColor = System.Drawing.Color.Black; + this.colourpallet82.Location = new System.Drawing.Point(171, 37); + this.colourpallet82.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet82.Name = "colourpallet82"; + this.colourpallet82.Size = new System.Drawing.Size(12, 8); + this.colourpallet82.TabIndex = 60; + this.colourpallet82.Visible = false; + // + // colourpallet83 + // + this.colourpallet83.BackColor = System.Drawing.Color.Black; + this.colourpallet83.Location = new System.Drawing.Point(184, 37); + this.colourpallet83.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet83.Name = "colourpallet83"; + this.colourpallet83.Size = new System.Drawing.Size(12, 8); + this.colourpallet83.TabIndex = 88; + this.colourpallet83.Visible = false; + // + // colourpallet84 + // + this.colourpallet84.BackColor = System.Drawing.Color.Black; + this.colourpallet84.Location = new System.Drawing.Point(197, 37); + this.colourpallet84.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet84.Name = "colourpallet84"; + this.colourpallet84.Size = new System.Drawing.Size(12, 8); + this.colourpallet84.TabIndex = 68; + this.colourpallet84.Visible = false; + // + // colourpallet85 + // + this.colourpallet85.BackColor = System.Drawing.Color.Black; + this.colourpallet85.Location = new System.Drawing.Point(210, 37); + this.colourpallet85.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet85.Name = "colourpallet85"; + this.colourpallet85.Size = new System.Drawing.Size(12, 8); + this.colourpallet85.TabIndex = 83; + this.colourpallet85.Visible = false; + // + // colourpallet86 + // + this.colourpallet86.BackColor = System.Drawing.Color.Black; + this.colourpallet86.Location = new System.Drawing.Point(2, 46); + this.colourpallet86.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet86.Name = "colourpallet86"; + this.colourpallet86.Size = new System.Drawing.Size(12, 8); + this.colourpallet86.TabIndex = 59; + this.colourpallet86.Visible = false; + // + // colourpallet87 + // + this.colourpallet87.BackColor = System.Drawing.Color.Black; + this.colourpallet87.Location = new System.Drawing.Point(15, 46); + this.colourpallet87.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet87.Name = "colourpallet87"; + this.colourpallet87.Size = new System.Drawing.Size(12, 8); + this.colourpallet87.TabIndex = 81; + this.colourpallet87.Visible = false; + // + // colourpallet88 + // + this.colourpallet88.BackColor = System.Drawing.Color.Black; + this.colourpallet88.Location = new System.Drawing.Point(28, 46); + this.colourpallet88.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet88.Name = "colourpallet88"; + this.colourpallet88.Size = new System.Drawing.Size(12, 8); + this.colourpallet88.TabIndex = 63; + this.colourpallet88.Visible = false; + // + // colourpallet89 + // + this.colourpallet89.BackColor = System.Drawing.Color.Black; + this.colourpallet89.Location = new System.Drawing.Point(41, 46); + this.colourpallet89.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet89.Name = "colourpallet89"; + this.colourpallet89.Size = new System.Drawing.Size(12, 8); + this.colourpallet89.TabIndex = 73; + this.colourpallet89.Visible = false; + // + // colourpallet90 + // + this.colourpallet90.BackColor = System.Drawing.Color.Black; + this.colourpallet90.Location = new System.Drawing.Point(54, 46); + this.colourpallet90.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet90.Name = "colourpallet90"; + this.colourpallet90.Size = new System.Drawing.Size(12, 8); + this.colourpallet90.TabIndex = 87; + this.colourpallet90.Visible = false; + // + // colourpallet91 + // + this.colourpallet91.BackColor = System.Drawing.Color.Black; + this.colourpallet91.Location = new System.Drawing.Point(67, 46); + this.colourpallet91.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet91.Name = "colourpallet91"; + this.colourpallet91.Size = new System.Drawing.Size(12, 8); + this.colourpallet91.TabIndex = 58; + this.colourpallet91.Visible = false; + // + // colourpallet92 + // + this.colourpallet92.BackColor = System.Drawing.Color.Black; + this.colourpallet92.Location = new System.Drawing.Point(80, 46); + this.colourpallet92.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet92.Name = "colourpallet92"; + this.colourpallet92.Size = new System.Drawing.Size(12, 8); + this.colourpallet92.TabIndex = 82; + this.colourpallet92.Visible = false; + // + // colourpallet93 + // + this.colourpallet93.BackColor = System.Drawing.Color.Black; + this.colourpallet93.Location = new System.Drawing.Point(93, 46); + this.colourpallet93.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet93.Name = "colourpallet93"; + this.colourpallet93.Size = new System.Drawing.Size(12, 8); + this.colourpallet93.TabIndex = 86; + this.colourpallet93.Visible = false; + // + // colourpallet94 + // + this.colourpallet94.BackColor = System.Drawing.Color.Black; + this.colourpallet94.Location = new System.Drawing.Point(106, 46); + this.colourpallet94.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet94.Name = "colourpallet94"; + this.colourpallet94.Size = new System.Drawing.Size(12, 8); + this.colourpallet94.TabIndex = 80; + this.colourpallet94.Visible = false; + // + // colourpallet95 + // + this.colourpallet95.BackColor = System.Drawing.Color.Black; + this.colourpallet95.Location = new System.Drawing.Point(119, 46); + this.colourpallet95.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet95.Name = "colourpallet95"; + this.colourpallet95.Size = new System.Drawing.Size(12, 8); + this.colourpallet95.TabIndex = 85; + this.colourpallet95.Visible = false; + // + // colourpallet96 + // + this.colourpallet96.BackColor = System.Drawing.Color.Black; + this.colourpallet96.Location = new System.Drawing.Point(132, 46); + this.colourpallet96.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet96.Name = "colourpallet96"; + this.colourpallet96.Size = new System.Drawing.Size(12, 8); + this.colourpallet96.TabIndex = 78; + this.colourpallet96.Visible = false; + // + // colourpallet97 + // + this.colourpallet97.BackColor = System.Drawing.Color.Black; + this.colourpallet97.Location = new System.Drawing.Point(145, 46); + this.colourpallet97.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet97.Name = "colourpallet97"; + this.colourpallet97.Size = new System.Drawing.Size(12, 8); + this.colourpallet97.TabIndex = 89; + this.colourpallet97.Visible = false; + // + // colourpallet98 + // + this.colourpallet98.BackColor = System.Drawing.Color.Black; + this.colourpallet98.Location = new System.Drawing.Point(158, 46); + this.colourpallet98.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet98.Name = "colourpallet98"; + this.colourpallet98.Size = new System.Drawing.Size(12, 8); + this.colourpallet98.TabIndex = 93; + this.colourpallet98.Visible = false; + // + // colourpallet99 + // + this.colourpallet99.BackColor = System.Drawing.Color.Black; + this.colourpallet99.Location = new System.Drawing.Point(171, 46); + this.colourpallet99.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet99.Name = "colourpallet99"; + this.colourpallet99.Size = new System.Drawing.Size(12, 8); + this.colourpallet99.TabIndex = 101; + this.colourpallet99.Visible = false; + // + // colourpallet100 + // + this.colourpallet100.BackColor = System.Drawing.Color.Black; + this.colourpallet100.Location = new System.Drawing.Point(184, 46); + this.colourpallet100.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet100.Name = "colourpallet100"; + this.colourpallet100.Size = new System.Drawing.Size(12, 8); + this.colourpallet100.TabIndex = 94; + this.colourpallet100.Visible = false; + // + // colourpallet101 + // + this.colourpallet101.BackColor = System.Drawing.Color.Black; + this.colourpallet101.Location = new System.Drawing.Point(197, 46); + this.colourpallet101.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet101.Name = "colourpallet101"; + this.colourpallet101.Size = new System.Drawing.Size(12, 8); + this.colourpallet101.TabIndex = 111; + this.colourpallet101.Visible = false; + // + // colourpallet102 + // + this.colourpallet102.BackColor = System.Drawing.Color.Black; + this.colourpallet102.Location = new System.Drawing.Point(210, 46); + this.colourpallet102.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet102.Name = "colourpallet102"; + this.colourpallet102.Size = new System.Drawing.Size(12, 8); + this.colourpallet102.TabIndex = 110; + this.colourpallet102.Visible = false; + // + // colourpallet103 + // + this.colourpallet103.BackColor = System.Drawing.Color.Black; + this.colourpallet103.Location = new System.Drawing.Point(2, 55); + this.colourpallet103.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet103.Name = "colourpallet103"; + this.colourpallet103.Size = new System.Drawing.Size(12, 8); + this.colourpallet103.TabIndex = 117; + this.colourpallet103.Visible = false; + // + // colourpallet104 + // + this.colourpallet104.BackColor = System.Drawing.Color.Black; + this.colourpallet104.Location = new System.Drawing.Point(15, 55); + this.colourpallet104.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet104.Name = "colourpallet104"; + this.colourpallet104.Size = new System.Drawing.Size(12, 8); + this.colourpallet104.TabIndex = 112; + this.colourpallet104.Visible = false; + // + // colourpallet105 + // + this.colourpallet105.BackColor = System.Drawing.Color.Black; + this.colourpallet105.Location = new System.Drawing.Point(28, 55); + this.colourpallet105.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet105.Name = "colourpallet105"; + this.colourpallet105.Size = new System.Drawing.Size(12, 8); + this.colourpallet105.TabIndex = 109; + this.colourpallet105.Visible = false; + // + // colourpallet106 + // + this.colourpallet106.BackColor = System.Drawing.Color.Black; + this.colourpallet106.Location = new System.Drawing.Point(41, 55); + this.colourpallet106.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet106.Name = "colourpallet106"; + this.colourpallet106.Size = new System.Drawing.Size(12, 8); + this.colourpallet106.TabIndex = 103; + this.colourpallet106.Visible = false; + // + // colourpallet107 + // + this.colourpallet107.BackColor = System.Drawing.Color.Black; + this.colourpallet107.Location = new System.Drawing.Point(54, 55); + this.colourpallet107.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet107.Name = "colourpallet107"; + this.colourpallet107.Size = new System.Drawing.Size(12, 8); + this.colourpallet107.TabIndex = 102; + this.colourpallet107.Visible = false; + // + // colourpallet108 + // + this.colourpallet108.BackColor = System.Drawing.Color.Black; + this.colourpallet108.Location = new System.Drawing.Point(67, 55); + this.colourpallet108.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet108.Name = "colourpallet108"; + this.colourpallet108.Size = new System.Drawing.Size(12, 8); + this.colourpallet108.TabIndex = 106; + this.colourpallet108.Visible = false; + // + // colourpallet109 + // + this.colourpallet109.BackColor = System.Drawing.Color.Black; + this.colourpallet109.Location = new System.Drawing.Point(80, 55); + this.colourpallet109.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet109.Name = "colourpallet109"; + this.colourpallet109.Size = new System.Drawing.Size(12, 8); + this.colourpallet109.TabIndex = 98; + this.colourpallet109.Visible = false; + // + // colourpallet110 + // + this.colourpallet110.BackColor = System.Drawing.Color.Black; + this.colourpallet110.Location = new System.Drawing.Point(93, 55); + this.colourpallet110.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet110.Name = "colourpallet110"; + this.colourpallet110.Size = new System.Drawing.Size(12, 8); + this.colourpallet110.TabIndex = 99; + this.colourpallet110.Visible = false; + // + // colourpallet111 + // + this.colourpallet111.BackColor = System.Drawing.Color.Black; + this.colourpallet111.Location = new System.Drawing.Point(106, 55); + this.colourpallet111.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet111.Name = "colourpallet111"; + this.colourpallet111.Size = new System.Drawing.Size(12, 8); + this.colourpallet111.TabIndex = 108; + this.colourpallet111.Visible = false; + // + // colourpallet112 + // + this.colourpallet112.BackColor = System.Drawing.Color.Black; + this.colourpallet112.Location = new System.Drawing.Point(119, 55); + this.colourpallet112.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet112.Name = "colourpallet112"; + this.colourpallet112.Size = new System.Drawing.Size(12, 8); + this.colourpallet112.TabIndex = 96; + this.colourpallet112.Visible = false; + // + // colourpallet113 + // + this.colourpallet113.BackColor = System.Drawing.Color.Black; + this.colourpallet113.Location = new System.Drawing.Point(132, 55); + this.colourpallet113.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet113.Name = "colourpallet113"; + this.colourpallet113.Size = new System.Drawing.Size(12, 8); + this.colourpallet113.TabIndex = 116; + this.colourpallet113.Visible = false; + // + // colourpallet114 + // + this.colourpallet114.BackColor = System.Drawing.Color.Black; + this.colourpallet114.Location = new System.Drawing.Point(145, 55); + this.colourpallet114.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet114.Name = "colourpallet114"; + this.colourpallet114.Size = new System.Drawing.Size(12, 8); + this.colourpallet114.TabIndex = 104; + this.colourpallet114.Visible = false; + // + // colourpallet115 + // + this.colourpallet115.BackColor = System.Drawing.Color.Black; + this.colourpallet115.Location = new System.Drawing.Point(158, 55); + this.colourpallet115.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet115.Name = "colourpallet115"; + this.colourpallet115.Size = new System.Drawing.Size(12, 8); + this.colourpallet115.TabIndex = 107; + this.colourpallet115.Visible = false; + // + // colourpallet116 + // + this.colourpallet116.BackColor = System.Drawing.Color.Black; + this.colourpallet116.Location = new System.Drawing.Point(171, 55); + this.colourpallet116.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet116.Name = "colourpallet116"; + this.colourpallet116.Size = new System.Drawing.Size(12, 8); + this.colourpallet116.TabIndex = 97; + this.colourpallet116.Visible = false; + // + // colourpallet117 + // + this.colourpallet117.BackColor = System.Drawing.Color.Black; + this.colourpallet117.Location = new System.Drawing.Point(184, 55); + this.colourpallet117.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet117.Name = "colourpallet117"; + this.colourpallet117.Size = new System.Drawing.Size(12, 8); + this.colourpallet117.TabIndex = 92; + this.colourpallet117.Visible = false; + // + // colourpallet118 + // + this.colourpallet118.BackColor = System.Drawing.Color.Black; + this.colourpallet118.Location = new System.Drawing.Point(197, 55); + this.colourpallet118.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet118.Name = "colourpallet118"; + this.colourpallet118.Size = new System.Drawing.Size(12, 8); + this.colourpallet118.TabIndex = 120; + this.colourpallet118.Visible = false; + // + // colourpallet119 + // + this.colourpallet119.BackColor = System.Drawing.Color.Black; + this.colourpallet119.Location = new System.Drawing.Point(210, 55); + this.colourpallet119.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet119.Name = "colourpallet119"; + this.colourpallet119.Size = new System.Drawing.Size(12, 8); + this.colourpallet119.TabIndex = 100; + this.colourpallet119.Visible = false; + // + // colourpallet120 + // + this.colourpallet120.BackColor = System.Drawing.Color.Black; + this.colourpallet120.Location = new System.Drawing.Point(2, 64); + this.colourpallet120.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet120.Name = "colourpallet120"; + this.colourpallet120.Size = new System.Drawing.Size(12, 8); + this.colourpallet120.TabIndex = 115; + this.colourpallet120.Visible = false; + // + // colourpallet121 + // + this.colourpallet121.BackColor = System.Drawing.Color.Black; + this.colourpallet121.Location = new System.Drawing.Point(15, 64); + this.colourpallet121.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet121.Name = "colourpallet121"; + this.colourpallet121.Size = new System.Drawing.Size(12, 8); + this.colourpallet121.TabIndex = 91; + this.colourpallet121.Visible = false; + // + // colourpallet122 + // + this.colourpallet122.BackColor = System.Drawing.Color.Black; + this.colourpallet122.Location = new System.Drawing.Point(28, 64); + this.colourpallet122.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet122.Name = "colourpallet122"; + this.colourpallet122.Size = new System.Drawing.Size(12, 8); + this.colourpallet122.TabIndex = 113; + this.colourpallet122.Visible = false; + // + // colourpallet123 + // + this.colourpallet123.BackColor = System.Drawing.Color.Black; + this.colourpallet123.Location = new System.Drawing.Point(41, 64); + this.colourpallet123.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet123.Name = "colourpallet123"; + this.colourpallet123.Size = new System.Drawing.Size(12, 8); + this.colourpallet123.TabIndex = 95; + this.colourpallet123.Visible = false; + // + // colourpallet124 + // + this.colourpallet124.BackColor = System.Drawing.Color.Black; + this.colourpallet124.Location = new System.Drawing.Point(54, 64); + this.colourpallet124.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet124.Name = "colourpallet124"; + this.colourpallet124.Size = new System.Drawing.Size(12, 8); + this.colourpallet124.TabIndex = 105; + this.colourpallet124.Visible = false; + // + // colourpallet125 + // + this.colourpallet125.BackColor = System.Drawing.Color.Black; + this.colourpallet125.Location = new System.Drawing.Point(67, 64); + this.colourpallet125.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet125.Name = "colourpallet125"; + this.colourpallet125.Size = new System.Drawing.Size(12, 8); + this.colourpallet125.TabIndex = 119; + this.colourpallet125.Visible = false; + // + // colourpallet126 + // + this.colourpallet126.BackColor = System.Drawing.Color.Black; + this.colourpallet126.Location = new System.Drawing.Point(80, 64); + this.colourpallet126.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet126.Name = "colourpallet126"; + this.colourpallet126.Size = new System.Drawing.Size(12, 8); + this.colourpallet126.TabIndex = 90; + this.colourpallet126.Visible = false; + // + // colourpallet127 + // + this.colourpallet127.BackColor = System.Drawing.Color.Black; + this.colourpallet127.Location = new System.Drawing.Point(93, 64); + this.colourpallet127.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet127.Name = "colourpallet127"; + this.colourpallet127.Size = new System.Drawing.Size(12, 8); + this.colourpallet127.TabIndex = 114; + this.colourpallet127.Visible = false; + // + // colourpallet128 + // + this.colourpallet128.BackColor = System.Drawing.Color.Black; + this.colourpallet128.Location = new System.Drawing.Point(106, 64); + this.colourpallet128.Margin = new System.Windows.Forms.Padding(1, 0, 0, 1); + this.colourpallet128.Name = "colourpallet128"; + this.colourpallet128.Size = new System.Drawing.Size(12, 8); + this.colourpallet128.TabIndex = 118; + this.colourpallet128.Visible = false; + // + // Label4 + // + this.Label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.Label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label4.Location = new System.Drawing.Point(11, 2); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(204, 23); + this.Label4.TabIndex = 11; + this.Label4.Text = "Colours"; + this.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // line6 + // + this.line6.BackColor = System.Drawing.Color.Black; + this.line6.Dock = System.Windows.Forms.DockStyle.Top; + this.line6.Location = new System.Drawing.Point(0, 0); + this.line6.Name = "line6"; + this.line6.Size = new System.Drawing.Size(225, 1); + this.line6.TabIndex = 4; + // + // pnltoolproperties + // + this.pnltoolproperties.Controls.Add(this.pnleracertoolsettings); + this.pnltoolproperties.Controls.Add(this.pnlpixelplacersettings); + this.pnltoolproperties.Controls.Add(this.pnlovaltoolsettings); + this.pnltoolproperties.Controls.Add(this.pnllinetoolsettings); + this.pnltoolproperties.Controls.Add(this.pnlpaintbrushtoolsettings); + this.pnltoolproperties.Controls.Add(this.pnltexttoolsettings); + this.pnltoolproperties.Controls.Add(this.pnlpixelsettersettings); + this.pnltoolproperties.Controls.Add(this.pnlmagnifiersettings); + this.pnltoolproperties.Controls.Add(this.pnlfloodfillsettings); + this.pnltoolproperties.Controls.Add(this.pnlsquaretoolsettings); + this.pnltoolproperties.Controls.Add(this.pnlpencilsettings); + this.pnltoolproperties.Controls.Add(this.Label6); + this.pnltoolproperties.Controls.Add(this.Label5); + this.pnltoolproperties.Controls.Add(this.line5); + this.pnltoolproperties.Controls.Add(this.line3); + this.pnltoolproperties.Location = new System.Drawing.Point(0, 0); + this.pnltoolproperties.Name = "pnltoolproperties"; + this.pnltoolproperties.Size = new System.Drawing.Size(457, 100); + this.pnltoolproperties.TabIndex = 1; + // + // pnlpixelplacersettings + // + this.pnlpixelplacersettings.Controls.Add(this.lblpixelplacerhelp); + this.pnlpixelplacersettings.Controls.Add(this.btnpixelplacermovementmode); + this.pnlpixelplacersettings.Controls.Add(this.Label8); + this.pnlpixelplacersettings.Location = new System.Drawing.Point(0, 1); + this.pnlpixelplacersettings.Name = "pnlpixelplacersettings"; + this.pnlpixelplacersettings.Size = new System.Drawing.Size(454, 98); + this.pnlpixelplacersettings.TabIndex = 7; + this.pnlpixelplacersettings.Visible = false; + // + // lblpixelplacerhelp + // + this.lblpixelplacerhelp.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblpixelplacerhelp.Location = new System.Drawing.Point(3, 26); + this.lblpixelplacerhelp.Name = "lblpixelplacerhelp"; + this.lblpixelplacerhelp.Size = new System.Drawing.Size(307, 67); + this.lblpixelplacerhelp.TabIndex = 11; + this.lblpixelplacerhelp.Text = "This tool does not contain any alterable settings. Simply click on the canvas and" + + " a pixel will be placed in the spot you click."; + this.lblpixelplacerhelp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btnpixelplacermovementmode + // + this.btnpixelplacermovementmode.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpixelplacermovementmode.Location = new System.Drawing.Point(312, 26); + this.btnpixelplacermovementmode.Name = "btnpixelplacermovementmode"; + this.btnpixelplacermovementmode.Size = new System.Drawing.Size(138, 67); + this.btnpixelplacermovementmode.TabIndex = 10; + this.btnpixelplacermovementmode.Text = "Activate Movement Mode"; + this.btnpixelplacermovementmode.UseVisualStyleBackColor = true; + this.btnpixelplacermovementmode.Click += new System.EventHandler(this.btnpixelplacermovementmode_Click); + // + // Label8 + // + this.Label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label8.Location = new System.Drawing.Point(6, 3); + this.Label8.Name = "Label8"; + this.Label8.Size = new System.Drawing.Size(444, 23); + this.Label8.TabIndex = 0; + this.Label8.Text = "Pixel Placer Settings"; + this.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlovaltoolsettings + // + this.pnlovaltoolsettings.Controls.Add(this.Label20); + this.pnlovaltoolsettings.Controls.Add(this.btnovalfillonoff); + this.pnlovaltoolsettings.Controls.Add(this.pnlovalfillcolour); + this.pnlovaltoolsettings.Controls.Add(this.txtovalborderwidth); + this.pnlovaltoolsettings.Controls.Add(this.Label21); + this.pnlovaltoolsettings.Controls.Add(this.Label22); + this.pnlovaltoolsettings.Controls.Add(this.Label23); + this.pnlovaltoolsettings.Location = new System.Drawing.Point(0, 1); + this.pnlovaltoolsettings.Name = "pnlovaltoolsettings"; + this.pnlovaltoolsettings.Size = new System.Drawing.Size(459, 96); + this.pnlovaltoolsettings.TabIndex = 15; + this.pnlovaltoolsettings.Visible = false; + // + // Label20 + // + this.Label20.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label20.Location = new System.Drawing.Point(211, 29); + this.Label20.Name = "Label20"; + this.Label20.Size = new System.Drawing.Size(244, 65); + this.Label20.TabIndex = 15; + this.Label20.Text = "Set a border width and turn fill on or off then draw the square on the canvas wit" + + "h the mouse. Click the fill colour box to set it to your currently selected colo" + + "ur."; + // + // btnovalfillonoff + // + this.btnovalfillonoff.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.btnovalfillonoff.Location = new System.Drawing.Point(150, 64); + this.btnovalfillonoff.Name = "btnovalfillonoff"; + this.btnovalfillonoff.Size = new System.Drawing.Size(56, 28); + this.btnovalfillonoff.TabIndex = 14; + this.btnovalfillonoff.Text = "Fill OFF"; + this.btnovalfillonoff.UseVisualStyleBackColor = true; + this.btnovalfillonoff.Click += new System.EventHandler(this.btnovalfillonoff_Click); + // + // pnlovalfillcolour + // + this.pnlovalfillcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlovalfillcolour.Location = new System.Drawing.Point(109, 64); + this.pnlovalfillcolour.Name = "pnlovalfillcolour"; + this.pnlovalfillcolour.Size = new System.Drawing.Size(34, 28); + this.pnlovalfillcolour.TabIndex = 13; + this.pnlovalfillcolour.Click += new System.EventHandler(this.pnlovalfillcolour_Click); + // + // txtovalborderwidth + // + this.txtovalborderwidth.BackColor = System.Drawing.Color.White; + this.txtovalborderwidth.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtovalborderwidth.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtovalborderwidth.ForeColor = System.Drawing.Color.Black; + this.txtovalborderwidth.Location = new System.Drawing.Point(133, 33); + this.txtovalborderwidth.Name = "txtovalborderwidth"; + this.txtovalborderwidth.Size = new System.Drawing.Size(73, 26); + this.txtovalborderwidth.TabIndex = 12; + this.txtovalborderwidth.TextChanged += new System.EventHandler(this.txtovalborderwidth_TextChanged); + // + // Label21 + // + this.Label21.AutoSize = true; + this.Label21.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label21.Location = new System.Drawing.Point(4, 66); + this.Label21.Name = "Label21"; + this.Label21.Size = new System.Drawing.Size(100, 24); + this.Label21.TabIndex = 11; + this.Label21.Text = "Fill Colour:"; + // + // Label22 + // + this.Label22.AutoSize = true; + this.Label22.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label22.Location = new System.Drawing.Point(4, 33); + this.Label22.Name = "Label22"; + this.Label22.Size = new System.Drawing.Size(125, 24); + this.Label22.TabIndex = 10; + this.Label22.Text = "Border Width:"; + // + // Label23 + // + this.Label23.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label23.Location = new System.Drawing.Point(6, 3); + this.Label23.Name = "Label23"; + this.Label23.Size = new System.Drawing.Size(444, 23); + this.Label23.TabIndex = 0; + this.Label23.Text = "Oval Tool Settings"; + this.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnleracertoolsettings + // + this.pnleracertoolsettings.Controls.Add(this.Label28); + this.pnleracertoolsettings.Controls.Add(this.btneracersquare); + this.pnleracertoolsettings.Controls.Add(this.btneracercircle); + this.pnleracertoolsettings.Controls.Add(this.Label24); + this.pnleracertoolsettings.Controls.Add(this.txteracersize); + this.pnleracertoolsettings.Controls.Add(this.Label26); + this.pnleracertoolsettings.Controls.Add(this.Label27); + this.pnleracertoolsettings.Location = new System.Drawing.Point(0, 1); + this.pnleracertoolsettings.Name = "pnleracertoolsettings"; + this.pnleracertoolsettings.Size = new System.Drawing.Size(459, 96); + this.pnleracertoolsettings.TabIndex = 16; + this.pnleracertoolsettings.Visible = false; + // + // Label28 + // + this.Label28.AutoSize = true; + this.Label28.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label28.Location = new System.Drawing.Point(40, 71); + this.Label28.Name = "Label28"; + this.Label28.Size = new System.Drawing.Size(65, 24); + this.Label28.TabIndex = 19; + this.Label28.Text = "Shape"; + // + // btneracersquare + // + this.btneracersquare.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadsquarerubberselected; + this.btneracersquare.FlatAppearance.BorderSize = 0; + this.btneracersquare.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btneracersquare.Location = new System.Drawing.Point(75, 21); + this.btneracersquare.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btneracersquare.Name = "btneracersquare"; + this.btneracersquare.Size = new System.Drawing.Size(60, 50); + this.btneracersquare.TabIndex = 17; + this.btneracersquare.Text = " "; + this.btneracersquare.UseVisualStyleBackColor = true; + this.btneracersquare.Click += new System.EventHandler(this.btneracersquare_Click); + // + // btneracercircle + // + this.btneracercircle.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadcirclerubber; + this.btneracercircle.FlatAppearance.BorderSize = 0; + this.btneracercircle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btneracercircle.Location = new System.Drawing.Point(9, 21); + this.btneracercircle.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btneracercircle.Name = "btneracercircle"; + this.btneracercircle.Size = new System.Drawing.Size(60, 50); + this.btneracercircle.TabIndex = 16; + this.btneracercircle.Text = " "; + this.btneracercircle.UseVisualStyleBackColor = true; + this.btneracercircle.Click += new System.EventHandler(this.btneracercircle_Click); + // + // Label24 + // + this.Label24.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label24.Location = new System.Drawing.Point(141, 29); + this.Label24.Name = "Label24"; + this.Label24.Size = new System.Drawing.Size(314, 38); + this.Label24.TabIndex = 15; + this.Label24.Text = "Choose a shape and size for your eracer then rub out unwanted parts of your drawi" + + "ng with the mouse."; + // + // txteracersize + // + this.txteracersize.BackColor = System.Drawing.Color.White; + this.txteracersize.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txteracersize.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txteracersize.ForeColor = System.Drawing.Color.Black; + this.txteracersize.Location = new System.Drawing.Point(198, 70); + this.txteracersize.Name = "txteracersize"; + this.txteracersize.Size = new System.Drawing.Size(73, 26); + this.txteracersize.TabIndex = 12; + this.txteracersize.TextChanged += new System.EventHandler(this.txteracersize_TextChanged); + // + // Label26 + // + this.Label26.AutoSize = true; + this.Label26.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label26.Location = new System.Drawing.Point(141, 71); + this.Label26.Name = "Label26"; + this.Label26.Size = new System.Drawing.Size(51, 24); + this.Label26.TabIndex = 10; + this.Label26.Text = "Size:"; + // + // Label27 + // + this.Label27.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label27.Location = new System.Drawing.Point(6, 3); + this.Label27.Name = "Label27"; + this.Label27.Size = new System.Drawing.Size(444, 23); + this.Label27.TabIndex = 0; + this.Label27.Text = "Eraser Tool Settings"; + this.Label27.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnllinetoolsettings + // + this.pnllinetoolsettings.Controls.Add(this.Label29); + this.pnllinetoolsettings.Controls.Add(this.txtlinewidth); + this.pnllinetoolsettings.Controls.Add(this.Label30); + this.pnllinetoolsettings.Controls.Add(this.Label31); + this.pnllinetoolsettings.Location = new System.Drawing.Point(168, 32); + this.pnllinetoolsettings.Name = "pnllinetoolsettings"; + this.pnllinetoolsettings.Size = new System.Drawing.Size(60, 28); + this.pnllinetoolsettings.TabIndex = 20; + this.pnllinetoolsettings.Visible = false; + // + // Label29 + // + this.Label29.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label29.Location = new System.Drawing.Point(196, 29); + this.Label29.Name = "Label29"; + this.Label29.Size = new System.Drawing.Size(257, 38); + this.Label29.TabIndex = 15; + this.Label29.Text = "Enter a line width then use the mouse to draw a straight line on the canvas."; + // + // txtlinewidth + // + this.txtlinewidth.BackColor = System.Drawing.Color.White; + this.txtlinewidth.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtlinewidth.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtlinewidth.ForeColor = System.Drawing.Color.Black; + this.txtlinewidth.Location = new System.Drawing.Point(114, 33); + this.txtlinewidth.Name = "txtlinewidth"; + this.txtlinewidth.Size = new System.Drawing.Size(73, 26); + this.txtlinewidth.TabIndex = 12; + this.txtlinewidth.TextAlignChanged += new System.EventHandler(this.txtlinewidth_TextChanged); + // + // Label30 + // + this.Label30.AutoSize = true; + this.Label30.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label30.Location = new System.Drawing.Point(8, 34); + this.Label30.Name = "Label30"; + this.Label30.Size = new System.Drawing.Size(104, 24); + this.Label30.TabIndex = 10; + this.Label30.Text = "Line Width:"; + // + // Label31 + // + this.Label31.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label31.Location = new System.Drawing.Point(6, 3); + this.Label31.Name = "Label31"; + this.Label31.Size = new System.Drawing.Size(444, 23); + this.Label31.TabIndex = 0; + this.Label31.Text = "Line Tool Settings"; + this.Label31.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlpaintbrushtoolsettings + // + this.pnlpaintbrushtoolsettings.Controls.Add(this.Label36); + this.pnlpaintbrushtoolsettings.Controls.Add(this.btnpaintsquareshape); + this.pnlpaintbrushtoolsettings.Controls.Add(this.btnpaintcircleshape); + this.pnlpaintbrushtoolsettings.Controls.Add(this.Label37); + this.pnlpaintbrushtoolsettings.Controls.Add(this.txtpaintbrushsize); + this.pnlpaintbrushtoolsettings.Controls.Add(this.Label38); + this.pnlpaintbrushtoolsettings.Controls.Add(this.Label39); + this.pnlpaintbrushtoolsettings.Location = new System.Drawing.Point(0, 1); + this.pnlpaintbrushtoolsettings.Name = "pnlpaintbrushtoolsettings"; + this.pnlpaintbrushtoolsettings.Size = new System.Drawing.Size(457, 97); + this.pnlpaintbrushtoolsettings.TabIndex = 21; + this.pnlpaintbrushtoolsettings.Visible = false; + // + // Label36 + // + this.Label36.AutoSize = true; + this.Label36.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label36.Location = new System.Drawing.Point(32, 69); + this.Label36.Name = "Label36"; + this.Label36.Size = new System.Drawing.Size(65, 24); + this.Label36.TabIndex = 19; + this.Label36.Text = "Shape"; + // + // btnpaintsquareshape + // + this.btnpaintsquareshape.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadsquarerubber; + this.btnpaintsquareshape.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnpaintsquareshape.FlatAppearance.BorderSize = 0; + this.btnpaintsquareshape.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpaintsquareshape.Location = new System.Drawing.Point(69, 27); + this.btnpaintsquareshape.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnpaintsquareshape.Name = "btnpaintsquareshape"; + this.btnpaintsquareshape.Size = new System.Drawing.Size(48, 40); + this.btnpaintsquareshape.TabIndex = 17; + this.btnpaintsquareshape.Text = " "; + this.btnpaintsquareshape.UseVisualStyleBackColor = true; + this.btnpaintsquareshape.Click += new System.EventHandler(this.btnpaintsquareshape_Click); + // + // btnpaintcircleshape + // + this.btnpaintcircleshape.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadcirclerubberselected; + this.btnpaintcircleshape.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnpaintcircleshape.FlatAppearance.BorderSize = 0; + this.btnpaintcircleshape.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpaintcircleshape.Location = new System.Drawing.Point(16, 27); + this.btnpaintcircleshape.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnpaintcircleshape.Name = "btnpaintcircleshape"; + this.btnpaintcircleshape.Size = new System.Drawing.Size(48, 40); + this.btnpaintcircleshape.TabIndex = 16; + this.btnpaintcircleshape.Text = " "; + this.btnpaintcircleshape.UseVisualStyleBackColor = true; + this.btnpaintcircleshape.Click += new System.EventHandler(this.btnpaintcircleshape_Click); + // + // Label37 + // + this.Label37.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label37.Location = new System.Drawing.Point(137, 29); + this.Label37.Name = "Label37"; + this.Label37.Size = new System.Drawing.Size(314, 38); + this.Label37.TabIndex = 15; + this.Label37.Text = "Choose a shape and size for your paint brush then paint on the canvas by drawing " + + "with the mouse."; + // + // txtpaintbrushsize + // + this.txtpaintbrushsize.BackColor = System.Drawing.Color.White; + this.txtpaintbrushsize.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpaintbrushsize.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpaintbrushsize.ForeColor = System.Drawing.Color.Black; + this.txtpaintbrushsize.Location = new System.Drawing.Point(194, 68); + this.txtpaintbrushsize.Name = "txtpaintbrushsize"; + this.txtpaintbrushsize.Size = new System.Drawing.Size(73, 26); + this.txtpaintbrushsize.TabIndex = 12; + this.txtpaintbrushsize.TextChanged += new System.EventHandler(this.txtpaintbrushsize_TextChanged); + // + // Label38 + // + this.Label38.AutoSize = true; + this.Label38.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label38.Location = new System.Drawing.Point(137, 69); + this.Label38.Name = "Label38"; + this.Label38.Size = new System.Drawing.Size(51, 24); + this.Label38.TabIndex = 10; + this.Label38.Text = "Size:"; + // + // Label39 + // + this.Label39.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label39.Location = new System.Drawing.Point(6, 3); + this.Label39.Name = "Label39"; + this.Label39.Size = new System.Drawing.Size(444, 23); + this.Label39.TabIndex = 0; + this.Label39.Text = "Paint Brush Tool Settings"; + this.Label39.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnltexttoolsettings + // + this.pnltexttoolsettings.Controls.Add(this.Label35); + this.pnltexttoolsettings.Controls.Add(this.combofontstyle); + this.pnltexttoolsettings.Controls.Add(this.txtdrawstringtext); + this.pnltexttoolsettings.Controls.Add(this.combodrawtextfont); + this.pnltexttoolsettings.Controls.Add(this.Label25); + this.pnltexttoolsettings.Controls.Add(this.txtdrawtextsize); + this.pnltexttoolsettings.Controls.Add(this.Label32); + this.pnltexttoolsettings.Controls.Add(this.Label33); + this.pnltexttoolsettings.Controls.Add(this.Label34); + this.pnltexttoolsettings.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnltexttoolsettings.Location = new System.Drawing.Point(0, 1); + this.pnltexttoolsettings.Name = "pnltexttoolsettings"; + this.pnltexttoolsettings.Size = new System.Drawing.Size(456, 99); + this.pnltexttoolsettings.TabIndex = 17; + this.pnltexttoolsettings.Visible = false; + // + // Label35 + // + this.Label35.AutoSize = true; + this.Label35.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label35.Location = new System.Drawing.Point(117, 33); + this.Label35.Name = "Label35"; + this.Label35.Size = new System.Drawing.Size(55, 24); + this.Label35.TabIndex = 19; + this.Label35.Text = "Style:"; + // + // combofontstyle + // + this.combofontstyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.combofontstyle.FormattingEnabled = true; + this.combofontstyle.Items.AddRange(new object[] { + "Bold", + "Italic", + "Regular", + "Strikeout", + "Underline"}); + this.combofontstyle.Location = new System.Drawing.Point(178, 34); + this.combofontstyle.Name = "combofontstyle"; + this.combofontstyle.Size = new System.Drawing.Size(78, 24); + this.combofontstyle.TabIndex = 18; + this.combofontstyle.SelectedIndexChanged += new System.EventHandler(this.combofontstyle_SelectedIndexChanged); + // + // txtdrawstringtext + // + this.txtdrawstringtext.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtdrawstringtext.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtdrawstringtext.Location = new System.Drawing.Point(265, 52); + this.txtdrawstringtext.Multiline = true; + this.txtdrawstringtext.Name = "txtdrawstringtext"; + this.txtdrawstringtext.Size = new System.Drawing.Size(185, 41); + this.txtdrawstringtext.TabIndex = 17; + this.txtdrawstringtext.Text = "Enter Words Here"; + this.txtdrawstringtext.TextChanged += new System.EventHandler(this.txtdrawstringtext_TextChanged); + // + // combodrawtextfont + // + this.combodrawtextfont.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.combodrawtextfont.FormattingEnabled = true; + this.combodrawtextfont.Location = new System.Drawing.Point(64, 68); + this.combodrawtextfont.Name = "combodrawtextfont"; + this.combodrawtextfont.Size = new System.Drawing.Size(192, 24); + this.combodrawtextfont.TabIndex = 16; + this.combodrawtextfont.SelectedIndexChanged += new System.EventHandler(this.combodrawtextfont_SelectedIndexChanged); + // + // Label25 + // + this.Label25.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label25.Location = new System.Drawing.Point(262, 26); + this.Label25.Name = "Label25"; + this.Label25.Size = new System.Drawing.Size(189, 23); + this.Label25.TabIndex = 15; + this.Label25.Text = "Click and drag on the canvas!"; + this.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // txtdrawtextsize + // + this.txtdrawtextsize.BackColor = System.Drawing.Color.White; + this.txtdrawtextsize.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtdrawtextsize.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtdrawtextsize.ForeColor = System.Drawing.Color.Black; + this.txtdrawtextsize.Location = new System.Drawing.Point(61, 33); + this.txtdrawtextsize.Name = "txtdrawtextsize"; + this.txtdrawtextsize.Size = new System.Drawing.Size(43, 26); + this.txtdrawtextsize.TabIndex = 12; + this.txtdrawtextsize.TextChanged += new System.EventHandler(this.txtdrawtextsize_TextChanged); + // + // Label32 + // + this.Label32.AutoSize = true; + this.Label32.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label32.Location = new System.Drawing.Point(4, 66); + this.Label32.Name = "Label32"; + this.Label32.Size = new System.Drawing.Size(53, 24); + this.Label32.TabIndex = 11; + this.Label32.Text = "Font:"; + // + // Label33 + // + this.Label33.AutoSize = true; + this.Label33.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label33.Location = new System.Drawing.Point(4, 33); + this.Label33.Name = "Label33"; + this.Label33.Size = new System.Drawing.Size(51, 24); + this.Label33.TabIndex = 10; + this.Label33.Text = "Size:"; + // + // Label34 + // + this.Label34.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label34.Location = new System.Drawing.Point(6, 3); + this.Label34.Name = "Label34"; + this.Label34.Size = new System.Drawing.Size(444, 23); + this.Label34.TabIndex = 0; + this.Label34.Text = "Text Tool Settings"; + this.Label34.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlpixelsettersettings + // + this.pnlpixelsettersettings.Controls.Add(this.btnpixelsettersetpixel); + this.pnlpixelsettersettings.Controls.Add(this.txtpixelsetterycoordinate); + this.pnlpixelsettersettings.Controls.Add(this.txtpixelsetterxcoordinate); + this.pnlpixelsettersettings.Controls.Add(this.Label3); + this.pnlpixelsettersettings.Controls.Add(this.Label2); + this.pnlpixelsettersettings.Controls.Add(this.Label1); + this.pnlpixelsettersettings.Location = new System.Drawing.Point(0, 1); + this.pnlpixelsettersettings.Name = "pnlpixelsettersettings"; + this.pnlpixelsettersettings.Size = new System.Drawing.Size(457, 99); + this.pnlpixelsettersettings.TabIndex = 5; + this.pnlpixelsettersettings.Visible = false; + // + // btnpixelsettersetpixel + // + this.btnpixelsettersetpixel.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpixelsettersetpixel.Location = new System.Drawing.Point(215, 34); + this.btnpixelsettersetpixel.Name = "btnpixelsettersetpixel"; + this.btnpixelsettersetpixel.Size = new System.Drawing.Size(228, 56); + this.btnpixelsettersetpixel.TabIndex = 10; + this.btnpixelsettersetpixel.Text = "Set Pixel"; + this.btnpixelsettersetpixel.UseVisualStyleBackColor = true; + this.btnpixelsettersetpixel.Click += new System.EventHandler(this.btnpixelsettersetpixel_Click); + // + // txtpixelsetterycoordinate + // + this.txtpixelsetterycoordinate.BackColor = System.Drawing.Color.White; + this.txtpixelsetterycoordinate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpixelsetterycoordinate.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpixelsetterycoordinate.ForeColor = System.Drawing.Color.Black; + this.txtpixelsetterycoordinate.Location = new System.Drawing.Point(136, 64); + this.txtpixelsetterycoordinate.Name = "txtpixelsetterycoordinate"; + this.txtpixelsetterycoordinate.Size = new System.Drawing.Size(73, 26); + this.txtpixelsetterycoordinate.TabIndex = 9; + // + // txtpixelsetterxcoordinate + // + this.txtpixelsetterxcoordinate.BackColor = System.Drawing.Color.White; + this.txtpixelsetterxcoordinate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpixelsetterxcoordinate.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpixelsetterxcoordinate.ForeColor = System.Drawing.Color.Black; + this.txtpixelsetterxcoordinate.Location = new System.Drawing.Point(136, 34); + this.txtpixelsetterxcoordinate.Name = "txtpixelsetterxcoordinate"; + this.txtpixelsetterxcoordinate.Size = new System.Drawing.Size(73, 26); + this.txtpixelsetterxcoordinate.TabIndex = 8; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label3.Location = new System.Drawing.Point(8, 63); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(124, 24); + this.Label3.TabIndex = 2; + this.Label3.Text = "Y Coordinate:"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label2.Location = new System.Drawing.Point(7, 34); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(126, 24); + this.Label2.TabIndex = 1; + this.Label2.Text = "X Coordinate:"; + // + // Label1 + // + this.Label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label1.Location = new System.Drawing.Point(6, 3); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(444, 23); + this.Label1.TabIndex = 0; + this.Label1.Text = "Pixel Setter Settings"; + this.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlmagnifiersettings + // + this.pnlmagnifiersettings.Controls.Add(this.btnzoomout); + this.pnlmagnifiersettings.Controls.Add(this.btnzoomin); + this.pnlmagnifiersettings.Controls.Add(this.lblzoomlevel); + this.pnlmagnifiersettings.Controls.Add(this.Label7); + this.pnlmagnifiersettings.Location = new System.Drawing.Point(78, 50); + this.pnlmagnifiersettings.Name = "pnlmagnifiersettings"; + this.pnlmagnifiersettings.Size = new System.Drawing.Size(67, 44); + this.pnlmagnifiersettings.TabIndex = 6; + this.pnlmagnifiersettings.Visible = false; + // + // btnzoomout + // + this.btnzoomout.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnzoomout.Location = new System.Drawing.Point(16, 33); + this.btnzoomout.Name = "btnzoomout"; + this.btnzoomout.Size = new System.Drawing.Size(129, 56); + this.btnzoomout.TabIndex = 11; + this.btnzoomout.Text = "-"; + this.btnzoomout.UseVisualStyleBackColor = true; + this.btnzoomout.Click += new System.EventHandler(this.btnzoomout_Click); + // + // btnzoomin + // + this.btnzoomin.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnzoomin.Location = new System.Drawing.Point(313, 33); + this.btnzoomin.Name = "btnzoomin"; + this.btnzoomin.Size = new System.Drawing.Size(129, 56); + this.btnzoomin.TabIndex = 10; + this.btnzoomin.Text = "+"; + this.btnzoomin.UseVisualStyleBackColor = true; + this.btnzoomin.Click += new System.EventHandler(this.btnzoomin_Click); + // + // lblzoomlevel + // + this.lblzoomlevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblzoomlevel.Location = new System.Drawing.Point(151, 33); + this.lblzoomlevel.Name = "lblzoomlevel"; + this.lblzoomlevel.Size = new System.Drawing.Size(156, 56); + this.lblzoomlevel.TabIndex = 1; + this.lblzoomlevel.Text = "1X"; + this.lblzoomlevel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label7 + // + this.Label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label7.Location = new System.Drawing.Point(6, 3); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(444, 23); + this.Label7.TabIndex = 0; + this.Label7.Text = "Magnifier Settings"; + this.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlfloodfillsettings + // + this.pnlfloodfillsettings.Controls.Add(this.Label12); + this.pnlfloodfillsettings.Controls.Add(this.Label15); + this.pnlfloodfillsettings.Location = new System.Drawing.Point(162, 65); + this.pnlfloodfillsettings.Name = "pnlfloodfillsettings"; + this.pnlfloodfillsettings.Size = new System.Drawing.Size(71, 31); + this.pnlfloodfillsettings.TabIndex = 13; + this.pnlfloodfillsettings.Visible = false; + // + // Label12 + // + this.Label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label12.Location = new System.Drawing.Point(3, 28); + this.Label12.Name = "Label12"; + this.Label12.Size = new System.Drawing.Size(450, 51); + this.Label12.TabIndex = 11; + this.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label15 + // + this.Label15.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label15.Location = new System.Drawing.Point(6, 3); + this.Label15.Name = "Label15"; + this.Label15.Size = new System.Drawing.Size(444, 23); + this.Label15.TabIndex = 0; + this.Label15.Text = "Flood Fill Settings"; + this.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlsquaretoolsettings + // + this.pnlsquaretoolsettings.Controls.Add(this.Label19); + this.pnlsquaretoolsettings.Controls.Add(this.btnsquarefillonoff); + this.pnlsquaretoolsettings.Controls.Add(this.pnlsquarefillcolour); + this.pnlsquaretoolsettings.Controls.Add(this.txtsquareborderwidth); + this.pnlsquaretoolsettings.Controls.Add(this.Label16); + this.pnlsquaretoolsettings.Controls.Add(this.Label18); + this.pnlsquaretoolsettings.Controls.Add(this.Label17); + this.pnlsquaretoolsettings.Location = new System.Drawing.Point(16, 39); + this.pnlsquaretoolsettings.Name = "pnlsquaretoolsettings"; + this.pnlsquaretoolsettings.Size = new System.Drawing.Size(42, 31); + this.pnlsquaretoolsettings.TabIndex = 14; + this.pnlsquaretoolsettings.Visible = false; + // + // Label19 + // + this.Label19.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label19.Location = new System.Drawing.Point(211, 29); + this.Label19.Name = "Label19"; + this.Label19.Size = new System.Drawing.Size(244, 65); + this.Label19.TabIndex = 15; + this.Label19.Text = "Set a border width and turn fill on or off then draw the square on the canvas wit" + + "h the mouse. Click the fill colour box to set it to your currently selected colo" + + "ur."; + // + // btnsquarefillonoff + // + this.btnsquarefillonoff.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.btnsquarefillonoff.Location = new System.Drawing.Point(150, 64); + this.btnsquarefillonoff.Name = "btnsquarefillonoff"; + this.btnsquarefillonoff.Size = new System.Drawing.Size(56, 28); + this.btnsquarefillonoff.TabIndex = 14; + this.btnsquarefillonoff.Text = "Fill OFF"; + this.btnsquarefillonoff.UseVisualStyleBackColor = true; + this.btnsquarefillonoff.Click += new System.EventHandler(this.btnsquarefillonoff_Click); + // + // pnlsquarefillcolour + // + this.pnlsquarefillcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlsquarefillcolour.Location = new System.Drawing.Point(109, 64); + this.pnlsquarefillcolour.Name = "pnlsquarefillcolour"; + this.pnlsquarefillcolour.Size = new System.Drawing.Size(34, 28); + this.pnlsquarefillcolour.TabIndex = 13; + this.pnlsquarefillcolour.Click += new System.EventHandler(this.pnlsquarefillcolour_Click); + // + // txtsquareborderwidth + // + this.txtsquareborderwidth.BackColor = System.Drawing.Color.White; + this.txtsquareborderwidth.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtsquareborderwidth.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtsquareborderwidth.ForeColor = System.Drawing.Color.Black; + this.txtsquareborderwidth.Location = new System.Drawing.Point(133, 33); + this.txtsquareborderwidth.Name = "txtsquareborderwidth"; + this.txtsquareborderwidth.Size = new System.Drawing.Size(73, 26); + this.txtsquareborderwidth.TabIndex = 12; + this.txtsquareborderwidth.TextChanged += new System.EventHandler(this.txtsquareborderwidth_TextChanged); + // + // Label16 + // + this.Label16.AutoSize = true; + this.Label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label16.Location = new System.Drawing.Point(4, 66); + this.Label16.Name = "Label16"; + this.Label16.Size = new System.Drawing.Size(100, 24); + this.Label16.TabIndex = 11; + this.Label16.Text = "Fill Colour:"; + // + // Label18 + // + this.Label18.AutoSize = true; + this.Label18.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label18.Location = new System.Drawing.Point(4, 33); + this.Label18.Name = "Label18"; + this.Label18.Size = new System.Drawing.Size(125, 24); + this.Label18.TabIndex = 10; + this.Label18.Text = "Border Width:"; + // + // Label17 + // + this.Label17.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label17.Location = new System.Drawing.Point(6, 3); + this.Label17.Name = "Label17"; + this.Label17.Size = new System.Drawing.Size(444, 23); + this.Label17.TabIndex = 0; + this.Label17.Text = "Rectangle Tool Settings"; + this.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlpencilsettings + // + this.pnlpencilsettings.Controls.Add(this.btnpencilsize3); + this.pnlpencilsettings.Controls.Add(this.btnpencilsize2); + this.pnlpencilsettings.Controls.Add(this.btnpencilsize1); + this.pnlpencilsettings.Controls.Add(this.Label14); + this.pnlpencilsettings.Location = new System.Drawing.Point(422, 13); + this.pnlpencilsettings.Name = "pnlpencilsettings"; + this.pnlpencilsettings.Size = new System.Drawing.Size(28, 22); + this.pnlpencilsettings.TabIndex = 12; + this.pnlpencilsettings.Visible = false; + // + // btnpencilsize3 + // + this.btnpencilsize3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpencilsize3.Location = new System.Drawing.Point(298, 30); + this.btnpencilsize3.Name = "btnpencilsize3"; + this.btnpencilsize3.Size = new System.Drawing.Size(127, 54); + this.btnpencilsize3.TabIndex = 12; + this.btnpencilsize3.Text = "Thickest"; + this.btnpencilsize3.UseVisualStyleBackColor = true; + this.btnpencilsize3.Click += new System.EventHandler(this.ChangePencilSize); + // + // btnpencilsize2 + // + this.btnpencilsize2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpencilsize2.Location = new System.Drawing.Point(165, 30); + this.btnpencilsize2.Name = "btnpencilsize2"; + this.btnpencilsize2.Size = new System.Drawing.Size(127, 54); + this.btnpencilsize2.TabIndex = 11; + this.btnpencilsize2.Text = "Thicker"; + this.btnpencilsize2.UseVisualStyleBackColor = true; + this.btnpencilsize2.Click += new System.EventHandler(this.ChangePencilSize); + // + // btnpencilsize1 + // + this.btnpencilsize1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpencilsize1.Location = new System.Drawing.Point(30, 30); + this.btnpencilsize1.Name = "btnpencilsize1"; + this.btnpencilsize1.Size = new System.Drawing.Size(127, 54); + this.btnpencilsize1.TabIndex = 10; + this.btnpencilsize1.Text = "Thin"; + this.btnpencilsize1.UseVisualStyleBackColor = true; + this.btnpencilsize1.Click += new System.EventHandler(this.ChangePencilSize); + // + // Label14 + // + this.Label14.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label14.Location = new System.Drawing.Point(6, 3); + this.Label14.Name = "Label14"; + this.Label14.Size = new System.Drawing.Size(444, 23); + this.Label14.TabIndex = 0; + this.Label14.Text = "Pencil Settings"; + this.Label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label6 + // + this.Label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label6.Location = new System.Drawing.Point(13, 40); + this.Label6.Name = "Label6"; + this.Label6.Size = new System.Drawing.Size(437, 49); + this.Label6.TabIndex = 9; + this.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label5.Location = new System.Drawing.Point(110, 13); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(269, 24); + this.Label5.TabIndex = 8; + this.Label5.Text = "No Tool Currently Selected!"; + // + // line5 + // + this.line5.BackColor = System.Drawing.Color.Black; + this.line5.Dock = System.Windows.Forms.DockStyle.Top; + this.line5.Location = new System.Drawing.Point(0, 0); + this.line5.Name = "line5"; + this.line5.Size = new System.Drawing.Size(456, 1); + this.line5.TabIndex = 4; + // + // line3 + // + this.line3.BackColor = System.Drawing.Color.Black; + this.line3.Dock = System.Windows.Forms.DockStyle.Right; + this.line3.Location = new System.Drawing.Point(456, 0); + this.line3.Name = "line3"; + this.line3.Size = new System.Drawing.Size(1, 100); + this.line3.TabIndex = 2; + // + // pnltools + // + this.pnltools.BackColor = System.Drawing.Color.White; + this.pnltools.Controls.Add(this.pnltoolpositioner); + this.pnltools.Controls.Add(this.line1); + this.pnltools.Controls.Add(this.pnltoolpreview); + this.pnltools.Dock = System.Windows.Forms.DockStyle.Left; + this.pnltools.Location = new System.Drawing.Point(0, 0); + this.pnltools.Name = "pnltools"; + this.pnltools.Size = new System.Drawing.Size(120, 598); + this.pnltools.TabIndex = 0; + // + // pnltoolpositioner + // + this.pnltoolpositioner.Controls.Add(this.btnpixelsetter); + this.pnltoolpositioner.Controls.Add(this.btnpixelplacer); + this.pnltoolpositioner.Controls.Add(this.btnpencil); + this.pnltoolpositioner.Controls.Add(this.btnfloodfill); + this.pnltoolpositioner.Controls.Add(this.btnoval); + this.pnltoolpositioner.Controls.Add(this.btnsquare); + this.pnltoolpositioner.Controls.Add(this.btnlinetool); + this.pnltoolpositioner.Controls.Add(this.btnpaintbrush); + this.pnltoolpositioner.Controls.Add(this.btntexttool); + this.pnltoolpositioner.Controls.Add(this.btneracer); + this.pnltoolpositioner.Controls.Add(this.btnnew); + this.pnltoolpositioner.Controls.Add(this.btnmagnify); + this.pnltoolpositioner.Controls.Add(this.btnopen); + this.pnltoolpositioner.Controls.Add(this.btnsave); + this.pnltoolpositioner.Controls.Add(this.btnundo); + this.pnltoolpositioner.Controls.Add(this.btnredo); + this.pnltoolpositioner.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnltoolpositioner.Location = new System.Drawing.Point(0, 0); + this.pnltoolpositioner.Name = "pnltoolpositioner"; + this.pnltoolpositioner.Size = new System.Drawing.Size(119, 498); + this.pnltoolpositioner.TabIndex = 2; + // + // btnpixelsetter + // + this.btnpixelsetter.FlatAppearance.BorderSize = 0; + this.btnpixelsetter.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpixelsetter.Location = new System.Drawing.Point(6, 6); + this.btnpixelsetter.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnpixelsetter.Name = "btnpixelsetter"; + this.btnpixelsetter.Size = new System.Drawing.Size(50, 50); + this.btnpixelsetter.TabIndex = 2; + this.btnpixelsetter.UseVisualStyleBackColor = true; + this.btnpixelsetter.Click += new System.EventHandler(this.btnpixelsetter_Click); + // + // btnpixelplacer + // + this.btnpixelplacer.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadpixelplacer; + this.btnpixelplacer.FlatAppearance.BorderSize = 0; + this.btnpixelplacer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpixelplacer.Location = new System.Drawing.Point(62, 6); + this.btnpixelplacer.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnpixelplacer.Name = "btnpixelplacer"; + this.btnpixelplacer.Size = new System.Drawing.Size(50, 50); + this.btnpixelplacer.TabIndex = 4; + this.btnpixelplacer.UseVisualStyleBackColor = true; + this.btnpixelplacer.Click += new System.EventHandler(this.btnpixelplacer_Click); + // + // btnpencil + // + this.btnpencil.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadpencil; + this.btnpencil.FlatAppearance.BorderSize = 0; + this.btnpencil.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpencil.Location = new System.Drawing.Point(6, 62); + this.btnpencil.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnpencil.Name = "btnpencil"; + this.btnpencil.Size = new System.Drawing.Size(50, 50); + this.btnpencil.TabIndex = 7; + this.btnpencil.Text = " "; + this.btnpencil.UseVisualStyleBackColor = true; + this.btnpencil.Click += new System.EventHandler(this.btnpencil_Click); + // + // btnfloodfill + // + this.btnfloodfill.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadfloodfill; + this.btnfloodfill.FlatAppearance.BorderSize = 0; + this.btnfloodfill.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnfloodfill.Location = new System.Drawing.Point(62, 62); + this.btnfloodfill.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnfloodfill.Name = "btnfloodfill"; + this.btnfloodfill.Size = new System.Drawing.Size(50, 50); + this.btnfloodfill.TabIndex = 11; + this.btnfloodfill.UseVisualStyleBackColor = true; + this.btnfloodfill.Click += new System.EventHandler(this.btnfill_Click); + // + // btnoval + // + this.btnoval.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadOval; + this.btnoval.FlatAppearance.BorderSize = 0; + this.btnoval.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnoval.Location = new System.Drawing.Point(6, 118); + this.btnoval.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnoval.Name = "btnoval"; + this.btnoval.Size = new System.Drawing.Size(50, 50); + this.btnoval.TabIndex = 13; + this.btnoval.Text = " "; + this.btnoval.UseVisualStyleBackColor = true; + this.btnoval.Click += new System.EventHandler(this.btnoval_Click); + // + // btnsquare + // + this.btnsquare.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadRectangle; + this.btnsquare.FlatAppearance.BorderSize = 0; + this.btnsquare.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnsquare.Location = new System.Drawing.Point(62, 118); + this.btnsquare.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnsquare.Name = "btnsquare"; + this.btnsquare.Size = new System.Drawing.Size(50, 50); + this.btnsquare.TabIndex = 12; + this.btnsquare.Text = " "; + this.btnsquare.UseVisualStyleBackColor = true; + this.btnsquare.Click += new System.EventHandler(this.btnsquare_Click); + // + // btnlinetool + // + this.btnlinetool.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadlinetool; + this.btnlinetool.FlatAppearance.BorderSize = 0; + this.btnlinetool.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnlinetool.Location = new System.Drawing.Point(6, 174); + this.btnlinetool.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnlinetool.Name = "btnlinetool"; + this.btnlinetool.Size = new System.Drawing.Size(50, 50); + this.btnlinetool.TabIndex = 15; + this.btnlinetool.Text = " "; + this.btnlinetool.UseVisualStyleBackColor = true; + this.btnlinetool.Click += new System.EventHandler(this.btnlinetool_Click); + // + // btnpaintbrush + // + this.btnpaintbrush.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadpaintbrush; + this.btnpaintbrush.FlatAppearance.BorderSize = 0; + this.btnpaintbrush.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnpaintbrush.Location = new System.Drawing.Point(62, 174); + this.btnpaintbrush.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnpaintbrush.Name = "btnpaintbrush"; + this.btnpaintbrush.Size = new System.Drawing.Size(50, 50); + this.btnpaintbrush.TabIndex = 17; + this.btnpaintbrush.Text = " "; + this.btnpaintbrush.UseVisualStyleBackColor = true; + this.btnpaintbrush.Click += new System.EventHandler(this.btnpaintbrush_Click); + // + // btntexttool + // + this.btntexttool.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadtexttool; + this.btntexttool.FlatAppearance.BorderSize = 0; + this.btntexttool.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btntexttool.Location = new System.Drawing.Point(6, 230); + this.btntexttool.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btntexttool.Name = "btntexttool"; + this.btntexttool.Size = new System.Drawing.Size(50, 50); + this.btntexttool.TabIndex = 16; + this.btntexttool.Text = " "; + this.btntexttool.UseVisualStyleBackColor = true; + this.btntexttool.Click += new System.EventHandler(this.btntexttool_Click); + // + // btneracer + // + this.btneracer.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPaderacer; + this.btneracer.FlatAppearance.BorderSize = 0; + this.btneracer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btneracer.Location = new System.Drawing.Point(62, 230); + this.btneracer.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btneracer.Name = "btneracer"; + this.btneracer.Size = new System.Drawing.Size(50, 50); + this.btneracer.TabIndex = 14; + this.btneracer.Text = " "; + this.btneracer.UseVisualStyleBackColor = true; + this.btneracer.Click += new System.EventHandler(this.btneracer_Click); + // + // btnnew + // + this.btnnew.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadnew; + this.btnnew.FlatAppearance.BorderSize = 0; + this.btnnew.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnnew.Location = new System.Drawing.Point(6, 286); + this.btnnew.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnnew.Name = "btnnew"; + this.btnnew.Size = new System.Drawing.Size(50, 50); + this.btnnew.TabIndex = 6; + this.btnnew.Text = " "; + this.btnnew.UseVisualStyleBackColor = true; + this.btnnew.Click += new System.EventHandler(this.btnnew_Click); + // + // btnmagnify + // + this.btnmagnify.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadmagnify; + this.btnmagnify.FlatAppearance.BorderSize = 0; + this.btnmagnify.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnmagnify.Location = new System.Drawing.Point(62, 286); + this.btnmagnify.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnmagnify.Name = "btnmagnify"; + this.btnmagnify.Size = new System.Drawing.Size(50, 50); + this.btnmagnify.TabIndex = 3; + this.btnmagnify.Text = " "; + this.btnmagnify.UseVisualStyleBackColor = true; + this.btnmagnify.Click += new System.EventHandler(this.btnmagnify_Click); + // + // btnopen + // + this.btnopen.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadopen; + this.btnopen.FlatAppearance.BorderSize = 0; + this.btnopen.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnopen.Location = new System.Drawing.Point(6, 342); + this.btnopen.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnopen.Name = "btnopen"; + this.btnopen.Size = new System.Drawing.Size(50, 50); + this.btnopen.TabIndex = 10; + this.btnopen.Text = " "; + this.btnopen.UseVisualStyleBackColor = true; + this.btnopen.Click += new System.EventHandler(this.btnopen_Click); + // + // btnsave + // + this.btnsave.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadsave; + this.btnsave.FlatAppearance.BorderSize = 0; + this.btnsave.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnsave.Location = new System.Drawing.Point(62, 342); + this.btnsave.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnsave.Name = "btnsave"; + this.btnsave.Size = new System.Drawing.Size(50, 50); + this.btnsave.TabIndex = 5; + this.btnsave.Text = " "; + this.btnsave.UseVisualStyleBackColor = true; + this.btnsave.Click += new System.EventHandler(this.btnsave_Click); + // + // btnundo + // + this.btnundo.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadundo; + this.btnundo.FlatAppearance.BorderSize = 0; + this.btnundo.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnundo.Location = new System.Drawing.Point(6, 398); + this.btnundo.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnundo.Name = "btnundo"; + this.btnundo.Size = new System.Drawing.Size(50, 50); + this.btnundo.TabIndex = 8; + this.btnundo.Text = " "; + this.btnundo.UseVisualStyleBackColor = true; + this.btnundo.Click += new System.EventHandler(this.btnundo_Click); + // + // btnredo + // + this.btnredo.BackgroundImage = global::ShiftOS.WinForms.Properties.Resources.ArtPadredo; + this.btnredo.FlatAppearance.BorderSize = 0; + this.btnredo.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnredo.Location = new System.Drawing.Point(62, 398); + this.btnredo.Margin = new System.Windows.Forms.Padding(6, 6, 0, 0); + this.btnredo.Name = "btnredo"; + this.btnredo.Size = new System.Drawing.Size(50, 50); + this.btnredo.TabIndex = 9; + this.btnredo.Text = " "; + this.btnredo.UseVisualStyleBackColor = true; + this.btnredo.Click += new System.EventHandler(this.btnredo_Click); + // + // line1 + // + this.line1.BackColor = System.Drawing.Color.Black; + this.line1.Dock = System.Windows.Forms.DockStyle.Right; + this.line1.Location = new System.Drawing.Point(119, 0); + this.line1.Name = "line1"; + this.line1.Size = new System.Drawing.Size(1, 498); + this.line1.TabIndex = 1; + // + // pnltoolpreview + // + this.pnltoolpreview.Controls.Add(this.Label13); + this.pnltoolpreview.Controls.Add(this.picpreview); + this.pnltoolpreview.Controls.Add(this.lbltoolselected); + this.pnltoolpreview.Controls.Add(this.line4); + this.pnltoolpreview.Controls.Add(this.line2); + this.pnltoolpreview.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pnltoolpreview.Location = new System.Drawing.Point(0, 498); + this.pnltoolpreview.Name = "pnltoolpreview"; + this.pnltoolpreview.Size = new System.Drawing.Size(120, 100); + this.pnltoolpreview.TabIndex = 0; + // + // Label13 + // + this.Label13.BackColor = System.Drawing.Color.Transparent; + this.Label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label13.Location = new System.Drawing.Point(3, 79); + this.Label13.Name = "Label13"; + this.Label13.Size = new System.Drawing.Size(113, 21); + this.Label13.TabIndex = 6; + this.Label13.Text = "Preview"; + this.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // picpreview + // + this.picpreview.Location = new System.Drawing.Point(24, 27); + this.picpreview.Name = "picpreview"; + this.picpreview.Size = new System.Drawing.Size(70, 50); + this.picpreview.TabIndex = 5; + this.picpreview.TabStop = false; + // + // lbltoolselected + // + this.lbltoolselected.BackColor = System.Drawing.Color.Transparent; + this.lbltoolselected.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbltoolselected.Location = new System.Drawing.Point(3, 3); + this.lbltoolselected.Name = "lbltoolselected"; + this.lbltoolselected.Size = new System.Drawing.Size(113, 21); + this.lbltoolselected.TabIndex = 4; + this.lbltoolselected.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // line4 + // + this.line4.BackColor = System.Drawing.Color.Black; + this.line4.Dock = System.Windows.Forms.DockStyle.Top; + this.line4.Location = new System.Drawing.Point(0, 0); + this.line4.Name = "line4"; + this.line4.Size = new System.Drawing.Size(119, 1); + this.line4.TabIndex = 3; + // + // line2 + // + this.line2.BackColor = System.Drawing.Color.Black; + this.line2.Dock = System.Windows.Forms.DockStyle.Right; + this.line2.Location = new System.Drawing.Point(119, 0); + this.line2.Name = "line2"; + this.line2.Size = new System.Drawing.Size(1, 100); + this.line2.TabIndex = 2; + // + // tmrcodepointcooldown + // + this.tmrcodepointcooldown.Interval = 10000; + // + // tmrshowearnedcodepoints + // + this.tmrshowearnedcodepoints.Interval = 3000; + // + // pullbs + // + this.pullbs.Interval = 1; + // + // pullbottom + // + this.pullbottom.Interval = 1; + // + // pullside + // + this.pullside.Interval = 1; + // + // tmrsetupui + // + this.tmrsetupui.Tick += new System.EventHandler(this.tmrsetupui_Tick); + // + // Artpad + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pgcontents); + this.MinimumSize = new System.Drawing.Size(502, 398); + this.Name = "Artpad"; + this.Text = "{ARTPAD_NAME}"; + this.Size = new System.Drawing.Size(802, 598); + this.Load += new System.EventHandler(this.Template_Load); + this.pgcontents.ResumeLayout(false); + this.pnldrawingbackground.ResumeLayout(false); + this.pnlinitialcanvassettings.ResumeLayout(false); + this.pnlinitialcanvassettings.PerformLayout(); + this.pnlpalettesize.ResumeLayout(false); + this.pnlpalettesize.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picdrawingdisplay)).EndInit(); + this.pnlbottompanel.ResumeLayout(false); + this.pnlpallet.ResumeLayout(false); + this.flowcolours.ResumeLayout(false); + this.pnltoolproperties.ResumeLayout(false); + this.pnltoolproperties.PerformLayout(); + this.pnlpixelplacersettings.ResumeLayout(false); + this.pnlovaltoolsettings.ResumeLayout(false); + this.pnlovaltoolsettings.PerformLayout(); + this.pnleracertoolsettings.ResumeLayout(false); + this.pnleracertoolsettings.PerformLayout(); + this.pnllinetoolsettings.ResumeLayout(false); + this.pnllinetoolsettings.PerformLayout(); + this.pnlpaintbrushtoolsettings.ResumeLayout(false); + this.pnlpaintbrushtoolsettings.PerformLayout(); + this.pnltexttoolsettings.ResumeLayout(false); + this.pnltexttoolsettings.PerformLayout(); + this.pnlpixelsettersettings.ResumeLayout(false); + this.pnlpixelsettersettings.PerformLayout(); + this.pnlmagnifiersettings.ResumeLayout(false); + this.pnlfloodfillsettings.ResumeLayout(false); + this.pnlsquaretoolsettings.ResumeLayout(false); + this.pnlsquaretoolsettings.PerformLayout(); + this.pnlpencilsettings.ResumeLayout(false); + this.pnltools.ResumeLayout(false); + this.pnltoolpositioner.ResumeLayout(false); + this.pnltoolpreview.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picpreview)).EndInit(); + this.ResumeLayout(false); + + } + internal System.Windows.Forms.Panel pgcontents; + internal System.Windows.Forms.Panel pnlbottompanel; + internal System.Windows.Forms.Panel pnltoolproperties; + internal System.Windows.Forms.Panel pnlpallet; + internal System.Windows.Forms.Panel line3; + internal System.Windows.Forms.Panel line5; + internal System.Windows.Forms.Panel line6; + internal System.Windows.Forms.Panel pnldrawingbackground; + internal System.Windows.Forms.PictureBox picdrawingdisplay; + internal System.Windows.Forms.Button btnpixelsetter; + internal System.Windows.Forms.Panel pnlpixelsettersettings; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.Button btnpixelsettersetpixel; + internal System.Windows.Forms.TextBox txtpixelsetterycoordinate; + internal System.Windows.Forms.TextBox txtpixelsetterxcoordinate; + internal System.Windows.Forms.Button btnmagnify; + internal System.Windows.Forms.Panel colourpallet32; + internal System.Windows.Forms.Panel colourpallet31; + internal System.Windows.Forms.Panel colourpallet30; + internal System.Windows.Forms.Panel colourpallet29; + internal System.Windows.Forms.Panel colourpallet28; + internal System.Windows.Forms.Panel colourpallet26; + internal System.Windows.Forms.Panel colourpallet25; + internal System.Windows.Forms.Panel colourpallet23; + internal System.Windows.Forms.Panel colourpallet21; + internal System.Windows.Forms.Panel colourpallet19; + internal System.Windows.Forms.Panel colourpallet8; + internal System.Windows.Forms.Panel colourpallet6; + internal System.Windows.Forms.Panel colourpallet16; + internal System.Windows.Forms.Panel colourpallet14; + internal System.Windows.Forms.Panel colourpallet7; + internal System.Windows.Forms.Panel colourpallet5; + internal System.Windows.Forms.Panel colourpallet10; + internal System.Windows.Forms.Panel colourpallet9; + internal System.Windows.Forms.Panel colourpallet11; + internal System.Windows.Forms.Panel colourpallet12; + internal System.Windows.Forms.Panel colourpallet13; + internal System.Windows.Forms.Panel colourpallet15; + internal System.Windows.Forms.Panel colourpallet4; + internal System.Windows.Forms.Panel colourpallet3; + internal System.Windows.Forms.Panel colourpallet17; + internal System.Windows.Forms.Panel colourpallet18; + internal System.Windows.Forms.Panel colourpallet20; + internal System.Windows.Forms.Panel colourpallet22; + internal System.Windows.Forms.Panel colourpallet24; + internal System.Windows.Forms.Panel colourpallet2; + internal System.Windows.Forms.Panel colourpallet27; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.Panel colourpallet1; + internal System.Windows.Forms.Panel pnlmagnifiersettings; + internal System.Windows.Forms.Button btnzoomin; + internal System.Windows.Forms.Label lblzoomlevel; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.Button btnzoomout; + internal System.Windows.Forms.Button btnpixelplacer; + internal System.Windows.Forms.Panel pnlpixelplacersettings; + internal System.Windows.Forms.Button btnpixelplacermovementmode; + internal System.Windows.Forms.Label Label8; + internal System.Windows.Forms.Label lblpixelplacerhelp; + internal System.Windows.Forms.Label Label6; + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.Button btnnew; + internal System.Windows.Forms.FlowLayoutPanel flowcolours; + internal System.Windows.Forms.Button btnpencil; + internal System.Windows.Forms.Panel pnlpencilsettings; + internal System.Windows.Forms.Button btnpencilsize3; + internal System.Windows.Forms.Button btnpencilsize2; + internal System.Windows.Forms.Button btnpencilsize1; + internal System.Windows.Forms.Label Label14; + internal System.Windows.Forms.Button btnfloodfill; + internal System.Windows.Forms.Panel pnlfloodfillsettings; + internal System.Windows.Forms.Label Label12; + internal System.Windows.Forms.Label Label15; + internal System.Windows.Forms.Button btnsquare; + internal System.Windows.Forms.Panel pnlsquaretoolsettings; + internal System.Windows.Forms.TextBox txtsquareborderwidth; + internal System.Windows.Forms.Label Label16; + internal System.Windows.Forms.Label Label18; + internal System.Windows.Forms.Label Label17; + internal System.Windows.Forms.Button btnsquarefillonoff; + internal System.Windows.Forms.Panel pnlsquarefillcolour; + internal System.Windows.Forms.Label Label19; + internal System.Windows.Forms.Button btnoval; + internal System.Windows.Forms.Panel pnlovaltoolsettings; + internal System.Windows.Forms.Label Label20; + internal System.Windows.Forms.Button btnovalfillonoff; + internal System.Windows.Forms.Panel pnlovalfillcolour; + internal System.Windows.Forms.TextBox txtovalborderwidth; + internal System.Windows.Forms.Label Label21; + internal System.Windows.Forms.Label Label22; + internal System.Windows.Forms.Label Label23; + internal System.Windows.Forms.Panel pnltools; + internal System.Windows.Forms.FlowLayoutPanel pnltoolpositioner; + internal System.Windows.Forms.Panel line1; + internal System.Windows.Forms.Panel pnltoolpreview; + internal System.Windows.Forms.Label Label13; + internal System.Windows.Forms.PictureBox picpreview; + internal System.Windows.Forms.Label lbltoolselected; + internal System.Windows.Forms.Panel line4; + internal System.Windows.Forms.Panel line2; + internal System.Windows.Forms.Button btnopen; + internal System.Windows.Forms.Button btnsave; + internal System.Windows.Forms.Button btnundo; + internal System.Windows.Forms.Button btnredo; + internal System.Windows.Forms.Button btneracer; + internal System.Windows.Forms.Button btnlinetool; + internal System.Windows.Forms.Panel pnllinetoolsettings; + internal System.Windows.Forms.Label Label29; + internal System.Windows.Forms.TextBox txtlinewidth; + internal System.Windows.Forms.Label Label30; + internal System.Windows.Forms.Label Label31; + internal System.Windows.Forms.Panel pnleracertoolsettings; + internal System.Windows.Forms.Label Label28; + internal System.Windows.Forms.Button btneracersquare; + internal System.Windows.Forms.Button btneracercircle; + internal System.Windows.Forms.Label Label24; + internal System.Windows.Forms.TextBox txteracersize; + internal System.Windows.Forms.Label Label26; + internal System.Windows.Forms.Label Label27; + internal System.Windows.Forms.Button btntexttool; + internal System.Windows.Forms.Button btnpaintbrush; + internal System.Windows.Forms.Panel pnltexttoolsettings; + internal System.Windows.Forms.Label Label25; + internal System.Windows.Forms.TextBox txtdrawtextsize; + internal System.Windows.Forms.Label Label32; + internal System.Windows.Forms.Label Label33; + internal System.Windows.Forms.Label Label34; + internal System.Windows.Forms.ComboBox combodrawtextfont; + internal System.Windows.Forms.TextBox txtdrawstringtext; + internal System.Windows.Forms.ComboBox combofontstyle; + internal System.Windows.Forms.Label Label35; + internal System.Windows.Forms.Panel pnlpaintbrushtoolsettings; + internal System.Windows.Forms.Label Label36; + internal System.Windows.Forms.Button btnpaintsquareshape; + internal System.Windows.Forms.Button btnpaintcircleshape; + internal System.Windows.Forms.Label Label37; + internal System.Windows.Forms.TextBox txtpaintbrushsize; + internal System.Windows.Forms.Label Label38; + internal System.Windows.Forms.Label Label39; + internal System.Windows.Forms.Timer tmrcodepointcooldown; + internal System.Windows.Forms.Timer tmrshowearnedcodepoints; + internal System.Windows.Forms.Panel pnlpalettesize; + internal System.Windows.Forms.Button btnchangesizecancel; + internal System.Windows.Forms.Button btnsetsize; + internal System.Windows.Forms.TextBox txtcolorpalletheight; + internal System.Windows.Forms.Label Label42; + internal System.Windows.Forms.TextBox txtcolorpalletwidth; + internal System.Windows.Forms.Label Label43; + internal System.Windows.Forms.Panel pnlinitialcanvassettings; + internal System.Windows.Forms.Button btncancel; + internal System.Windows.Forms.Button btncreate; + internal System.Windows.Forms.Label Label11; + internal System.Windows.Forms.Label lbltotalpixels; + internal System.Windows.Forms.TextBox txtnewcanvasheight; + internal System.Windows.Forms.Label Label10; + internal System.Windows.Forms.TextBox txtnewcanvaswidth; + internal System.Windows.Forms.Label Label9; + internal System.Windows.Forms.Panel colourpallet33; + internal System.Windows.Forms.Panel colourpallet34; + internal System.Windows.Forms.Panel colourpallet35; + internal System.Windows.Forms.Panel colourpallet36; + internal System.Windows.Forms.Panel colourpallet37; + internal System.Windows.Forms.Panel colourpallet38; + internal System.Windows.Forms.Panel colourpallet39; + internal System.Windows.Forms.Panel colourpallet40; + internal System.Windows.Forms.Panel colourpallet41; + internal System.Windows.Forms.Panel colourpallet42; + internal System.Windows.Forms.Panel colourpallet43; + internal System.Windows.Forms.Panel colourpallet44; + internal System.Windows.Forms.Panel colourpallet45; + internal System.Windows.Forms.Panel colourpallet46; + internal System.Windows.Forms.Panel colourpallet47; + internal System.Windows.Forms.Panel colourpallet48; + internal System.Windows.Forms.Panel colourpallet49; + internal System.Windows.Forms.Panel colourpallet50; + internal System.Windows.Forms.Panel colourpallet51; + internal System.Windows.Forms.Panel colourpallet52; + internal System.Windows.Forms.Panel colourpallet53; + internal System.Windows.Forms.Panel colourpallet54; + internal System.Windows.Forms.Panel colourpallet55; + internal System.Windows.Forms.Panel colourpallet56; + internal System.Windows.Forms.Panel colourpallet57; + internal System.Windows.Forms.Panel colourpallet58; + internal System.Windows.Forms.Panel colourpallet59; + internal System.Windows.Forms.Panel colourpallet60; + internal System.Windows.Forms.Panel colourpallet61; + internal System.Windows.Forms.Panel colourpallet62; + internal System.Windows.Forms.Panel colourpallet63; + internal System.Windows.Forms.Panel colourpallet64; + internal System.Windows.Forms.Panel colourpallet65; + internal System.Windows.Forms.Panel colourpallet66; + internal System.Windows.Forms.Panel colourpallet67; + internal System.Windows.Forms.Panel colourpallet68; + internal System.Windows.Forms.Panel colourpallet69; + internal System.Windows.Forms.Panel colourpallet70; + internal System.Windows.Forms.Panel colourpallet71; + internal System.Windows.Forms.Panel colourpallet72; + internal System.Windows.Forms.Panel colourpallet73; + internal System.Windows.Forms.Panel colourpallet74; + internal System.Windows.Forms.Panel colourpallet75; + internal System.Windows.Forms.Panel colourpallet76; + internal System.Windows.Forms.Panel colourpallet77; + internal System.Windows.Forms.Panel colourpallet78; + internal System.Windows.Forms.Panel colourpallet79; + internal System.Windows.Forms.Panel colourpallet80; + internal System.Windows.Forms.Panel colourpallet81; + internal System.Windows.Forms.Panel colourpallet82; + internal System.Windows.Forms.Panel colourpallet83; + internal System.Windows.Forms.Panel colourpallet84; + internal System.Windows.Forms.Panel colourpallet85; + internal System.Windows.Forms.Panel colourpallet86; + internal System.Windows.Forms.Panel colourpallet87; + internal System.Windows.Forms.Panel colourpallet88; + internal System.Windows.Forms.Panel colourpallet89; + internal System.Windows.Forms.Panel colourpallet90; + internal System.Windows.Forms.Panel colourpallet91; + internal System.Windows.Forms.Panel colourpallet92; + internal System.Windows.Forms.Panel colourpallet93; + internal System.Windows.Forms.Panel colourpallet94; + internal System.Windows.Forms.Panel colourpallet95; + internal System.Windows.Forms.Panel colourpallet96; + internal System.Windows.Forms.Panel colourpallet97; + internal System.Windows.Forms.Panel colourpallet98; + internal System.Windows.Forms.Panel colourpallet99; + internal System.Windows.Forms.Panel colourpallet100; + internal System.Windows.Forms.Panel colourpallet101; + internal System.Windows.Forms.Panel colourpallet102; + internal System.Windows.Forms.Panel colourpallet103; + internal System.Windows.Forms.Panel colourpallet104; + internal System.Windows.Forms.Panel colourpallet105; + internal System.Windows.Forms.Panel colourpallet106; + internal System.Windows.Forms.Panel colourpallet107; + internal System.Windows.Forms.Panel colourpallet108; + internal System.Windows.Forms.Panel colourpallet109; + internal System.Windows.Forms.Panel colourpallet110; + internal System.Windows.Forms.Panel colourpallet111; + internal System.Windows.Forms.Panel colourpallet112; + internal System.Windows.Forms.Panel colourpallet113; + internal System.Windows.Forms.Panel colourpallet114; + internal System.Windows.Forms.Panel colourpallet115; + internal System.Windows.Forms.Panel colourpallet116; + internal System.Windows.Forms.Panel colourpallet117; + internal System.Windows.Forms.Panel colourpallet118; + internal System.Windows.Forms.Panel colourpallet119; + internal System.Windows.Forms.Panel colourpallet120; + internal System.Windows.Forms.Panel colourpallet121; + internal System.Windows.Forms.Panel colourpallet122; + internal System.Windows.Forms.Panel colourpallet123; + internal System.Windows.Forms.Panel colourpallet124; + internal System.Windows.Forms.Panel colourpallet125; + internal System.Windows.Forms.Panel colourpallet126; + internal System.Windows.Forms.Panel colourpallet127; + internal System.Windows.Forms.Panel colourpallet128; + internal System.Windows.Forms.TextBox txttopspace; + internal System.Windows.Forms.Label Label40; + internal System.Windows.Forms.TextBox txtsidespace; + internal System.Windows.Forms.Label Label41; + internal System.Windows.Forms.Timer pullbs; + internal System.Windows.Forms.Timer pullbottom; + internal System.Windows.Forms.Timer pullside; + private System.Windows.Forms.Timer tmrsetupui; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Artpad.cs b/ShiftOS.WinForms/Applications/Artpad.cs new file mode 100644 index 0000000..0d80094 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Artpad.cs @@ -0,0 +1,1853 @@ +using ShiftOS.Objects.ShiftFS; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Drawing.Text; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.WinForms.Tools; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications +{ + [Launcher("Artpad", true, "al_artpad")] + [RequiresUpgrade("artpad")] + [WinOpen("artpad")] + public partial class Artpad : UserControl, IShiftOSWindow + { + /// + /// artpad_'s GUI. + /// + public Artpad() + { + try + { + InitializeComponent(); + } + catch (Exception ex) + { + CrashHandler.Start(ex); + this.Close(); + } + } + + public void LoadPicture(string pic) + { + savelocation = pic; + this.openpic(); + } + + #region Variables + + public int rolldownsize; + public int oldbordersize; + public int oldtitlebarheight; + public bool justopened = false; + public bool needtorollback = false; + public int minimumsizewidth = 502; + + public int minimumsizeheight = 398; + public int codepointsearned; + public bool codepointscooldown = false; + + public bool needtosave = false; + int canvaswidth = 150; + int canvasheight = 100; + public Bitmap canvasbitmap; + + Color canvascolor = Color.White; + + Bitmap previewcanvasbitmap; + int magnificationlevel = 1; + Rectangle magnifyRect; + Graphics graphicsbitmap; + public Color drawingcolour = Color.Black; + string selectedtool = "Pixel Setter"; + bool pixalplacermovable = false; + public string savelocation; + System.Drawing.Drawing2D.GraphicsPath mousePath = new System.Drawing.Drawing2D.GraphicsPath(); + int pencilwidth = 1; + undo undo = new undo(); + Point thisPoint; + int eracerwidth = 15; + + string eracertype = "square"; + int paintbrushwidth = 15; + + string paintbrushtype = "circle"; + float rectanglestartpointx; + float rectanglestartpointy; + bool currentlydrawingsquare; + int squarewidth = 1; + bool squarefillon = false; + + Color fillsquarecolor = Color.Black; + float ovalstartpointx; + float ovalstartpointy; + bool currentlydrawingoval; + int ovalwidth = 2; + bool ovalfillon = false; + + Color fillovalcolor = Color.Black; + float linestartpointx; + float linestartpointy; + bool currentlydrawingline; + + int linewidth = 2; + bool currentlydrawingtext; + System.Drawing.Font drawtextfont = new System.Drawing.Font("Microsoft Sans Serif", 16); + int drawtextsize; + string drawtextfontname; + + FontStyle drawtextfontstyle; + + #endregion + + #region Setup + + private void Template_Load(object sender, EventArgs e) + { + justopened = true; + this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2; + this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2; + + setuppreview(); + settoolcolours(); + loadcolors(); + AddFonts(); + setuptoolbox(); + determinevisiblepalettes(); + tmrsetupui.Start(); + } + + + + public void setupcanvas() + { + canvasbitmap = new Bitmap(canvaswidth, canvasheight); + previewcanvasbitmap = new Bitmap(canvaswidth, canvasheight); + picdrawingdisplay.Size = new Size(canvaswidth, canvasheight); + picdrawingdisplay.Location = new Point((pnldrawingbackground.Width - canvaswidth) / 2, (pnldrawingbackground.Height - canvasheight) / 2); + graphicsbitmap = Graphics.FromImage(canvasbitmap); + SolidBrush canvasbrush = new SolidBrush(canvascolor); + graphicsbitmap.FillRectangle(canvasbrush, 0, 0, canvaswidth, canvasheight); + magnificationlevel = 1; + lblzoomlevel.Text = magnificationlevel + "X"; + setuppreview(); + needtosave = false; + } + + public void setuptoolbox() + { + btnpixelplacer.Hide(); + btnpencil.Hide(); + btnfloodfill.Hide(); + btnoval.Hide(); + btnsquare.Hide(); + btnlinetool.Hide(); + btnpaintbrush.Hide(); + btntexttool.Hide(); + btneracer.Hide(); + btnnew.Hide(); + btnopen.Hide(); + btnsave.Hide(); + btnundo.Hide(); + btnredo.Hide(); + btnpixelplacermovementmode.Hide(); + + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_placer") == true) + btnpixelplacer.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pencil") == true) + btnpencil.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_fill_tool") == true) + btnfloodfill.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_oval_tool") == true) + btnoval.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_rectangle_tool") == true) + btnsquare.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_line_tool") == true) + btnlinetool.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_paintbrush") == true) + btnpaintbrush.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_text_tool") == true) + btntexttool.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_eraser") == true) + btneracer.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_new") == true) + btnnew.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_load") == true) + btnopen.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_save") == true) + btnsave.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_undo") == true) + btnundo.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_redo") == true) + btnredo.Show(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pp_movement_mode") == true) + btnpixelplacermovementmode.Show(); + + } + + private void AddFonts() + { + // Get the installed fonts collection. + InstalledFontCollection allFonts = new InstalledFontCollection(); + + // Get an array of the system's font familiies. + FontFamily[] fontFamilies = allFonts.Families; + + // Display the font families. + foreach (FontFamily myFont in fontFamilies) + { + combodrawtextfont.Items.Add(myFont.Name); + } + //font_family + + combodrawtextfont.SelectedItem = combodrawtextfont.Items[1]; + combofontstyle.Text = "Regular"; + txtdrawtextsize.Text = "16"; + } + + #endregion + + #region General + + // ERROR: Handles clauses are not supported in C# + private void btnpixelsetter_Click(object sender, EventArgs e) + { + selectedtool = "Pixel Setter"; + gettoolsettings(pnlpixelsettersettings); + } + + private void gettoolsettings(Panel toolpanel) + { + //hide all properties panels + pnlpixelsettersettings.Hide(); + pnlmagnifiersettings.Hide(); + + //show chosen panel + toolpanel.Dock = DockStyle.Fill; + toolpanel.BringToFront(); + toolpanel.Show(); + + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnpixelsettersetpixel_Click(object sender, EventArgs e) + { + try + { + undo.undoStack.Push((Image)canvasbitmap.Clone()); + undo.redoStack.Clear(); + canvasbitmap.SetPixel(Convert.ToInt32(txtpixelsetterxcoordinate.Text), Convert.ToInt32(txtpixelsetterycoordinate.Text), drawingcolour); + picdrawingdisplay.Invalidate(); + } + catch + { + Infobox.Show("{ARTPAD_PLACEMENT_ERROR}", "{ARTPAD_PLACEMENT_ERROR_EXP}"); + } + } + + // ERROR: Handles clauses are not supported in C# + private void btnmagnify_Click(object sender, EventArgs e) + { + selectedtool = "Magnifier"; + gettoolsettings(pnlmagnifiersettings); + } + + #endregion + + #region Drawing Display + + // ERROR: Handles clauses are not supported in C# + private void picdrawingdisplay_Paint(object sender, System.Windows.Forms.PaintEventArgs e) + { + e.Graphics.FillRectangle(Brushes.White, 0, 0, canvaswidth * magnificationlevel, canvasheight * magnificationlevel); + e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; + e.Graphics.PixelOffsetMode = PixelOffsetMode.Half; + e.Graphics.ScaleTransform(magnificationlevel, magnificationlevel); + + if (currentlydrawingsquare == true) + { + GC.Collect(); + Graphics g = Graphics.FromImage(previewcanvasbitmap); + previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height); + g = Graphics.FromImage(previewcanvasbitmap); + var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), squarewidth); + var CurrentBrush = new SolidBrush(Color.FromArgb(255, fillsquarecolor)); + RectangleF rectdraw = new RectangleF(rectanglestartpointx, rectanglestartpointy, thisPoint.X - rectanglestartpointx, thisPoint.Y - rectanglestartpointy); + int heightamount; + int widthamount; + if (rectdraw.Height < 0) + heightamount = (int)Math.Abs(rectdraw.Height); + else + heightamount = 0; + if (rectdraw.Width < 0) + widthamount = (int)Math.Abs(rectdraw.Width); + else + widthamount = 0; + if (squarewidth > 0) + { + g.DrawRectangle(CurrentPen, rectdraw.X - widthamount, rectdraw.Y - heightamount, Math.Abs(rectdraw.Width), Math.Abs(rectdraw.Height)); + } + if (squarefillon == true) + { + float correctionamount = squarewidth / 2; + int addfillamount; + if (squarewidth > 0) + addfillamount = squarewidth; + else + addfillamount = -1; + g.FillRectangle(CurrentBrush, (rectdraw.X - widthamount) + correctionamount, (rectdraw.Y - heightamount) + correctionamount, Math.Abs(rectdraw.Width) - addfillamount, Math.Abs(rectdraw.Height) - addfillamount); + } + } + + if (currentlydrawingoval == true) + { + GC.Collect(); + Graphics g = Graphics.FromImage(previewcanvasbitmap); + previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height); + g = Graphics.FromImage(previewcanvasbitmap); + var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), ovalwidth); + var CurrentBrush = new SolidBrush(Color.FromArgb(255, fillovalcolor)); + RectangleF ovaldraw = new RectangleF(ovalstartpointx, ovalstartpointy, thisPoint.X - ovalstartpointx, thisPoint.Y - ovalstartpointy); + int heightamount; + int widthamount; + if (ovaldraw.Height < 0) + heightamount = (int)Math.Abs(ovaldraw.Height); + else + heightamount = 0; + if (ovaldraw.Width < 0) + widthamount = (int)Math.Abs(ovaldraw.Width); + else + widthamount = 0; + if (ovalwidth > 0) + { + g.DrawEllipse(CurrentPen, ovaldraw.X - widthamount, ovaldraw.Y - heightamount, Math.Abs(ovaldraw.Width), Math.Abs(ovaldraw.Height)); + } + if (ovalfillon == true) + { + g.FillEllipse(CurrentBrush, (ovaldraw.X - widthamount), (ovaldraw.Y - heightamount), Math.Abs(ovaldraw.Width), Math.Abs(ovaldraw.Height)); + } + } + + if (currentlydrawingline == true) + { + GC.Collect(); + Graphics g = Graphics.FromImage(previewcanvasbitmap); + previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height); + g = Graphics.FromImage(previewcanvasbitmap); + var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), linewidth); + g.DrawLine(CurrentPen, linestartpointx, linestartpointy, thisPoint.X, thisPoint.Y); + } + + if (currentlydrawingtext == true) + { + GC.Collect(); + Graphics g = Graphics.FromImage(previewcanvasbitmap); + previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height); + g = Graphics.FromImage(previewcanvasbitmap); + var CurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour)); + g.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit; + drawtextfont = new System.Drawing.Font(drawtextfontname, drawtextsize, drawtextfontstyle); + g.DrawString(txtdrawstringtext.Text, drawtextfont, CurrentBrush, thisPoint.X, thisPoint.Y); + } + try + { + e.Graphics.DrawImage(canvasbitmap, 0, 0); + e.Graphics.DrawImage(previewcanvasbitmap, 0, 0); + } + catch + { + + } + } + + + + // ERROR: Handles clauses are not supported in C# + private void picdrawingdisplay_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) + { + undo.undoStack.Push((Image)canvasbitmap.Clone()); + undo.redoStack.Clear(); + + + thisPoint.X = (int)(e.Location.X - (magnificationlevel / 2)) / magnificationlevel; + thisPoint.Y = (int)(e.Location.Y - (magnificationlevel / 2)) / magnificationlevel; + + if (selectedtool == "Pixel Placer") + { + if (e.Button == MouseButtons.Left) + { + if (thisPoint.X < canvasbitmap.Width && thisPoint.X > -1) + { + if (thisPoint.Y < canvasbitmap.Height && thisPoint.Y > -1) + { + canvasbitmap.SetPixel(thisPoint.X, thisPoint.Y, drawingcolour); + //set the pixel on the canvas + picdrawingdisplay.Invalidate(); + //refresh the picture from the canvas + } + } + } + } + + if (selectedtool == "Pencil") + { + if (e.Button == MouseButtons.Left) + { + mousePath.StartFigure(); + picdrawingdisplay.Invalidate(); + } + } + + if (selectedtool == "Flood Fill") + { + if (e.Button == MouseButtons.Left) + { + if (thisPoint.X < canvasbitmap.Width && thisPoint.X > -1) + { + if (thisPoint.Y < canvasbitmap.Height && thisPoint.Y > -1) + { + SafeFloodFill(canvasbitmap, thisPoint.X, thisPoint.Y, drawingcolour); + graphicsbitmap = Graphics.FromImage(canvasbitmap); + picdrawingdisplay.Invalidate(); + } + } + } + } + + if (selectedtool == "Square _tool") + { + if (e.Button == MouseButtons.Left) + { + rectanglestartpointx = thisPoint.X; + rectanglestartpointy = thisPoint.Y; + currentlydrawingsquare = true; + picdrawingdisplay.Invalidate(); + } + } + + if (selectedtool == "Oval _tool") + { + if (e.Button == MouseButtons.Left) + { + ovalstartpointx = thisPoint.X; + ovalstartpointy = thisPoint.Y; + currentlydrawingoval = true; + picdrawingdisplay.Invalidate(); + } + } + + if (selectedtool == "Line _tool") + { + if (e.Button == MouseButtons.Left) + { + linestartpointx = thisPoint.X; + linestartpointy = thisPoint.Y; + currentlydrawingline = true; + picdrawingdisplay.Invalidate(); + } + } + + if (selectedtool == "Text _tool") + { + if (e.Button == MouseButtons.Left) + { + currentlydrawingtext = true; + picdrawingdisplay.Invalidate(); + } + } + + if (selectedtool == "Eracer") + { + var CurrentPen = new Pen(Color.FromArgb(255, canvascolor), eracerwidth); + float halfsize = eracerwidth / 2; + if (eracertype == "circle") + { + graphicsbitmap.DrawEllipse(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth); + } + else + { + graphicsbitmap.DrawRectangle(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth); + } + picdrawingdisplay.Invalidate(); + } + + if (selectedtool == "Paint Brush") + { + var CurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour)); + float halfsize = paintbrushwidth / 2; + if (paintbrushtype == "circle") + { + graphicsbitmap.FillEllipse(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth); + } + else + { + graphicsbitmap.FillRectangle(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth); + } + picdrawingdisplay.Invalidate(); + CurrentBrush.Dispose(); + } + preparecooldown(); + } + + // ERROR: Handles clauses are not supported in C# + private void picdrawingdisplay_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) + { + Point lastpoint; + + thisPoint.X = (int)(e.Location.X - (magnificationlevel / 2)) / magnificationlevel; + thisPoint.Y = (int)(e.Location.Y - (magnificationlevel / 2)) / magnificationlevel; + + + if (e.Button == MouseButtons.Left) + { + undo.redoStack.Clear(); + lastpoint = thisPoint; + preparecooldown(); + + if (selectedtool == "Pixel Placer" && pixalplacermovable == true) + { + if (thisPoint.X < canvasbitmap.Width && thisPoint.X > -1) + { + if (thisPoint.Y < canvasbitmap.Height && thisPoint.Y > -1) + { + canvasbitmap.SetPixel(thisPoint.X, thisPoint.Y, drawingcolour); + //set the pixel on the canvas + picdrawingdisplay.Invalidate(); + //refresh the picture from the canvas + } + } + } + + if (selectedtool == "Pencil") + { + mousePath.AddLine(thisPoint.X, thisPoint.Y, thisPoint.X, thisPoint.Y); + var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), pencilwidth); + graphicsbitmap.DrawPath(CurrentPen, mousePath); + picdrawingdisplay.Invalidate(); + } + + if (selectedtool == "Square _tool") + { + picdrawingdisplay.Invalidate(); + } + + if (selectedtool == "Oval _tool") + { + picdrawingdisplay.Invalidate(); + } + + if (selectedtool == "Line _tool") + { + picdrawingdisplay.Invalidate(); + } + + if (selectedtool == "Text _tool") + { + picdrawingdisplay.Invalidate(); + } + + if (selectedtool == "Eracer") + { + var CurrentPen = new Pen(Color.FromArgb(255, canvascolor), eracerwidth); + float halfsize = eracerwidth / 2; + if (eracertype == "circle") + { + graphicsbitmap.DrawEllipse(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth); + } + else + { + graphicsbitmap.DrawRectangle(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth); + } + picdrawingdisplay.Invalidate(); + } + + if (selectedtool == "Paint Brush") + { + var CurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour)); + float halfsize = paintbrushwidth / 2; + if (paintbrushtype == "circle") + { + graphicsbitmap.FillEllipse(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth); + } + else + { + graphicsbitmap.FillRectangle(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth); + } + picdrawingdisplay.Invalidate(); + } + } + + } + + + // ERROR: Handles clauses are not supported in C# + private void picdrawingdisplay_MouseUp(object sender, MouseEventArgs e) + { + thisPoint.X = (int)(e.Location.X - (magnificationlevel / 2)) / magnificationlevel; + thisPoint.Y = (int)(e.Location.Y - (magnificationlevel / 2)) / magnificationlevel; + + if (selectedtool == "Pencil") + { + if (e.Button == MouseButtons.Left) + { + mousePath.Reset(); + } + } + + if (selectedtool == "Square _tool") + { + picdrawingdisplay.Invalidate(); + currentlydrawingsquare = false; + } + + if (selectedtool == "Oval _tool") + { + picdrawingdisplay.Invalidate(); + currentlydrawingoval = false; + } + + + if (selectedtool == "Line _tool") + { + picdrawingdisplay.Invalidate(); + currentlydrawingline = false; + } + + if (selectedtool == "Text _tool") + { + picdrawingdisplay.Invalidate(); + currentlydrawingtext = false; + } + + using (Graphics g = Graphics.FromImage(canvasbitmap)) + { + g.DrawImage(previewcanvasbitmap, 0, 0); + } + previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height); + picdrawingdisplay.Invalidate(); + preparecooldown(); + + } + + #endregion + + #region Color Palettes + // ERROR: Handles clauses are not supported in C# + private void colourpalette1_MouseClick(object sender, MouseEventArgs e) + { + var s = (Control)sender; + if (e.Button == MouseButtons.Left) + { + drawingcolour = s.BackColor; + setuppreview(); + settoolcolours(); + } + else + { + AppearanceManager.SetupDialog(new ColorPicker(s.BackColor, "artpad_ Color", new Action((color) => { + s.BackColor = color; + }))); + } + } + + // + public void loadcolors() + { + /*bool allwhite = true; + for (int i = 0; i <= 127; i++) + { + if (ShiftOSDesktop.artpad_colour_palettes(i) == null) + { + } + else { + allwhite = false; + } + } + if (allwhite == true) + { + for (i = 0; i <= 127; i++) + { + ShiftOSDesktop.artpad_colour_palettes(i) = Color.Black; + } + } + colourpalette1.BackColor = ShiftOSDesktop.artpad_colour_palettes(0); + colourpalette2.BackColor = ShiftOSDesktop.artpad_colour_palettes(1); + colourpalette3.BackColor = ShiftOSDesktop.artpad_colour_palettes(2); + colourpalette4.BackColor = ShiftOSDesktop.artpad_colour_palettes(3); + colourpalette5.BackColor = ShiftOSDesktop.artpad_colour_palettes(4); + colourpalette6.BackColor = ShiftOSDesktop.artpad_colour_palettes(5); + colourpalette7.BackColor = ShiftOSDesktop.artpad_colour_palettes(6); + colourpalette8.BackColor = ShiftOSDesktop.artpad_colour_palettes(7); + colourpalette9.BackColor = ShiftOSDesktop.artpad_colour_palettes(8); + colourpalette10.BackColor = ShiftOSDesktop.artpad_colour_palettes(9); + colourpalette11.BackColor = ShiftOSDesktop.artpad_colour_palettes(10); + colourpalette12.BackColor = ShiftOSDesktop.artpad_colour_palettes(11); + colourpalette13.BackColor = ShiftOSDesktop.artpad_colour_palettes(12); + colourpalette14.BackColor = ShiftOSDesktop.artpad_colour_palettes(13); + colourpalette15.BackColor = ShiftOSDesktop.artpad_colour_palettes(14); + colourpalette16.BackColor = ShiftOSDesktop.artpad_colour_palettes(15); + colourpalette17.BackColor = ShiftOSDesktop.artpad_colour_palettes(16); + colourpalette18.BackColor = ShiftOSDesktop.artpad_colour_palettes(17); + colourpalette19.BackColor = ShiftOSDesktop.artpad_colour_palettes(18); + colourpalette20.BackColor = ShiftOSDesktop.artpad_colour_palettes(19); + colourpalette21.BackColor = ShiftOSDesktop.artpad_colour_palettes(20); + colourpalette22.BackColor = ShiftOSDesktop.artpad_colour_palettes(21); + colourpalette23.BackColor = ShiftOSDesktop.artpad_colour_palettes(22); + colourpalette24.BackColor = ShiftOSDesktop.artpad_colour_palettes(23); + colourpalette25.BackColor = ShiftOSDesktop.artpad_colour_palettes(24); + colourpalette26.BackColor = ShiftOSDesktop.artpad_colour_palettes(25); + colourpalette27.BackColor = ShiftOSDesktop.artpad_colour_palettes(26); + colourpalette28.BackColor = ShiftOSDesktop.artpad_colour_palettes(27); + colourpalette29.BackColor = ShiftOSDesktop.artpad_colour_palettes(28); + colourpalette30.BackColor = ShiftOSDesktop.artpad_colour_palettes(29); + colourpalette31.BackColor = ShiftOSDesktop.artpad_colour_palettes(30); + colourpalette32.BackColor = ShiftOSDesktop.artpad_colour_palettes(31); + colourpalette33.BackColor = ShiftOSDesktop.artpad_colour_palettes(32); + colourpalette34.BackColor = ShiftOSDesktop.artpad_colour_palettes(33); + colourpalette35.BackColor = ShiftOSDesktop.artpad_colour_palettes(34); + colourpalette36.BackColor = ShiftOSDesktop.artpad_colour_palettes(35); + colourpalette37.BackColor = ShiftOSDesktop.artpad_colour_palettes(36); + colourpalette38.BackColor = ShiftOSDesktop.artpad_colour_palettes(37); + colourpalette39.BackColor = ShiftOSDesktop.artpad_colour_palettes(38); + colourpalette40.BackColor = ShiftOSDesktop.artpad_colour_palettes(39); + colourpalette41.BackColor = ShiftOSDesktop.artpad_colour_palettes(40); + colourpalette42.BackColor = ShiftOSDesktop.artpad_colour_palettes(41); + colourpalette43.BackColor = ShiftOSDesktop.artpad_colour_palettes(42); + colourpalette44.BackColor = ShiftOSDesktop.artpad_colour_palettes(43); + colourpalette45.BackColor = ShiftOSDesktop.artpad_colour_palettes(44); + colourpalette46.BackColor = ShiftOSDesktop.artpad_colour_palettes(45); + colourpalette47.BackColor = ShiftOSDesktop.artpad_colour_palettes(46); + colourpalette48.BackColor = ShiftOSDesktop.artpad_colour_palettes(47); + colourpalette49.BackColor = ShiftOSDesktop.artpad_colour_palettes(48); + colourpalette50.BackColor = ShiftOSDesktop.artpad_colour_palettes(49); + colourpalette51.BackColor = ShiftOSDesktop.artpad_colour_palettes(50); + colourpalette52.BackColor = ShiftOSDesktop.artpad_colour_palettes(51); + colourpalette53.BackColor = ShiftOSDesktop.artpad_colour_palettes(52); + colourpalette54.BackColor = ShiftOSDesktop.artpad_colour_palettes(53); + colourpalette55.BackColor = ShiftOSDesktop.artpad_colour_palettes(54); + colourpalette56.BackColor = ShiftOSDesktop.artpad_colour_palettes(55); + colourpalette57.BackColor = ShiftOSDesktop.artpad_colour_palettes(56); + colourpalette58.BackColor = ShiftOSDesktop.artpad_colour_palettes(57); + colourpalette59.BackColor = ShiftOSDesktop.artpad_colour_palettes(58); + colourpalette60.BackColor = ShiftOSDesktop.artpad_colour_palettes(59); + colourpalette61.BackColor = ShiftOSDesktop.artpad_colour_palettes(60); + colourpalette62.BackColor = ShiftOSDesktop.artpad_colour_palettes(61); + colourpalette63.BackColor = ShiftOSDesktop.artpad_colour_palettes(62); + colourpalette64.BackColor = ShiftOSDesktop.artpad_colour_palettes(63); + colourpalette65.BackColor = ShiftOSDesktop.artpad_colour_palettes(64); + colourpalette66.BackColor = ShiftOSDesktop.artpad_colour_palettes(65); + colourpalette67.BackColor = ShiftOSDesktop.artpad_colour_palettes(66); + colourpalette68.BackColor = ShiftOSDesktop.artpad_colour_palettes(67); + colourpalette69.BackColor = ShiftOSDesktop.artpad_colour_palettes(68); + colourpalette70.BackColor = ShiftOSDesktop.artpad_colour_palettes(69); + colourpalette71.BackColor = ShiftOSDesktop.artpad_colour_palettes(70); + colourpalette72.BackColor = ShiftOSDesktop.artpad_colour_palettes(71); + colourpalette73.BackColor = ShiftOSDesktop.artpad_colour_palettes(72); + colourpalette74.BackColor = ShiftOSDesktop.artpad_colour_palettes(73); + colourpalette75.BackColor = ShiftOSDesktop.artpad_colour_palettes(74); + colourpalette76.BackColor = ShiftOSDesktop.artpad_colour_palettes(75); + colourpalette77.BackColor = ShiftOSDesktop.artpad_colour_palettes(76); + colourpalette78.BackColor = ShiftOSDesktop.artpad_colour_palettes(77); + colourpalette79.BackColor = ShiftOSDesktop.artpad_colour_palettes(78); + colourpalette80.BackColor = ShiftOSDesktop.artpad_colour_palettes(79); + colourpalette81.BackColor = ShiftOSDesktop.artpad_colour_palettes(80); + colourpalette82.BackColor = ShiftOSDesktop.artpad_colour_palettes(81); + colourpalette83.BackColor = ShiftOSDesktop.artpad_colour_palettes(82); + colourpalette84.BackColor = ShiftOSDesktop.artpad_colour_palettes(83); + colourpalette85.BackColor = ShiftOSDesktop.artpad_colour_palettes(84); + colourpalette86.BackColor = ShiftOSDesktop.artpad_colour_palettes(85); + colourpalette87.BackColor = ShiftOSDesktop.artpad_colour_palettes(86); + colourpalette88.BackColor = ShiftOSDesktop.artpad_colour_palettes(87); + colourpalette89.BackColor = ShiftOSDesktop.artpad_colour_palettes(88); + colourpalette90.BackColor = ShiftOSDesktop.artpad_colour_palettes(89); + colourpalette91.BackColor = ShiftOSDesktop.artpad_colour_palettes(90); + colourpalette92.BackColor = ShiftOSDesktop.artpad_colour_palettes(91); + colourpalette93.BackColor = ShiftOSDesktop.artpad_colour_palettes(92); + colourpalette94.BackColor = ShiftOSDesktop.artpad_colour_palettes(93); + colourpalette95.BackColor = ShiftOSDesktop.artpad_colour_palettes(94); + colourpalette96.BackColor = ShiftOSDesktop.artpad_colour_palettes(95); + colourpalette97.BackColor = ShiftOSDesktop.artpad_colour_palettes(96); + colourpalette98.BackColor = ShiftOSDesktop.artpad_colour_palettes(97); + colourpalette99.BackColor = ShiftOSDesktop.artpad_colour_palettes(98); + colourpalette100.BackColor = ShiftOSDesktop.artpad_colour_palettes(99); + colourpalette101.BackColor = ShiftOSDesktop.artpad_colour_palettes(100); + colourpalette102.BackColor = ShiftOSDesktop.artpad_colour_palettes(101); + colourpalette103.BackColor = ShiftOSDesktop.artpad_colour_palettes(102); + colourpalette104.BackColor = ShiftOSDesktop.artpad_colour_palettes(103); + colourpalette105.BackColor = ShiftOSDesktop.artpad_colour_palettes(104); + colourpalette106.BackColor = ShiftOSDesktop.artpad_colour_palettes(105); + colourpalette107.BackColor = ShiftOSDesktop.artpad_colour_palettes(106); + colourpalette108.BackColor = ShiftOSDesktop.artpad_colour_palettes(107); + colourpalette109.BackColor = ShiftOSDesktop.artpad_colour_palettes(108); + colourpalette110.BackColor = ShiftOSDesktop.artpad_colour_palettes(109); + colourpalette111.BackColor = ShiftOSDesktop.artpad_colour_palettes(110); + colourpalette112.BackColor = ShiftOSDesktop.artpad_colour_palettes(111); + colourpalette113.BackColor = ShiftOSDesktop.artpad_colour_palettes(112); + colourpalette114.BackColor = ShiftOSDesktop.artpad_colour_palettes(113); + colourpalette115.BackColor = ShiftOSDesktop.artpad_colour_palettes(114); + colourpalette116.BackColor = ShiftOSDesktop.artpad_colour_palettes(115); + colourpalette117.BackColor = ShiftOSDesktop.artpad_colour_palettes(116); + colourpalette118.BackColor = ShiftOSDesktop.artpad_colour_palettes(117); + colourpalette119.BackColor = ShiftOSDesktop.artpad_colour_palettes(118); + colourpalette120.BackColor = ShiftOSDesktop.artpad_colour_palettes(119); + colourpalette121.BackColor = ShiftOSDesktop.artpad_colour_palettes(120); + colourpalette122.BackColor = ShiftOSDesktop.artpad_colour_palettes(121); + colourpalette123.BackColor = ShiftOSDesktop.artpad_colour_palettes(122); + colourpalette124.BackColor = ShiftOSDesktop.artpad_colour_palettes(123); + colourpalette125.BackColor = ShiftOSDesktop.artpad_colour_palettes(124); + colourpalette126.BackColor = ShiftOSDesktop.artpad_colour_palettes(125); + colourpalette127.BackColor = ShiftOSDesktop.artpad_colour_palettes(126); + colourpalette128.BackColor = ShiftOSDesktop.artpad_colour_palettes(127); + */ + } + + public void savecolors() + {/* + ShiftOSDesktop.artpad_colour_palettes(0) = colourpalette1.BackColor; + ShiftOSDesktop.artpad_colour_palettes(1) = colourpalette2.BackColor; + ShiftOSDesktop.artpad_colour_palettes(2) = colourpalette3.BackColor; + ShiftOSDesktop.artpad_colour_palettes(3) = colourpalette4.BackColor; + ShiftOSDesktop.artpad_colour_palettes(4) = colourpalette5.BackColor; + ShiftOSDesktop.artpad_colour_palettes(5) = colourpalette6.BackColor; + ShiftOSDesktop.artpad_colour_palettes(6) = colourpalette7.BackColor; + ShiftOSDesktop.artpad_colour_palettes(7) = colourpalette8.BackColor; + ShiftOSDesktop.artpad_colour_palettes(8) = colourpalette9.BackColor; + ShiftOSDesktop.artpad_colour_palettes(9) = colourpalette10.BackColor; + ShiftOSDesktop.artpad_colour_palettes(10) = colourpalette11.BackColor; + ShiftOSDesktop.artpad_colour_palettes(11) = colourpalette12.BackColor; + ShiftOSDesktop.artpad_colour_palettes(12) = colourpalette13.BackColor; + ShiftOSDesktop.artpad_colour_palettes(13) = colourpalette14.BackColor; + ShiftOSDesktop.artpad_colour_palettes(14) = colourpalette15.BackColor; + ShiftOSDesktop.artpad_colour_palettes(15) = colourpalette16.BackColor; + ShiftOSDesktop.artpad_colour_palettes(16) = colourpalette17.BackColor; + ShiftOSDesktop.artpad_colour_palettes(17) = colourpalette18.BackColor; + ShiftOSDesktop.artpad_colour_palettes(18) = colourpalette19.BackColor; + ShiftOSDesktop.artpad_colour_palettes(19) = colourpalette20.BackColor; + ShiftOSDesktop.artpad_colour_palettes(20) = colourpalette21.BackColor; + ShiftOSDesktop.artpad_colour_palettes(21) = colourpalette22.BackColor; + ShiftOSDesktop.artpad_colour_palettes(22) = colourpalette23.BackColor; + ShiftOSDesktop.artpad_colour_palettes(23) = colourpalette24.BackColor; + ShiftOSDesktop.artpad_colour_palettes(24) = colourpalette25.BackColor; + ShiftOSDesktop.artpad_colour_palettes(25) = colourpalette26.BackColor; + ShiftOSDesktop.artpad_colour_palettes(26) = colourpalette27.BackColor; + ShiftOSDesktop.artpad_colour_palettes(27) = colourpalette28.BackColor; + ShiftOSDesktop.artpad_colour_palettes(28) = colourpalette29.BackColor; + ShiftOSDesktop.artpad_colour_palettes(29) = colourpalette30.BackColor; + ShiftOSDesktop.artpad_colour_palettes(30) = colourpalette31.BackColor; + ShiftOSDesktop.artpad_colour_palettes(31) = colourpalette32.BackColor; + ShiftOSDesktop.artpad_colour_palettes(32) = colourpalette33.BackColor; + ShiftOSDesktop.artpad_colour_palettes(33) = colourpalette34.BackColor; + ShiftOSDesktop.artpad_colour_palettes(34) = colourpalette35.BackColor; + ShiftOSDesktop.artpad_colour_palettes(35) = colourpalette36.BackColor; + ShiftOSDesktop.artpad_colour_palettes(36) = colourpalette37.BackColor; + ShiftOSDesktop.artpad_colour_palettes(37) = colourpalette38.BackColor; + ShiftOSDesktop.artpad_colour_palettes(38) = colourpalette39.BackColor; + ShiftOSDesktop.artpad_colour_palettes(39) = colourpalette40.BackColor; + ShiftOSDesktop.artpad_colour_palettes(40) = colourpalette41.BackColor; + ShiftOSDesktop.artpad_colour_palettes(41) = colourpalette42.BackColor; + ShiftOSDesktop.artpad_colour_palettes(42) = colourpalette43.BackColor; + ShiftOSDesktop.artpad_colour_palettes(43) = colourpalette44.BackColor; + ShiftOSDesktop.artpad_colour_palettes(44) = colourpalette45.BackColor; + ShiftOSDesktop.artpad_colour_palettes(45) = colourpalette46.BackColor; + ShiftOSDesktop.artpad_colour_palettes(46) = colourpalette47.BackColor; + ShiftOSDesktop.artpad_colour_palettes(47) = colourpalette48.BackColor; + ShiftOSDesktop.artpad_colour_palettes(48) = colourpalette49.BackColor; + ShiftOSDesktop.artpad_colour_palettes(49) = colourpalette50.BackColor; + ShiftOSDesktop.artpad_colour_palettes(50) = colourpalette51.BackColor; + ShiftOSDesktop.artpad_colour_palettes(51) = colourpalette52.BackColor; + ShiftOSDesktop.artpad_colour_palettes(52) = colourpalette53.BackColor; + ShiftOSDesktop.artpad_colour_palettes(53) = colourpalette54.BackColor; + ShiftOSDesktop.artpad_colour_palettes(54) = colourpalette55.BackColor; + ShiftOSDesktop.artpad_colour_palettes(55) = colourpalette56.BackColor; + ShiftOSDesktop.artpad_colour_palettes(56) = colourpalette57.BackColor; + ShiftOSDesktop.artpad_colour_palettes(57) = colourpalette58.BackColor; + ShiftOSDesktop.artpad_colour_palettes(58) = colourpalette59.BackColor; + ShiftOSDesktop.artpad_colour_palettes(59) = colourpalette60.BackColor; + ShiftOSDesktop.artpad_colour_palettes(60) = colourpalette61.BackColor; + ShiftOSDesktop.artpad_colour_palettes(61) = colourpalette62.BackColor; + ShiftOSDesktop.artpad_colour_palettes(62) = colourpalette63.BackColor; + ShiftOSDesktop.artpad_colour_palettes(63) = colourpalette64.BackColor; + ShiftOSDesktop.artpad_colour_palettes(64) = colourpalette65.BackColor; + ShiftOSDesktop.artpad_colour_palettes(65) = colourpalette66.BackColor; + ShiftOSDesktop.artpad_colour_palettes(66) = colourpalette67.BackColor; + ShiftOSDesktop.artpad_colour_palettes(67) = colourpalette68.BackColor; + ShiftOSDesktop.artpad_colour_palettes(68) = colourpalette69.BackColor; + ShiftOSDesktop.artpad_colour_palettes(69) = colourpalette70.BackColor; + ShiftOSDesktop.artpad_colour_palettes(70) = colourpalette71.BackColor; + ShiftOSDesktop.artpad_colour_palettes(71) = colourpalette72.BackColor; + ShiftOSDesktop.artpad_colour_palettes(72) = colourpalette73.BackColor; + ShiftOSDesktop.artpad_colour_palettes(73) = colourpalette74.BackColor; + ShiftOSDesktop.artpad_colour_palettes(74) = colourpalette75.BackColor; + ShiftOSDesktop.artpad_colour_palettes(75) = colourpalette76.BackColor; + ShiftOSDesktop.artpad_colour_palettes(76) = colourpalette77.BackColor; + ShiftOSDesktop.artpad_colour_palettes(77) = colourpalette78.BackColor; + ShiftOSDesktop.artpad_colour_palettes(78) = colourpalette79.BackColor; + ShiftOSDesktop.artpad_colour_palettes(79) = colourpalette80.BackColor; + ShiftOSDesktop.artpad_colour_palettes(80) = colourpalette81.BackColor; + ShiftOSDesktop.artpad_colour_palettes(81) = colourpalette82.BackColor; + ShiftOSDesktop.artpad_colour_palettes(82) = colourpalette83.BackColor; + ShiftOSDesktop.artpad_colour_palettes(83) = colourpalette84.BackColor; + ShiftOSDesktop.artpad_colour_palettes(84) = colourpalette85.BackColor; + ShiftOSDesktop.artpad_colour_palettes(85) = colourpalette86.BackColor; + ShiftOSDesktop.artpad_colour_palettes(86) = colourpalette87.BackColor; + ShiftOSDesktop.artpad_colour_palettes(87) = colourpalette88.BackColor; + ShiftOSDesktop.artpad_colour_palettes(88) = colourpalette89.BackColor; + ShiftOSDesktop.artpad_colour_palettes(89) = colourpalette90.BackColor; + ShiftOSDesktop.artpad_colour_palettes(90) = colourpalette91.BackColor; + ShiftOSDesktop.artpad_colour_palettes(91) = colourpalette92.BackColor; + ShiftOSDesktop.artpad_colour_palettes(92) = colourpalette93.BackColor; + ShiftOSDesktop.artpad_colour_palettes(93) = colourpalette94.BackColor; + ShiftOSDesktop.artpad_colour_palettes(94) = colourpalette95.BackColor; + ShiftOSDesktop.artpad_colour_palettes(95) = colourpalette96.BackColor; + ShiftOSDesktop.artpad_colour_palettes(96) = colourpalette97.BackColor; + ShiftOSDesktop.artpad_colour_palettes(97) = colourpalette98.BackColor; + ShiftOSDesktop.artpad_colour_palettes(98) = colourpalette99.BackColor; + ShiftOSDesktop.artpad_colour_palettes(99) = colourpalette100.BackColor; + ShiftOSDesktop.artpad_colour_palettes(100) = colourpalette101.BackColor; + ShiftOSDesktop.artpad_colour_palettes(101) = colourpalette102.BackColor; + ShiftOSDesktop.artpad_colour_palettes(102) = colourpalette103.BackColor; + ShiftOSDesktop.artpad_colour_palettes(103) = colourpalette104.BackColor; + ShiftOSDesktop.artpad_colour_palettes(104) = colourpalette105.BackColor; + ShiftOSDesktop.artpad_colour_palettes(105) = colourpalette106.BackColor; + ShiftOSDesktop.artpad_colour_palettes(106) = colourpalette107.BackColor; + ShiftOSDesktop.artpad_colour_palettes(107) = colourpalette108.BackColor; + ShiftOSDesktop.artpad_colour_palettes(108) = colourpalette109.BackColor; + ShiftOSDesktop.artpad_colour_palettes(109) = colourpalette110.BackColor; + ShiftOSDesktop.artpad_colour_palettes(110) = colourpalette111.BackColor; + ShiftOSDesktop.artpad_colour_palettes(111) = colourpalette112.BackColor; + ShiftOSDesktop.artpad_colour_palettes(112) = colourpalette113.BackColor; + ShiftOSDesktop.artpad_colour_palettes(113) = colourpalette114.BackColor; + ShiftOSDesktop.artpad_colour_palettes(114) = colourpalette115.BackColor; + ShiftOSDesktop.artpad_colour_palettes(115) = colourpalette116.BackColor; + ShiftOSDesktop.artpad_colour_palettes(116) = colourpalette117.BackColor; + ShiftOSDesktop.artpad_colour_palettes(117) = colourpalette118.BackColor; + ShiftOSDesktop.artpad_colour_palettes(118) = colourpalette119.BackColor; + ShiftOSDesktop.artpad_colour_palettes(119) = colourpalette120.BackColor; + ShiftOSDesktop.artpad_colour_palettes(120) = colourpalette121.BackColor; + ShiftOSDesktop.artpad_colour_palettes(121) = colourpalette122.BackColor; + ShiftOSDesktop.artpad_colour_palettes(122) = colourpalette123.BackColor; + ShiftOSDesktop.artpad_colour_palettes(123) = colourpalette124.BackColor; + ShiftOSDesktop.artpad_colour_palettes(124) = colourpalette125.BackColor; + ShiftOSDesktop.artpad_colour_palettes(125) = colourpalette126.BackColor; + ShiftOSDesktop.artpad_colour_palettes(126) = colourpalette127.BackColor; + ShiftOSDesktop.artpad_colour_palettes(127) = colourpalette128.BackColor; + */ + } + // + + public void settoolcolours() + { + btnpixelsetter.BackColor = drawingcolour; + btnpixelplacer.BackColor = drawingcolour; + btnpencil.BackColor = drawingcolour; + btnfloodfill.BackColor = drawingcolour; + btnsquare.BackColor = drawingcolour; + btnoval.BackColor = drawingcolour; + btnlinetool.BackColor = drawingcolour; + btnpaintbrush.BackColor = drawingcolour; + btntexttool.BackColor = drawingcolour; + } + #endregion + + #region Zooming + + // ERROR: Handles clauses are not supported in C# + private void btnzoomin_Click(object sender, EventArgs e) + { + if (magnificationlevel < 256) + { + magnificationlevel *= 2; + } + else + { + Infobox.Show("{ARTPAD_MAGNIFIER_ERROR}" + , "{ARTPAD_MAGNIFICATION_ERROR_EXP}"); + } + setmagnification(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnzoomout_Click(object sender, EventArgs e) + { + if (magnificationlevel > 1) + { + magnificationlevel /= 2; + pnldrawingbackground.AutoScrollPosition = new Point(0, 0); + } + else + { + Infobox.Show("{ARTPAD_MAGNIFIER_ERROR}" + , "{ARTPAD_MAGNIFICATION_ERROR_EXP_2}"); + } + setmagnification(); + } + + private void setmagnification() + { + magnifyRect.Width = (int)canvaswidth / magnificationlevel; + magnifyRect.Height = (int)canvasheight / magnificationlevel; + picdrawingdisplay.Size = new Size(canvaswidth * magnificationlevel, canvasheight * magnificationlevel); + if (picdrawingdisplay.Height > 468 && picdrawingdisplay.Width > 676) + { + picdrawingdisplay.Location = new Point(0, 0); + } + else + { + picdrawingdisplay.Location = new Point((pnldrawingbackground.Width - canvaswidth * magnificationlevel) / 2, (pnldrawingbackground.Height - canvasheight * magnificationlevel) / 2); + } + picdrawingdisplay.Invalidate(); + lblzoomlevel.Text = magnificationlevel + "X"; + } + + #endregion + + #region Pixel Placer + + // ERROR: Handles clauses are not supported in C# + private void pnlpixelplacer_Click(object sender, EventArgs e) + { + selectedtool = "Pixel Placer"; + gettoolsettings(pnlpixelplacersettings); + } + + // ERROR: Handles clauses are not supported in C# + private void btnpixelplacermovementmode_Click(object sender, EventArgs e) + { + if (pixalplacermovable == false) + { + pixalplacermovable = true; + btnpixelplacermovementmode.ForeColor = Color.White; + btnpixelplacermovementmode.BackColor = Color.Black; + btnpixelplacermovementmode.Text = "Deactivate Movement Mode"; + lblpixelplacerhelp.Text = "Movement mode is enabled. Click and drag on the canvas to place pixels as you move the mouse. Please use 4x magnification or greater and move the mouse very slowly."; + } + else + { + pixalplacermovable = false; + btnpixelplacermovementmode.ForeColor = Color.Black; + btnpixelplacermovementmode.BackColor = Color.White; + btnpixelplacermovementmode.Text = "Activate Movement Mode"; + lblpixelplacerhelp.Text = "This tool does not contain any alterable settings. Simply click on the canvas and a pixel will be placed in the spot you click."; + } + } + + #endregion + + #region Saving + + // ERROR: Handles clauses are not supported in C# + private void btnsave_Click(object sender, EventArgs e) + { + showsavedialog(); + } + + public void showsavedialog() + { + AppearanceManager.SetupDialog(new FileDialog(new[] { ".pic" }, FileOpenerStyle.Save, new Action((file) => + { + var res = file; + savelocation = res; + saveimage(); + }))); + } + + public void saveimage() + { + var ms = new MemoryStream(); + canvasbitmap.Save(ms, ImageFormat.Bmp); + Utils.WriteAllBytes(this.savelocation, ms.ToArray()); + ms.Close(); + } + #endregion + + #region New Canvas + + // ERROR: Handles clauses are not supported in C# + private void txtnewcanvaswidth_TextChanged(object sender, EventArgs e) + { + if (txtnewcanvaswidth.Text == "" | txtnewcanvasheight.Text == "") + { + if (txtnewcanvasheight.Text == "") + { + txtnewcanvasheight.Text = "0"; + } + if (txtnewcanvaswidth.Text == "") + { + txtnewcanvaswidth.Text = "0"; + } + } + else + { + try + { + lbltotalpixels.Text = (Convert.ToInt32(txtnewcanvaswidth.Text) * Convert.ToInt32(txtnewcanvasheight.Text)).ToString(); + if (ShiftoriumFrontend.UpgradeInstalled("artpad_limitless_pixels") == true) + { + lbltotalpixels.ForeColor = Color.Black; + } + else + { + if ((Convert.ToInt32(txtnewcanvaswidth.Text) * Convert.ToInt32(txtnewcanvasheight.Text)) > GetPixelLimit()) + { + lbltotalpixels.ForeColor = Color.Red; + } + else + { + lbltotalpixels.ForeColor = Color.Black; + } + } + } + catch + { + + } + } + + } + + public int GetPixelLimit() + { + int value = 2; + + + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_4")) + { + value = 4; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_8")) + { + value = 8; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_16")) + { + value = 16; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_64")) + { + value = 64; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_256")) + { + value = 256; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_1024")) + { + value = 1024; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_4096")) + { + value = 4096; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_16384")) + { + value = 16384; + if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_65536")) + { + value = 65536; + } + } + } + } + } + } + } + } + } + + return value; + } + + // ERROR: Handles clauses are not supported in C# + private void btncreate_Click(object sender, EventArgs e) + { + if (lbltotalpixels.ForeColor == Color.Red) + { + Infobox.Show("{ARTPAD_ERROR}", "{ARTPAD_IMAGE_TOO_BIG}"); + } + else + { + if (lbltotalpixels.Text == "0") + { + } + else + { + canvaswidth = Convert.ToInt32(txtnewcanvaswidth.Text); + canvasheight = Convert.ToInt32(txtnewcanvasheight.Text); + picdrawingdisplay.Show(); + setupcanvas(); + pnlinitialcanvassettings.Hide(); + } + } + } + + // ERROR: Handles clauses are not supported in C# + private void btncancel_Click(object sender, EventArgs e) + { + pnlinitialcanvassettings.Hide(); + picdrawingdisplay.Hide(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnnew_Click(object sender, EventArgs e) + { + pnlinitialcanvassettings.Show(); + picdrawingdisplay.Hide(); + } + + #endregion + + #region Preview + + public void setuppreview() + { + lbltoolselected.Text = selectedtool; + picpreview.CreateGraphics().FillRectangle(Brushes.White, 0, 0, 70, 50); + switch (selectedtool) + { + case "Square _tool": + var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), squarewidth); + var CurrentBrush = new SolidBrush(Color.FromArgb(255, fillsquarecolor)); + RectangleF rectdraw = new RectangleF(0, 0, picpreview.Width, picpreview.Height); + float correctionamount = squarewidth / 2; + if (squarewidth > 0) + { + picpreview.CreateGraphics().DrawRectangle(CurrentPen, rectdraw.X + correctionamount, rectdraw.Y + correctionamount, rectdraw.Width - squarewidth, rectdraw.Height - squarewidth); + } + if (squarefillon == true) + { + picpreview.CreateGraphics().FillRectangle(CurrentBrush, rectdraw.X + squarewidth, rectdraw.Y + squarewidth, rectdraw.Width - squarewidth - squarewidth, rectdraw.Height - squarewidth - squarewidth); + } + break; + case "Oval _tool": + var ovalCurrentPen = new Pen(Color.FromArgb(255, drawingcolour), ovalwidth); + var ovalCurrentBrush = new SolidBrush(Color.FromArgb(255, fillovalcolor)); + RectangleF ovalrectdraw = new RectangleF(0, 0, picpreview.Width, picpreview.Height); + float ovalcorrectionamount = ovalwidth / 2; + if (ovalwidth > 0) + { + picpreview.CreateGraphics().DrawEllipse(ovalCurrentPen, ovalrectdraw.X + ovalcorrectionamount, ovalrectdraw.Y + ovalcorrectionamount, ovalrectdraw.Width - ovalwidth, ovalrectdraw.Height - ovalwidth); + } + if (ovalfillon == true) + { + float fixer = ovalwidth / 2; + picpreview.CreateGraphics().FillEllipse(ovalCurrentBrush, (ovalrectdraw.X + fixer), (ovalrectdraw.Y + fixer), ovalrectdraw.Width - fixer - fixer, ovalrectdraw.Height - fixer - fixer); + } + break; + case "Text _tool": + var textCurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour)); + drawtextfont = new System.Drawing.Font(drawtextfontname, 20, drawtextfontstyle); + picpreview.CreateGraphics().DrawString("A", drawtextfont, textCurrentBrush, 20, 0); + break; + case "Line _tool": + var lineCurrentPen = new Pen(Color.FromArgb(255, drawingcolour), linewidth); + picpreview.CreateGraphics().DrawLine(lineCurrentPen, 0, 0, picpreview.Width, picpreview.Height); + break; + case "Pencil": + var pencilCurrentPen = new Pen(Color.FromArgb(255, drawingcolour), pencilwidth); + picpreview.CreateGraphics().DrawLine(pencilCurrentPen, 0, 25, picpreview.Width, 25); + break; + case "Paint Brush": + var pbCurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour)); + float halfsize = paintbrushwidth / 2; + float halfwidth = picdrawingdisplay.Width / 2; + float halfheight = picdrawingdisplay.Height / 2; + if (paintbrushtype == "circle") + { + picpreview.CreateGraphics().FillEllipse(pbCurrentBrush, halfwidth - 15 - halfsize, halfheight - 1 - halfsize, paintbrushwidth, paintbrushwidth); + } + else + { + picpreview.CreateGraphics().FillRectangle(pbCurrentBrush, halfwidth - 15 - halfsize, halfheight - 1 - halfsize, paintbrushwidth, paintbrushwidth); + } + break; + case "Eracer": + System.Drawing.SolidBrush drawbrush = new System.Drawing.SolidBrush(drawingcolour); + picpreview.CreateGraphics().FillRectangle(drawbrush, 0, 0, picpreview.Width, picpreview.Height); + var eCurrentBrush = new SolidBrush(Color.FromArgb(255, Color.White)); + float ehalfsize = eracerwidth / 2; + float ehalfwidth = picdrawingdisplay.Width / 2; + float ehalfheight = picdrawingdisplay.Height / 2; + if (eracertype == "circle") + { + picpreview.CreateGraphics().FillEllipse(eCurrentBrush, ehalfwidth - 15 - ehalfsize, ehalfheight - ehalfsize, eracerwidth, eracerwidth); + } + else + { + picpreview.CreateGraphics().FillRectangle(eCurrentBrush, ehalfwidth - 15 - ehalfsize, ehalfheight - ehalfsize, eracerwidth, eracerwidth); + } + break; + default: + System.Drawing.SolidBrush ddrawbrush = new System.Drawing.SolidBrush(drawingcolour); + picpreview.CreateGraphics().FillRectangle(ddrawbrush, 0, 0, picpreview.Width, picpreview.Height); + ddrawbrush.Dispose(); + break; + } + } + + #endregion + + #region Pencil + + // ERROR: Handles clauses are not supported in C# + private void btnpencil_Click(object sender, EventArgs e) + { + selectedtool = "Pencil"; + gettoolsettings(pnlpencilsettings); + } + + // ERROR: Handles clauses are not supported in C# + private void ChangePencilSize(object sender, EventArgs e) + { + var s = (Control)sender; + switch (s.Name.ToString()) + { + case "btnpencilsize1": + pencilwidth = 1; + break; + case "btnpencilsize2": + pencilwidth = 2; + break; + case "btnpencilsize3": + pencilwidth = 3; + break; + } + setuppreview(); + } + + #endregion + + #region Undo/Redo + + // ERROR: Handles clauses are not supported in C# + private void btnundo_Click(object sender, EventArgs e) + { + try + { + undo.redoStack.Push((Image)canvasbitmap.Clone()); + canvasbitmap = (Bitmap)undo.undoStack.Pop(); + graphicsbitmap = Graphics.FromImage(canvasbitmap); + picdrawingdisplay.Invalidate(); + } + catch + { + Infobox.Show("{ARTPAD_UNDO_ERROR}" + , "{ARTPAD_NEXT_STEP_WILL_KILL_CANVAS_JUST_FLIPPING_CLICK_NEW}"); + } + } + + // ERROR: Handles clauses are not supported in C# + private void btnredo_Click(object sender, EventArgs e) + { + try + { + undo.undoStack.Push((Image)canvasbitmap.Clone()); + canvasbitmap = (Bitmap)undo.redoStack.Pop(); + graphicsbitmap = Graphics.FromImage(canvasbitmap); + picdrawingdisplay.Invalidate(); + } + catch + { + Infobox.Show("{ARTPAD_REDO_ERROR}" + , "{ARTPAD_NOTHING_TO_REDO}"); + } + } + + #endregion + + #region File Loading + + // ERROR: Handles clauses are not supported in C# + private void btnopen_Click(object sender, EventArgs e) + { + AppearanceManager.SetupDialog(new FileDialog(new[] { ".pic" }, FileOpenerStyle.Open, new Action((file) => + { + string res = file; + savelocation = res; + openpic(); + }))); + } + + public void openpic() + { + pnlinitialcanvassettings.Hide(); + picdrawingdisplay.Show(); + magnificationlevel = 1; + setmagnification(); + canvasbitmap = (Bitmap)SkinEngine.ImageFromBinary(Utils.ReadAllBytes(savelocation)); + canvasheight = canvasbitmap.Height; + canvaswidth = canvasbitmap.Width; + picdrawingdisplay.Size = new Size(canvaswidth, canvasheight); + picdrawingdisplay.Location = new Point((pnldrawingbackground.Width - canvaswidth) / 2, (pnldrawingbackground.Height - canvasheight) / 2); + graphicsbitmap = Graphics.FromImage(canvasbitmap); + picdrawingdisplay.Invalidate(); + } + + #endregion + + #region Flood Fill + + // Flood fill the point. + public void SafeFloodFill(Bitmap bm, int x, int y, Color new_color) + { + // Get the old and new colors. + Color old_color = bm.GetPixel(x, y); + + // The following "If Then" test was added by Reuben + // Jollif + // to protect the code in case the start pixel + // has the same color as the fill color. + if (old_color.ToArgb() != new_color.ToArgb()) + { + // Start with the original point in the stack. + Stack pts = new Stack(1000); + pts.Push(new Point(x, y)); + bm.SetPixel(x, y, new_color); + + // While the stack is not empty, process a point. + while (pts.Count > 0) + { + Point pt = (Point)pts.Pop(); + if (pt.X > 0) + SafeCheckPoint(bm, pts, pt.X - 1, pt.Y, old_color, new_color); + + if (pt.Y > 0) + SafeCheckPoint(bm, pts, pt.X, pt.Y - 1, old_color, new_color); + if (pt.X < bm.Width - 1) + SafeCheckPoint(bm, pts, pt.X + 1, pt.Y, old_color, new_color); + if (pt.Y < bm.Height - 1) + SafeCheckPoint(bm, pts, pt.X, pt.Y + 1, old_color, new_color); + } + } + } + + // See if this point should be added to the stack. + private void SafeCheckPoint(Bitmap bm, Stack pts, int x, int y, Color old_color, Color new_color) + { + Color clr = bm.GetPixel(x, y); + if (clr.Equals(old_color)) + { + pts.Push(new Point(x, y)); + bm.SetPixel(x, y, new_color); + } + } + + // ERROR: Handles clauses are not supported in C# + private void btnfill_Click(object sender, EventArgs e) + { + selectedtool = "Flood Fill"; + gettoolsettings(pnlfloodfillsettings); + } + + #endregion + + #region Shapes + + // ERROR: Handles clauses are not supported in C# + private void btnsquare_Click(object sender, EventArgs e) + { + selectedtool = "Square _tool"; + gettoolsettings(pnlsquaretoolsettings); + txtsquareborderwidth.Text = squarewidth.ToString(); + } + + // ERROR: Handles clauses are not supported in C# + private void txtsquareborderwidth_TextChanged(object sender, EventArgs e) + { + if (txtsquareborderwidth.Text == "") + { + } + else + { + squarewidth = (Convert.ToInt32(txtsquareborderwidth.Text)); + setuppreview(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlsquarefillcolour_Click(object sender, EventArgs e) + { + pnlsquarefillcolour.BackColor = drawingcolour; + fillsquarecolor = drawingcolour; + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnsquarefillonoff_Click(object sender, EventArgs e) + { + if (squarefillon == true) + { + btnsquarefillonoff.Text = "Fill OFF"; + btnsquarefillonoff.BackColor = Color.White; + btnsquarefillonoff.ForeColor = Color.Black; + squarefillon = false; + } + else + { + btnsquarefillonoff.Text = "Fill ON"; + btnsquarefillonoff.BackColor = Color.Black; + btnsquarefillonoff.ForeColor = Color.White; + squarefillon = true; + } + txtsquareborderwidth.Text = squarewidth.ToString(); + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnoval_Click(object sender, EventArgs e) + { + selectedtool = "Oval _tool"; + gettoolsettings(pnlovaltoolsettings); + txtovalborderwidth.Text = ovalwidth.ToString(); + } + + // ERROR: Handles clauses are not supported in C# + private void txtovalborderwidth_TextChanged(object sender, EventArgs e) + { + if (txtovalborderwidth.Text == "") + { + } + else + { + ovalwidth = (Convert.ToInt32(txtovalborderwidth.Text)); + setuppreview(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlovalfillcolour_Click(object sender, EventArgs e) + { + pnlovalfillcolour.BackColor = drawingcolour; + fillovalcolor = drawingcolour; + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnovalfillonoff_Click(object sender, EventArgs e) + { + if (ovalfillon == true) + { + btnovalfillonoff.Text = "Fill OFF"; + btnovalfillonoff.BackColor = Color.White; + btnovalfillonoff.ForeColor = Color.Black; + ovalfillon = false; + } + else + { + btnovalfillonoff.Text = "Fill ON"; + btnovalfillonoff.BackColor = Color.Black; + btnovalfillonoff.ForeColor = Color.White; + ovalfillon = true; + } + txtovalborderwidth.Text = ovalwidth.ToString(); + setuppreview(); + } + #endregion + + #region Eraser + + // ERROR: Handles clauses are not supported in C# + private void btneracer_Click(object sender, EventArgs e) + { + selectedtool = "Eracer"; + gettoolsettings(pnleracertoolsettings); + txteracersize.Text = eracerwidth.ToString(); + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void txteracersize_TextChanged(object sender, EventArgs e) + { + if (txteracersize.Text == "") + { + } + else + { + try + { + eracerwidth = (Convert.ToInt32(txteracersize.Text)); + } + catch + { + txteracersize.Text = eracerwidth.ToString(); + } + } + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btneracercircle_Click(object sender, EventArgs e) + { + eracertype = "circle"; + btneracercircle.BackgroundImage = Properties.Resources.ArtPadcirclerubberselected; + btneracersquare.BackgroundImage = Properties.Resources.ArtPadsquarerubber; + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btneracersquare_Click(object sender, EventArgs e) + { + eracertype = "square"; + btneracercircle.BackgroundImage = Properties.Resources.ArtPadcirclerubber; + btneracersquare.BackgroundImage = Properties.Resources.ArtPadsquarerubberselected; + setuppreview(); + } + + #endregion + + #region Line + + // ERROR: Handles clauses are not supported in C# + private void btnlinetool_Click(object sender, EventArgs e) + { + selectedtool = "Line _tool"; + gettoolsettings(pnllinetoolsettings); + txtlinewidth.Text = linewidth.ToString(); + } + + // ERROR: Handles clauses are not supported in C# + private void txtlinewidth_TextChanged(object sender, EventArgs e) + { + if (txtlinewidth.Text == "") + { + } + else + { + linewidth = (Convert.ToInt32(txtlinewidth.Text)); + } + setuppreview(); + } + + #endregion + + #region Text + + // ERROR: Handles clauses are not supported in C# + private void btntexttool_Click(object sender, EventArgs e) + { + selectedtool = "Text _tool"; + gettoolsettings(pnltexttoolsettings); + } + + // ERROR: Handles clauses are not supported in C# + private void txtdrawtextsize_TextChanged(object sender, EventArgs e) + { + if (txtdrawtextsize.Text == "") + { + } + else + { + drawtextsize = Convert.ToInt32(txtdrawtextsize.Text); + } + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void combodrawtextfont_SelectedIndexChanged(object sender, EventArgs e) + { + drawtextfontname = combodrawtextfont.Text; + txtdrawstringtext.Focus(); + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void combofontstyle_SelectedIndexChanged(object sender, EventArgs e) + { + switch (combofontstyle.Text) + { + case "Bold": + drawtextfontstyle = FontStyle.Bold; + break; + case "Italic": + drawtextfontstyle = FontStyle.Italic; + break; + case "Regular": + drawtextfontstyle = FontStyle.Regular; + break; + case "Strikeout": + drawtextfontstyle = FontStyle.Strikeout; + break; + case "Underline": + drawtextfontstyle = FontStyle.Underline; + break; + } + txtdrawstringtext.Focus(); + setuppreview(); + } + #endregion + + #region Paintbrush + + // ERROR: Handles clauses are not supported in C# + private void txtpaintbrushsize_TextChanged(object sender, EventArgs e) + { + if (txtpaintbrushsize.Text == "") + { + } + else + { + paintbrushwidth = (Convert.ToInt32(txtpaintbrushsize.Text)); + } + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnpaintsquareshape_Click(object sender, EventArgs e) + { + paintbrushtype = "square"; + btnpaintcircleshape.BackgroundImage = Properties.Resources.ArtPadcirclerubber; + btnpaintsquareshape.BackgroundImage = Properties.Resources.ArtPadsquarerubberselected; + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnpaintcircleshape_Click(object sender, EventArgs e) + { + paintbrushtype = "circle"; + btnpaintcircleshape.BackgroundImage = Properties.Resources.ArtPadcirclerubberselected; + btnpaintsquareshape.BackgroundImage = Properties.Resources.ArtPadsquarerubber; + setuppreview(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnpaintbrush_Click(object sender, EventArgs e) + { + selectedtool = "Paint Brush"; + gettoolsettings(pnlpaintbrushtoolsettings); + txtpaintbrushsize.Text = paintbrushwidth.ToString(); + setuppreview(); + } + + #endregion + + #region Codepoints + + private void preparecooldown() + { + needtosave = true; + if (codepointscooldown == true) + { + } + else + { + codepointsearned = codepointsearned + 1; + codepointscooldown = true; + tmrcodepointcooldown.Start(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void tmrcodepointcooldown_Tick(object sender, EventArgs e) + { + codepointscooldown = false; + tmrcodepointcooldown.Stop(); + } + + // ERROR: Handles clauses are not supported in C# + private void tmrshowearnedcodepoints_Tick(object sender, EventArgs e) + { + tmrshowearnedcodepoints.Stop(); + } + + #endregion + + #region More UI stuff + + public void determinevisiblepalettes() + { + int panelstoadd = 2; + + if (ShiftoriumFrontend.UpgradeInstalled("artpad_4_color_palettes") == true) + { + panelstoadd = 4; + } + if (ShiftoriumFrontend.UpgradeInstalled("artpad_8_color_palettes") == true) + { + panelstoadd = 8; + } + if (ShiftoriumFrontend.UpgradeInstalled("artpad_16_color_palettes") == true) + { + panelstoadd = 16; + } + if (ShiftoriumFrontend.UpgradeInstalled("artpad_32_color_palettes") == true) + { + panelstoadd = 32; + } + if (ShiftoriumFrontend.UpgradeInstalled("artpad_64_color_palettes") == true) + { + panelstoadd = 64; + } + if (ShiftoriumFrontend.UpgradeInstalled("artpad_128_color_palettes") == true) + { + panelstoadd = 128; + } + flowcolours.Controls.Clear(); + for (int i = 0; i < panelstoadd; i++) + { + Panel pnl = new Panel(); + pnl.BackColor = Color.Black; + pnl.Size = new Size(12, 8); + flowcolours.Controls.Add(pnl); + pnl.Margin = new Padding(1, 0, 0, 1); + pnl.MouseClick += new MouseEventHandler(this.colourpalette1_MouseClick); + pnl.Show(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void btnchangesizecancel_Click(object sender, EventArgs e) + { + pnlpalettesize.Hide(); + } + + #endregion + + #region More Text Stuff + + // ERROR: Handles clauses are not supported in C# + private void txtdrawstringtext_TextChanged(object sender, EventArgs e) + { + setuppreview(); + } + + #endregion + + private void tmrsetupui_Tick(object sender, EventArgs e) + { + } + + private void btnpixelplacer_Click(object sender, EventArgs e) + { + selectedtool = "Pixel Placer"; + gettoolsettings(pnlpixelplacersettings); + } + + public void OnLoad() + { + + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } + + public class undo + { + public Stack undoStack = new Stack(); + public Stack redoStack = new Stack(); + + } +} diff --git a/ShiftOS.WinForms/Applications/Artpad.resx b/ShiftOS.WinForms/Applications/Artpad.resx new file mode 100644 index 0000000..4175077 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Artpad.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 197, 17 + + + 394, 17 + + + 478, 17 + + + 591, 17 + + + 685, 17 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Chat.Designer.cs b/ShiftOS.WinForms/Applications/Chat.Designer.cs new file mode 100644 index 0000000..1704ee6 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Chat.Designer.cs @@ -0,0 +1,86 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class Chat + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.txtuserinput = new System.Windows.Forms.TextBox(); + this.rtbchat = new System.Windows.Forms.RichTextBox(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.rtbchat); + this.panel1.Controls.Add(this.txtuserinput); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(633, 318); + this.panel1.TabIndex = 0; + // + // txtuserinput + // + this.txtuserinput.Dock = System.Windows.Forms.DockStyle.Bottom; + this.txtuserinput.Location = new System.Drawing.Point(0, 298); + this.txtuserinput.Name = "txtuserinput"; + this.txtuserinput.Size = new System.Drawing.Size(633, 20); + this.txtuserinput.TabIndex = 0; + this.txtuserinput.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtuserinput_KeyDown); + // + // rtbchat + // + this.rtbchat.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtbchat.Location = new System.Drawing.Point(0, 0); + this.rtbchat.Name = "rtbchat"; + this.rtbchat.Size = new System.Drawing.Size(633, 298); + this.rtbchat.TabIndex = 1; + this.rtbchat.Text = ""; + this.rtbchat.KeyDown += new System.Windows.Forms.KeyEventHandler(this.richTextBox1_KeyDown); + // + // Chat + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.panel1); + this.Name = "Chat"; + this.Text = "Chat"; + this.Size = new System.Drawing.Size(633, 318); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.RichTextBox rtbchat; + private System.Windows.Forms.TextBox txtuserinput; + } +} diff --git a/ShiftOS.WinForms/Applications/Chat.cs b/ShiftOS.WinForms/Applications/Chat.cs new file mode 100644 index 0000000..3fb68e3 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Chat.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Newtonsoft.Json; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications +{ + [MultiplayerOnly] + [Launcher("MUD Chat", true, "al_mud_chat")] + [RequiresUpgrade("mud_fundamentals")] + [WinOpen("chat")] + public partial class Chat : UserControl, IShiftOSWindow + { + public Chat(string chatId) + { + InitializeComponent(); + id = chatId; + ServerManager.MessageReceived += (msg) => + { + if (msg.Name == "cbroadcast") + { + try + { + this.Invoke(new Action(() => + { + rtbchat.Text += msg.Contents + Environment.NewLine; + })); + } + catch { } + } + }; + } + + private string id = ""; + + public void OnLoad() + { + var save = SaveSystem.CurrentSave; + ServerManager.SendMessage("chat_join", $@"{{ + id: ""{id}"", + user: {JsonConvert.SerializeObject(save)} +}}"); + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + var save = SaveSystem.CurrentSave; + ServerManager.SendMessage("chat_leave", $@"{{ + id: ""{id}"", + user: {JsonConvert.SerializeObject(save)} +}}"); + + return true; + } + + public void OnUpgrade() + { + } + + private void richTextBox1_KeyDown(object sender, KeyEventArgs e) + { + e.SuppressKeyPress = true; + } + + private void txtuserinput_KeyDown(object sender, KeyEventArgs e) + { + if(e.KeyCode == Keys.Enter) + { + e.SuppressKeyPress = true; + + var save = SaveSystem.CurrentSave; + + ServerManager.SendMessage("chat", $@"{{ + id: ""{id}"", + user: {JsonConvert.SerializeObject(save)}, + msg: ""{txtuserinput.Text}"" +}}"); + txtuserinput.Text = ""; + } + } + } +} diff --git a/ShiftOS.WinForms/Applications/Chat.resx b/ShiftOS.WinForms/Applications/Chat.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Chat.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/CoherenceOverlay.Designer.cs b/ShiftOS.WinForms/Applications/CoherenceOverlay.Designer.cs new file mode 100644 index 0000000..a47ad43 --- /dev/null +++ b/ShiftOS.WinForms/Applications/CoherenceOverlay.Designer.cs @@ -0,0 +1,37 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class CoherenceOverlay + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion + } +} diff --git a/ShiftOS.WinForms/Applications/CoherenceOverlay.cs b/ShiftOS.WinForms/Applications/CoherenceOverlay.cs new file mode 100644 index 0000000..1eaa89d --- /dev/null +++ b/ShiftOS.WinForms/Applications/CoherenceOverlay.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using System.Threading; + +namespace ShiftOS.WinForms.Applications +{ + public partial class CoherenceOverlay : UserControl, IShiftOSWindow + { + public CoherenceOverlay(IntPtr handle, CoherenceCommands.RECT rect) + { + InitializeComponent(); + this.Load += (o, a) => + { + try + { + int left = this.ParentForm.Left; + int top = this.ParentForm.Top; + int oldwidth = this.ParentForm.Width; + int oldheight = this.ParentForm.Height; + + var t = new Thread(new ThreadStart(() => + { + while (CoherenceCommands.GetWindowRect(handle, ref rect)) + { + + if (left != rect.Left - SkinEngine.LoadedSkin.LeftBorderWidth) + { + this.Invoke(new Action(() => + { + this.ParentForm.Left = rect.Left - SkinEngine.LoadedSkin.LeftBorderWidth; + left = rect.Left - SkinEngine.LoadedSkin.LeftBorderWidth; + })); + } + if (top != rect.Top - SkinEngine.LoadedSkin.TitlebarHeight) + { + this.Invoke(new Action(() => + { + + this.ParentForm.Top = rect.Top - SkinEngine.LoadedSkin.TitlebarHeight; + top = rect.Top - SkinEngine.LoadedSkin.TitlebarHeight; + })); + } + int width = (rect.Right - rect.Left) + 1; + int height = (rect.Bottom - rect.Top) + 1; + + if (oldheight != SkinEngine.LoadedSkin.TitlebarHeight + height + SkinEngine.LoadedSkin.BottomBorderWidth) + { + this.Invoke(new Action(() => + { + this.ParentForm.Height = SkinEngine.LoadedSkin.TitlebarHeight + height + SkinEngine.LoadedSkin.BottomBorderWidth; + oldheight = SkinEngine.LoadedSkin.TitlebarHeight + height + SkinEngine.LoadedSkin.BottomBorderWidth; + })); + } + if (oldwidth != SkinEngine.LoadedSkin.LeftBorderWidth + width + SkinEngine.LoadedSkin.RightBorderWidth) + { + this.Invoke(new Action(() => + { + this.ParentForm.Width = SkinEngine.LoadedSkin.LeftBorderWidth + width + SkinEngine.LoadedSkin.RightBorderWidth; + oldwidth = SkinEngine.LoadedSkin.LeftBorderWidth + width + SkinEngine.LoadedSkin.RightBorderWidth; + })); + } + } + })); + t.IsBackground = true; + t.Start(); + } + catch + { + + } + }; + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } +} diff --git a/ShiftOS.WinForms/Applications/ColorPicker.Designer.cs b/ShiftOS.WinForms/Applications/ColorPicker.Designer.cs new file mode 100644 index 0000000..7a00b8b --- /dev/null +++ b/ShiftOS.WinForms/Applications/ColorPicker.Designer.cs @@ -0,0 +1,3570 @@ +using ShiftOS.WinForms.Controls; + +namespace ShiftOS.WinForms.Applications +{ + partial class ColorPicker + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.pgcontents = new System.Windows.Forms.Panel(); + this.pnlpinkcolours = new System.Windows.Forms.Panel(); + this.pnlpinkoptions = new System.Windows.Forms.Panel(); + this.Label35 = new System.Windows.Forms.Label(); + this.txtpinksgreen = new System.Windows.Forms.TextBox(); + this.txtpinksred = new System.Windows.Forms.TextBox(); + this.Label36 = new System.Windows.Forms.Label(); + this.Label37 = new System.Windows.Forms.Label(); + this.txtpinksblue = new System.Windows.Forms.TextBox(); + this.pnlpinkcustomcolour = new System.Windows.Forms.Panel(); + this.pnlpink16 = new System.Windows.Forms.Panel(); + this.pnlpink12 = new System.Windows.Forms.Panel(); + this.pnlpink14 = new System.Windows.Forms.Panel(); + this.pnlpink10 = new System.Windows.Forms.Panel(); + this.pnlpink8 = new System.Windows.Forms.Panel(); + this.pnlpink4 = new System.Windows.Forms.Panel(); + this.pnlpink6 = new System.Windows.Forms.Panel(); + this.pnlpink15 = new System.Windows.Forms.Panel(); + this.pnlpink2 = new System.Windows.Forms.Panel(); + this.pnlpink13 = new System.Windows.Forms.Panel(); + this.pnlpink11 = new System.Windows.Forms.Panel(); + this.pnlpink7 = new System.Windows.Forms.Panel(); + this.pnlpink9 = new System.Windows.Forms.Panel(); + this.pnlpink5 = new System.Windows.Forms.Panel(); + this.pnlpink3 = new System.Windows.Forms.Panel(); + this.pnlpink1 = new System.Windows.Forms.Panel(); + this.lblpinklevel = new System.Windows.Forms.Label(); + this.Label23 = new System.Windows.Forms.Label(); + this.pnlredcolours = new System.Windows.Forms.Panel(); + this.pnlredoptions = new System.Windows.Forms.Panel(); + this.Label32 = new System.Windows.Forms.Label(); + this.txtredsblue = new System.Windows.Forms.TextBox(); + this.txtredsred = new System.Windows.Forms.TextBox(); + this.Label33 = new System.Windows.Forms.Label(); + this.Label34 = new System.Windows.Forms.Label(); + this.txtredsgreen = new System.Windows.Forms.TextBox(); + this.pnlredcustomcolour = new System.Windows.Forms.Panel(); + this.pnlred16 = new System.Windows.Forms.Panel(); + this.pnlred12 = new System.Windows.Forms.Panel(); + this.pnlred14 = new System.Windows.Forms.Panel(); + this.pnlred10 = new System.Windows.Forms.Panel(); + this.pnlred8 = new System.Windows.Forms.Panel(); + this.pnlred4 = new System.Windows.Forms.Panel(); + this.pnlred6 = new System.Windows.Forms.Panel(); + this.pnlred15 = new System.Windows.Forms.Panel(); + this.pnlred2 = new System.Windows.Forms.Panel(); + this.pnlred13 = new System.Windows.Forms.Panel(); + this.pnlred11 = new System.Windows.Forms.Panel(); + this.pnlred7 = new System.Windows.Forms.Panel(); + this.pnlred9 = new System.Windows.Forms.Panel(); + this.pnlred5 = new System.Windows.Forms.Panel(); + this.pnlred3 = new System.Windows.Forms.Panel(); + this.pnlred1 = new System.Windows.Forms.Panel(); + this.lblredlevel = new System.Windows.Forms.Label(); + this.Label21 = new System.Windows.Forms.Label(); + this.pnlbrowncolours = new System.Windows.Forms.Panel(); + this.pnlbrownoptions = new System.Windows.Forms.Panel(); + this.Label29 = new System.Windows.Forms.Label(); + this.txtbrownsblue = new System.Windows.Forms.TextBox(); + this.txtbrownsred = new System.Windows.Forms.TextBox(); + this.Label30 = new System.Windows.Forms.Label(); + this.Label31 = new System.Windows.Forms.Label(); + this.txtbrownsgreen = new System.Windows.Forms.TextBox(); + this.pnlbrowncustomcolour = new System.Windows.Forms.Panel(); + this.pnlbrown16 = new System.Windows.Forms.Panel(); + this.pnlbrown12 = new System.Windows.Forms.Panel(); + this.pnlbrown14 = new System.Windows.Forms.Panel(); + this.pnlbrown10 = new System.Windows.Forms.Panel(); + this.pnlbrown8 = new System.Windows.Forms.Panel(); + this.pnlbrown4 = new System.Windows.Forms.Panel(); + this.pnlbrown6 = new System.Windows.Forms.Panel(); + this.pnlbrown15 = new System.Windows.Forms.Panel(); + this.pnlbrown2 = new System.Windows.Forms.Panel(); + this.pnlbrown13 = new System.Windows.Forms.Panel(); + this.pnlbrown11 = new System.Windows.Forms.Panel(); + this.pnlbrown7 = new System.Windows.Forms.Panel(); + this.pnlbrown9 = new System.Windows.Forms.Panel(); + this.pnlbrown5 = new System.Windows.Forms.Panel(); + this.pnlbrown3 = new System.Windows.Forms.Panel(); + this.pnlbrown1 = new System.Windows.Forms.Panel(); + this.lblbrownlevel = new System.Windows.Forms.Label(); + this.Label19 = new System.Windows.Forms.Label(); + this.pnlorangecolours = new System.Windows.Forms.Panel(); + this.pnlorangeoptions = new System.Windows.Forms.Panel(); + this.Label25 = new System.Windows.Forms.Label(); + this.txtorangesblue = new System.Windows.Forms.TextBox(); + this.txtorangesred = new System.Windows.Forms.TextBox(); + this.Label27 = new System.Windows.Forms.Label(); + this.Label28 = new System.Windows.Forms.Label(); + this.txtorangesgreen = new System.Windows.Forms.TextBox(); + this.pnlorangecustomcolour = new System.Windows.Forms.Panel(); + this.pnlorange16 = new System.Windows.Forms.Panel(); + this.pnlorange12 = new System.Windows.Forms.Panel(); + this.pnlorange14 = new System.Windows.Forms.Panel(); + this.pnlorange10 = new System.Windows.Forms.Panel(); + this.pnlorange8 = new System.Windows.Forms.Panel(); + this.pnlorange4 = new System.Windows.Forms.Panel(); + this.pnlorange6 = new System.Windows.Forms.Panel(); + this.pnlorange15 = new System.Windows.Forms.Panel(); + this.pnlorange2 = new System.Windows.Forms.Panel(); + this.pnlorange13 = new System.Windows.Forms.Panel(); + this.pnlorange11 = new System.Windows.Forms.Panel(); + this.pnlorange7 = new System.Windows.Forms.Panel(); + this.pnlorange9 = new System.Windows.Forms.Panel(); + this.pnlorange5 = new System.Windows.Forms.Panel(); + this.pnlorange3 = new System.Windows.Forms.Panel(); + this.pnlorange1 = new System.Windows.Forms.Panel(); + this.lblorangelevel = new System.Windows.Forms.Label(); + this.Label13 = new System.Windows.Forms.Label(); + this.pnlyellowcolours = new System.Windows.Forms.Panel(); + this.pnlyellowoptions = new System.Windows.Forms.Panel(); + this.Label20 = new System.Windows.Forms.Label(); + this.txtyellowsblue = new System.Windows.Forms.TextBox(); + this.txtyellowsred = new System.Windows.Forms.TextBox(); + this.Label22 = new System.Windows.Forms.Label(); + this.Label24 = new System.Windows.Forms.Label(); + this.txtyellowsgreen = new System.Windows.Forms.TextBox(); + this.pnlyellowcustomcolour = new System.Windows.Forms.Panel(); + this.pnlyellow16 = new System.Windows.Forms.Panel(); + this.pnlyellow12 = new System.Windows.Forms.Panel(); + this.pnlyellow14 = new System.Windows.Forms.Panel(); + this.pnlyellow10 = new System.Windows.Forms.Panel(); + this.pnlyellow8 = new System.Windows.Forms.Panel(); + this.pnlyellow4 = new System.Windows.Forms.Panel(); + this.pnlyellow6 = new System.Windows.Forms.Panel(); + this.pnlyellow15 = new System.Windows.Forms.Panel(); + this.pnlyellow2 = new System.Windows.Forms.Panel(); + this.pnlyellow13 = new System.Windows.Forms.Panel(); + this.pnlyellow11 = new System.Windows.Forms.Panel(); + this.pnlyellow7 = new System.Windows.Forms.Panel(); + this.pnlyellow9 = new System.Windows.Forms.Panel(); + this.pnlyellow5 = new System.Windows.Forms.Panel(); + this.pnlyellow3 = new System.Windows.Forms.Panel(); + this.pnlyellow1 = new System.Windows.Forms.Panel(); + this.lblyellowlevel = new System.Windows.Forms.Label(); + this.Label11 = new System.Windows.Forms.Label(); + this.pnlgreencolours = new System.Windows.Forms.Panel(); + this.pnlgreenoptions = new System.Windows.Forms.Panel(); + this.Label15 = new System.Windows.Forms.Label(); + this.txtgreensred = new System.Windows.Forms.TextBox(); + this.txtgreensgreen = new System.Windows.Forms.TextBox(); + this.Label16 = new System.Windows.Forms.Label(); + this.Label18 = new System.Windows.Forms.Label(); + this.txtgreensblue = new System.Windows.Forms.TextBox(); + this.pnlgreencustomcolour = new System.Windows.Forms.Panel(); + this.pnlgreen16 = new System.Windows.Forms.Panel(); + this.pnlgreen12 = new System.Windows.Forms.Panel(); + this.pnlgreen14 = new System.Windows.Forms.Panel(); + this.pnlgreen10 = new System.Windows.Forms.Panel(); + this.pnlgreen8 = new System.Windows.Forms.Panel(); + this.pnlgreen4 = new System.Windows.Forms.Panel(); + this.pnlgreen6 = new System.Windows.Forms.Panel(); + this.pnlgreen15 = new System.Windows.Forms.Panel(); + this.pnlgreen2 = new System.Windows.Forms.Panel(); + this.pnlgreen13 = new System.Windows.Forms.Panel(); + this.pnlgreen11 = new System.Windows.Forms.Panel(); + this.pnlgreen7 = new System.Windows.Forms.Panel(); + this.pnlgreen9 = new System.Windows.Forms.Panel(); + this.pnlgreen5 = new System.Windows.Forms.Panel(); + this.pnlgreen3 = new System.Windows.Forms.Panel(); + this.pnlgreen1 = new System.Windows.Forms.Panel(); + this.lblgreenlevel = new System.Windows.Forms.Label(); + this.Label9 = new System.Windows.Forms.Label(); + this.pnlbluecolours = new System.Windows.Forms.Panel(); + this.pnlblueoptions = new System.Windows.Forms.Panel(); + this.Label6 = new System.Windows.Forms.Label(); + this.txtbluesred = new System.Windows.Forms.TextBox(); + this.txtbluesblue = new System.Windows.Forms.TextBox(); + this.Label4 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.txtbluesgreen = new System.Windows.Forms.TextBox(); + this.pnlbluecustomcolour = new System.Windows.Forms.Panel(); + this.pnlblue16 = new System.Windows.Forms.Panel(); + this.pnlblue12 = new System.Windows.Forms.Panel(); + this.pnlblue14 = new System.Windows.Forms.Panel(); + this.pnlblue10 = new System.Windows.Forms.Panel(); + this.pnlblue8 = new System.Windows.Forms.Panel(); + this.pnlblue4 = new System.Windows.Forms.Panel(); + this.pnlblue6 = new System.Windows.Forms.Panel(); + this.pnlblue15 = new System.Windows.Forms.Panel(); + this.pnlblue2 = new System.Windows.Forms.Panel(); + this.pnlblue13 = new System.Windows.Forms.Panel(); + this.pnlblue11 = new System.Windows.Forms.Panel(); + this.pnlblue7 = new System.Windows.Forms.Panel(); + this.pnlblue9 = new System.Windows.Forms.Panel(); + this.pnlblue5 = new System.Windows.Forms.Panel(); + this.pnlblue3 = new System.Windows.Forms.Panel(); + this.pnlblue1 = new System.Windows.Forms.Panel(); + this.lblbluelevel = new System.Windows.Forms.Label(); + this.Label7 = new System.Windows.Forms.Label(); + this.pnlpurplecolours = new System.Windows.Forms.Panel(); + this.pnlpurpleoptions = new System.Windows.Forms.Panel(); + this.Label8 = new System.Windows.Forms.Label(); + this.txtpurplesgreen = new System.Windows.Forms.TextBox(); + this.txtpurplesblue = new System.Windows.Forms.TextBox(); + this.Label10 = new System.Windows.Forms.Label(); + this.Label12 = new System.Windows.Forms.Label(); + this.txtpurplesred = new System.Windows.Forms.TextBox(); + this.pnlpurplecustomcolour = new System.Windows.Forms.Panel(); + this.pnlpurple16 = new System.Windows.Forms.Panel(); + this.pnlpurple12 = new System.Windows.Forms.Panel(); + this.pnlpurple14 = new System.Windows.Forms.Panel(); + this.pnlpurple10 = new System.Windows.Forms.Panel(); + this.pnlpurple8 = new System.Windows.Forms.Panel(); + this.pnlpurple4 = new System.Windows.Forms.Panel(); + this.pnlpurple6 = new System.Windows.Forms.Panel(); + this.pnlpurple15 = new System.Windows.Forms.Panel(); + this.pnlpurple2 = new System.Windows.Forms.Panel(); + this.pnlpurple13 = new System.Windows.Forms.Panel(); + this.pnlpurple11 = new System.Windows.Forms.Panel(); + this.pnlpurple7 = new System.Windows.Forms.Panel(); + this.pnlpurple9 = new System.Windows.Forms.Panel(); + this.pnlpurple5 = new System.Windows.Forms.Panel(); + this.pnlpurple3 = new System.Windows.Forms.Panel(); + this.pnlpurple1 = new System.Windows.Forms.Panel(); + this.lblpurplelevel = new System.Windows.Forms.Label(); + this.Label5 = new System.Windows.Forms.Label(); + this.pnlgraycolours = new System.Windows.Forms.Panel(); + this.lblcustomshadetut = new System.Windows.Forms.Label(); + this.txtcustomgrayshade = new System.Windows.Forms.TextBox(); + this.pnlgraycustomcolour = new System.Windows.Forms.Panel(); + this.pnlgray16 = new System.Windows.Forms.Panel(); + this.pnlgray12 = new System.Windows.Forms.Panel(); + this.pnlgray14 = new System.Windows.Forms.Panel(); + this.pnlgray10 = new System.Windows.Forms.Panel(); + this.pnlgray8 = new System.Windows.Forms.Panel(); + this.pnlgray4 = new System.Windows.Forms.Panel(); + this.pnlgray6 = new System.Windows.Forms.Panel(); + this.pnlgray15 = new System.Windows.Forms.Panel(); + this.pnlgray2 = new System.Windows.Forms.Panel(); + this.pnlgray13 = new System.Windows.Forms.Panel(); + this.pnlgray11 = new System.Windows.Forms.Panel(); + this.pnlgray7 = new System.Windows.Forms.Panel(); + this.pnlgray9 = new System.Windows.Forms.Panel(); + this.pnlgray5 = new System.Windows.Forms.Panel(); + this.pnlgray3 = new System.Windows.Forms.Panel(); + this.pnlgray1 = new System.Windows.Forms.Panel(); + this.lblgraylevel = new System.Windows.Forms.Label(); + this.Label3 = new System.Windows.Forms.Label(); + this.pnlanycolours = new System.Windows.Forms.Panel(); + this.pnlanyoptions = new System.Windows.Forms.Panel(); + this.Label38 = new System.Windows.Forms.Label(); + this.txtanysgreen = new System.Windows.Forms.TextBox(); + this.txtanysred = new System.Windows.Forms.TextBox(); + this.Label39 = new System.Windows.Forms.Label(); + this.Label40 = new System.Windows.Forms.Label(); + this.txtanysblue = new System.Windows.Forms.TextBox(); + this.pnlanycustomcolour = new System.Windows.Forms.Panel(); + this.pnlany16 = new System.Windows.Forms.Panel(); + this.pnlany12 = new System.Windows.Forms.Panel(); + this.pnlany14 = new System.Windows.Forms.Panel(); + this.pnlany10 = new System.Windows.Forms.Panel(); + this.pnlany8 = new System.Windows.Forms.Panel(); + this.pnlany4 = new System.Windows.Forms.Panel(); + this.pnlany6 = new System.Windows.Forms.Panel(); + this.pnlany15 = new System.Windows.Forms.Panel(); + this.pnlany2 = new System.Windows.Forms.Panel(); + this.pnlany13 = new System.Windows.Forms.Panel(); + this.pnlany11 = new System.Windows.Forms.Panel(); + this.pnlany7 = new System.Windows.Forms.Panel(); + this.pnlany9 = new System.Windows.Forms.Panel(); + this.pnlany5 = new System.Windows.Forms.Panel(); + this.pnlany3 = new System.Windows.Forms.Panel(); + this.pnlany1 = new System.Windows.Forms.Panel(); + this.lblanylevel = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.Panel1 = new System.Windows.Forms.Panel(); + this.lblnewcolourrgb = new System.Windows.Forms.Label(); + this.lblnewcolourname = new System.Windows.Forms.Label(); + this.Label26 = new System.Windows.Forms.Label(); + this.Label17 = new System.Windows.Forms.Label(); + this.lbloldcolourrgb = new System.Windows.Forms.Label(); + this.lbloldcolourname = new System.Windows.Forms.Label(); + this.Label14 = new System.Windows.Forms.Label(); + this.pnlnewcolour = new System.Windows.Forms.Panel(); + this.pnloldcolour = new System.Windows.Forms.Panel(); + this.lblobjecttocolour = new System.Windows.Forms.Label(); + this.pgcontents.SuspendLayout(); + this.pnlpinkcolours.SuspendLayout(); + this.pnlpinkoptions.SuspendLayout(); + this.pnlredcolours.SuspendLayout(); + this.pnlredoptions.SuspendLayout(); + this.pnlbrowncolours.SuspendLayout(); + this.pnlbrownoptions.SuspendLayout(); + this.pnlorangecolours.SuspendLayout(); + this.pnlorangeoptions.SuspendLayout(); + this.pnlyellowcolours.SuspendLayout(); + this.pnlyellowoptions.SuspendLayout(); + this.pnlgreencolours.SuspendLayout(); + this.pnlgreenoptions.SuspendLayout(); + this.pnlbluecolours.SuspendLayout(); + this.pnlblueoptions.SuspendLayout(); + this.pnlpurplecolours.SuspendLayout(); + this.pnlpurpleoptions.SuspendLayout(); + this.pnlgraycolours.SuspendLayout(); + this.pnlanycolours.SuspendLayout(); + this.pnlanyoptions.SuspendLayout(); + this.Panel1.SuspendLayout(); + this.SuspendLayout(); + // + // pgcontents + // + this.pgcontents.Controls.Add(this.pnlpinkcolours); + this.pgcontents.Controls.Add(this.pnlredcolours); + this.pgcontents.Controls.Add(this.pnlbrowncolours); + this.pgcontents.Controls.Add(this.pnlorangecolours); + this.pgcontents.Controls.Add(this.pnlyellowcolours); + this.pgcontents.Controls.Add(this.pnlgreencolours); + this.pgcontents.Controls.Add(this.pnlbluecolours); + this.pgcontents.Controls.Add(this.pnlpurplecolours); + this.pgcontents.Controls.Add(this.pnlgraycolours); + this.pgcontents.Controls.Add(this.pnlanycolours); + this.pgcontents.Controls.Add(this.Panel1); + this.pgcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.pgcontents.Location = new System.Drawing.Point(0, 0); + this.pgcontents.Name = "pgcontents"; + this.pgcontents.Size = new System.Drawing.Size(552, 657); + this.pgcontents.TabIndex = 20; + // + // pnlpinkcolours + // + this.pnlpinkcolours.BackColor = System.Drawing.Color.White; + this.pnlpinkcolours.Controls.Add(this.pnlpinkoptions); + this.pnlpinkcolours.Controls.Add(this.pnlpinkcustomcolour); + this.pnlpinkcolours.Controls.Add(this.pnlpink16); + this.pnlpinkcolours.Controls.Add(this.pnlpink12); + this.pnlpinkcolours.Controls.Add(this.pnlpink14); + this.pnlpinkcolours.Controls.Add(this.pnlpink10); + this.pnlpinkcolours.Controls.Add(this.pnlpink8); + this.pnlpinkcolours.Controls.Add(this.pnlpink4); + this.pnlpinkcolours.Controls.Add(this.pnlpink6); + this.pnlpinkcolours.Controls.Add(this.pnlpink15); + this.pnlpinkcolours.Controls.Add(this.pnlpink2); + this.pnlpinkcolours.Controls.Add(this.pnlpink13); + this.pnlpinkcolours.Controls.Add(this.pnlpink11); + this.pnlpinkcolours.Controls.Add(this.pnlpink7); + this.pnlpinkcolours.Controls.Add(this.pnlpink9); + this.pnlpinkcolours.Controls.Add(this.pnlpink5); + this.pnlpinkcolours.Controls.Add(this.pnlpink3); + this.pnlpinkcolours.Controls.Add(this.pnlpink1); + this.pnlpinkcolours.Controls.Add(this.lblpinklevel); + this.pnlpinkcolours.Controls.Add(this.Label23); + this.pnlpinkcolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlpinkcolours.Location = new System.Drawing.Point(0, 521); + this.pnlpinkcolours.Name = "pnlpinkcolours"; + this.pnlpinkcolours.Size = new System.Drawing.Size(552, 46); + this.pnlpinkcolours.TabIndex = 11; + this.pnlpinkcolours.Visible = false; + // + // pnlpinkoptions + // + this.pnlpinkoptions.Controls.Add(this.Label35); + this.pnlpinkoptions.Controls.Add(this.txtpinksgreen); + this.pnlpinkoptions.Controls.Add(this.txtpinksred); + this.pnlpinkoptions.Controls.Add(this.Label36); + this.pnlpinkoptions.Controls.Add(this.Label37); + this.pnlpinkoptions.Controls.Add(this.txtpinksblue); + this.pnlpinkoptions.Location = new System.Drawing.Point(282, 2); + this.pnlpinkoptions.Name = "pnlpinkoptions"; + this.pnlpinkoptions.Size = new System.Drawing.Size(120, 40); + this.pnlpinkoptions.TabIndex = 33; + this.pnlpinkoptions.Visible = false; + // + // Label35 + // + this.Label35.AutoSize = true; + this.Label35.BackColor = System.Drawing.Color.Transparent; + this.Label35.Location = new System.Drawing.Point(56, 24); + this.Label35.Name = "Label35"; + this.Label35.Size = new System.Drawing.Size(39, 13); + this.Label35.TabIndex = 26; + this.Label35.Text = "Green:"; + // + // txtpinksgreen + // + this.txtpinksgreen.BackColor = System.Drawing.Color.White; + this.txtpinksgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpinksgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpinksgreen.Location = new System.Drawing.Point(95, 22); + this.txtpinksgreen.Multiline = true; + this.txtpinksgreen.Name = "txtpinksgreen"; + this.txtpinksgreen.Size = new System.Drawing.Size(23, 17); + this.txtpinksgreen.TabIndex = 25; + this.txtpinksgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtpinksgreen.TextChanged += new System.EventHandler(this.txtpinksred_TextChanged); + // + // txtpinksred + // + this.txtpinksred.BackColor = System.Drawing.Color.White; + this.txtpinksred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpinksred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpinksred.Location = new System.Drawing.Point(64, 2); + this.txtpinksred.Multiline = true; + this.txtpinksred.Name = "txtpinksred"; + this.txtpinksred.Size = new System.Drawing.Size(23, 17); + this.txtpinksred.TabIndex = 21; + this.txtpinksred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtpinksred.TextChanged += new System.EventHandler(this.txtpinksred_TextChanged); + // + // Label36 + // + this.Label36.AutoSize = true; + this.Label36.BackColor = System.Drawing.Color.Transparent; + this.Label36.Location = new System.Drawing.Point(1, 23); + this.Label36.Name = "Label36"; + this.Label36.Size = new System.Drawing.Size(31, 13); + this.Label36.TabIndex = 24; + this.Label36.Text = "Blue:"; + // + // Label37 + // + this.Label37.AutoSize = true; + this.Label37.BackColor = System.Drawing.Color.Transparent; + this.Label37.Location = new System.Drawing.Point(33, 4); + this.Label37.Name = "Label37"; + this.Label37.Size = new System.Drawing.Size(30, 13); + this.Label37.TabIndex = 22; + this.Label37.Text = "Red:"; + // + // txtpinksblue + // + this.txtpinksblue.BackColor = System.Drawing.Color.White; + this.txtpinksblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpinksblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpinksblue.Location = new System.Drawing.Point(32, 22); + this.txtpinksblue.Multiline = true; + this.txtpinksblue.Name = "txtpinksblue"; + this.txtpinksblue.Size = new System.Drawing.Size(23, 17); + this.txtpinksblue.TabIndex = 23; + this.txtpinksblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtpinksblue.TextChanged += new System.EventHandler(this.txtpinksred_TextChanged); + // + // pnlpinkcustomcolour + // + this.pnlpinkcustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpinkcustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlpinkcustomcolour.Name = "pnlpinkcustomcolour"; + this.pnlpinkcustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlpinkcustomcolour.TabIndex = 18; + this.pnlpinkcustomcolour.Visible = false; + // + // pnlpink16 + // + this.pnlpink16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink16.Location = new System.Drawing.Point(259, 25); + this.pnlpink16.Name = "pnlpink16"; + this.pnlpink16.Size = new System.Drawing.Size(20, 13); + this.pnlpink16.TabIndex = 17; + this.pnlpink16.Visible = false; + // + // pnlpink12 + // + this.pnlpink12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink12.Location = new System.Drawing.Point(155, 25); + this.pnlpink12.Name = "pnlpink12"; + this.pnlpink12.Size = new System.Drawing.Size(20, 13); + this.pnlpink12.TabIndex = 9; + this.pnlpink12.Visible = false; + // + // pnlpink14 + // + this.pnlpink14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink14.Location = new System.Drawing.Point(207, 25); + this.pnlpink14.Name = "pnlpink14"; + this.pnlpink14.Size = new System.Drawing.Size(20, 13); + this.pnlpink14.TabIndex = 13; + this.pnlpink14.Visible = false; + // + // pnlpink10 + // + this.pnlpink10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink10.Location = new System.Drawing.Point(103, 25); + this.pnlpink10.Name = "pnlpink10"; + this.pnlpink10.Size = new System.Drawing.Size(20, 13); + this.pnlpink10.TabIndex = 5; + this.pnlpink10.Visible = false; + // + // pnlpink8 + // + this.pnlpink8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink8.Location = new System.Drawing.Point(259, 8); + this.pnlpink8.Name = "pnlpink8"; + this.pnlpink8.Size = new System.Drawing.Size(20, 13); + this.pnlpink8.TabIndex = 16; + this.pnlpink8.Visible = false; + // + // pnlpink4 + // + this.pnlpink4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink4.Location = new System.Drawing.Point(155, 8); + this.pnlpink4.Name = "pnlpink4"; + this.pnlpink4.Size = new System.Drawing.Size(20, 13); + this.pnlpink4.TabIndex = 8; + this.pnlpink4.Visible = false; + // + // pnlpink6 + // + this.pnlpink6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink6.Location = new System.Drawing.Point(207, 8); + this.pnlpink6.Name = "pnlpink6"; + this.pnlpink6.Size = new System.Drawing.Size(20, 13); + this.pnlpink6.TabIndex = 12; + this.pnlpink6.Visible = false; + // + // pnlpink15 + // + this.pnlpink15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink15.Location = new System.Drawing.Point(233, 25); + this.pnlpink15.Name = "pnlpink15"; + this.pnlpink15.Size = new System.Drawing.Size(20, 13); + this.pnlpink15.TabIndex = 15; + this.pnlpink15.Visible = false; + // + // pnlpink2 + // + this.pnlpink2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink2.Location = new System.Drawing.Point(103, 8); + this.pnlpink2.Name = "pnlpink2"; + this.pnlpink2.Size = new System.Drawing.Size(20, 13); + this.pnlpink2.TabIndex = 4; + this.pnlpink2.Visible = false; + // + // pnlpink13 + // + this.pnlpink13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink13.Location = new System.Drawing.Point(181, 25); + this.pnlpink13.Name = "pnlpink13"; + this.pnlpink13.Size = new System.Drawing.Size(20, 13); + this.pnlpink13.TabIndex = 11; + this.pnlpink13.Visible = false; + // + // pnlpink11 + // + this.pnlpink11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink11.Location = new System.Drawing.Point(129, 25); + this.pnlpink11.Name = "pnlpink11"; + this.pnlpink11.Size = new System.Drawing.Size(20, 13); + this.pnlpink11.TabIndex = 7; + this.pnlpink11.Visible = false; + // + // pnlpink7 + // + this.pnlpink7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink7.Location = new System.Drawing.Point(233, 8); + this.pnlpink7.Name = "pnlpink7"; + this.pnlpink7.Size = new System.Drawing.Size(20, 13); + this.pnlpink7.TabIndex = 14; + this.pnlpink7.Visible = false; + // + // pnlpink9 + // + this.pnlpink9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink9.Location = new System.Drawing.Point(77, 25); + this.pnlpink9.Name = "pnlpink9"; + this.pnlpink9.Size = new System.Drawing.Size(20, 13); + this.pnlpink9.TabIndex = 3; + this.pnlpink9.Visible = false; + // + // pnlpink5 + // + this.pnlpink5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink5.Location = new System.Drawing.Point(181, 8); + this.pnlpink5.Name = "pnlpink5"; + this.pnlpink5.Size = new System.Drawing.Size(20, 13); + this.pnlpink5.TabIndex = 10; + this.pnlpink5.Visible = false; + // + // pnlpink3 + // + this.pnlpink3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink3.Location = new System.Drawing.Point(129, 8); + this.pnlpink3.Name = "pnlpink3"; + this.pnlpink3.Size = new System.Drawing.Size(20, 13); + this.pnlpink3.TabIndex = 6; + this.pnlpink3.Visible = false; + // + // pnlpink1 + // + this.pnlpink1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpink1.Location = new System.Drawing.Point(77, 8); + this.pnlpink1.Name = "pnlpink1"; + this.pnlpink1.Size = new System.Drawing.Size(20, 13); + this.pnlpink1.TabIndex = 2; + this.pnlpink1.Visible = false; + // + // lblpinklevel + // + this.lblpinklevel.AutoSize = true; + this.lblpinklevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblpinklevel.Location = new System.Drawing.Point(5, 25); + this.lblpinklevel.Name = "lblpinklevel"; + this.lblpinklevel.Size = new System.Drawing.Size(49, 15); + this.lblpinklevel.TabIndex = 1; + this.lblpinklevel.Text = "Level: 4"; + // + // Label23 + // + this.Label23.AutoSize = true; + this.Label23.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label23.Location = new System.Drawing.Point(3, 2); + this.Label23.Name = "Label23"; + this.Label23.Size = new System.Drawing.Size(48, 22); + this.Label23.TabIndex = 0; + this.Label23.Text = "Pink"; + // + // pnlredcolours + // + this.pnlredcolours.BackColor = System.Drawing.Color.White; + this.pnlredcolours.Controls.Add(this.pnlredoptions); + this.pnlredcolours.Controls.Add(this.pnlredcustomcolour); + this.pnlredcolours.Controls.Add(this.pnlred16); + this.pnlredcolours.Controls.Add(this.pnlred12); + this.pnlredcolours.Controls.Add(this.pnlred14); + this.pnlredcolours.Controls.Add(this.pnlred10); + this.pnlredcolours.Controls.Add(this.pnlred8); + this.pnlredcolours.Controls.Add(this.pnlred4); + this.pnlredcolours.Controls.Add(this.pnlred6); + this.pnlredcolours.Controls.Add(this.pnlred15); + this.pnlredcolours.Controls.Add(this.pnlred2); + this.pnlredcolours.Controls.Add(this.pnlred13); + this.pnlredcolours.Controls.Add(this.pnlred11); + this.pnlredcolours.Controls.Add(this.pnlred7); + this.pnlredcolours.Controls.Add(this.pnlred9); + this.pnlredcolours.Controls.Add(this.pnlred5); + this.pnlredcolours.Controls.Add(this.pnlred3); + this.pnlredcolours.Controls.Add(this.pnlred1); + this.pnlredcolours.Controls.Add(this.lblredlevel); + this.pnlredcolours.Controls.Add(this.Label21); + this.pnlredcolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlredcolours.Location = new System.Drawing.Point(0, 475); + this.pnlredcolours.Name = "pnlredcolours"; + this.pnlredcolours.Size = new System.Drawing.Size(552, 46); + this.pnlredcolours.TabIndex = 10; + this.pnlredcolours.Visible = false; + // + // pnlredoptions + // + this.pnlredoptions.Controls.Add(this.Label32); + this.pnlredoptions.Controls.Add(this.txtredsblue); + this.pnlredoptions.Controls.Add(this.txtredsred); + this.pnlredoptions.Controls.Add(this.Label33); + this.pnlredoptions.Controls.Add(this.Label34); + this.pnlredoptions.Controls.Add(this.txtredsgreen); + this.pnlredoptions.Location = new System.Drawing.Point(282, 2); + this.pnlredoptions.Name = "pnlredoptions"; + this.pnlredoptions.Size = new System.Drawing.Size(120, 40); + this.pnlredoptions.TabIndex = 32; + this.pnlredoptions.Visible = false; + // + // Label32 + // + this.Label32.AutoSize = true; + this.Label32.BackColor = System.Drawing.Color.Transparent; + this.Label32.Location = new System.Drawing.Point(64, 24); + this.Label32.Name = "Label32"; + this.Label32.Size = new System.Drawing.Size(31, 13); + this.Label32.TabIndex = 26; + this.Label32.Text = "Blue:"; + // + // txtredsblue + // + this.txtredsblue.BackColor = System.Drawing.Color.White; + this.txtredsblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtredsblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtredsblue.Location = new System.Drawing.Point(95, 22); + this.txtredsblue.Multiline = true; + this.txtredsblue.Name = "txtredsblue"; + this.txtredsblue.Size = new System.Drawing.Size(23, 17); + this.txtredsblue.TabIndex = 25; + this.txtredsblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // txtredsred + // + this.txtredsred.BackColor = System.Drawing.Color.White; + this.txtredsred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtredsred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtredsred.Location = new System.Drawing.Point(64, 2); + this.txtredsred.Multiline = true; + this.txtredsred.Name = "txtredsred"; + this.txtredsred.Size = new System.Drawing.Size(23, 17); + this.txtredsred.TabIndex = 21; + this.txtredsred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label33 + // + this.Label33.AutoSize = true; + this.Label33.BackColor = System.Drawing.Color.Transparent; + this.Label33.Location = new System.Drawing.Point(1, 23); + this.Label33.Name = "Label33"; + this.Label33.Size = new System.Drawing.Size(39, 13); + this.Label33.TabIndex = 24; + this.Label33.Text = "Green:"; + // + // Label34 + // + this.Label34.AutoSize = true; + this.Label34.BackColor = System.Drawing.Color.Transparent; + this.Label34.Location = new System.Drawing.Point(33, 4); + this.Label34.Name = "Label34"; + this.Label34.Size = new System.Drawing.Size(30, 13); + this.Label34.TabIndex = 22; + this.Label34.Text = "Red:"; + // + // txtredsgreen + // + this.txtredsgreen.BackColor = System.Drawing.Color.White; + this.txtredsgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtredsgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtredsgreen.Location = new System.Drawing.Point(40, 22); + this.txtredsgreen.Multiline = true; + this.txtredsgreen.Name = "txtredsgreen"; + this.txtredsgreen.Size = new System.Drawing.Size(23, 17); + this.txtredsgreen.TabIndex = 23; + this.txtredsgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pnlredcustomcolour + // + this.pnlredcustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlredcustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlredcustomcolour.Name = "pnlredcustomcolour"; + this.pnlredcustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlredcustomcolour.TabIndex = 18; + this.pnlredcustomcolour.Visible = false; + // + // pnlred16 + // + this.pnlred16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred16.Location = new System.Drawing.Point(259, 25); + this.pnlred16.Name = "pnlred16"; + this.pnlred16.Size = new System.Drawing.Size(20, 13); + this.pnlred16.TabIndex = 17; + this.pnlred16.Visible = false; + // + // pnlred12 + // + this.pnlred12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred12.Location = new System.Drawing.Point(155, 25); + this.pnlred12.Name = "pnlred12"; + this.pnlred12.Size = new System.Drawing.Size(20, 13); + this.pnlred12.TabIndex = 9; + this.pnlred12.Visible = false; + // + // pnlred14 + // + this.pnlred14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred14.Location = new System.Drawing.Point(207, 25); + this.pnlred14.Name = "pnlred14"; + this.pnlred14.Size = new System.Drawing.Size(20, 13); + this.pnlred14.TabIndex = 13; + this.pnlred14.Visible = false; + // + // pnlred10 + // + this.pnlred10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred10.Location = new System.Drawing.Point(103, 25); + this.pnlred10.Name = "pnlred10"; + this.pnlred10.Size = new System.Drawing.Size(20, 13); + this.pnlred10.TabIndex = 5; + this.pnlred10.Visible = false; + // + // pnlred8 + // + this.pnlred8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred8.Location = new System.Drawing.Point(259, 8); + this.pnlred8.Name = "pnlred8"; + this.pnlred8.Size = new System.Drawing.Size(20, 13); + this.pnlred8.TabIndex = 16; + this.pnlred8.Visible = false; + // + // pnlred4 + // + this.pnlred4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred4.Location = new System.Drawing.Point(155, 8); + this.pnlred4.Name = "pnlred4"; + this.pnlred4.Size = new System.Drawing.Size(20, 13); + this.pnlred4.TabIndex = 8; + this.pnlred4.Visible = false; + // + // pnlred6 + // + this.pnlred6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred6.Location = new System.Drawing.Point(207, 8); + this.pnlred6.Name = "pnlred6"; + this.pnlred6.Size = new System.Drawing.Size(20, 13); + this.pnlred6.TabIndex = 12; + this.pnlred6.Visible = false; + // + // pnlred15 + // + this.pnlred15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred15.Location = new System.Drawing.Point(233, 25); + this.pnlred15.Name = "pnlred15"; + this.pnlred15.Size = new System.Drawing.Size(20, 13); + this.pnlred15.TabIndex = 15; + this.pnlred15.Visible = false; + // + // pnlred2 + // + this.pnlred2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred2.Location = new System.Drawing.Point(103, 8); + this.pnlred2.Name = "pnlred2"; + this.pnlred2.Size = new System.Drawing.Size(20, 13); + this.pnlred2.TabIndex = 4; + this.pnlred2.Visible = false; + // + // pnlred13 + // + this.pnlred13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred13.Location = new System.Drawing.Point(181, 25); + this.pnlred13.Name = "pnlred13"; + this.pnlred13.Size = new System.Drawing.Size(20, 13); + this.pnlred13.TabIndex = 11; + this.pnlred13.Visible = false; + // + // pnlred11 + // + this.pnlred11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred11.Location = new System.Drawing.Point(129, 25); + this.pnlred11.Name = "pnlred11"; + this.pnlred11.Size = new System.Drawing.Size(20, 13); + this.pnlred11.TabIndex = 7; + this.pnlred11.Visible = false; + // + // pnlred7 + // + this.pnlred7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred7.Location = new System.Drawing.Point(233, 8); + this.pnlred7.Name = "pnlred7"; + this.pnlred7.Size = new System.Drawing.Size(20, 13); + this.pnlred7.TabIndex = 14; + this.pnlred7.Visible = false; + // + // pnlred9 + // + this.pnlred9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred9.Location = new System.Drawing.Point(77, 25); + this.pnlred9.Name = "pnlred9"; + this.pnlred9.Size = new System.Drawing.Size(20, 13); + this.pnlred9.TabIndex = 3; + this.pnlred9.Visible = false; + // + // pnlred5 + // + this.pnlred5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred5.Location = new System.Drawing.Point(181, 8); + this.pnlred5.Name = "pnlred5"; + this.pnlred5.Size = new System.Drawing.Size(20, 13); + this.pnlred5.TabIndex = 10; + this.pnlred5.Visible = false; + // + // pnlred3 + // + this.pnlred3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred3.Location = new System.Drawing.Point(129, 8); + this.pnlred3.Name = "pnlred3"; + this.pnlred3.Size = new System.Drawing.Size(20, 13); + this.pnlred3.TabIndex = 6; + this.pnlred3.Visible = false; + // + // pnlred1 + // + this.pnlred1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlred1.Location = new System.Drawing.Point(77, 8); + this.pnlred1.Name = "pnlred1"; + this.pnlred1.Size = new System.Drawing.Size(20, 13); + this.pnlred1.TabIndex = 2; + this.pnlred1.Visible = false; + // + // lblredlevel + // + this.lblredlevel.AutoSize = true; + this.lblredlevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblredlevel.Location = new System.Drawing.Point(5, 25); + this.lblredlevel.Name = "lblredlevel"; + this.lblredlevel.Size = new System.Drawing.Size(49, 15); + this.lblredlevel.TabIndex = 1; + this.lblredlevel.Text = "Level: 4"; + // + // Label21 + // + this.Label21.AutoSize = true; + this.Label21.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label21.Location = new System.Drawing.Point(3, 2); + this.Label21.Name = "Label21"; + this.Label21.Size = new System.Drawing.Size(42, 22); + this.Label21.TabIndex = 0; + this.Label21.Text = "Red"; + // + // pnlbrowncolours + // + this.pnlbrowncolours.BackColor = System.Drawing.Color.White; + this.pnlbrowncolours.Controls.Add(this.pnlbrownoptions); + this.pnlbrowncolours.Controls.Add(this.pnlbrowncustomcolour); + this.pnlbrowncolours.Controls.Add(this.pnlbrown16); + this.pnlbrowncolours.Controls.Add(this.pnlbrown12); + this.pnlbrowncolours.Controls.Add(this.pnlbrown14); + this.pnlbrowncolours.Controls.Add(this.pnlbrown10); + this.pnlbrowncolours.Controls.Add(this.pnlbrown8); + this.pnlbrowncolours.Controls.Add(this.pnlbrown4); + this.pnlbrowncolours.Controls.Add(this.pnlbrown6); + this.pnlbrowncolours.Controls.Add(this.pnlbrown15); + this.pnlbrowncolours.Controls.Add(this.pnlbrown2); + this.pnlbrowncolours.Controls.Add(this.pnlbrown13); + this.pnlbrowncolours.Controls.Add(this.pnlbrown11); + this.pnlbrowncolours.Controls.Add(this.pnlbrown7); + this.pnlbrowncolours.Controls.Add(this.pnlbrown9); + this.pnlbrowncolours.Controls.Add(this.pnlbrown5); + this.pnlbrowncolours.Controls.Add(this.pnlbrown3); + this.pnlbrowncolours.Controls.Add(this.pnlbrown1); + this.pnlbrowncolours.Controls.Add(this.lblbrownlevel); + this.pnlbrowncolours.Controls.Add(this.Label19); + this.pnlbrowncolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlbrowncolours.Location = new System.Drawing.Point(0, 429); + this.pnlbrowncolours.Name = "pnlbrowncolours"; + this.pnlbrowncolours.Size = new System.Drawing.Size(552, 46); + this.pnlbrowncolours.TabIndex = 8; + this.pnlbrowncolours.Visible = false; + // + // pnlbrownoptions + // + this.pnlbrownoptions.Controls.Add(this.Label29); + this.pnlbrownoptions.Controls.Add(this.txtbrownsblue); + this.pnlbrownoptions.Controls.Add(this.txtbrownsred); + this.pnlbrownoptions.Controls.Add(this.Label30); + this.pnlbrownoptions.Controls.Add(this.Label31); + this.pnlbrownoptions.Controls.Add(this.txtbrownsgreen); + this.pnlbrownoptions.Location = new System.Drawing.Point(282, 3); + this.pnlbrownoptions.Name = "pnlbrownoptions"; + this.pnlbrownoptions.Size = new System.Drawing.Size(120, 40); + this.pnlbrownoptions.TabIndex = 31; + this.pnlbrownoptions.Visible = false; + // + // Label29 + // + this.Label29.AutoSize = true; + this.Label29.BackColor = System.Drawing.Color.Transparent; + this.Label29.Location = new System.Drawing.Point(64, 24); + this.Label29.Name = "Label29"; + this.Label29.Size = new System.Drawing.Size(31, 13); + this.Label29.TabIndex = 26; + this.Label29.Text = "Blue:"; + // + // txtbrownsblue + // + this.txtbrownsblue.BackColor = System.Drawing.Color.White; + this.txtbrownsblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtbrownsblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtbrownsblue.Location = new System.Drawing.Point(95, 22); + this.txtbrownsblue.Multiline = true; + this.txtbrownsblue.Name = "txtbrownsblue"; + this.txtbrownsblue.Size = new System.Drawing.Size(23, 17); + this.txtbrownsblue.TabIndex = 25; + this.txtbrownsblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // txtbrownsred + // + this.txtbrownsred.BackColor = System.Drawing.Color.White; + this.txtbrownsred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtbrownsred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtbrownsred.Location = new System.Drawing.Point(64, 2); + this.txtbrownsred.Multiline = true; + this.txtbrownsred.Name = "txtbrownsred"; + this.txtbrownsred.Size = new System.Drawing.Size(23, 17); + this.txtbrownsred.TabIndex = 21; + this.txtbrownsred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label30 + // + this.Label30.AutoSize = true; + this.Label30.BackColor = System.Drawing.Color.Transparent; + this.Label30.Location = new System.Drawing.Point(1, 23); + this.Label30.Name = "Label30"; + this.Label30.Size = new System.Drawing.Size(39, 13); + this.Label30.TabIndex = 24; + this.Label30.Text = "Green:"; + // + // Label31 + // + this.Label31.AutoSize = true; + this.Label31.BackColor = System.Drawing.Color.Transparent; + this.Label31.Location = new System.Drawing.Point(33, 4); + this.Label31.Name = "Label31"; + this.Label31.Size = new System.Drawing.Size(30, 13); + this.Label31.TabIndex = 22; + this.Label31.Text = "Red:"; + // + // txtbrownsgreen + // + this.txtbrownsgreen.BackColor = System.Drawing.Color.White; + this.txtbrownsgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtbrownsgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtbrownsgreen.Location = new System.Drawing.Point(40, 22); + this.txtbrownsgreen.Multiline = true; + this.txtbrownsgreen.Name = "txtbrownsgreen"; + this.txtbrownsgreen.Size = new System.Drawing.Size(23, 17); + this.txtbrownsgreen.TabIndex = 23; + this.txtbrownsgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pnlbrowncustomcolour + // + this.pnlbrowncustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrowncustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlbrowncustomcolour.Name = "pnlbrowncustomcolour"; + this.pnlbrowncustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlbrowncustomcolour.TabIndex = 18; + this.pnlbrowncustomcolour.Visible = false; + // + // pnlbrown16 + // + this.pnlbrown16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown16.Location = new System.Drawing.Point(259, 25); + this.pnlbrown16.Name = "pnlbrown16"; + this.pnlbrown16.Size = new System.Drawing.Size(20, 13); + this.pnlbrown16.TabIndex = 17; + this.pnlbrown16.Visible = false; + // + // pnlbrown12 + // + this.pnlbrown12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown12.Location = new System.Drawing.Point(155, 25); + this.pnlbrown12.Name = "pnlbrown12"; + this.pnlbrown12.Size = new System.Drawing.Size(20, 13); + this.pnlbrown12.TabIndex = 9; + this.pnlbrown12.Visible = false; + // + // pnlbrown14 + // + this.pnlbrown14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown14.Location = new System.Drawing.Point(207, 25); + this.pnlbrown14.Name = "pnlbrown14"; + this.pnlbrown14.Size = new System.Drawing.Size(20, 13); + this.pnlbrown14.TabIndex = 13; + this.pnlbrown14.Visible = false; + // + // pnlbrown10 + // + this.pnlbrown10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown10.Location = new System.Drawing.Point(103, 25); + this.pnlbrown10.Name = "pnlbrown10"; + this.pnlbrown10.Size = new System.Drawing.Size(20, 13); + this.pnlbrown10.TabIndex = 5; + this.pnlbrown10.Visible = false; + // + // pnlbrown8 + // + this.pnlbrown8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown8.Location = new System.Drawing.Point(259, 8); + this.pnlbrown8.Name = "pnlbrown8"; + this.pnlbrown8.Size = new System.Drawing.Size(20, 13); + this.pnlbrown8.TabIndex = 16; + this.pnlbrown8.Visible = false; + // + // pnlbrown4 + // + this.pnlbrown4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown4.Location = new System.Drawing.Point(155, 8); + this.pnlbrown4.Name = "pnlbrown4"; + this.pnlbrown4.Size = new System.Drawing.Size(20, 13); + this.pnlbrown4.TabIndex = 8; + this.pnlbrown4.Visible = false; + // + // pnlbrown6 + // + this.pnlbrown6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown6.Location = new System.Drawing.Point(207, 8); + this.pnlbrown6.Name = "pnlbrown6"; + this.pnlbrown6.Size = new System.Drawing.Size(20, 13); + this.pnlbrown6.TabIndex = 12; + this.pnlbrown6.Visible = false; + // + // pnlbrown15 + // + this.pnlbrown15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown15.Location = new System.Drawing.Point(233, 25); + this.pnlbrown15.Name = "pnlbrown15"; + this.pnlbrown15.Size = new System.Drawing.Size(20, 13); + this.pnlbrown15.TabIndex = 15; + this.pnlbrown15.Visible = false; + // + // pnlbrown2 + // + this.pnlbrown2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown2.Location = new System.Drawing.Point(103, 8); + this.pnlbrown2.Name = "pnlbrown2"; + this.pnlbrown2.Size = new System.Drawing.Size(20, 13); + this.pnlbrown2.TabIndex = 4; + this.pnlbrown2.Visible = false; + // + // pnlbrown13 + // + this.pnlbrown13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown13.Location = new System.Drawing.Point(181, 25); + this.pnlbrown13.Name = "pnlbrown13"; + this.pnlbrown13.Size = new System.Drawing.Size(20, 13); + this.pnlbrown13.TabIndex = 11; + this.pnlbrown13.Visible = false; + // + // pnlbrown11 + // + this.pnlbrown11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown11.Location = new System.Drawing.Point(129, 25); + this.pnlbrown11.Name = "pnlbrown11"; + this.pnlbrown11.Size = new System.Drawing.Size(20, 13); + this.pnlbrown11.TabIndex = 7; + this.pnlbrown11.Visible = false; + // + // pnlbrown7 + // + this.pnlbrown7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown7.Location = new System.Drawing.Point(233, 8); + this.pnlbrown7.Name = "pnlbrown7"; + this.pnlbrown7.Size = new System.Drawing.Size(20, 13); + this.pnlbrown7.TabIndex = 14; + this.pnlbrown7.Visible = false; + // + // pnlbrown9 + // + this.pnlbrown9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown9.Location = new System.Drawing.Point(77, 25); + this.pnlbrown9.Name = "pnlbrown9"; + this.pnlbrown9.Size = new System.Drawing.Size(20, 13); + this.pnlbrown9.TabIndex = 3; + this.pnlbrown9.Visible = false; + // + // pnlbrown5 + // + this.pnlbrown5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown5.Location = new System.Drawing.Point(181, 8); + this.pnlbrown5.Name = "pnlbrown5"; + this.pnlbrown5.Size = new System.Drawing.Size(20, 13); + this.pnlbrown5.TabIndex = 10; + this.pnlbrown5.Visible = false; + // + // pnlbrown3 + // + this.pnlbrown3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown3.Location = new System.Drawing.Point(129, 8); + this.pnlbrown3.Name = "pnlbrown3"; + this.pnlbrown3.Size = new System.Drawing.Size(20, 13); + this.pnlbrown3.TabIndex = 6; + this.pnlbrown3.Visible = false; + // + // pnlbrown1 + // + this.pnlbrown1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbrown1.Location = new System.Drawing.Point(77, 8); + this.pnlbrown1.Name = "pnlbrown1"; + this.pnlbrown1.Size = new System.Drawing.Size(20, 13); + this.pnlbrown1.TabIndex = 2; + this.pnlbrown1.Visible = false; + // + // lblbrownlevel + // + this.lblbrownlevel.AutoSize = true; + this.lblbrownlevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblbrownlevel.Location = new System.Drawing.Point(5, 25); + this.lblbrownlevel.Name = "lblbrownlevel"; + this.lblbrownlevel.Size = new System.Drawing.Size(49, 15); + this.lblbrownlevel.TabIndex = 1; + this.lblbrownlevel.Text = "Level: 4"; + // + // Label19 + // + this.Label19.AutoSize = true; + this.Label19.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label19.Location = new System.Drawing.Point(3, 2); + this.Label19.Name = "Label19"; + this.Label19.Size = new System.Drawing.Size(67, 22); + this.Label19.TabIndex = 0; + this.Label19.Text = "Brown"; + // + // pnlorangecolours + // + this.pnlorangecolours.BackColor = System.Drawing.Color.White; + this.pnlorangecolours.Controls.Add(this.pnlorangeoptions); + this.pnlorangecolours.Controls.Add(this.pnlorangecustomcolour); + this.pnlorangecolours.Controls.Add(this.pnlorange16); + this.pnlorangecolours.Controls.Add(this.pnlorange12); + this.pnlorangecolours.Controls.Add(this.pnlorange14); + this.pnlorangecolours.Controls.Add(this.pnlorange10); + this.pnlorangecolours.Controls.Add(this.pnlorange8); + this.pnlorangecolours.Controls.Add(this.pnlorange4); + this.pnlorangecolours.Controls.Add(this.pnlorange6); + this.pnlorangecolours.Controls.Add(this.pnlorange15); + this.pnlorangecolours.Controls.Add(this.pnlorange2); + this.pnlorangecolours.Controls.Add(this.pnlorange13); + this.pnlorangecolours.Controls.Add(this.pnlorange11); + this.pnlorangecolours.Controls.Add(this.pnlorange7); + this.pnlorangecolours.Controls.Add(this.pnlorange9); + this.pnlorangecolours.Controls.Add(this.pnlorange5); + this.pnlorangecolours.Controls.Add(this.pnlorange3); + this.pnlorangecolours.Controls.Add(this.pnlorange1); + this.pnlorangecolours.Controls.Add(this.lblorangelevel); + this.pnlorangecolours.Controls.Add(this.Label13); + this.pnlorangecolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlorangecolours.Location = new System.Drawing.Point(0, 383); + this.pnlorangecolours.Name = "pnlorangecolours"; + this.pnlorangecolours.Size = new System.Drawing.Size(552, 46); + this.pnlorangecolours.TabIndex = 7; + this.pnlorangecolours.Visible = false; + // + // pnlorangeoptions + // + this.pnlorangeoptions.Controls.Add(this.Label25); + this.pnlorangeoptions.Controls.Add(this.txtorangesblue); + this.pnlorangeoptions.Controls.Add(this.txtorangesred); + this.pnlorangeoptions.Controls.Add(this.Label27); + this.pnlorangeoptions.Controls.Add(this.Label28); + this.pnlorangeoptions.Controls.Add(this.txtorangesgreen); + this.pnlorangeoptions.Location = new System.Drawing.Point(282, 3); + this.pnlorangeoptions.Name = "pnlorangeoptions"; + this.pnlorangeoptions.Size = new System.Drawing.Size(120, 40); + this.pnlorangeoptions.TabIndex = 30; + this.pnlorangeoptions.Visible = false; + // + // Label25 + // + this.Label25.AutoSize = true; + this.Label25.BackColor = System.Drawing.Color.Transparent; + this.Label25.Location = new System.Drawing.Point(64, 24); + this.Label25.Name = "Label25"; + this.Label25.Size = new System.Drawing.Size(31, 13); + this.Label25.TabIndex = 26; + this.Label25.Text = "Blue:"; + // + // txtorangesblue + // + this.txtorangesblue.BackColor = System.Drawing.Color.White; + this.txtorangesblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtorangesblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtorangesblue.Location = new System.Drawing.Point(95, 22); + this.txtorangesblue.Multiline = true; + this.txtorangesblue.Name = "txtorangesblue"; + this.txtorangesblue.Size = new System.Drawing.Size(23, 17); + this.txtorangesblue.TabIndex = 25; + this.txtorangesblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // txtorangesred + // + this.txtorangesred.BackColor = System.Drawing.Color.White; + this.txtorangesred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtorangesred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtorangesred.Location = new System.Drawing.Point(64, 2); + this.txtorangesred.Multiline = true; + this.txtorangesred.Name = "txtorangesred"; + this.txtorangesred.Size = new System.Drawing.Size(23, 17); + this.txtorangesred.TabIndex = 21; + this.txtorangesred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label27 + // + this.Label27.AutoSize = true; + this.Label27.BackColor = System.Drawing.Color.Transparent; + this.Label27.Location = new System.Drawing.Point(1, 23); + this.Label27.Name = "Label27"; + this.Label27.Size = new System.Drawing.Size(39, 13); + this.Label27.TabIndex = 24; + this.Label27.Text = "Green:"; + // + // Label28 + // + this.Label28.AutoSize = true; + this.Label28.BackColor = System.Drawing.Color.Transparent; + this.Label28.Location = new System.Drawing.Point(33, 4); + this.Label28.Name = "Label28"; + this.Label28.Size = new System.Drawing.Size(30, 13); + this.Label28.TabIndex = 22; + this.Label28.Text = "Red:"; + // + // txtorangesgreen + // + this.txtorangesgreen.BackColor = System.Drawing.Color.White; + this.txtorangesgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtorangesgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtorangesgreen.Location = new System.Drawing.Point(40, 22); + this.txtorangesgreen.Multiline = true; + this.txtorangesgreen.Name = "txtorangesgreen"; + this.txtorangesgreen.Size = new System.Drawing.Size(23, 17); + this.txtorangesgreen.TabIndex = 23; + this.txtorangesgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pnlorangecustomcolour + // + this.pnlorangecustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorangecustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlorangecustomcolour.Name = "pnlorangecustomcolour"; + this.pnlorangecustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlorangecustomcolour.TabIndex = 18; + this.pnlorangecustomcolour.Visible = false; + // + // pnlorange16 + // + this.pnlorange16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange16.Location = new System.Drawing.Point(259, 25); + this.pnlorange16.Name = "pnlorange16"; + this.pnlorange16.Size = new System.Drawing.Size(20, 13); + this.pnlorange16.TabIndex = 17; + this.pnlorange16.Visible = false; + // + // pnlorange12 + // + this.pnlorange12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange12.Location = new System.Drawing.Point(155, 25); + this.pnlorange12.Name = "pnlorange12"; + this.pnlorange12.Size = new System.Drawing.Size(20, 13); + this.pnlorange12.TabIndex = 9; + this.pnlorange12.Visible = false; + // + // pnlorange14 + // + this.pnlorange14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange14.Location = new System.Drawing.Point(207, 25); + this.pnlorange14.Name = "pnlorange14"; + this.pnlorange14.Size = new System.Drawing.Size(20, 13); + this.pnlorange14.TabIndex = 13; + this.pnlorange14.Visible = false; + // + // pnlorange10 + // + this.pnlorange10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange10.Location = new System.Drawing.Point(103, 25); + this.pnlorange10.Name = "pnlorange10"; + this.pnlorange10.Size = new System.Drawing.Size(20, 13); + this.pnlorange10.TabIndex = 5; + this.pnlorange10.Visible = false; + // + // pnlorange8 + // + this.pnlorange8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange8.Location = new System.Drawing.Point(259, 8); + this.pnlorange8.Name = "pnlorange8"; + this.pnlorange8.Size = new System.Drawing.Size(20, 13); + this.pnlorange8.TabIndex = 16; + this.pnlorange8.Visible = false; + // + // pnlorange4 + // + this.pnlorange4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange4.Location = new System.Drawing.Point(155, 8); + this.pnlorange4.Name = "pnlorange4"; + this.pnlorange4.Size = new System.Drawing.Size(20, 13); + this.pnlorange4.TabIndex = 8; + this.pnlorange4.Visible = false; + // + // pnlorange6 + // + this.pnlorange6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange6.Location = new System.Drawing.Point(207, 8); + this.pnlorange6.Name = "pnlorange6"; + this.pnlorange6.Size = new System.Drawing.Size(20, 13); + this.pnlorange6.TabIndex = 12; + this.pnlorange6.Visible = false; + // + // pnlorange15 + // + this.pnlorange15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange15.Location = new System.Drawing.Point(233, 25); + this.pnlorange15.Name = "pnlorange15"; + this.pnlorange15.Size = new System.Drawing.Size(20, 13); + this.pnlorange15.TabIndex = 15; + this.pnlorange15.Visible = false; + // + // pnlorange2 + // + this.pnlorange2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange2.Location = new System.Drawing.Point(103, 8); + this.pnlorange2.Name = "pnlorange2"; + this.pnlorange2.Size = new System.Drawing.Size(20, 13); + this.pnlorange2.TabIndex = 4; + this.pnlorange2.Visible = false; + // + // pnlorange13 + // + this.pnlorange13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange13.Location = new System.Drawing.Point(181, 25); + this.pnlorange13.Name = "pnlorange13"; + this.pnlorange13.Size = new System.Drawing.Size(20, 13); + this.pnlorange13.TabIndex = 11; + this.pnlorange13.Visible = false; + // + // pnlorange11 + // + this.pnlorange11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange11.Location = new System.Drawing.Point(129, 25); + this.pnlorange11.Name = "pnlorange11"; + this.pnlorange11.Size = new System.Drawing.Size(20, 13); + this.pnlorange11.TabIndex = 7; + this.pnlorange11.Visible = false; + // + // pnlorange7 + // + this.pnlorange7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange7.Location = new System.Drawing.Point(233, 8); + this.pnlorange7.Name = "pnlorange7"; + this.pnlorange7.Size = new System.Drawing.Size(20, 13); + this.pnlorange7.TabIndex = 14; + this.pnlorange7.Visible = false; + // + // pnlorange9 + // + this.pnlorange9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange9.Location = new System.Drawing.Point(77, 25); + this.pnlorange9.Name = "pnlorange9"; + this.pnlorange9.Size = new System.Drawing.Size(20, 13); + this.pnlorange9.TabIndex = 3; + this.pnlorange9.Visible = false; + // + // pnlorange5 + // + this.pnlorange5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange5.Location = new System.Drawing.Point(181, 8); + this.pnlorange5.Name = "pnlorange5"; + this.pnlorange5.Size = new System.Drawing.Size(20, 13); + this.pnlorange5.TabIndex = 10; + this.pnlorange5.Visible = false; + // + // pnlorange3 + // + this.pnlorange3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange3.Location = new System.Drawing.Point(129, 8); + this.pnlorange3.Name = "pnlorange3"; + this.pnlorange3.Size = new System.Drawing.Size(20, 13); + this.pnlorange3.TabIndex = 6; + this.pnlorange3.Visible = false; + // + // pnlorange1 + // + this.pnlorange1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlorange1.Location = new System.Drawing.Point(77, 8); + this.pnlorange1.Name = "pnlorange1"; + this.pnlorange1.Size = new System.Drawing.Size(20, 13); + this.pnlorange1.TabIndex = 2; + this.pnlorange1.Visible = false; + // + // lblorangelevel + // + this.lblorangelevel.AutoSize = true; + this.lblorangelevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblorangelevel.Location = new System.Drawing.Point(5, 25); + this.lblorangelevel.Name = "lblorangelevel"; + this.lblorangelevel.Size = new System.Drawing.Size(49, 15); + this.lblorangelevel.TabIndex = 1; + this.lblorangelevel.Text = "Level: 4"; + // + // Label13 + // + this.Label13.AutoSize = true; + this.Label13.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label13.Location = new System.Drawing.Point(3, 2); + this.Label13.Name = "Label13"; + this.Label13.Size = new System.Drawing.Size(74, 22); + this.Label13.TabIndex = 0; + this.Label13.Text = "Orange"; + // + // pnlyellowcolours + // + this.pnlyellowcolours.BackColor = System.Drawing.Color.White; + this.pnlyellowcolours.Controls.Add(this.pnlyellowoptions); + this.pnlyellowcolours.Controls.Add(this.pnlyellowcustomcolour); + this.pnlyellowcolours.Controls.Add(this.pnlyellow16); + this.pnlyellowcolours.Controls.Add(this.pnlyellow12); + this.pnlyellowcolours.Controls.Add(this.pnlyellow14); + this.pnlyellowcolours.Controls.Add(this.pnlyellow10); + this.pnlyellowcolours.Controls.Add(this.pnlyellow8); + this.pnlyellowcolours.Controls.Add(this.pnlyellow4); + this.pnlyellowcolours.Controls.Add(this.pnlyellow6); + this.pnlyellowcolours.Controls.Add(this.pnlyellow15); + this.pnlyellowcolours.Controls.Add(this.pnlyellow2); + this.pnlyellowcolours.Controls.Add(this.pnlyellow13); + this.pnlyellowcolours.Controls.Add(this.pnlyellow11); + this.pnlyellowcolours.Controls.Add(this.pnlyellow7); + this.pnlyellowcolours.Controls.Add(this.pnlyellow9); + this.pnlyellowcolours.Controls.Add(this.pnlyellow5); + this.pnlyellowcolours.Controls.Add(this.pnlyellow3); + this.pnlyellowcolours.Controls.Add(this.pnlyellow1); + this.pnlyellowcolours.Controls.Add(this.lblyellowlevel); + this.pnlyellowcolours.Controls.Add(this.Label11); + this.pnlyellowcolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlyellowcolours.Location = new System.Drawing.Point(0, 337); + this.pnlyellowcolours.Name = "pnlyellowcolours"; + this.pnlyellowcolours.Size = new System.Drawing.Size(552, 46); + this.pnlyellowcolours.TabIndex = 6; + this.pnlyellowcolours.Visible = false; + // + // pnlyellowoptions + // + this.pnlyellowoptions.Controls.Add(this.Label20); + this.pnlyellowoptions.Controls.Add(this.txtyellowsblue); + this.pnlyellowoptions.Controls.Add(this.txtyellowsred); + this.pnlyellowoptions.Controls.Add(this.Label22); + this.pnlyellowoptions.Controls.Add(this.Label24); + this.pnlyellowoptions.Controls.Add(this.txtyellowsgreen); + this.pnlyellowoptions.Location = new System.Drawing.Point(282, 3); + this.pnlyellowoptions.Name = "pnlyellowoptions"; + this.pnlyellowoptions.Size = new System.Drawing.Size(120, 40); + this.pnlyellowoptions.TabIndex = 29; + this.pnlyellowoptions.Visible = false; + // + // Label20 + // + this.Label20.AutoSize = true; + this.Label20.BackColor = System.Drawing.Color.Transparent; + this.Label20.Location = new System.Drawing.Point(64, 24); + this.Label20.Name = "Label20"; + this.Label20.Size = new System.Drawing.Size(31, 13); + this.Label20.TabIndex = 26; + this.Label20.Text = "Blue:"; + // + // txtyellowsblue + // + this.txtyellowsblue.BackColor = System.Drawing.Color.White; + this.txtyellowsblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtyellowsblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtyellowsblue.Location = new System.Drawing.Point(95, 22); + this.txtyellowsblue.Multiline = true; + this.txtyellowsblue.Name = "txtyellowsblue"; + this.txtyellowsblue.Size = new System.Drawing.Size(23, 17); + this.txtyellowsblue.TabIndex = 25; + this.txtyellowsblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // txtyellowsred + // + this.txtyellowsred.BackColor = System.Drawing.Color.White; + this.txtyellowsred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtyellowsred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtyellowsred.Location = new System.Drawing.Point(64, 2); + this.txtyellowsred.Multiline = true; + this.txtyellowsred.Name = "txtyellowsred"; + this.txtyellowsred.Size = new System.Drawing.Size(23, 17); + this.txtyellowsred.TabIndex = 21; + this.txtyellowsred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label22 + // + this.Label22.AutoSize = true; + this.Label22.BackColor = System.Drawing.Color.Transparent; + this.Label22.Location = new System.Drawing.Point(1, 23); + this.Label22.Name = "Label22"; + this.Label22.Size = new System.Drawing.Size(39, 13); + this.Label22.TabIndex = 24; + this.Label22.Text = "Green:"; + // + // Label24 + // + this.Label24.AutoSize = true; + this.Label24.BackColor = System.Drawing.Color.Transparent; + this.Label24.Location = new System.Drawing.Point(33, 4); + this.Label24.Name = "Label24"; + this.Label24.Size = new System.Drawing.Size(30, 13); + this.Label24.TabIndex = 22; + this.Label24.Text = "Red:"; + // + // txtyellowsgreen + // + this.txtyellowsgreen.BackColor = System.Drawing.Color.White; + this.txtyellowsgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtyellowsgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtyellowsgreen.Location = new System.Drawing.Point(40, 22); + this.txtyellowsgreen.Multiline = true; + this.txtyellowsgreen.Name = "txtyellowsgreen"; + this.txtyellowsgreen.Size = new System.Drawing.Size(23, 17); + this.txtyellowsgreen.TabIndex = 23; + this.txtyellowsgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pnlyellowcustomcolour + // + this.pnlyellowcustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellowcustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlyellowcustomcolour.Name = "pnlyellowcustomcolour"; + this.pnlyellowcustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlyellowcustomcolour.TabIndex = 18; + this.pnlyellowcustomcolour.Visible = false; + // + // pnlyellow16 + // + this.pnlyellow16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow16.Location = new System.Drawing.Point(259, 25); + this.pnlyellow16.Name = "pnlyellow16"; + this.pnlyellow16.Size = new System.Drawing.Size(20, 13); + this.pnlyellow16.TabIndex = 17; + this.pnlyellow16.Visible = false; + // + // pnlyellow12 + // + this.pnlyellow12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow12.Location = new System.Drawing.Point(155, 25); + this.pnlyellow12.Name = "pnlyellow12"; + this.pnlyellow12.Size = new System.Drawing.Size(20, 13); + this.pnlyellow12.TabIndex = 9; + this.pnlyellow12.Visible = false; + // + // pnlyellow14 + // + this.pnlyellow14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow14.Location = new System.Drawing.Point(207, 25); + this.pnlyellow14.Name = "pnlyellow14"; + this.pnlyellow14.Size = new System.Drawing.Size(20, 13); + this.pnlyellow14.TabIndex = 13; + this.pnlyellow14.Visible = false; + // + // pnlyellow10 + // + this.pnlyellow10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow10.Location = new System.Drawing.Point(103, 25); + this.pnlyellow10.Name = "pnlyellow10"; + this.pnlyellow10.Size = new System.Drawing.Size(20, 13); + this.pnlyellow10.TabIndex = 5; + this.pnlyellow10.Visible = false; + // + // pnlyellow8 + // + this.pnlyellow8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow8.Location = new System.Drawing.Point(259, 8); + this.pnlyellow8.Name = "pnlyellow8"; + this.pnlyellow8.Size = new System.Drawing.Size(20, 13); + this.pnlyellow8.TabIndex = 16; + this.pnlyellow8.Visible = false; + // + // pnlyellow4 + // + this.pnlyellow4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow4.Location = new System.Drawing.Point(155, 8); + this.pnlyellow4.Name = "pnlyellow4"; + this.pnlyellow4.Size = new System.Drawing.Size(20, 13); + this.pnlyellow4.TabIndex = 8; + this.pnlyellow4.Visible = false; + // + // pnlyellow6 + // + this.pnlyellow6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow6.Location = new System.Drawing.Point(207, 8); + this.pnlyellow6.Name = "pnlyellow6"; + this.pnlyellow6.Size = new System.Drawing.Size(20, 13); + this.pnlyellow6.TabIndex = 12; + this.pnlyellow6.Visible = false; + // + // pnlyellow15 + // + this.pnlyellow15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow15.Location = new System.Drawing.Point(233, 25); + this.pnlyellow15.Name = "pnlyellow15"; + this.pnlyellow15.Size = new System.Drawing.Size(20, 13); + this.pnlyellow15.TabIndex = 15; + this.pnlyellow15.Visible = false; + // + // pnlyellow2 + // + this.pnlyellow2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow2.Location = new System.Drawing.Point(103, 8); + this.pnlyellow2.Name = "pnlyellow2"; + this.pnlyellow2.Size = new System.Drawing.Size(20, 13); + this.pnlyellow2.TabIndex = 4; + this.pnlyellow2.Visible = false; + // + // pnlyellow13 + // + this.pnlyellow13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow13.Location = new System.Drawing.Point(181, 25); + this.pnlyellow13.Name = "pnlyellow13"; + this.pnlyellow13.Size = new System.Drawing.Size(20, 13); + this.pnlyellow13.TabIndex = 11; + this.pnlyellow13.Visible = false; + // + // pnlyellow11 + // + this.pnlyellow11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow11.Location = new System.Drawing.Point(129, 25); + this.pnlyellow11.Name = "pnlyellow11"; + this.pnlyellow11.Size = new System.Drawing.Size(20, 13); + this.pnlyellow11.TabIndex = 7; + this.pnlyellow11.Visible = false; + // + // pnlyellow7 + // + this.pnlyellow7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow7.Location = new System.Drawing.Point(233, 8); + this.pnlyellow7.Name = "pnlyellow7"; + this.pnlyellow7.Size = new System.Drawing.Size(20, 13); + this.pnlyellow7.TabIndex = 14; + this.pnlyellow7.Visible = false; + // + // pnlyellow9 + // + this.pnlyellow9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow9.Location = new System.Drawing.Point(77, 25); + this.pnlyellow9.Name = "pnlyellow9"; + this.pnlyellow9.Size = new System.Drawing.Size(20, 13); + this.pnlyellow9.TabIndex = 3; + this.pnlyellow9.Visible = false; + // + // pnlyellow5 + // + this.pnlyellow5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow5.Location = new System.Drawing.Point(181, 8); + this.pnlyellow5.Name = "pnlyellow5"; + this.pnlyellow5.Size = new System.Drawing.Size(20, 13); + this.pnlyellow5.TabIndex = 10; + this.pnlyellow5.Visible = false; + // + // pnlyellow3 + // + this.pnlyellow3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow3.Location = new System.Drawing.Point(129, 8); + this.pnlyellow3.Name = "pnlyellow3"; + this.pnlyellow3.Size = new System.Drawing.Size(20, 13); + this.pnlyellow3.TabIndex = 6; + this.pnlyellow3.Visible = false; + // + // pnlyellow1 + // + this.pnlyellow1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlyellow1.Location = new System.Drawing.Point(77, 8); + this.pnlyellow1.Name = "pnlyellow1"; + this.pnlyellow1.Size = new System.Drawing.Size(20, 13); + this.pnlyellow1.TabIndex = 2; + this.pnlyellow1.Visible = false; + // + // lblyellowlevel + // + this.lblyellowlevel.AutoSize = true; + this.lblyellowlevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblyellowlevel.Location = new System.Drawing.Point(5, 25); + this.lblyellowlevel.Name = "lblyellowlevel"; + this.lblyellowlevel.Size = new System.Drawing.Size(49, 15); + this.lblyellowlevel.TabIndex = 1; + this.lblyellowlevel.Text = "Level: 4"; + // + // Label11 + // + this.Label11.AutoSize = true; + this.Label11.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label11.Location = new System.Drawing.Point(3, 2); + this.Label11.Name = "Label11"; + this.Label11.Size = new System.Drawing.Size(65, 22); + this.Label11.TabIndex = 0; + this.Label11.Text = "Yellow"; + // + // pnlgreencolours + // + this.pnlgreencolours.BackColor = System.Drawing.Color.White; + this.pnlgreencolours.Controls.Add(this.pnlgreenoptions); + this.pnlgreencolours.Controls.Add(this.pnlgreencustomcolour); + this.pnlgreencolours.Controls.Add(this.pnlgreen16); + this.pnlgreencolours.Controls.Add(this.pnlgreen12); + this.pnlgreencolours.Controls.Add(this.pnlgreen14); + this.pnlgreencolours.Controls.Add(this.pnlgreen10); + this.pnlgreencolours.Controls.Add(this.pnlgreen8); + this.pnlgreencolours.Controls.Add(this.pnlgreen4); + this.pnlgreencolours.Controls.Add(this.pnlgreen6); + this.pnlgreencolours.Controls.Add(this.pnlgreen15); + this.pnlgreencolours.Controls.Add(this.pnlgreen2); + this.pnlgreencolours.Controls.Add(this.pnlgreen13); + this.pnlgreencolours.Controls.Add(this.pnlgreen11); + this.pnlgreencolours.Controls.Add(this.pnlgreen7); + this.pnlgreencolours.Controls.Add(this.pnlgreen9); + this.pnlgreencolours.Controls.Add(this.pnlgreen5); + this.pnlgreencolours.Controls.Add(this.pnlgreen3); + this.pnlgreencolours.Controls.Add(this.pnlgreen1); + this.pnlgreencolours.Controls.Add(this.lblgreenlevel); + this.pnlgreencolours.Controls.Add(this.Label9); + this.pnlgreencolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlgreencolours.Location = new System.Drawing.Point(0, 291); + this.pnlgreencolours.Name = "pnlgreencolours"; + this.pnlgreencolours.Size = new System.Drawing.Size(552, 46); + this.pnlgreencolours.TabIndex = 5; + this.pnlgreencolours.Visible = false; + // + // pnlgreenoptions + // + this.pnlgreenoptions.Controls.Add(this.Label15); + this.pnlgreenoptions.Controls.Add(this.txtgreensred); + this.pnlgreenoptions.Controls.Add(this.txtgreensgreen); + this.pnlgreenoptions.Controls.Add(this.Label16); + this.pnlgreenoptions.Controls.Add(this.Label18); + this.pnlgreenoptions.Controls.Add(this.txtgreensblue); + this.pnlgreenoptions.Location = new System.Drawing.Point(282, 3); + this.pnlgreenoptions.Name = "pnlgreenoptions"; + this.pnlgreenoptions.Size = new System.Drawing.Size(120, 40); + this.pnlgreenoptions.TabIndex = 29; + this.pnlgreenoptions.Visible = false; + // + // Label15 + // + this.Label15.AutoSize = true; + this.Label15.BackColor = System.Drawing.Color.Transparent; + this.Label15.Location = new System.Drawing.Point(62, 24); + this.Label15.Name = "Label15"; + this.Label15.Size = new System.Drawing.Size(30, 13); + this.Label15.TabIndex = 26; + this.Label15.Text = "Red:"; + // + // txtgreensred + // + this.txtgreensred.BackColor = System.Drawing.Color.White; + this.txtgreensred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtgreensred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtgreensred.Location = new System.Drawing.Point(92, 22); + this.txtgreensred.Multiline = true; + this.txtgreensred.Name = "txtgreensred"; + this.txtgreensred.Size = new System.Drawing.Size(23, 17); + this.txtgreensred.TabIndex = 25; + this.txtgreensred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // txtgreensgreen + // + this.txtgreensgreen.BackColor = System.Drawing.Color.White; + this.txtgreensgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtgreensgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtgreensgreen.Location = new System.Drawing.Point(66, 2); + this.txtgreensgreen.Multiline = true; + this.txtgreensgreen.Name = "txtgreensgreen"; + this.txtgreensgreen.Size = new System.Drawing.Size(23, 17); + this.txtgreensgreen.TabIndex = 21; + this.txtgreensgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label16 + // + this.Label16.AutoSize = true; + this.Label16.BackColor = System.Drawing.Color.Transparent; + this.Label16.Location = new System.Drawing.Point(2, 23); + this.Label16.Name = "Label16"; + this.Label16.Size = new System.Drawing.Size(31, 13); + this.Label16.TabIndex = 24; + this.Label16.Text = "Blue:"; + // + // Label18 + // + this.Label18.AutoSize = true; + this.Label18.BackColor = System.Drawing.Color.Transparent; + this.Label18.Location = new System.Drawing.Point(28, 4); + this.Label18.Name = "Label18"; + this.Label18.Size = new System.Drawing.Size(39, 13); + this.Label18.TabIndex = 22; + this.Label18.Text = "Green:"; + // + // txtgreensblue + // + this.txtgreensblue.BackColor = System.Drawing.Color.White; + this.txtgreensblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtgreensblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtgreensblue.Location = new System.Drawing.Point(33, 22); + this.txtgreensblue.Multiline = true; + this.txtgreensblue.Name = "txtgreensblue"; + this.txtgreensblue.Size = new System.Drawing.Size(23, 17); + this.txtgreensblue.TabIndex = 23; + this.txtgreensblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pnlgreencustomcolour + // + this.pnlgreencustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreencustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlgreencustomcolour.Name = "pnlgreencustomcolour"; + this.pnlgreencustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlgreencustomcolour.TabIndex = 18; + this.pnlgreencustomcolour.Visible = false; + // + // pnlgreen16 + // + this.pnlgreen16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen16.Location = new System.Drawing.Point(259, 25); + this.pnlgreen16.Name = "pnlgreen16"; + this.pnlgreen16.Size = new System.Drawing.Size(20, 13); + this.pnlgreen16.TabIndex = 17; + this.pnlgreen16.Visible = false; + // + // pnlgreen12 + // + this.pnlgreen12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen12.Location = new System.Drawing.Point(155, 25); + this.pnlgreen12.Name = "pnlgreen12"; + this.pnlgreen12.Size = new System.Drawing.Size(20, 13); + this.pnlgreen12.TabIndex = 9; + this.pnlgreen12.Visible = false; + // + // pnlgreen14 + // + this.pnlgreen14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen14.Location = new System.Drawing.Point(207, 25); + this.pnlgreen14.Name = "pnlgreen14"; + this.pnlgreen14.Size = new System.Drawing.Size(20, 13); + this.pnlgreen14.TabIndex = 13; + this.pnlgreen14.Visible = false; + // + // pnlgreen10 + // + this.pnlgreen10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen10.Location = new System.Drawing.Point(103, 25); + this.pnlgreen10.Name = "pnlgreen10"; + this.pnlgreen10.Size = new System.Drawing.Size(20, 13); + this.pnlgreen10.TabIndex = 5; + this.pnlgreen10.Visible = false; + // + // pnlgreen8 + // + this.pnlgreen8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen8.Location = new System.Drawing.Point(259, 8); + this.pnlgreen8.Name = "pnlgreen8"; + this.pnlgreen8.Size = new System.Drawing.Size(20, 13); + this.pnlgreen8.TabIndex = 16; + this.pnlgreen8.Visible = false; + // + // pnlgreen4 + // + this.pnlgreen4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen4.Location = new System.Drawing.Point(155, 8); + this.pnlgreen4.Name = "pnlgreen4"; + this.pnlgreen4.Size = new System.Drawing.Size(20, 13); + this.pnlgreen4.TabIndex = 8; + this.pnlgreen4.Visible = false; + // + // pnlgreen6 + // + this.pnlgreen6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen6.Location = new System.Drawing.Point(207, 8); + this.pnlgreen6.Name = "pnlgreen6"; + this.pnlgreen6.Size = new System.Drawing.Size(20, 13); + this.pnlgreen6.TabIndex = 12; + this.pnlgreen6.Visible = false; + // + // pnlgreen15 + // + this.pnlgreen15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen15.Location = new System.Drawing.Point(233, 25); + this.pnlgreen15.Name = "pnlgreen15"; + this.pnlgreen15.Size = new System.Drawing.Size(20, 13); + this.pnlgreen15.TabIndex = 15; + this.pnlgreen15.Visible = false; + // + // pnlgreen2 + // + this.pnlgreen2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen2.Location = new System.Drawing.Point(103, 8); + this.pnlgreen2.Name = "pnlgreen2"; + this.pnlgreen2.Size = new System.Drawing.Size(20, 13); + this.pnlgreen2.TabIndex = 4; + this.pnlgreen2.Visible = false; + // + // pnlgreen13 + // + this.pnlgreen13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen13.Location = new System.Drawing.Point(181, 25); + this.pnlgreen13.Name = "pnlgreen13"; + this.pnlgreen13.Size = new System.Drawing.Size(20, 13); + this.pnlgreen13.TabIndex = 11; + this.pnlgreen13.Visible = false; + // + // pnlgreen11 + // + this.pnlgreen11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen11.Location = new System.Drawing.Point(129, 25); + this.pnlgreen11.Name = "pnlgreen11"; + this.pnlgreen11.Size = new System.Drawing.Size(20, 13); + this.pnlgreen11.TabIndex = 7; + this.pnlgreen11.Visible = false; + // + // pnlgreen7 + // + this.pnlgreen7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen7.Location = new System.Drawing.Point(233, 8); + this.pnlgreen7.Name = "pnlgreen7"; + this.pnlgreen7.Size = new System.Drawing.Size(20, 13); + this.pnlgreen7.TabIndex = 14; + this.pnlgreen7.Visible = false; + // + // pnlgreen9 + // + this.pnlgreen9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen9.Location = new System.Drawing.Point(77, 25); + this.pnlgreen9.Name = "pnlgreen9"; + this.pnlgreen9.Size = new System.Drawing.Size(20, 13); + this.pnlgreen9.TabIndex = 3; + this.pnlgreen9.Visible = false; + // + // pnlgreen5 + // + this.pnlgreen5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen5.Location = new System.Drawing.Point(181, 8); + this.pnlgreen5.Name = "pnlgreen5"; + this.pnlgreen5.Size = new System.Drawing.Size(20, 13); + this.pnlgreen5.TabIndex = 10; + this.pnlgreen5.Visible = false; + // + // pnlgreen3 + // + this.pnlgreen3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen3.Location = new System.Drawing.Point(129, 8); + this.pnlgreen3.Name = "pnlgreen3"; + this.pnlgreen3.Size = new System.Drawing.Size(20, 13); + this.pnlgreen3.TabIndex = 6; + this.pnlgreen3.Visible = false; + // + // pnlgreen1 + // + this.pnlgreen1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgreen1.Location = new System.Drawing.Point(77, 8); + this.pnlgreen1.Name = "pnlgreen1"; + this.pnlgreen1.Size = new System.Drawing.Size(20, 13); + this.pnlgreen1.TabIndex = 2; + this.pnlgreen1.Visible = false; + // + // lblgreenlevel + // + this.lblgreenlevel.AutoSize = true; + this.lblgreenlevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblgreenlevel.Location = new System.Drawing.Point(5, 25); + this.lblgreenlevel.Name = "lblgreenlevel"; + this.lblgreenlevel.Size = new System.Drawing.Size(49, 15); + this.lblgreenlevel.TabIndex = 1; + this.lblgreenlevel.Text = "Level: 4"; + // + // Label9 + // + this.Label9.AutoSize = true; + this.Label9.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label9.Location = new System.Drawing.Point(3, 2); + this.Label9.Name = "Label9"; + this.Label9.Size = new System.Drawing.Size(60, 22); + this.Label9.TabIndex = 0; + this.Label9.Text = "Green"; + // + // pnlbluecolours + // + this.pnlbluecolours.BackColor = System.Drawing.Color.White; + this.pnlbluecolours.Controls.Add(this.pnlblueoptions); + this.pnlbluecolours.Controls.Add(this.pnlbluecustomcolour); + this.pnlbluecolours.Controls.Add(this.pnlblue16); + this.pnlbluecolours.Controls.Add(this.pnlblue12); + this.pnlbluecolours.Controls.Add(this.pnlblue14); + this.pnlbluecolours.Controls.Add(this.pnlblue10); + this.pnlbluecolours.Controls.Add(this.pnlblue8); + this.pnlbluecolours.Controls.Add(this.pnlblue4); + this.pnlbluecolours.Controls.Add(this.pnlblue6); + this.pnlbluecolours.Controls.Add(this.pnlblue15); + this.pnlbluecolours.Controls.Add(this.pnlblue2); + this.pnlbluecolours.Controls.Add(this.pnlblue13); + this.pnlbluecolours.Controls.Add(this.pnlblue11); + this.pnlbluecolours.Controls.Add(this.pnlblue7); + this.pnlbluecolours.Controls.Add(this.pnlblue9); + this.pnlbluecolours.Controls.Add(this.pnlblue5); + this.pnlbluecolours.Controls.Add(this.pnlblue3); + this.pnlbluecolours.Controls.Add(this.pnlblue1); + this.pnlbluecolours.Controls.Add(this.lblbluelevel); + this.pnlbluecolours.Controls.Add(this.Label7); + this.pnlbluecolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlbluecolours.Location = new System.Drawing.Point(0, 245); + this.pnlbluecolours.Name = "pnlbluecolours"; + this.pnlbluecolours.Size = new System.Drawing.Size(552, 46); + this.pnlbluecolours.TabIndex = 4; + this.pnlbluecolours.Visible = false; + // + // pnlblueoptions + // + this.pnlblueoptions.Controls.Add(this.Label6); + this.pnlblueoptions.Controls.Add(this.txtbluesred); + this.pnlblueoptions.Controls.Add(this.txtbluesblue); + this.pnlblueoptions.Controls.Add(this.Label4); + this.pnlblueoptions.Controls.Add(this.Label2); + this.pnlblueoptions.Controls.Add(this.txtbluesgreen); + this.pnlblueoptions.Location = new System.Drawing.Point(282, 3); + this.pnlblueoptions.Name = "pnlblueoptions"; + this.pnlblueoptions.Size = new System.Drawing.Size(120, 40); + this.pnlblueoptions.TabIndex = 27; + this.pnlblueoptions.Visible = false; + // + // Label6 + // + this.Label6.AutoSize = true; + this.Label6.BackColor = System.Drawing.Color.Transparent; + this.Label6.Location = new System.Drawing.Point(65, 24); + this.Label6.Name = "Label6"; + this.Label6.Size = new System.Drawing.Size(30, 13); + this.Label6.TabIndex = 26; + this.Label6.Text = "Red:"; + // + // txtbluesred + // + this.txtbluesred.BackColor = System.Drawing.Color.White; + this.txtbluesred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtbluesred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtbluesred.Location = new System.Drawing.Point(95, 22); + this.txtbluesred.Multiline = true; + this.txtbluesred.Name = "txtbluesred"; + this.txtbluesred.Size = new System.Drawing.Size(23, 17); + this.txtbluesred.TabIndex = 25; + this.txtbluesred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // txtbluesblue + // + this.txtbluesblue.BackColor = System.Drawing.Color.White; + this.txtbluesblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtbluesblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtbluesblue.Location = new System.Drawing.Point(65, 2); + this.txtbluesblue.Multiline = true; + this.txtbluesblue.Name = "txtbluesblue"; + this.txtbluesblue.Size = new System.Drawing.Size(23, 17); + this.txtbluesblue.TabIndex = 21; + this.txtbluesblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.BackColor = System.Drawing.Color.Transparent; + this.Label4.Location = new System.Drawing.Point(2, 23); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(39, 13); + this.Label4.TabIndex = 24; + this.Label4.Text = "Green:"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.BackColor = System.Drawing.Color.Transparent; + this.Label2.Location = new System.Drawing.Point(33, 4); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(31, 13); + this.Label2.TabIndex = 22; + this.Label2.Text = "Blue:"; + // + // txtbluesgreen + // + this.txtbluesgreen.BackColor = System.Drawing.Color.White; + this.txtbluesgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtbluesgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtbluesgreen.Location = new System.Drawing.Point(41, 22); + this.txtbluesgreen.Multiline = true; + this.txtbluesgreen.Name = "txtbluesgreen"; + this.txtbluesgreen.Size = new System.Drawing.Size(23, 17); + this.txtbluesgreen.TabIndex = 23; + this.txtbluesgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pnlbluecustomcolour + // + this.pnlbluecustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlbluecustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlbluecustomcolour.Name = "pnlbluecustomcolour"; + this.pnlbluecustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlbluecustomcolour.TabIndex = 18; + this.pnlbluecustomcolour.Visible = false; + // + // pnlblue16 + // + this.pnlblue16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue16.Location = new System.Drawing.Point(259, 25); + this.pnlblue16.Name = "pnlblue16"; + this.pnlblue16.Size = new System.Drawing.Size(20, 13); + this.pnlblue16.TabIndex = 17; + this.pnlblue16.Visible = false; + // + // pnlblue12 + // + this.pnlblue12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue12.Location = new System.Drawing.Point(155, 25); + this.pnlblue12.Name = "pnlblue12"; + this.pnlblue12.Size = new System.Drawing.Size(20, 13); + this.pnlblue12.TabIndex = 9; + this.pnlblue12.Visible = false; + // + // pnlblue14 + // + this.pnlblue14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue14.Location = new System.Drawing.Point(207, 25); + this.pnlblue14.Name = "pnlblue14"; + this.pnlblue14.Size = new System.Drawing.Size(20, 13); + this.pnlblue14.TabIndex = 13; + this.pnlblue14.Visible = false; + // + // pnlblue10 + // + this.pnlblue10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue10.Location = new System.Drawing.Point(103, 25); + this.pnlblue10.Name = "pnlblue10"; + this.pnlblue10.Size = new System.Drawing.Size(20, 13); + this.pnlblue10.TabIndex = 5; + this.pnlblue10.Visible = false; + // + // pnlblue8 + // + this.pnlblue8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue8.Location = new System.Drawing.Point(259, 8); + this.pnlblue8.Name = "pnlblue8"; + this.pnlblue8.Size = new System.Drawing.Size(20, 13); + this.pnlblue8.TabIndex = 16; + this.pnlblue8.Visible = false; + // + // pnlblue4 + // + this.pnlblue4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue4.Location = new System.Drawing.Point(155, 8); + this.pnlblue4.Name = "pnlblue4"; + this.pnlblue4.Size = new System.Drawing.Size(20, 13); + this.pnlblue4.TabIndex = 8; + this.pnlblue4.Visible = false; + // + // pnlblue6 + // + this.pnlblue6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue6.Location = new System.Drawing.Point(207, 8); + this.pnlblue6.Name = "pnlblue6"; + this.pnlblue6.Size = new System.Drawing.Size(20, 13); + this.pnlblue6.TabIndex = 12; + this.pnlblue6.Visible = false; + // + // pnlblue15 + // + this.pnlblue15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue15.Location = new System.Drawing.Point(233, 25); + this.pnlblue15.Name = "pnlblue15"; + this.pnlblue15.Size = new System.Drawing.Size(20, 13); + this.pnlblue15.TabIndex = 15; + this.pnlblue15.Visible = false; + // + // pnlblue2 + // + this.pnlblue2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue2.Location = new System.Drawing.Point(103, 8); + this.pnlblue2.Name = "pnlblue2"; + this.pnlblue2.Size = new System.Drawing.Size(20, 13); + this.pnlblue2.TabIndex = 4; + this.pnlblue2.Visible = false; + // + // pnlblue13 + // + this.pnlblue13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue13.Location = new System.Drawing.Point(181, 25); + this.pnlblue13.Name = "pnlblue13"; + this.pnlblue13.Size = new System.Drawing.Size(20, 13); + this.pnlblue13.TabIndex = 11; + this.pnlblue13.Visible = false; + // + // pnlblue11 + // + this.pnlblue11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue11.Location = new System.Drawing.Point(129, 25); + this.pnlblue11.Name = "pnlblue11"; + this.pnlblue11.Size = new System.Drawing.Size(20, 13); + this.pnlblue11.TabIndex = 7; + this.pnlblue11.Visible = false; + // + // pnlblue7 + // + this.pnlblue7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue7.Location = new System.Drawing.Point(233, 8); + this.pnlblue7.Name = "pnlblue7"; + this.pnlblue7.Size = new System.Drawing.Size(20, 13); + this.pnlblue7.TabIndex = 14; + this.pnlblue7.Visible = false; + // + // pnlblue9 + // + this.pnlblue9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue9.Location = new System.Drawing.Point(77, 25); + this.pnlblue9.Name = "pnlblue9"; + this.pnlblue9.Size = new System.Drawing.Size(20, 13); + this.pnlblue9.TabIndex = 3; + this.pnlblue9.Visible = false; + // + // pnlblue5 + // + this.pnlblue5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue5.Location = new System.Drawing.Point(181, 8); + this.pnlblue5.Name = "pnlblue5"; + this.pnlblue5.Size = new System.Drawing.Size(20, 13); + this.pnlblue5.TabIndex = 10; + this.pnlblue5.Visible = false; + // + // pnlblue3 + // + this.pnlblue3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue3.Location = new System.Drawing.Point(129, 8); + this.pnlblue3.Name = "pnlblue3"; + this.pnlblue3.Size = new System.Drawing.Size(20, 13); + this.pnlblue3.TabIndex = 6; + this.pnlblue3.Visible = false; + // + // pnlblue1 + // + this.pnlblue1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlblue1.Location = new System.Drawing.Point(77, 8); + this.pnlblue1.Name = "pnlblue1"; + this.pnlblue1.Size = new System.Drawing.Size(20, 13); + this.pnlblue1.TabIndex = 2; + this.pnlblue1.Visible = false; + // + // lblbluelevel + // + this.lblbluelevel.AutoSize = true; + this.lblbluelevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblbluelevel.Location = new System.Drawing.Point(5, 25); + this.lblbluelevel.Name = "lblbluelevel"; + this.lblbluelevel.Size = new System.Drawing.Size(49, 15); + this.lblbluelevel.TabIndex = 1; + this.lblbluelevel.Text = "Level: 4"; + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label7.Location = new System.Drawing.Point(3, 2); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(48, 22); + this.Label7.TabIndex = 0; + this.Label7.Text = "Blue"; + // + // pnlpurplecolours + // + this.pnlpurplecolours.BackColor = System.Drawing.Color.White; + this.pnlpurplecolours.Controls.Add(this.pnlpurpleoptions); + this.pnlpurplecolours.Controls.Add(this.pnlpurplecustomcolour); + this.pnlpurplecolours.Controls.Add(this.pnlpurple16); + this.pnlpurplecolours.Controls.Add(this.pnlpurple12); + this.pnlpurplecolours.Controls.Add(this.pnlpurple14); + this.pnlpurplecolours.Controls.Add(this.pnlpurple10); + this.pnlpurplecolours.Controls.Add(this.pnlpurple8); + this.pnlpurplecolours.Controls.Add(this.pnlpurple4); + this.pnlpurplecolours.Controls.Add(this.pnlpurple6); + this.pnlpurplecolours.Controls.Add(this.pnlpurple15); + this.pnlpurplecolours.Controls.Add(this.pnlpurple2); + this.pnlpurplecolours.Controls.Add(this.pnlpurple13); + this.pnlpurplecolours.Controls.Add(this.pnlpurple11); + this.pnlpurplecolours.Controls.Add(this.pnlpurple7); + this.pnlpurplecolours.Controls.Add(this.pnlpurple9); + this.pnlpurplecolours.Controls.Add(this.pnlpurple5); + this.pnlpurplecolours.Controls.Add(this.pnlpurple3); + this.pnlpurplecolours.Controls.Add(this.pnlpurple1); + this.pnlpurplecolours.Controls.Add(this.lblpurplelevel); + this.pnlpurplecolours.Controls.Add(this.Label5); + this.pnlpurplecolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlpurplecolours.Location = new System.Drawing.Point(0, 199); + this.pnlpurplecolours.Name = "pnlpurplecolours"; + this.pnlpurplecolours.Size = new System.Drawing.Size(552, 46); + this.pnlpurplecolours.TabIndex = 3; + this.pnlpurplecolours.Visible = false; + // + // pnlpurpleoptions + // + this.pnlpurpleoptions.Controls.Add(this.Label8); + this.pnlpurpleoptions.Controls.Add(this.txtpurplesgreen); + this.pnlpurpleoptions.Controls.Add(this.txtpurplesblue); + this.pnlpurpleoptions.Controls.Add(this.Label10); + this.pnlpurpleoptions.Controls.Add(this.Label12); + this.pnlpurpleoptions.Controls.Add(this.txtpurplesred); + this.pnlpurpleoptions.Location = new System.Drawing.Point(282, 3); + this.pnlpurpleoptions.Name = "pnlpurpleoptions"; + this.pnlpurpleoptions.Size = new System.Drawing.Size(120, 40); + this.pnlpurpleoptions.TabIndex = 28; + this.pnlpurpleoptions.Visible = false; + // + // Label8 + // + this.Label8.AutoSize = true; + this.Label8.BackColor = System.Drawing.Color.Transparent; + this.Label8.Location = new System.Drawing.Point(56, 24); + this.Label8.Name = "Label8"; + this.Label8.Size = new System.Drawing.Size(39, 13); + this.Label8.TabIndex = 26; + this.Label8.Text = "Green:"; + // + // txtpurplesgreen + // + this.txtpurplesgreen.BackColor = System.Drawing.Color.White; + this.txtpurplesgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpurplesgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpurplesgreen.Location = new System.Drawing.Point(95, 22); + this.txtpurplesgreen.Multiline = true; + this.txtpurplesgreen.Name = "txtpurplesgreen"; + this.txtpurplesgreen.Size = new System.Drawing.Size(23, 17); + this.txtpurplesgreen.TabIndex = 25; + this.txtpurplesgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // txtpurplesblue + // + this.txtpurplesblue.BackColor = System.Drawing.Color.White; + this.txtpurplesblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpurplesblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpurplesblue.Location = new System.Drawing.Point(65, 2); + this.txtpurplesblue.Multiline = true; + this.txtpurplesblue.Name = "txtpurplesblue"; + this.txtpurplesblue.Size = new System.Drawing.Size(23, 17); + this.txtpurplesblue.TabIndex = 21; + this.txtpurplesblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label10 + // + this.Label10.AutoSize = true; + this.Label10.BackColor = System.Drawing.Color.Transparent; + this.Label10.Location = new System.Drawing.Point(2, 23); + this.Label10.Name = "Label10"; + this.Label10.Size = new System.Drawing.Size(30, 13); + this.Label10.TabIndex = 24; + this.Label10.Text = "Red:"; + // + // Label12 + // + this.Label12.AutoSize = true; + this.Label12.BackColor = System.Drawing.Color.Transparent; + this.Label12.Location = new System.Drawing.Point(33, 4); + this.Label12.Name = "Label12"; + this.Label12.Size = new System.Drawing.Size(31, 13); + this.Label12.TabIndex = 22; + this.Label12.Text = "Blue:"; + // + // txtpurplesred + // + this.txtpurplesred.BackColor = System.Drawing.Color.White; + this.txtpurplesred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpurplesred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtpurplesred.Location = new System.Drawing.Point(32, 22); + this.txtpurplesred.Multiline = true; + this.txtpurplesred.Name = "txtpurplesred"; + this.txtpurplesred.Size = new System.Drawing.Size(23, 17); + this.txtpurplesred.TabIndex = 23; + this.txtpurplesred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pnlpurplecustomcolour + // + this.pnlpurplecustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurplecustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlpurplecustomcolour.Name = "pnlpurplecustomcolour"; + this.pnlpurplecustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlpurplecustomcolour.TabIndex = 18; + this.pnlpurplecustomcolour.Visible = false; + // + // pnlpurple16 + // + this.pnlpurple16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple16.Location = new System.Drawing.Point(259, 25); + this.pnlpurple16.Name = "pnlpurple16"; + this.pnlpurple16.Size = new System.Drawing.Size(20, 13); + this.pnlpurple16.TabIndex = 17; + this.pnlpurple16.Visible = false; + // + // pnlpurple12 + // + this.pnlpurple12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple12.Location = new System.Drawing.Point(155, 25); + this.pnlpurple12.Name = "pnlpurple12"; + this.pnlpurple12.Size = new System.Drawing.Size(20, 13); + this.pnlpurple12.TabIndex = 9; + this.pnlpurple12.Visible = false; + // + // pnlpurple14 + // + this.pnlpurple14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple14.Location = new System.Drawing.Point(207, 25); + this.pnlpurple14.Name = "pnlpurple14"; + this.pnlpurple14.Size = new System.Drawing.Size(20, 13); + this.pnlpurple14.TabIndex = 13; + this.pnlpurple14.Visible = false; + // + // pnlpurple10 + // + this.pnlpurple10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple10.Location = new System.Drawing.Point(103, 25); + this.pnlpurple10.Name = "pnlpurple10"; + this.pnlpurple10.Size = new System.Drawing.Size(20, 13); + this.pnlpurple10.TabIndex = 5; + this.pnlpurple10.Visible = false; + // + // pnlpurple8 + // + this.pnlpurple8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple8.Location = new System.Drawing.Point(259, 8); + this.pnlpurple8.Name = "pnlpurple8"; + this.pnlpurple8.Size = new System.Drawing.Size(20, 13); + this.pnlpurple8.TabIndex = 16; + this.pnlpurple8.Visible = false; + // + // pnlpurple4 + // + this.pnlpurple4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple4.Location = new System.Drawing.Point(155, 8); + this.pnlpurple4.Name = "pnlpurple4"; + this.pnlpurple4.Size = new System.Drawing.Size(20, 13); + this.pnlpurple4.TabIndex = 8; + this.pnlpurple4.Visible = false; + // + // pnlpurple6 + // + this.pnlpurple6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple6.Location = new System.Drawing.Point(207, 8); + this.pnlpurple6.Name = "pnlpurple6"; + this.pnlpurple6.Size = new System.Drawing.Size(20, 13); + this.pnlpurple6.TabIndex = 12; + this.pnlpurple6.Visible = false; + // + // pnlpurple15 + // + this.pnlpurple15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple15.Location = new System.Drawing.Point(233, 25); + this.pnlpurple15.Name = "pnlpurple15"; + this.pnlpurple15.Size = new System.Drawing.Size(20, 13); + this.pnlpurple15.TabIndex = 15; + this.pnlpurple15.Visible = false; + // + // pnlpurple2 + // + this.pnlpurple2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple2.Location = new System.Drawing.Point(103, 8); + this.pnlpurple2.Name = "pnlpurple2"; + this.pnlpurple2.Size = new System.Drawing.Size(20, 13); + this.pnlpurple2.TabIndex = 4; + this.pnlpurple2.Visible = false; + // + // pnlpurple13 + // + this.pnlpurple13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple13.Location = new System.Drawing.Point(181, 25); + this.pnlpurple13.Name = "pnlpurple13"; + this.pnlpurple13.Size = new System.Drawing.Size(20, 13); + this.pnlpurple13.TabIndex = 11; + this.pnlpurple13.Visible = false; + // + // pnlpurple11 + // + this.pnlpurple11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple11.Location = new System.Drawing.Point(129, 25); + this.pnlpurple11.Name = "pnlpurple11"; + this.pnlpurple11.Size = new System.Drawing.Size(20, 13); + this.pnlpurple11.TabIndex = 7; + this.pnlpurple11.Visible = false; + // + // pnlpurple7 + // + this.pnlpurple7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple7.Location = new System.Drawing.Point(233, 8); + this.pnlpurple7.Name = "pnlpurple7"; + this.pnlpurple7.Size = new System.Drawing.Size(20, 13); + this.pnlpurple7.TabIndex = 14; + this.pnlpurple7.Visible = false; + // + // pnlpurple9 + // + this.pnlpurple9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple9.Location = new System.Drawing.Point(77, 25); + this.pnlpurple9.Name = "pnlpurple9"; + this.pnlpurple9.Size = new System.Drawing.Size(20, 13); + this.pnlpurple9.TabIndex = 3; + this.pnlpurple9.Visible = false; + // + // pnlpurple5 + // + this.pnlpurple5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple5.Location = new System.Drawing.Point(181, 8); + this.pnlpurple5.Name = "pnlpurple5"; + this.pnlpurple5.Size = new System.Drawing.Size(20, 13); + this.pnlpurple5.TabIndex = 10; + this.pnlpurple5.Visible = false; + // + // pnlpurple3 + // + this.pnlpurple3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple3.Location = new System.Drawing.Point(129, 8); + this.pnlpurple3.Name = "pnlpurple3"; + this.pnlpurple3.Size = new System.Drawing.Size(20, 13); + this.pnlpurple3.TabIndex = 6; + this.pnlpurple3.Visible = false; + // + // pnlpurple1 + // + this.pnlpurple1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlpurple1.Location = new System.Drawing.Point(77, 8); + this.pnlpurple1.Name = "pnlpurple1"; + this.pnlpurple1.Size = new System.Drawing.Size(20, 13); + this.pnlpurple1.TabIndex = 2; + this.pnlpurple1.Visible = false; + // + // lblpurplelevel + // + this.lblpurplelevel.AutoSize = true; + this.lblpurplelevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblpurplelevel.Location = new System.Drawing.Point(5, 25); + this.lblpurplelevel.Name = "lblpurplelevel"; + this.lblpurplelevel.Size = new System.Drawing.Size(49, 15); + this.lblpurplelevel.TabIndex = 1; + this.lblpurplelevel.Text = "Level: 4"; + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label5.Location = new System.Drawing.Point(3, 2); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(67, 22); + this.Label5.TabIndex = 0; + this.Label5.Text = "Purple"; + // + // pnlgraycolours + // + this.pnlgraycolours.BackColor = System.Drawing.Color.White; + this.pnlgraycolours.Controls.Add(this.lblcustomshadetut); + this.pnlgraycolours.Controls.Add(this.txtcustomgrayshade); + this.pnlgraycolours.Controls.Add(this.pnlgraycustomcolour); + this.pnlgraycolours.Controls.Add(this.pnlgray16); + this.pnlgraycolours.Controls.Add(this.pnlgray12); + this.pnlgraycolours.Controls.Add(this.pnlgray14); + this.pnlgraycolours.Controls.Add(this.pnlgray10); + this.pnlgraycolours.Controls.Add(this.pnlgray8); + this.pnlgraycolours.Controls.Add(this.pnlgray4); + this.pnlgraycolours.Controls.Add(this.pnlgray6); + this.pnlgraycolours.Controls.Add(this.pnlgray15); + this.pnlgraycolours.Controls.Add(this.pnlgray2); + this.pnlgraycolours.Controls.Add(this.pnlgray13); + this.pnlgraycolours.Controls.Add(this.pnlgray11); + this.pnlgraycolours.Controls.Add(this.pnlgray7); + this.pnlgraycolours.Controls.Add(this.pnlgray9); + this.pnlgraycolours.Controls.Add(this.pnlgray5); + this.pnlgraycolours.Controls.Add(this.pnlgray3); + this.pnlgraycolours.Controls.Add(this.pnlgray1); + this.pnlgraycolours.Controls.Add(this.lblgraylevel); + this.pnlgraycolours.Controls.Add(this.Label3); + this.pnlgraycolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlgraycolours.Location = new System.Drawing.Point(0, 153); + this.pnlgraycolours.Name = "pnlgraycolours"; + this.pnlgraycolours.Size = new System.Drawing.Size(552, 46); + this.pnlgraycolours.TabIndex = 2; + this.pnlgraycolours.Visible = false; + // + // lblcustomshadetut + // + this.lblcustomshadetut.AutoSize = true; + this.lblcustomshadetut.BackColor = System.Drawing.Color.Transparent; + this.lblcustomshadetut.Location = new System.Drawing.Point(290, 5); + this.lblcustomshadetut.Name = "lblcustomshadetut"; + this.lblcustomshadetut.Size = new System.Drawing.Size(102, 13); + this.lblcustomshadetut.TabIndex = 20; + this.lblcustomshadetut.Text = "Enter Shade (0-255)"; + this.lblcustomshadetut.Visible = false; + // + // txtcustomgrayshade + // + this.txtcustomgrayshade.BackColor = System.Drawing.Color.White; + this.txtcustomgrayshade.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtcustomgrayshade.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtcustomgrayshade.Location = new System.Drawing.Point(317, 20); + this.txtcustomgrayshade.Multiline = true; + this.txtcustomgrayshade.Name = "txtcustomgrayshade"; + this.txtcustomgrayshade.Size = new System.Drawing.Size(45, 17); + this.txtcustomgrayshade.TabIndex = 19; + this.txtcustomgrayshade.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtcustomgrayshade.Visible = false; + this.txtcustomgrayshade.TextChanged += new System.EventHandler(this.txtcustomgrayshade_TextChanged); + // + // pnlgraycustomcolour + // + this.pnlgraycustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgraycustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlgraycustomcolour.Name = "pnlgraycustomcolour"; + this.pnlgraycustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlgraycustomcolour.TabIndex = 18; + this.pnlgraycustomcolour.Visible = false; + // + // pnlgray16 + // + this.pnlgray16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray16.Location = new System.Drawing.Point(259, 25); + this.pnlgray16.Name = "pnlgray16"; + this.pnlgray16.Size = new System.Drawing.Size(20, 13); + this.pnlgray16.TabIndex = 17; + this.pnlgray16.Visible = false; + // + // pnlgray12 + // + this.pnlgray12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray12.Location = new System.Drawing.Point(155, 25); + this.pnlgray12.Name = "pnlgray12"; + this.pnlgray12.Size = new System.Drawing.Size(20, 13); + this.pnlgray12.TabIndex = 9; + this.pnlgray12.Visible = false; + // + // pnlgray14 + // + this.pnlgray14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray14.Location = new System.Drawing.Point(207, 25); + this.pnlgray14.Name = "pnlgray14"; + this.pnlgray14.Size = new System.Drawing.Size(20, 13); + this.pnlgray14.TabIndex = 13; + this.pnlgray14.Visible = false; + // + // pnlgray10 + // + this.pnlgray10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray10.Location = new System.Drawing.Point(103, 25); + this.pnlgray10.Name = "pnlgray10"; + this.pnlgray10.Size = new System.Drawing.Size(20, 13); + this.pnlgray10.TabIndex = 5; + this.pnlgray10.Visible = false; + // + // pnlgray8 + // + this.pnlgray8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray8.Location = new System.Drawing.Point(259, 8); + this.pnlgray8.Name = "pnlgray8"; + this.pnlgray8.Size = new System.Drawing.Size(20, 13); + this.pnlgray8.TabIndex = 16; + this.pnlgray8.Visible = false; + // + // pnlgray4 + // + this.pnlgray4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray4.Location = new System.Drawing.Point(155, 8); + this.pnlgray4.Name = "pnlgray4"; + this.pnlgray4.Size = new System.Drawing.Size(20, 13); + this.pnlgray4.TabIndex = 8; + this.pnlgray4.Visible = false; + // + // pnlgray6 + // + this.pnlgray6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray6.Location = new System.Drawing.Point(207, 8); + this.pnlgray6.Name = "pnlgray6"; + this.pnlgray6.Size = new System.Drawing.Size(20, 13); + this.pnlgray6.TabIndex = 12; + this.pnlgray6.Visible = false; + // + // pnlgray15 + // + this.pnlgray15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray15.Location = new System.Drawing.Point(233, 25); + this.pnlgray15.Name = "pnlgray15"; + this.pnlgray15.Size = new System.Drawing.Size(20, 13); + this.pnlgray15.TabIndex = 15; + this.pnlgray15.Visible = false; + // + // pnlgray2 + // + this.pnlgray2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray2.Location = new System.Drawing.Point(103, 8); + this.pnlgray2.Name = "pnlgray2"; + this.pnlgray2.Size = new System.Drawing.Size(20, 13); + this.pnlgray2.TabIndex = 4; + this.pnlgray2.Visible = false; + // + // pnlgray13 + // + this.pnlgray13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray13.Location = new System.Drawing.Point(181, 25); + this.pnlgray13.Name = "pnlgray13"; + this.pnlgray13.Size = new System.Drawing.Size(20, 13); + this.pnlgray13.TabIndex = 11; + this.pnlgray13.Visible = false; + // + // pnlgray11 + // + this.pnlgray11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray11.Location = new System.Drawing.Point(129, 25); + this.pnlgray11.Name = "pnlgray11"; + this.pnlgray11.Size = new System.Drawing.Size(20, 13); + this.pnlgray11.TabIndex = 7; + this.pnlgray11.Visible = false; + // + // pnlgray7 + // + this.pnlgray7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray7.Location = new System.Drawing.Point(233, 8); + this.pnlgray7.Name = "pnlgray7"; + this.pnlgray7.Size = new System.Drawing.Size(20, 13); + this.pnlgray7.TabIndex = 14; + this.pnlgray7.Visible = false; + // + // pnlgray9 + // + this.pnlgray9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray9.Location = new System.Drawing.Point(77, 25); + this.pnlgray9.Name = "pnlgray9"; + this.pnlgray9.Size = new System.Drawing.Size(20, 13); + this.pnlgray9.TabIndex = 3; + this.pnlgray9.Visible = false; + // + // pnlgray5 + // + this.pnlgray5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray5.Location = new System.Drawing.Point(181, 8); + this.pnlgray5.Name = "pnlgray5"; + this.pnlgray5.Size = new System.Drawing.Size(20, 13); + this.pnlgray5.TabIndex = 10; + this.pnlgray5.Visible = false; + // + // pnlgray3 + // + this.pnlgray3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray3.Location = new System.Drawing.Point(129, 8); + this.pnlgray3.Name = "pnlgray3"; + this.pnlgray3.Size = new System.Drawing.Size(20, 13); + this.pnlgray3.TabIndex = 6; + this.pnlgray3.Visible = false; + // + // pnlgray1 + // + this.pnlgray1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlgray1.Location = new System.Drawing.Point(77, 8); + this.pnlgray1.Name = "pnlgray1"; + this.pnlgray1.Size = new System.Drawing.Size(20, 13); + this.pnlgray1.TabIndex = 2; + this.pnlgray1.Visible = false; + // + // lblgraylevel + // + this.lblgraylevel.AutoSize = true; + this.lblgraylevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblgraylevel.Location = new System.Drawing.Point(5, 25); + this.lblgraylevel.Name = "lblgraylevel"; + this.lblgraylevel.Size = new System.Drawing.Size(49, 15); + this.lblgraylevel.TabIndex = 1; + this.lblgraylevel.Text = "Level: 4"; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label3.Location = new System.Drawing.Point(3, 2); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(52, 22); + this.Label3.TabIndex = 0; + this.Label3.Text = "Gray"; + // + // pnlanycolours + // + this.pnlanycolours.BackColor = System.Drawing.Color.White; + this.pnlanycolours.Controls.Add(this.pnlanyoptions); + this.pnlanycolours.Controls.Add(this.pnlanycustomcolour); + this.pnlanycolours.Controls.Add(this.pnlany16); + this.pnlanycolours.Controls.Add(this.pnlany12); + this.pnlanycolours.Controls.Add(this.pnlany14); + this.pnlanycolours.Controls.Add(this.pnlany10); + this.pnlanycolours.Controls.Add(this.pnlany8); + this.pnlanycolours.Controls.Add(this.pnlany4); + this.pnlanycolours.Controls.Add(this.pnlany6); + this.pnlanycolours.Controls.Add(this.pnlany15); + this.pnlanycolours.Controls.Add(this.pnlany2); + this.pnlanycolours.Controls.Add(this.pnlany13); + this.pnlanycolours.Controls.Add(this.pnlany11); + this.pnlanycolours.Controls.Add(this.pnlany7); + this.pnlanycolours.Controls.Add(this.pnlany9); + this.pnlanycolours.Controls.Add(this.pnlany5); + this.pnlanycolours.Controls.Add(this.pnlany3); + this.pnlanycolours.Controls.Add(this.pnlany1); + this.pnlanycolours.Controls.Add(this.lblanylevel); + this.pnlanycolours.Controls.Add(this.Label1); + this.pnlanycolours.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlanycolours.Location = new System.Drawing.Point(0, 107); + this.pnlanycolours.Name = "pnlanycolours"; + this.pnlanycolours.Size = new System.Drawing.Size(552, 46); + this.pnlanycolours.TabIndex = 1; + this.pnlanycolours.Visible = false; + // + // pnlanyoptions + // + this.pnlanyoptions.Controls.Add(this.Label38); + this.pnlanyoptions.Controls.Add(this.txtanysgreen); + this.pnlanyoptions.Controls.Add(this.txtanysred); + this.pnlanyoptions.Controls.Add(this.Label39); + this.pnlanyoptions.Controls.Add(this.Label40); + this.pnlanyoptions.Controls.Add(this.txtanysblue); + this.pnlanyoptions.Location = new System.Drawing.Point(282, 3); + this.pnlanyoptions.Name = "pnlanyoptions"; + this.pnlanyoptions.Size = new System.Drawing.Size(120, 40); + this.pnlanyoptions.TabIndex = 34; + this.pnlanyoptions.Visible = false; + this.pnlanyoptions.MouseLeave += new System.EventHandler(this.pnlanyoptions_MouseLeave); + // + // Label38 + // + this.Label38.AutoSize = true; + this.Label38.BackColor = System.Drawing.Color.Transparent; + this.Label38.Location = new System.Drawing.Point(56, 24); + this.Label38.Name = "Label38"; + this.Label38.Size = new System.Drawing.Size(39, 13); + this.Label38.TabIndex = 26; + this.Label38.Text = "Green:"; + // + // txtanysgreen + // + this.txtanysgreen.BackColor = System.Drawing.Color.White; + this.txtanysgreen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtanysgreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtanysgreen.Location = new System.Drawing.Point(95, 22); + this.txtanysgreen.Multiline = true; + this.txtanysgreen.Name = "txtanysgreen"; + this.txtanysgreen.Size = new System.Drawing.Size(23, 17); + this.txtanysgreen.TabIndex = 25; + this.txtanysgreen.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtanysgreen.TextChanged += new System.EventHandler(this.txtanysred_TextChanged); + // + // txtanysred + // + this.txtanysred.BackColor = System.Drawing.Color.White; + this.txtanysred.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtanysred.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtanysred.Location = new System.Drawing.Point(62, 2); + this.txtanysred.Multiline = true; + this.txtanysred.Name = "txtanysred"; + this.txtanysred.Size = new System.Drawing.Size(23, 17); + this.txtanysred.TabIndex = 21; + this.txtanysred.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtanysred.TextChanged += new System.EventHandler(this.txtanysred_TextChanged); + // + // Label39 + // + this.Label39.AutoSize = true; + this.Label39.BackColor = System.Drawing.Color.Transparent; + this.Label39.Location = new System.Drawing.Point(1, 23); + this.Label39.Name = "Label39"; + this.Label39.Size = new System.Drawing.Size(31, 13); + this.Label39.TabIndex = 24; + this.Label39.Text = "Blue:"; + // + // Label40 + // + this.Label40.AutoSize = true; + this.Label40.BackColor = System.Drawing.Color.Transparent; + this.Label40.Location = new System.Drawing.Point(31, 4); + this.Label40.Name = "Label40"; + this.Label40.Size = new System.Drawing.Size(30, 13); + this.Label40.TabIndex = 22; + this.Label40.Text = "Red:"; + // + // txtanysblue + // + this.txtanysblue.BackColor = System.Drawing.Color.White; + this.txtanysblue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtanysblue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtanysblue.Location = new System.Drawing.Point(32, 22); + this.txtanysblue.Multiline = true; + this.txtanysblue.Name = "txtanysblue"; + this.txtanysblue.Size = new System.Drawing.Size(23, 17); + this.txtanysblue.TabIndex = 23; + this.txtanysblue.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtanysblue.TextChanged += new System.EventHandler(this.txtanysred_TextChanged); + // + // pnlanycustomcolour + // + this.pnlanycustomcolour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlanycustomcolour.Location = new System.Drawing.Point(406, 8); + this.pnlanycustomcolour.Name = "pnlanycustomcolour"; + this.pnlanycustomcolour.Size = new System.Drawing.Size(32, 30); + this.pnlanycustomcolour.TabIndex = 17; + this.pnlanycustomcolour.Visible = false; + // + // pnlany16 + // + this.pnlany16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany16.Location = new System.Drawing.Point(259, 25); + this.pnlany16.Name = "pnlany16"; + this.pnlany16.Size = new System.Drawing.Size(20, 13); + this.pnlany16.TabIndex = 17; + this.pnlany16.Visible = false; + // + // pnlany12 + // + this.pnlany12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany12.Location = new System.Drawing.Point(155, 25); + this.pnlany12.Name = "pnlany12"; + this.pnlany12.Size = new System.Drawing.Size(20, 13); + this.pnlany12.TabIndex = 9; + this.pnlany12.Visible = false; + // + // pnlany14 + // + this.pnlany14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany14.Location = new System.Drawing.Point(207, 25); + this.pnlany14.Name = "pnlany14"; + this.pnlany14.Size = new System.Drawing.Size(20, 13); + this.pnlany14.TabIndex = 13; + this.pnlany14.Visible = false; + // + // pnlany10 + // + this.pnlany10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany10.Location = new System.Drawing.Point(103, 25); + this.pnlany10.Name = "pnlany10"; + this.pnlany10.Size = new System.Drawing.Size(20, 13); + this.pnlany10.TabIndex = 5; + this.pnlany10.Visible = false; + // + // pnlany8 + // + this.pnlany8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany8.Location = new System.Drawing.Point(259, 8); + this.pnlany8.Name = "pnlany8"; + this.pnlany8.Size = new System.Drawing.Size(20, 13); + this.pnlany8.TabIndex = 16; + this.pnlany8.Visible = false; + // + // pnlany4 + // + this.pnlany4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany4.Location = new System.Drawing.Point(155, 8); + this.pnlany4.Name = "pnlany4"; + this.pnlany4.Size = new System.Drawing.Size(20, 13); + this.pnlany4.TabIndex = 8; + this.pnlany4.Visible = false; + // + // pnlany6 + // + this.pnlany6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany6.Location = new System.Drawing.Point(207, 8); + this.pnlany6.Name = "pnlany6"; + this.pnlany6.Size = new System.Drawing.Size(20, 13); + this.pnlany6.TabIndex = 12; + this.pnlany6.Visible = false; + // + // pnlany15 + // + this.pnlany15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany15.Location = new System.Drawing.Point(233, 25); + this.pnlany15.Name = "pnlany15"; + this.pnlany15.Size = new System.Drawing.Size(20, 13); + this.pnlany15.TabIndex = 15; + this.pnlany15.Visible = false; + // + // pnlany2 + // + this.pnlany2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany2.Location = new System.Drawing.Point(103, 8); + this.pnlany2.Name = "pnlany2"; + this.pnlany2.Size = new System.Drawing.Size(20, 13); + this.pnlany2.TabIndex = 4; + this.pnlany2.Visible = false; + // + // pnlany13 + // + this.pnlany13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany13.Location = new System.Drawing.Point(181, 25); + this.pnlany13.Name = "pnlany13"; + this.pnlany13.Size = new System.Drawing.Size(20, 13); + this.pnlany13.TabIndex = 11; + this.pnlany13.Visible = false; + // + // pnlany11 + // + this.pnlany11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany11.Location = new System.Drawing.Point(129, 25); + this.pnlany11.Name = "pnlany11"; + this.pnlany11.Size = new System.Drawing.Size(20, 13); + this.pnlany11.TabIndex = 7; + this.pnlany11.Visible = false; + // + // pnlany7 + // + this.pnlany7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany7.Location = new System.Drawing.Point(233, 8); + this.pnlany7.Name = "pnlany7"; + this.pnlany7.Size = new System.Drawing.Size(20, 13); + this.pnlany7.TabIndex = 14; + this.pnlany7.Visible = false; + // + // pnlany9 + // + this.pnlany9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany9.Location = new System.Drawing.Point(77, 25); + this.pnlany9.Name = "pnlany9"; + this.pnlany9.Size = new System.Drawing.Size(20, 13); + this.pnlany9.TabIndex = 3; + this.pnlany9.Visible = false; + // + // pnlany5 + // + this.pnlany5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany5.Location = new System.Drawing.Point(181, 8); + this.pnlany5.Name = "pnlany5"; + this.pnlany5.Size = new System.Drawing.Size(20, 13); + this.pnlany5.TabIndex = 10; + this.pnlany5.Visible = false; + // + // pnlany3 + // + this.pnlany3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany3.Location = new System.Drawing.Point(129, 8); + this.pnlany3.Name = "pnlany3"; + this.pnlany3.Size = new System.Drawing.Size(20, 13); + this.pnlany3.TabIndex = 6; + this.pnlany3.Visible = false; + // + // pnlany1 + // + this.pnlany1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlany1.Location = new System.Drawing.Point(77, 8); + this.pnlany1.Name = "pnlany1"; + this.pnlany1.Size = new System.Drawing.Size(20, 13); + this.pnlany1.TabIndex = 2; + this.pnlany1.Visible = false; + // + // lblanylevel + // + this.lblanylevel.AutoSize = true; + this.lblanylevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblanylevel.Location = new System.Drawing.Point(5, 25); + this.lblanylevel.Name = "lblanylevel"; + this.lblanylevel.Size = new System.Drawing.Size(49, 15); + this.lblanylevel.TabIndex = 1; + this.lblanylevel.Text = "Level: 4"; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label1.Location = new System.Drawing.Point(3, 2); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(43, 22); + this.Label1.TabIndex = 0; + this.Label1.Text = "Any"; + // + // Panel1 + // + this.Panel1.BackColor = System.Drawing.Color.White; + this.Panel1.Controls.Add(this.lblnewcolourrgb); + this.Panel1.Controls.Add(this.lblnewcolourname); + this.Panel1.Controls.Add(this.Label26); + this.Panel1.Controls.Add(this.Label17); + this.Panel1.Controls.Add(this.lbloldcolourrgb); + this.Panel1.Controls.Add(this.lbloldcolourname); + this.Panel1.Controls.Add(this.Label14); + this.Panel1.Controls.Add(this.pnlnewcolour); + this.Panel1.Controls.Add(this.pnloldcolour); + this.Panel1.Controls.Add(this.lblobjecttocolour); + this.Panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.Panel1.Location = new System.Drawing.Point(0, 0); + this.Panel1.Name = "Panel1"; + this.Panel1.Size = new System.Drawing.Size(552, 107); + this.Panel1.TabIndex = 0; + // + // lblnewcolourrgb + // + this.lblnewcolourrgb.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblnewcolourrgb.Location = new System.Drawing.Point(298, 66); + this.lblnewcolourrgb.Name = "lblnewcolourrgb"; + this.lblnewcolourrgb.Size = new System.Drawing.Size(147, 18); + this.lblnewcolourrgb.TabIndex = 10; + this.lblnewcolourrgb.Text = "RGB: 234, 341, 111"; + // + // lblnewcolourname + // + this.lblnewcolourname.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblnewcolourname.Location = new System.Drawing.Point(298, 49); + this.lblnewcolourname.Name = "lblnewcolourname"; + this.lblnewcolourname.Size = new System.Drawing.Size(145, 18); + this.lblnewcolourname.TabIndex = 9; + this.lblnewcolourname.Text = "Name: Whitesmoke"; + // + // Label26 + // + this.Label26.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label26.Location = new System.Drawing.Point(298, 32); + this.Label26.Name = "Label26"; + this.Label26.Size = new System.Drawing.Size(145, 18); + this.Label26.TabIndex = 8; + this.Label26.Text = "New Colour"; + // + // Label17 + // + this.Label17.AutoSize = true; + this.Label17.Location = new System.Drawing.Point(7, 87); + this.Label17.Name = "Label17"; + this.Label17.Size = new System.Drawing.Size(426, 13); + this.Label17.TabIndex = 7; + this.Label17.Text = "Click the new colour above to confirm your colour choice or click the old colour " + + "to cancel"; + // + // lbloldcolourrgb + // + this.lbloldcolourrgb.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbloldcolourrgb.Location = new System.Drawing.Point(-2, 66); + this.lbloldcolourrgb.Name = "lbloldcolourrgb"; + this.lbloldcolourrgb.Size = new System.Drawing.Size(151, 18); + this.lbloldcolourrgb.TabIndex = 6; + this.lbloldcolourrgb.Text = "50, 60, 20 :RGB"; + this.lbloldcolourrgb.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // lbloldcolourname + // + this.lbloldcolourname.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbloldcolourname.Location = new System.Drawing.Point(-2, 49); + this.lbloldcolourname.Name = "lbloldcolourname"; + this.lbloldcolourname.Size = new System.Drawing.Size(151, 18); + this.lbloldcolourname.TabIndex = 5; + this.lbloldcolourname.Text = "Red :Name"; + this.lbloldcolourname.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // Label14 + // + this.Label14.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label14.Location = new System.Drawing.Point(-2, 32); + this.Label14.Name = "Label14"; + this.Label14.Size = new System.Drawing.Size(151, 18); + this.Label14.TabIndex = 4; + this.Label14.Text = "Old Colour"; + this.Label14.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // pnlnewcolour + // + this.pnlnewcolour.Location = new System.Drawing.Point(227, 32); + this.pnlnewcolour.Name = "pnlnewcolour"; + this.pnlnewcolour.Size = new System.Drawing.Size(67, 52); + this.pnlnewcolour.TabIndex = 3; + // + // pnloldcolour + // + this.pnloldcolour.Location = new System.Drawing.Point(153, 32); + this.pnloldcolour.Name = "pnloldcolour"; + this.pnloldcolour.Size = new System.Drawing.Size(67, 52); + this.pnloldcolour.TabIndex = 2; + // + // lblobjecttocolour + // + this.lblobjecttocolour.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblobjecttocolour.Location = new System.Drawing.Point(10, 5); + this.lblobjecttocolour.Name = "lblobjecttocolour"; + this.lblobjecttocolour.Size = new System.Drawing.Size(423, 23); + this.lblobjecttocolour.TabIndex = 1; + this.lblobjecttocolour.Text = "Close Button Colour"; + this.lblobjecttocolour.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // ColorPicker + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pgcontents); + this.Name = "ColorPicker"; + this.Text = "Color Picker"; + this.Size = new System.Drawing.Size(552, 657); + this.Load += new System.EventHandler(this.Color_Picker_Load); + this.pgcontents.ResumeLayout(false); + this.pnlpinkcolours.ResumeLayout(false); + this.pnlpinkcolours.PerformLayout(); + this.pnlpinkoptions.ResumeLayout(false); + this.pnlpinkoptions.PerformLayout(); + this.pnlredcolours.ResumeLayout(false); + this.pnlredcolours.PerformLayout(); + this.pnlredoptions.ResumeLayout(false); + this.pnlredoptions.PerformLayout(); + this.pnlbrowncolours.ResumeLayout(false); + this.pnlbrowncolours.PerformLayout(); + this.pnlbrownoptions.ResumeLayout(false); + this.pnlbrownoptions.PerformLayout(); + this.pnlorangecolours.ResumeLayout(false); + this.pnlorangecolours.PerformLayout(); + this.pnlorangeoptions.ResumeLayout(false); + this.pnlorangeoptions.PerformLayout(); + this.pnlyellowcolours.ResumeLayout(false); + this.pnlyellowcolours.PerformLayout(); + this.pnlyellowoptions.ResumeLayout(false); + this.pnlyellowoptions.PerformLayout(); + this.pnlgreencolours.ResumeLayout(false); + this.pnlgreencolours.PerformLayout(); + this.pnlgreenoptions.ResumeLayout(false); + this.pnlgreenoptions.PerformLayout(); + this.pnlbluecolours.ResumeLayout(false); + this.pnlbluecolours.PerformLayout(); + this.pnlblueoptions.ResumeLayout(false); + this.pnlblueoptions.PerformLayout(); + this.pnlpurplecolours.ResumeLayout(false); + this.pnlpurplecolours.PerformLayout(); + this.pnlpurpleoptions.ResumeLayout(false); + this.pnlpurpleoptions.PerformLayout(); + this.pnlgraycolours.ResumeLayout(false); + this.pnlgraycolours.PerformLayout(); + this.pnlanycolours.ResumeLayout(false); + this.pnlanycolours.PerformLayout(); + this.pnlanyoptions.ResumeLayout(false); + this.pnlanyoptions.PerformLayout(); + this.Panel1.ResumeLayout(false); + this.Panel1.PerformLayout(); + this.ResumeLayout(false); + + } + internal System.Windows.Forms.Panel pgcontents; + internal System.Windows.Forms.Panel pnlanycolours; + internal System.Windows.Forms.Panel pnlany16; + internal System.Windows.Forms.Panel pnlany12; + internal System.Windows.Forms.Panel pnlany14; + internal System.Windows.Forms.Panel pnlany10; + internal System.Windows.Forms.Panel pnlany4; + internal System.Windows.Forms.Panel pnlany6; + internal System.Windows.Forms.Panel pnlany15; + internal System.Windows.Forms.Panel pnlany2; + internal System.Windows.Forms.Panel pnlany13; + internal System.Windows.Forms.Panel pnlany11; + internal System.Windows.Forms.Panel pnlany7; + internal System.Windows.Forms.Panel pnlany9; + internal System.Windows.Forms.Panel pnlany5; + internal System.Windows.Forms.Panel pnlany3; + internal System.Windows.Forms.Panel pnlany1; + internal System.Windows.Forms.Label lblanylevel; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.Panel Panel1; + internal System.Windows.Forms.Panel pnlnewcolour; + internal System.Windows.Forms.Panel pnloldcolour; + internal System.Windows.Forms.Label lblobjecttocolour; + internal System.Windows.Forms.Label Label17; + internal System.Windows.Forms.Label lbloldcolourrgb; + internal System.Windows.Forms.Label lbloldcolourname; + internal System.Windows.Forms.Label Label14; + internal System.Windows.Forms.Panel pnlpinkcolours; + internal System.Windows.Forms.Panel pnlpink16; + internal System.Windows.Forms.Panel pnlpink12; + internal System.Windows.Forms.Panel pnlpink14; + internal System.Windows.Forms.Panel pnlpink10; + internal System.Windows.Forms.Panel pnlpink8; + internal System.Windows.Forms.Panel pnlpink4; + internal System.Windows.Forms.Panel pnlpink6; + internal System.Windows.Forms.Panel pnlpink15; + internal System.Windows.Forms.Panel pnlpink2; + internal System.Windows.Forms.Panel pnlpink13; + internal System.Windows.Forms.Panel pnlpink11; + internal System.Windows.Forms.Panel pnlpink7; + internal System.Windows.Forms.Panel pnlpink9; + internal System.Windows.Forms.Panel pnlpink5; + internal System.Windows.Forms.Panel pnlpink3; + internal System.Windows.Forms.Panel pnlpink1; + internal System.Windows.Forms.Label lblpinklevel; + internal System.Windows.Forms.Label Label23; + internal System.Windows.Forms.Panel pnlredcolours; + internal System.Windows.Forms.Panel pnlred16; + internal System.Windows.Forms.Panel pnlred12; + internal System.Windows.Forms.Panel pnlred14; + internal System.Windows.Forms.Panel pnlred10; + internal System.Windows.Forms.Panel pnlred8; + internal System.Windows.Forms.Panel pnlred4; + internal System.Windows.Forms.Panel pnlred6; + internal System.Windows.Forms.Panel pnlred15; + internal System.Windows.Forms.Panel pnlred2; + internal System.Windows.Forms.Panel pnlred13; + internal System.Windows.Forms.Panel pnlred11; + internal System.Windows.Forms.Panel pnlred7; + internal System.Windows.Forms.Panel pnlred9; + internal System.Windows.Forms.Panel pnlred5; + internal System.Windows.Forms.Panel pnlred3; + internal System.Windows.Forms.Panel pnlred1; + internal System.Windows.Forms.Label lblredlevel; + internal System.Windows.Forms.Label Label21; + internal System.Windows.Forms.Panel pnlbrowncolours; + internal System.Windows.Forms.Panel pnlbrown16; + internal System.Windows.Forms.Panel pnlbrown12; + internal System.Windows.Forms.Panel pnlbrown14; + internal System.Windows.Forms.Panel pnlbrown10; + internal System.Windows.Forms.Panel pnlbrown8; + internal System.Windows.Forms.Panel pnlbrown4; + internal System.Windows.Forms.Panel pnlbrown6; + internal System.Windows.Forms.Panel pnlbrown15; + internal System.Windows.Forms.Panel pnlbrown2; + internal System.Windows.Forms.Panel pnlbrown13; + internal System.Windows.Forms.Panel pnlbrown11; + internal System.Windows.Forms.Panel pnlbrown7; + internal System.Windows.Forms.Panel pnlbrown9; + internal System.Windows.Forms.Panel pnlbrown5; + internal System.Windows.Forms.Panel pnlbrown3; + internal System.Windows.Forms.Panel pnlbrown1; + internal System.Windows.Forms.Label lblbrownlevel; + internal System.Windows.Forms.Label Label19; + internal System.Windows.Forms.Panel pnlorangecolours; + internal System.Windows.Forms.Panel pnlorange16; + internal System.Windows.Forms.Panel pnlorange12; + internal System.Windows.Forms.Panel pnlorange14; + internal System.Windows.Forms.Panel pnlorange10; + internal System.Windows.Forms.Panel pnlorange8; + internal System.Windows.Forms.Panel pnlorange4; + internal System.Windows.Forms.Panel pnlorange6; + internal System.Windows.Forms.Panel pnlorange15; + internal System.Windows.Forms.Panel pnlorange2; + internal System.Windows.Forms.Panel pnlorange13; + internal System.Windows.Forms.Panel pnlorange11; + internal System.Windows.Forms.Panel pnlorange7; + internal System.Windows.Forms.Panel pnlorange9; + internal System.Windows.Forms.Panel pnlorange5; + internal System.Windows.Forms.Panel pnlorange3; + internal System.Windows.Forms.Panel pnlorange1; + internal System.Windows.Forms.Label lblorangelevel; + internal System.Windows.Forms.Label Label13; + internal System.Windows.Forms.Panel pnlyellowcolours; + internal System.Windows.Forms.Panel pnlyellow16; + internal System.Windows.Forms.Panel pnlyellow12; + internal System.Windows.Forms.Panel pnlyellow14; + internal System.Windows.Forms.Panel pnlyellow10; + internal System.Windows.Forms.Panel pnlyellow8; + internal System.Windows.Forms.Panel pnlyellow4; + internal System.Windows.Forms.Panel pnlyellow6; + internal System.Windows.Forms.Panel pnlyellow15; + internal System.Windows.Forms.Panel pnlyellow2; + internal System.Windows.Forms.Panel pnlyellow13; + internal System.Windows.Forms.Panel pnlyellow11; + internal System.Windows.Forms.Panel pnlyellow7; + internal System.Windows.Forms.Panel pnlyellow9; + internal System.Windows.Forms.Panel pnlyellow5; + internal System.Windows.Forms.Panel pnlyellow3; + internal System.Windows.Forms.Panel pnlyellow1; + internal System.Windows.Forms.Label lblyellowlevel; + internal System.Windows.Forms.Label Label11; + internal System.Windows.Forms.Panel pnlgreencolours; + internal System.Windows.Forms.Panel pnlgreen16; + internal System.Windows.Forms.Panel pnlgreen12; + internal System.Windows.Forms.Panel pnlgreen14; + internal System.Windows.Forms.Panel pnlgreen10; + internal System.Windows.Forms.Panel pnlgreen8; + internal System.Windows.Forms.Panel pnlgreen4; + internal System.Windows.Forms.Panel pnlgreen6; + internal System.Windows.Forms.Panel pnlgreen15; + internal System.Windows.Forms.Panel pnlgreen2; + internal System.Windows.Forms.Panel pnlgreen13; + internal System.Windows.Forms.Panel pnlgreen11; + internal System.Windows.Forms.Panel pnlgreen7; + internal System.Windows.Forms.Panel pnlgreen9; + internal System.Windows.Forms.Panel pnlgreen5; + internal System.Windows.Forms.Panel pnlgreen3; + internal System.Windows.Forms.Panel pnlgreen1; + internal System.Windows.Forms.Label lblgreenlevel; + internal System.Windows.Forms.Label Label9; + internal System.Windows.Forms.Panel pnlbluecolours; + internal System.Windows.Forms.Panel pnlblue16; + internal System.Windows.Forms.Panel pnlblue12; + internal System.Windows.Forms.Panel pnlblue14; + internal System.Windows.Forms.Panel pnlblue10; + internal System.Windows.Forms.Panel pnlblue8; + internal System.Windows.Forms.Panel pnlblue4; + internal System.Windows.Forms.Panel pnlblue6; + internal System.Windows.Forms.Panel pnlblue15; + internal System.Windows.Forms.Panel pnlblue2; + internal System.Windows.Forms.Panel pnlblue13; + internal System.Windows.Forms.Panel pnlblue11; + internal System.Windows.Forms.Panel pnlblue7; + internal System.Windows.Forms.Panel pnlblue9; + internal System.Windows.Forms.Panel pnlblue5; + internal System.Windows.Forms.Panel pnlblue3; + internal System.Windows.Forms.Panel pnlblue1; + internal System.Windows.Forms.Label lblbluelevel; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.Panel pnlpurplecolours; + internal System.Windows.Forms.Panel pnlpurple16; + internal System.Windows.Forms.Panel pnlpurple12; + internal System.Windows.Forms.Panel pnlpurple14; + internal System.Windows.Forms.Panel pnlpurple10; + internal System.Windows.Forms.Panel pnlpurple8; + internal System.Windows.Forms.Panel pnlpurple4; + internal System.Windows.Forms.Panel pnlpurple6; + internal System.Windows.Forms.Panel pnlpurple15; + internal System.Windows.Forms.Panel pnlpurple2; + internal System.Windows.Forms.Panel pnlpurple13; + internal System.Windows.Forms.Panel pnlpurple11; + internal System.Windows.Forms.Panel pnlpurple7; + internal System.Windows.Forms.Panel pnlpurple9; + internal System.Windows.Forms.Panel pnlpurple5; + internal System.Windows.Forms.Panel pnlpurple3; + internal System.Windows.Forms.Panel pnlpurple1; + internal System.Windows.Forms.Label lblpurplelevel; + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.Panel pnlgraycolours; + internal System.Windows.Forms.Panel pnlgray16; + internal System.Windows.Forms.Panel pnlgray12; + internal System.Windows.Forms.Panel pnlgray14; + internal System.Windows.Forms.Panel pnlgray10; + internal System.Windows.Forms.Panel pnlgray8; + internal System.Windows.Forms.Panel pnlgray4; + internal System.Windows.Forms.Panel pnlgray6; + internal System.Windows.Forms.Panel pnlgray15; + internal System.Windows.Forms.Panel pnlgray2; + internal System.Windows.Forms.Panel pnlgray13; + internal System.Windows.Forms.Panel pnlgray11; + internal System.Windows.Forms.Panel pnlgray7; + internal System.Windows.Forms.Panel pnlgray9; + internal System.Windows.Forms.Panel pnlgray5; + internal System.Windows.Forms.Panel pnlgray3; + internal System.Windows.Forms.Panel pnlgray1; + internal System.Windows.Forms.Label lblgraylevel; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.Panel pnlpinkcustomcolour; + internal System.Windows.Forms.Panel pnlredcustomcolour; + internal System.Windows.Forms.Panel pnlbrowncustomcolour; + internal System.Windows.Forms.Panel pnlorangecustomcolour; + internal System.Windows.Forms.Panel pnlyellowcustomcolour; + internal System.Windows.Forms.Panel pnlgreencustomcolour; + internal System.Windows.Forms.Panel pnlbluecustomcolour; + internal System.Windows.Forms.Panel pnlpurplecustomcolour; + internal System.Windows.Forms.Panel pnlgraycustomcolour; + internal System.Windows.Forms.Panel pnlanycustomcolour; + internal System.Windows.Forms.Panel pnlany8; + internal System.Windows.Forms.Label lblnewcolourrgb; + internal System.Windows.Forms.Label lblnewcolourname; + internal System.Windows.Forms.Label Label26; + internal System.Windows.Forms.Label lblcustomshadetut; + internal System.Windows.Forms.TextBox txtcustomgrayshade; + internal System.Windows.Forms.Label Label6; + internal System.Windows.Forms.TextBox txtbluesred; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.TextBox txtbluesgreen; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.TextBox txtbluesblue; + internal System.Windows.Forms.Panel pnlblueoptions; + internal System.Windows.Forms.Panel pnlyellowoptions; + internal System.Windows.Forms.Label Label20; + internal System.Windows.Forms.TextBox txtyellowsblue; + internal System.Windows.Forms.TextBox txtyellowsred; + internal System.Windows.Forms.Label Label22; + internal System.Windows.Forms.Label Label24; + internal System.Windows.Forms.TextBox txtyellowsgreen; + internal System.Windows.Forms.Panel pnlgreenoptions; + internal System.Windows.Forms.Label Label15; + internal System.Windows.Forms.TextBox txtgreensred; + internal System.Windows.Forms.TextBox txtgreensgreen; + internal System.Windows.Forms.Label Label16; + internal System.Windows.Forms.Label Label18; + internal System.Windows.Forms.TextBox txtgreensblue; + internal System.Windows.Forms.Panel pnlpurpleoptions; + internal System.Windows.Forms.Label Label8; + internal System.Windows.Forms.TextBox txtpurplesgreen; + internal System.Windows.Forms.TextBox txtpurplesblue; + internal System.Windows.Forms.Label Label10; + internal System.Windows.Forms.Label Label12; + internal System.Windows.Forms.TextBox txtpurplesred; + internal System.Windows.Forms.Panel pnlpinkoptions; + internal System.Windows.Forms.Label Label35; + internal System.Windows.Forms.TextBox txtpinksgreen; + internal System.Windows.Forms.TextBox txtpinksred; + internal System.Windows.Forms.Label Label36; + internal System.Windows.Forms.Label Label37; + internal System.Windows.Forms.TextBox txtpinksblue; + internal System.Windows.Forms.Panel pnlredoptions; + internal System.Windows.Forms.Label Label32; + internal System.Windows.Forms.TextBox txtredsblue; + internal System.Windows.Forms.TextBox txtredsred; + internal System.Windows.Forms.Label Label33; + internal System.Windows.Forms.Label Label34; + internal System.Windows.Forms.TextBox txtredsgreen; + internal System.Windows.Forms.Panel pnlbrownoptions; + internal System.Windows.Forms.Label Label29; + internal System.Windows.Forms.TextBox txtbrownsblue; + internal System.Windows.Forms.TextBox txtbrownsred; + internal System.Windows.Forms.Label Label30; + internal System.Windows.Forms.Label Label31; + internal System.Windows.Forms.TextBox txtbrownsgreen; + internal System.Windows.Forms.Panel pnlorangeoptions; + internal System.Windows.Forms.Label Label25; + internal System.Windows.Forms.TextBox txtorangesblue; + internal System.Windows.Forms.TextBox txtorangesred; + internal System.Windows.Forms.Label Label27; + internal System.Windows.Forms.Label Label28; + internal System.Windows.Forms.TextBox txtorangesgreen; + internal System.Windows.Forms.Panel pnlanyoptions; + internal System.Windows.Forms.Label Label38; + internal System.Windows.Forms.TextBox txtanysgreen; + internal System.Windows.Forms.TextBox txtanysred; + internal System.Windows.Forms.Label Label39; + internal System.Windows.Forms.Label Label40; + internal System.Windows.Forms.TextBox txtanysblue; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/ColorPicker.cs b/ShiftOS.WinForms/Applications/ColorPicker.cs new file mode 100644 index 0000000..e5630c3 --- /dev/null +++ b/ShiftOS.WinForms/Applications/ColorPicker.cs @@ -0,0 +1,2358 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using ShiftOS.WinForms.Tools; +using API = ShiftOS.WinForms.Tools.ColorPickerDataBackend; + +namespace ShiftOS.WinForms.Applications +{ + public partial class ColorPicker : UserControl, IShiftOSWindow + { + public ColorPicker(Color oldcol, string ctc, Action callback) + { + InitializeComponent(); + oldcolour = oldcol; + colourtochange = ctc; + Callback = callback; + } + + private Action Callback = null; + + public Color NewColor = Color.Black; + + public void Color_Picker_Load(object sender, EventArgs e) + { + getoldcolour(); + determinelevels(); + shrinktosizebasedoncoloursbought(); + setupboughtcolours(); + loadmemory(); + + foreach (Control ctrl in pnlanycolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionany); + } + foreach (Control ctrl in pnlgraycolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctiongray); + } + + foreach (Control ctrl in pnlredcolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionred); + } + + foreach (Control ctrl in pnlgreencolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctiongreen); + } + + foreach (Control ctrl in pnlbluecolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionblue); + } + + foreach (Control ctrl in pnlorangecolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionorange); + } + + foreach (Control ctrl in pnlyellowcolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionyellow); + } + + foreach (Control ctrl in pnlbrowncolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionbrown); + } + + foreach (Control ctrl in pnlpurplecolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionpurple); + } + + foreach (Control ctrl in pnlpinkcolours.Controls) + { + ctrl.MouseDown += new MouseEventHandler(this.colourselctionpink); + } + + pnloldcolour.Click += new EventHandler(pnloldcolour_Click); + pnlnewcolour.Click += new EventHandler(pnlnewcolour_Click); + } + + public int anylevel = 0; + public int graylevel = 0; + public int greenlevel = 0; + public int redlevel = 0; + public int bluelevel = 0; + public int yellowlevel = 0; + public int orangelevel = 0; + public int brownlevel = 0; + public int purplelevel = 0; + public int pinklevel = 0; + + + + public void loadmemory() + { + ///NYI + + + + + + + } + + public void saveanymemory() + { + API.anymemory[0] = pnlany1.BackColor; + API.anymemory[1] = pnlany2.BackColor; + API.anymemory[2] = pnlany3.BackColor; + API.anymemory[3] = pnlany4.BackColor; + API.anymemory[4] = pnlany5.BackColor; + API.anymemory[5] = pnlany6.BackColor; + API.anymemory[6] = pnlany7.BackColor; + API.anymemory[7] = pnlany8.BackColor; + API.anymemory[8] = pnlany9.BackColor; + API.anymemory[9] = pnlany10.BackColor; + API.anymemory[10] = pnlany11.BackColor; + API.anymemory[11] = pnlany12.BackColor; + API.anymemory[12] = pnlany13.BackColor; + API.anymemory[13] = pnlany14.BackColor; + API.anymemory[14] = pnlany15.BackColor; + API.anymemory[15] = pnlany16.BackColor; + } + + public void savegraymemory() + { + API.graymemory[0] = pnlgray1.BackColor; + API.graymemory[1] = pnlgray2.BackColor; + API.graymemory[2] = pnlgray3.BackColor; + API.graymemory[3] = pnlgray4.BackColor; + API.graymemory[4] = pnlgray5.BackColor; + API.graymemory[5] = pnlgray6.BackColor; + API.graymemory[6] = pnlgray7.BackColor; + API.graymemory[7] = pnlgray8.BackColor; + API.graymemory[8] = pnlgray9.BackColor; + API.graymemory[9] = pnlgray10.BackColor; + API.graymemory[10] = pnlgray11.BackColor; + API.graymemory[11] = pnlgray12.BackColor; + API.graymemory[12] = pnlgray13.BackColor; + API.graymemory[13] = pnlgray14.BackColor; + API.graymemory[14] = pnlgray15.BackColor; + API.graymemory[15] = pnlgray16.BackColor; + } + + public void savepurplememory() + { + API.purplememory[0] = pnlpurple1.BackColor; + API.purplememory[1] = pnlpurple2.BackColor; + API.purplememory[2] = pnlpurple3.BackColor; + API.purplememory[3] = pnlpurple4.BackColor; + API.purplememory[4] = pnlpurple5.BackColor; + API.purplememory[5] = pnlpurple6.BackColor; + API.purplememory[6] = pnlpurple7.BackColor; + API.purplememory[7] = pnlpurple8.BackColor; + API.purplememory[8] = pnlpurple9.BackColor; + API.purplememory[9] = pnlpurple10.BackColor; + API.purplememory[10] = pnlpurple11.BackColor; + API.purplememory[11] = pnlpurple12.BackColor; + API.purplememory[12] = pnlpurple13.BackColor; + API.purplememory[13] = pnlpurple14.BackColor; + API.purplememory[14] = pnlpurple15.BackColor; + API.purplememory[15] = pnlpurple16.BackColor; + } + + public void savebluememory() + { + API.bluememory[0] = pnlblue1.BackColor; + API.bluememory[1] = pnlblue2.BackColor; + API.bluememory[2] = pnlblue3.BackColor; + API.bluememory[3] = pnlblue4.BackColor; + API.bluememory[4] = pnlblue5.BackColor; + API.bluememory[5] = pnlblue6.BackColor; + API.bluememory[6] = pnlblue7.BackColor; + API.bluememory[7] = pnlblue8.BackColor; + API.bluememory[8] = pnlblue9.BackColor; + API.bluememory[9] = pnlblue10.BackColor; + API.bluememory[10] = pnlblue11.BackColor; + API.bluememory[11] = pnlblue12.BackColor; + API.bluememory[12] = pnlblue13.BackColor; + API.bluememory[13] = pnlblue14.BackColor; + API.bluememory[14] = pnlblue15.BackColor; + API.bluememory[15] = pnlblue16.BackColor; + } + + public void savegreenmemory() + { + API.greenmemory[0] = pnlgreen1.BackColor; + API.greenmemory[1] = pnlgreen2.BackColor; + API.greenmemory[2] = pnlgreen3.BackColor; + API.greenmemory[3] = pnlgreen4.BackColor; + API.greenmemory[4] = pnlgreen5.BackColor; + API.greenmemory[5] = pnlgreen6.BackColor; + API.greenmemory[6] = pnlgreen7.BackColor; + API.greenmemory[7] = pnlgreen8.BackColor; + API.greenmemory[8] = pnlgreen9.BackColor; + API.greenmemory[9] = pnlgreen10.BackColor; + API.greenmemory[10] = pnlgreen11.BackColor; + API.greenmemory[11] = pnlgreen12.BackColor; + API.greenmemory[12] = pnlgreen13.BackColor; + API.greenmemory[13] = pnlgreen14.BackColor; + API.greenmemory[14] = pnlgreen15.BackColor; + API.greenmemory[15] = pnlgreen16.BackColor; + } + + public void saveyellowmemory() + { + API.yellowmemory[0] = pnlyellow1.BackColor; + API.yellowmemory[1] = pnlyellow2.BackColor; + API.yellowmemory[2] = pnlyellow3.BackColor; + API.yellowmemory[3] = pnlyellow4.BackColor; + API.yellowmemory[4] = pnlyellow5.BackColor; + API.yellowmemory[5] = pnlyellow6.BackColor; + API.yellowmemory[6] = pnlyellow7.BackColor; + API.yellowmemory[7] = pnlyellow8.BackColor; + API.yellowmemory[8] = pnlyellow9.BackColor; + API.yellowmemory[9] = pnlyellow10.BackColor; + API.yellowmemory[10] = pnlyellow11.BackColor; + API.yellowmemory[11] = pnlyellow12.BackColor; + API.yellowmemory[12] = pnlyellow13.BackColor; + API.yellowmemory[13] = pnlyellow14.BackColor; + API.yellowmemory[14] = pnlyellow15.BackColor; + API.yellowmemory[15] = pnlyellow16.BackColor; + } + + public void saveorangememory() + { + API.orangememory[0] = pnlorange1.BackColor; + API.orangememory[1] = pnlorange2.BackColor; + API.orangememory[2] = pnlorange3.BackColor; + API.orangememory[3] = pnlorange4.BackColor; + API.orangememory[4] = pnlorange5.BackColor; + API.orangememory[5] = pnlorange6.BackColor; + API.orangememory[6] = pnlorange7.BackColor; + API.orangememory[7] = pnlorange8.BackColor; + API.orangememory[8] = pnlorange9.BackColor; + API.orangememory[9] = pnlorange10.BackColor; + API.orangememory[10] = pnlorange11.BackColor; + API.orangememory[11] = pnlorange12.BackColor; + API.orangememory[12] = pnlorange13.BackColor; + API.orangememory[13] = pnlorange14.BackColor; + API.orangememory[14] = pnlorange15.BackColor; + API.orangememory[15] = pnlorange16.BackColor; + } + + public void savebrownmemory() + { + API.brownmemory[0] = pnlbrown1.BackColor; + API.brownmemory[1] = pnlbrown2.BackColor; + API.brownmemory[2] = pnlbrown3.BackColor; + API.brownmemory[3] = pnlbrown4.BackColor; + API.brownmemory[4] = pnlbrown5.BackColor; + API.brownmemory[5] = pnlbrown6.BackColor; + API.brownmemory[6] = pnlbrown7.BackColor; + API.brownmemory[7] = pnlbrown8.BackColor; + API.brownmemory[8] = pnlbrown9.BackColor; + API.brownmemory[9] = pnlbrown10.BackColor; + API.brownmemory[10] = pnlbrown11.BackColor; + API.brownmemory[11] = pnlbrown12.BackColor; + API.brownmemory[12] = pnlbrown13.BackColor; + API.brownmemory[13] = pnlbrown14.BackColor; + API.brownmemory[14] = pnlbrown15.BackColor; + API.brownmemory[15] = pnlbrown16.BackColor; + } + + public void saveredmemory() + { + API.redmemory[0] = pnlred1.BackColor; + API.redmemory[1] = pnlred2.BackColor; + API.redmemory[2] = pnlred3.BackColor; + API.redmemory[3] = pnlred4.BackColor; + API.redmemory[4] = pnlred5.BackColor; + API.redmemory[5] = pnlred6.BackColor; + API.redmemory[6] = pnlred7.BackColor; + API.redmemory[7] = pnlred8.BackColor; + API.redmemory[8] = pnlred9.BackColor; + API.redmemory[9] = pnlred10.BackColor; + API.redmemory[10] = pnlred11.BackColor; + API.redmemory[11] = pnlred12.BackColor; + API.redmemory[12] = pnlred13.BackColor; + API.redmemory[13] = pnlred14.BackColor; + API.redmemory[14] = pnlred15.BackColor; + API.redmemory[15] = pnlred16.BackColor; + } + + public void savepinkmemory() + { + API.pinkmemory[0] = pnlpink1.BackColor; + API.pinkmemory[1] = pnlpink2.BackColor; + API.pinkmemory[2] = pnlpink3.BackColor; + API.pinkmemory[3] = pnlpink4.BackColor; + API.pinkmemory[4] = pnlpink5.BackColor; + API.pinkmemory[5] = pnlpink6.BackColor; + API.pinkmemory[6] = pnlpink7.BackColor; + API.pinkmemory[7] = pnlpink8.BackColor; + API.pinkmemory[8] = pnlpink9.BackColor; + API.pinkmemory[9] = pnlpink10.BackColor; + API.pinkmemory[10] = pnlpink11.BackColor; + API.pinkmemory[11] = pnlpink12.BackColor; + API.pinkmemory[12] = pnlpink13.BackColor; + API.pinkmemory[13] = pnlpink14.BackColor; + API.pinkmemory[14] = pnlpink15.BackColor; + API.pinkmemory[15] = pnlpink16.BackColor; + } + + public string colourtochange = ""; + public Color oldcolour = Color.White; + + private void getoldcolour() + { + lblobjecttocolour.Text = colourtochange; + pnloldcolour.BackColor = oldcolour; + if (pnloldcolour.BackColor.IsNamedColor) + { + lbloldcolourname.Text = pnloldcolour.BackColor.Name + " :Name"; + } + else + { + lbloldcolourname.Text = "Custom :Name"; + } + lbloldcolourrgb.Text = pnloldcolour.BackColor.R + ", " + pnloldcolour.BackColor.G + ", " + pnloldcolour.BackColor.B + " :RGB"; + + pnlnewcolour.BackColor = API.lastcolourpick; + if (pnlnewcolour.BackColor.IsNamedColor) + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + + private void determinelevels() + { + graylevel = 4; + anylevel = 4; + purplelevel = 4; + bluelevel = 4; + greenlevel = 4; + yellowlevel = 4; + orangelevel = 4; + brownlevel = 4; + redlevel = 4; + pinklevel = 4; + } + + private void shrinktosizebasedoncoloursbought() + { + pnlpinkcolours.Show(); + pnlredcolours.Show(); + pnlbrowncolours.Show(); + pnlorangecolours.Show(); + pnlyellowcolours.Show(); + pnlgreencolours.Show(); + pnlbluecolours.Show(); + pnlpurplecolours.Show(); + pnlgraycolours.Show(); + pnlanycolours.Show(); + } + + private void setupboughtcolours() + { + switch (graylevel) + { + case 1: + lblgraylevel.Text = "Level 1"; + pnlgray1.BackColor = Color.Black; + pnlgray1.Show(); + pnlgray2.BackColor = Color.Gray; + pnlgray2.Show(); + pnlgray3.BackColor = Color.White; + pnlgray3.Show(); + break; + case 2: + lblgraylevel.Text = "Level 2"; + pnlgray1.BackColor = Color.Black; + pnlgray1.Show(); + pnlgray2.BackColor = Color.DimGray; + pnlgray2.Show(); + pnlgray3.BackColor = Color.Gray; + pnlgray3.Show(); + pnlgray4.BackColor = Color.LightGray; + pnlgray4.Show(); + pnlgray5.BackColor = Color.White; + pnlgray5.Show(); + break; + case 3: + lblgraylevel.Text = "Level 3"; + pnlgray1.BackColor = Color.Black; + pnlgray1.Show(); + pnlgray2.BackColor = Color.DimGray; + pnlgray2.Show(); + pnlgray3.BackColor = Color.Gray; + pnlgray3.Show(); + pnlgray4.BackColor = Color.DarkGray; + pnlgray4.Show(); + pnlgray5.BackColor = Color.Silver; + pnlgray5.Show(); + pnlgray6.BackColor = Color.LightGray; + pnlgray6.Show(); + pnlgray7.BackColor = Color.Gainsboro; + pnlgray7.Show(); + pnlgray8.BackColor = Color.WhiteSmoke; + pnlgray8.Show(); + pnlgray9.BackColor = Color.White; + pnlgray9.Show(); + break; + case 4: + lblgraylevel.Text = "Level 4"; + pnlgray1.BackColor = Color.Black; + pnlgray1.Show(); + pnlgray2.BackColor = Color.DimGray; + pnlgray2.Show(); + pnlgray3.BackColor = Color.Gray; + pnlgray3.Show(); + pnlgray4.BackColor = Color.DarkGray; + pnlgray4.Show(); + pnlgray5.BackColor = Color.Silver; + pnlgray5.Show(); + pnlgray6.BackColor = Color.LightGray; + pnlgray6.Show(); + pnlgray7.BackColor = Color.Gainsboro; + pnlgray7.Show(); + pnlgray8.BackColor = Color.WhiteSmoke; + pnlgray8.Show(); + pnlgray9.BackColor = Color.White; + pnlgray9.Show(); + pnlgray10.BackColor = Color.White; + pnlgray10.Show(); + pnlgray11.BackColor = Color.White; + pnlgray11.Show(); + pnlgray12.BackColor = Color.White; + pnlgray12.Show(); + pnlgray13.BackColor = Color.White; + pnlgray13.Show(); + pnlgray14.BackColor = Color.White; + pnlgray14.Show(); + pnlgray15.BackColor = Color.White; + pnlgray15.Show(); + pnlgray16.BackColor = Color.White; + pnlgray16.Show(); + pnlgraycustomcolour.Show(); + lblcustomshadetut.Show(); + txtcustomgrayshade.Show(); + break; + } + + switch (purplelevel) + { + case 1: + lblpurplelevel.Text = "Level 1"; + pnlpurple1.BackColor = Color.Purple; + pnlpurple1.Show(); + break; + case 2: + lblpurplelevel.Text = "Level 2"; + pnlpurple1.BackColor = Color.Indigo; + pnlpurple1.Show(); + pnlpurple2.BackColor = Color.Purple; + pnlpurple2.Show(); + pnlpurple3.BackColor = Color.MediumPurple; + pnlpurple3.Show(); + break; + case 3: + lblpurplelevel.Text = "Level 3"; + pnlpurple1.BackColor = Color.Indigo; + pnlpurple1.Show(); + pnlpurple2.BackColor = Color.DarkSlateBlue; + pnlpurple2.Show(); + pnlpurple3.BackColor = Color.Purple; + pnlpurple3.Show(); + pnlpurple4.BackColor = Color.DarkOrchid; + pnlpurple4.Show(); + pnlpurple5.BackColor = Color.DarkViolet; + pnlpurple5.Show(); + pnlpurple6.BackColor = Color.BlueViolet; + pnlpurple6.Show(); + pnlpurple7.BackColor = Color.SlateBlue; + pnlpurple7.Show(); + pnlpurple8.BackColor = Color.MediumSlateBlue; + pnlpurple8.Show(); + pnlpurple9.BackColor = Color.MediumPurple; + pnlpurple9.Show(); + pnlpurple10.BackColor = Color.MediumOrchid; + pnlpurple10.Show(); + pnlpurple11.BackColor = Color.Magenta; + pnlpurple11.Show(); + pnlpurple12.BackColor = Color.Orchid; + pnlpurple12.Show(); + pnlpurple13.BackColor = Color.Violet; + pnlpurple13.Show(); + pnlpurple14.BackColor = Color.Plum; + pnlpurple14.Show(); + pnlpurple15.BackColor = Color.Thistle; + pnlpurple15.Show(); + pnlpurple16.BackColor = Color.Lavender; + pnlpurple16.Show(); + break; + case 4: + lblpurplelevel.Text = "Level 4"; + pnlpurple1.BackColor = Color.Indigo; + pnlpurple1.Show(); + pnlpurple2.BackColor = Color.DarkSlateBlue; + pnlpurple2.Show(); + pnlpurple3.BackColor = Color.Purple; + pnlpurple3.Show(); + pnlpurple4.BackColor = Color.DarkOrchid; + pnlpurple4.Show(); + pnlpurple5.BackColor = Color.DarkViolet; + pnlpurple5.Show(); + pnlpurple6.BackColor = Color.BlueViolet; + pnlpurple6.Show(); + pnlpurple7.BackColor = Color.SlateBlue; + pnlpurple7.Show(); + pnlpurple8.BackColor = Color.MediumSlateBlue; + pnlpurple8.Show(); + pnlpurple9.BackColor = Color.MediumPurple; + pnlpurple9.Show(); + pnlpurple10.BackColor = Color.MediumOrchid; + pnlpurple10.Show(); + pnlpurple11.BackColor = Color.Magenta; + pnlpurple11.Show(); + pnlpurple12.BackColor = Color.Orchid; + pnlpurple12.Show(); + pnlpurple13.BackColor = Color.Violet; + pnlpurple13.Show(); + pnlpurple14.BackColor = Color.Plum; + pnlpurple14.Show(); + pnlpurple15.BackColor = Color.Thistle; + pnlpurple15.Show(); + pnlpurple16.BackColor = Color.Lavender; + pnlpurple16.Show(); + pnlpurplecustomcolour.Show(); + pnlpurpleoptions.Show(); + break; + } + + switch (bluelevel) + { + case 1: + lblbluelevel.Text = "Level 1"; + pnlblue1.BackColor = Color.Blue; + pnlblue1.Show(); + break; + case 2: + lblbluelevel.Text = "Level 2"; + pnlblue1.BackColor = Color.Navy; + pnlblue1.Show(); + pnlblue2.BackColor = Color.Blue; + pnlblue2.Show(); + pnlblue3.BackColor = Color.LightBlue; + pnlblue3.Show(); + break; + case 3: + lblbluelevel.Text = "Level 3"; + pnlblue1.BackColor = Color.MidnightBlue; + pnlblue1.Show(); + pnlblue2.BackColor = Color.Navy; + pnlblue2.Show(); + pnlblue3.BackColor = Color.Blue; + pnlblue3.Show(); + pnlblue4.BackColor = Color.RoyalBlue; + pnlblue4.Show(); + pnlblue5.BackColor = Color.CornflowerBlue; + pnlblue5.Show(); + pnlblue6.BackColor = Color.DeepSkyBlue; + pnlblue6.Show(); + pnlblue7.BackColor = Color.SkyBlue; + pnlblue7.Show(); + pnlblue8.BackColor = Color.LightBlue; + pnlblue8.Show(); + pnlblue9.BackColor = Color.LightSteelBlue; + pnlblue9.Show(); + pnlblue10.BackColor = Color.Cyan; + pnlblue10.Show(); + pnlblue11.BackColor = Color.Aquamarine; + pnlblue11.Show(); + pnlblue12.BackColor = Color.DarkTurquoise; + pnlblue12.Show(); + pnlblue13.BackColor = Color.LightSeaGreen; + pnlblue13.Show(); + pnlblue14.BackColor = Color.MediumAquamarine; + pnlblue14.Show(); + pnlblue15.BackColor = Color.CadetBlue; + pnlblue15.Show(); + pnlblue16.BackColor = Color.Teal; + pnlblue16.Show(); + break; + case 4: + lblbluelevel.Text = "Level 4"; + pnlblue1.BackColor = Color.MidnightBlue; + pnlblue1.Show(); + pnlblue2.BackColor = Color.Navy; + pnlblue2.Show(); + pnlblue3.BackColor = Color.Blue; + pnlblue3.Show(); + pnlblue4.BackColor = Color.RoyalBlue; + pnlblue4.Show(); + pnlblue5.BackColor = Color.CornflowerBlue; + pnlblue5.Show(); + pnlblue6.BackColor = Color.DeepSkyBlue; + pnlblue6.Show(); + pnlblue7.BackColor = Color.SkyBlue; + pnlblue7.Show(); + pnlblue8.BackColor = Color.LightBlue; + pnlblue8.Show(); + pnlblue9.BackColor = Color.LightSteelBlue; + pnlblue9.Show(); + pnlblue10.BackColor = Color.Cyan; + pnlblue10.Show(); + pnlblue11.BackColor = Color.Aquamarine; + pnlblue11.Show(); + pnlblue12.BackColor = Color.DarkTurquoise; + pnlblue12.Show(); + pnlblue13.BackColor = Color.LightSeaGreen; + pnlblue13.Show(); + pnlblue14.BackColor = Color.MediumAquamarine; + pnlblue14.Show(); + pnlblue15.BackColor = Color.CadetBlue; + pnlblue15.Show(); + pnlblue16.BackColor = Color.Teal; + pnlblue16.Show(); + pnlbluecustomcolour.Show(); + pnlblueoptions.Show(); + break; + } + + switch (greenlevel) + { + case 1: + lblgreenlevel.Text = "Level 1"; + pnlgreen1.BackColor = Color.Green; + pnlgreen1.Show(); + break; + case 2: + lblgreenlevel.Text = "Level 2"; + pnlgreen1.BackColor = Color.DarkGreen; + pnlgreen1.Show(); + pnlgreen2.BackColor = Color.Green; + pnlgreen2.Show(); + pnlgreen3.BackColor = Color.LightGreen; + pnlgreen3.Show(); + break; + case 3: + lblgreenlevel.Text = "Level 3"; + pnlgreen1.BackColor = Color.DarkGreen; + pnlgreen1.Show(); + pnlgreen2.BackColor = Color.Green; + pnlgreen2.Show(); + pnlgreen3.BackColor = Color.SeaGreen; + pnlgreen3.Show(); + pnlgreen4.BackColor = Color.MediumSeaGreen; + pnlgreen4.Show(); + pnlgreen5.BackColor = Color.DarkSeaGreen; + pnlgreen5.Show(); + pnlgreen6.BackColor = Color.LightGreen; + pnlgreen6.Show(); + pnlgreen7.BackColor = Color.MediumSpringGreen; + pnlgreen7.Show(); + pnlgreen8.BackColor = Color.SpringGreen; + pnlgreen8.Show(); + pnlgreen9.BackColor = Color.GreenYellow; + pnlgreen9.Show(); + pnlgreen10.BackColor = Color.LawnGreen; + pnlgreen10.Show(); + pnlgreen11.BackColor = Color.Lime; + pnlgreen11.Show(); + pnlgreen12.BackColor = Color.LimeGreen; + pnlgreen12.Show(); + pnlgreen13.BackColor = Color.YellowGreen; + pnlgreen13.Show(); + pnlgreen14.BackColor = Color.OliveDrab; + pnlgreen14.Show(); + pnlgreen15.BackColor = Color.Olive; + pnlgreen15.Show(); + pnlgreen16.BackColor = Color.DarkOliveGreen; + pnlgreen16.Show(); + break; + case 4: + lblgreenlevel.Text = "Level 4"; + pnlgreen1.BackColor = Color.DarkGreen; + pnlgreen1.Show(); + pnlgreen2.BackColor = Color.Green; + pnlgreen2.Show(); + pnlgreen3.BackColor = Color.SeaGreen; + pnlgreen3.Show(); + pnlgreen4.BackColor = Color.MediumSeaGreen; + pnlgreen4.Show(); + pnlgreen5.BackColor = Color.DarkSeaGreen; + pnlgreen5.Show(); + pnlgreen6.BackColor = Color.LightGreen; + pnlgreen6.Show(); + pnlgreen7.BackColor = Color.MediumSpringGreen; + pnlgreen7.Show(); + pnlgreen8.BackColor = Color.SpringGreen; + pnlgreen8.Show(); + pnlgreen9.BackColor = Color.GreenYellow; + pnlgreen9.Show(); + pnlgreen10.BackColor = Color.LawnGreen; + pnlgreen10.Show(); + pnlgreen11.BackColor = Color.Lime; + pnlgreen11.Show(); + pnlgreen12.BackColor = Color.LimeGreen; + pnlgreen12.Show(); + pnlgreen13.BackColor = Color.YellowGreen; + pnlgreen13.Show(); + pnlgreen14.BackColor = Color.OliveDrab; + pnlgreen14.Show(); + pnlgreen15.BackColor = Color.Olive; + pnlgreen15.Show(); + pnlgreen16.BackColor = Color.DarkOliveGreen; + pnlgreen16.Show(); + pnlgreencustomcolour.Show(); + pnlgreenoptions.Show(); + break; + } + + switch (yellowlevel) + { + case 1: + lblyellowlevel.Text = "Level 1"; + pnlyellow1.BackColor = Color.Yellow; + pnlyellow1.Show(); + break; + case 2: + lblyellowlevel.Text = "Level 2"; + pnlyellow1.BackColor = Color.DarkKhaki; + pnlyellow1.Show(); + pnlyellow2.BackColor = Color.Yellow; + pnlyellow2.Show(); + pnlyellow3.BackColor = Color.PaleGoldenrod; + pnlyellow3.Show(); + break; + case 3: + lblyellowlevel.Text = "Level 3"; + pnlyellow1.BackColor = Color.DarkKhaki; + pnlyellow1.Show(); + pnlyellow2.BackColor = Color.Yellow; + pnlyellow2.Show(); + pnlyellow3.BackColor = Color.Khaki; + pnlyellow3.Show(); + pnlyellow4.BackColor = Color.PaleGoldenrod; + pnlyellow4.Show(); + pnlyellow5.BackColor = Color.PeachPuff; + pnlyellow5.Show(); + pnlyellow6.BackColor = Color.Moccasin; + pnlyellow6.Show(); + pnlyellow7.BackColor = Color.PapayaWhip; + pnlyellow7.Show(); + pnlyellow8.BackColor = Color.LightGoldenrodYellow; + pnlyellow8.Show(); + pnlyellow9.BackColor = Color.LemonChiffon; + pnlyellow9.Show(); + pnlyellow10.BackColor = Color.LightYellow; + pnlyellow10.Show(); + break; + case 4: + lblyellowlevel.Text = "Level 4"; + pnlyellow1.BackColor = Color.DarkKhaki; + pnlyellow1.Show(); + pnlyellow2.BackColor = Color.Yellow; + pnlyellow2.Show(); + pnlyellow3.BackColor = Color.Khaki; + pnlyellow3.Show(); + pnlyellow4.BackColor = Color.PaleGoldenrod; + pnlyellow4.Show(); + pnlyellow5.BackColor = Color.PeachPuff; + pnlyellow5.Show(); + pnlyellow6.BackColor = Color.Moccasin; + pnlyellow6.Show(); + pnlyellow7.BackColor = Color.PapayaWhip; + pnlyellow7.Show(); + pnlyellow8.BackColor = Color.LightGoldenrodYellow; + pnlyellow8.Show(); + pnlyellow9.BackColor = Color.LemonChiffon; + pnlyellow9.Show(); + pnlyellow10.BackColor = Color.LightYellow; + pnlyellow10.Show(); + pnlyellow11.BackColor = Color.White; + pnlyellow11.Show(); + pnlyellow12.BackColor = Color.White; + pnlyellow12.Show(); + pnlyellow13.BackColor = Color.White; + pnlyellow13.Show(); + pnlyellow14.BackColor = Color.White; + pnlyellow14.Show(); + pnlyellow15.BackColor = Color.White; + pnlyellow15.Show(); + pnlyellow16.BackColor = Color.White; + pnlyellow16.Show(); + pnlyellowcustomcolour.Show(); + pnlyellowoptions.Show(); + break; + } + + switch (orangelevel) + { + case 1: + lblorangelevel.Text = "Level 1"; + pnlorange1.BackColor = Color.DarkOrange; + pnlorange1.Show(); + break; + case 2: + lblorangelevel.Text = "Level 2"; + pnlorange1.BackColor = Color.OrangeRed; + pnlorange1.Show(); + pnlorange2.BackColor = Color.DarkOrange; + pnlorange2.Show(); + pnlorange3.BackColor = Color.Orange; + pnlorange3.Show(); + break; + case 3: + lblorangelevel.Text = "Level 3"; + pnlorange1.BackColor = Color.OrangeRed; + pnlorange1.Show(); + pnlorange2.BackColor = Color.Tomato; + pnlorange2.Show(); + pnlorange3.BackColor = Color.Coral; + pnlorange3.Show(); + pnlorange4.BackColor = Color.DarkOrange; + pnlorange4.Show(); + pnlorange5.BackColor = Color.Orange; + pnlorange5.Show(); + pnlorange6.BackColor = Color.Gold; + pnlorange6.Show(); + break; + case 4: + lblorangelevel.Text = "Level 4"; + pnlorange1.BackColor = Color.OrangeRed; + pnlorange1.Show(); + pnlorange2.BackColor = Color.Tomato; + pnlorange2.Show(); + pnlorange3.BackColor = Color.Coral; + pnlorange3.Show(); + pnlorange4.BackColor = Color.DarkOrange; + pnlorange4.Show(); + pnlorange5.BackColor = Color.Orange; + pnlorange5.Show(); + pnlorange6.BackColor = Color.Gold; + pnlorange6.Show(); + pnlorange7.BackColor = Color.White; + pnlorange7.Show(); + pnlorange8.BackColor = Color.White; + pnlorange8.Show(); + pnlorange9.BackColor = Color.White; + pnlorange9.Show(); + pnlorange10.BackColor = Color.White; + pnlorange10.Show(); + pnlorange11.BackColor = Color.White; + pnlorange11.Show(); + pnlorange12.BackColor = Color.White; + pnlorange12.Show(); + pnlorange13.BackColor = Color.White; + pnlorange13.Show(); + pnlorange14.BackColor = Color.White; + pnlorange14.Show(); + pnlorange15.BackColor = Color.White; + pnlorange15.Show(); + pnlorange16.BackColor = Color.White; + pnlorange16.Show(); + pnlorangecustomcolour.Show(); + pnlorangeoptions.Show(); + break; + } + + switch (brownlevel) + { + case 1: + lblbrownlevel.Text = "Level 1"; + pnlbrown1.BackColor = Color.Sienna; + pnlbrown1.Show(); + break; + case 2: + lblbrownlevel.Text = "Level 2"; + pnlbrown1.BackColor = Color.SaddleBrown; + pnlbrown1.Show(); + pnlbrown2.BackColor = Color.Sienna; + pnlbrown2.Show(); + pnlbrown3.BackColor = Color.BurlyWood; + pnlbrown3.Show(); + break; + case 3: + lblbrownlevel.Text = "Level 3"; + pnlbrown1.BackColor = Color.Maroon; + pnlbrown1.Show(); + pnlbrown2.BackColor = Color.Brown; + pnlbrown2.Show(); + pnlbrown3.BackColor = Color.Sienna; + pnlbrown3.Show(); + pnlbrown4.BackColor = Color.SaddleBrown; + pnlbrown4.Show(); + pnlbrown5.BackColor = Color.Chocolate; + pnlbrown5.Show(); + pnlbrown6.BackColor = Color.Peru; + pnlbrown6.Show(); + pnlbrown7.BackColor = Color.DarkGoldenrod; + pnlbrown7.Show(); + pnlbrown8.BackColor = Color.Goldenrod; + pnlbrown8.Show(); + pnlbrown9.BackColor = Color.SandyBrown; + pnlbrown9.Show(); + pnlbrown10.BackColor = Color.RosyBrown; + pnlbrown10.Show(); + pnlbrown11.BackColor = Color.Tan; + pnlbrown11.Show(); + pnlbrown12.BackColor = Color.BurlyWood; + pnlbrown12.Show(); + pnlbrown13.BackColor = Color.Wheat; + pnlbrown13.Show(); + pnlbrown14.BackColor = Color.NavajoWhite; + pnlbrown14.Show(); + pnlbrown15.BackColor = Color.Bisque; + pnlbrown15.Show(); + pnlbrown16.BackColor = Color.BlanchedAlmond; + pnlbrown16.Show(); + break; + case 4: + lblbrownlevel.Text = "Level 4"; + pnlbrown1.BackColor = Color.Maroon; + pnlbrown1.Show(); + pnlbrown2.BackColor = Color.Brown; + pnlbrown2.Show(); + pnlbrown3.BackColor = Color.Sienna; + pnlbrown3.Show(); + pnlbrown4.BackColor = Color.SaddleBrown; + pnlbrown4.Show(); + pnlbrown5.BackColor = Color.Chocolate; + pnlbrown5.Show(); + pnlbrown6.BackColor = Color.Peru; + pnlbrown6.Show(); + pnlbrown7.BackColor = Color.DarkGoldenrod; + pnlbrown7.Show(); + pnlbrown8.BackColor = Color.Goldenrod; + pnlbrown8.Show(); + pnlbrown9.BackColor = Color.SandyBrown; + pnlbrown9.Show(); + pnlbrown10.BackColor = Color.RosyBrown; + pnlbrown10.Show(); + pnlbrown11.BackColor = Color.Tan; + pnlbrown11.Show(); + pnlbrown12.BackColor = Color.BurlyWood; + pnlbrown12.Show(); + pnlbrown13.BackColor = Color.Wheat; + pnlbrown13.Show(); + pnlbrown14.BackColor = Color.NavajoWhite; + pnlbrown14.Show(); + pnlbrown15.BackColor = Color.Bisque; + pnlbrown15.Show(); + pnlbrown16.BackColor = Color.BlanchedAlmond; + pnlbrown16.Show(); + pnlbrowncustomcolour.Show(); + pnlbrownoptions.Show(); + break; + } + + switch (redlevel) + { + case 1: + lblredlevel.Text = "Level 1"; + pnlred1.BackColor = Color.Red; + pnlred1.Show(); + break; + case 2: + lblredlevel.Text = "Level 2"; + pnlred1.BackColor = Color.DarkRed; + pnlred1.Show(); + pnlred2.BackColor = Color.Red; + pnlred2.Show(); + pnlred3.BackColor = Color.Salmon; + pnlred3.Show(); + break; + case 3: + lblredlevel.Text = "Level 3"; + pnlred1.BackColor = Color.DarkRed; + pnlred1.Show(); + pnlred2.BackColor = Color.Red; + pnlred2.Show(); + pnlred3.BackColor = Color.Firebrick; + pnlred3.Show(); + pnlred4.BackColor = Color.Crimson; + pnlred4.Show(); + pnlred5.BackColor = Color.IndianRed; + pnlred5.Show(); + pnlred6.BackColor = Color.LightCoral; + pnlred6.Show(); + pnlred7.BackColor = Color.DarkSalmon; + pnlred7.Show(); + pnlred8.BackColor = Color.Salmon; + pnlred8.Show(); + pnlred9.BackColor = Color.LightSalmon; + pnlred9.Show(); + break; + case 4: + lblredlevel.Text = "Level 4"; + pnlred1.BackColor = Color.DarkRed; + pnlred1.Show(); + pnlred2.BackColor = Color.Red; + pnlred2.Show(); + pnlred3.BackColor = Color.Firebrick; + pnlred3.Show(); + pnlred4.BackColor = Color.Crimson; + pnlred4.Show(); + pnlred5.BackColor = Color.IndianRed; + pnlred5.Show(); + pnlred6.BackColor = Color.LightCoral; + pnlred6.Show(); + pnlred7.BackColor = Color.DarkSalmon; + pnlred7.Show(); + pnlred8.BackColor = Color.Salmon; + pnlred8.Show(); + pnlred9.BackColor = Color.LightSalmon; + pnlred9.Show(); + pnlred10.BackColor = Color.White; + pnlred10.Show(); + pnlred11.BackColor = Color.White; + pnlred11.Show(); + pnlred12.BackColor = Color.White; + pnlred12.Show(); + pnlred13.BackColor = Color.White; + pnlred13.Show(); + pnlred14.BackColor = Color.White; + pnlred14.Show(); + pnlred15.BackColor = Color.White; + pnlred15.Show(); + pnlred16.BackColor = Color.White; + pnlred16.Show(); + pnlredcustomcolour.Show(); + pnlredoptions.Show(); + break; + } + + switch (pinklevel) + { + case 1: + lblpinklevel.Text = "Level 1"; + pnlpink1.BackColor = Color.HotPink; + pnlpink1.Show(); + break; + case 2: + lblpinklevel.Text = "Level 2"; + pnlpink1.BackColor = Color.DeepPink; + pnlpink1.Show(); + pnlpink2.BackColor = Color.HotPink; + pnlpink2.Show(); + pnlpink3.BackColor = Color.LightPink; + pnlpink3.Show(); + break; + case 3: + lblpinklevel.Text = "Level 3"; + pnlpink1.BackColor = Color.MediumVioletRed; + pnlpink1.Show(); + pnlpink2.BackColor = Color.PaleVioletRed; + pnlpink2.Show(); + pnlpink3.BackColor = Color.DeepPink; + pnlpink3.Show(); + pnlpink4.BackColor = Color.HotPink; + pnlpink4.Show(); + pnlpink5.BackColor = Color.LightPink; + pnlpink5.Show(); + pnlpink6.BackColor = Color.Pink; + pnlpink6.Show(); + break; + case 4: + lblpinklevel.Text = "Level 4"; + pnlpink1.BackColor = Color.MediumVioletRed; + pnlpink1.Show(); + pnlpink2.BackColor = Color.PaleVioletRed; + pnlpink2.Show(); + pnlpink3.BackColor = Color.DeepPink; + pnlpink3.Show(); + pnlpink4.BackColor = Color.HotPink; + pnlpink4.Show(); + pnlpink5.BackColor = Color.LightPink; + pnlpink5.Show(); + pnlpink6.BackColor = Color.Pink; + pnlpink6.Show(); + pnlpink7.BackColor = Color.White; + pnlpink7.Show(); + pnlpink8.BackColor = Color.White; + pnlpink8.Show(); + pnlpink9.BackColor = Color.White; + pnlpink9.Show(); + pnlpink10.BackColor = Color.White; + pnlpink10.Show(); + pnlpink11.BackColor = Color.White; + pnlpink11.Show(); + pnlpink12.BackColor = Color.White; + pnlpink12.Show(); + pnlpink13.BackColor = Color.White; + pnlpink13.Show(); + pnlpink14.BackColor = Color.White; + pnlpink14.Show(); + pnlpink15.BackColor = Color.White; + pnlpink15.Show(); + pnlpink16.BackColor = Color.White; + pnlpink16.Show(); + pnlpinkcustomcolour.Show(); + pnlpinkoptions.Show(); + break; + } + + switch (anylevel) + { + case 1: + lblanylevel.Text = "Level 1"; + pnlany1.BackColor = Color.White; + pnlany1.Show(); + pnlanycustomcolour.Show(); + pnlanyoptions.Show(); + break; + case 2: + lblanylevel.Text = "Level 2"; + pnlany1.BackColor = Color.White; + pnlany1.Show(); + pnlany2.BackColor = Color.White; + pnlany2.Show(); + pnlany3.BackColor = Color.White; + pnlany3.Show(); + pnlany4.BackColor = Color.White; + pnlany4.Show(); + pnlanycustomcolour.Show(); + pnlanyoptions.Show(); + break; + case 3: + lblanylevel.Text = "Level 3"; + pnlany1.BackColor = Color.White; + pnlany1.Show(); + pnlany2.BackColor = Color.White; + pnlany2.Show(); + pnlany3.BackColor = Color.White; + pnlany3.Show(); + pnlany4.BackColor = Color.White; + pnlany4.Show(); + pnlany5.BackColor = Color.White; + pnlany5.Show(); + pnlany6.BackColor = Color.White; + pnlany6.Show(); + pnlany7.BackColor = Color.White; + pnlany7.Show(); + pnlany8.BackColor = Color.White; + pnlany8.Show(); + pnlanycustomcolour.Show(); + pnlanyoptions.Show(); + break; + case 4: + lblanylevel.Text = "Level 4"; + pnlany1.BackColor = Color.White; + pnlany1.Show(); + pnlany2.BackColor = Color.White; + pnlany2.Show(); + pnlany3.BackColor = Color.White; + pnlany3.Show(); + pnlany4.BackColor = Color.White; + pnlany4.Show(); + pnlany5.BackColor = Color.White; + pnlany5.Show(); + pnlany6.BackColor = Color.White; + pnlany6.Show(); + pnlany7.BackColor = Color.White; + pnlany7.Show(); + pnlany8.BackColor = Color.White; + pnlany8.Show(); + pnlany9.BackColor = Color.White; + pnlany9.Show(); + pnlany10.BackColor = Color.White; + pnlany10.Show(); + pnlany11.BackColor = Color.White; + pnlany11.Show(); + pnlany12.BackColor = Color.White; + pnlany12.Show(); + pnlany13.BackColor = Color.White; + pnlany13.Show(); + pnlany14.BackColor = Color.White; + pnlany14.Show(); + pnlany15.BackColor = Color.White; + pnlany15.Show(); + pnlany16.BackColor = Color.White; + pnlany16.Show(); + pnlanycustomcolour.Show(); + pnlanyoptions.Show(); + break; + } + } + + public string Result = "Nothing"; + + // ERROR: Handles clauses are not supported in C# + private void pnloldcolour_Click(object sender, EventArgs e) + { + Callback?.Invoke(pnloldcolour.BackColor); + this.Close(); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlnewcolour_Click(object sender, EventArgs e) + { + NewColor = pnlnewcolour.BackColor; + Callback?.Invoke(NewColor); + this.Close(); + } + + // ERROR: Handles clauses are not supported in C# + private void pnloldcolour_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 2), pnloldcolour.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlanycolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlanycolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlgraycolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlgraycolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlpurplecolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlpurplecolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlbluecolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlbluecolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlgreencolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlgreencolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlyellowcolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlyellowcolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlorangecolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlorangecolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlbrowncolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlbrowncolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlredcolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlredcolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlpinkcolours_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 1), pnlpinkcolours.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlnewcolour_Paint(object sender, PaintEventArgs e) + { + e.Graphics.DrawRectangle(new Pen(Color.Black, 2), pnlnewcolour.ClientRectangle); + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctiongray(object sender, MouseEventArgs e) + { + try + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlgraycustomcolour.BackColor; + savegraymemory(); + } + } + catch { } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionpurple(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlpurplecustomcolour.BackColor; + savepurplememory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionblue(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlbluecustomcolour.BackColor; + savebluememory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctiongreen(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlgreencustomcolour.BackColor; + savegreenmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionyellow(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlyellowcustomcolour.BackColor; + saveyellowmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionorange(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlorangecustomcolour.BackColor; + saveorangememory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionbrown(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlbrowncustomcolour.BackColor; + savebrownmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionred(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlredcustomcolour.BackColor; + saveredmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionpink(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlpinkcustomcolour.BackColor; + savepinkmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void colourselctionany(object sender, MouseEventArgs e) + { + Panel spanel = (Panel)sender; + if (e.Button == MouseButtons.Left) + { + pnlnewcolour.BackColor = spanel.BackColor; + if (pnlnewcolour.BackColor.IsNamedColor) + { + if (pnlnewcolour.BackColor.Name.Length > 12) + { + lblnewcolourname.Text = pnlnewcolour.BackColor.Name; + } + else + { + lblnewcolourname.Text = "Name: " + pnlnewcolour.BackColor.Name; + } + } + else + { + lblnewcolourname.Text = "Name: Custom"; + } + lblnewcolourrgb.Text = "RGB: " + pnlnewcolour.BackColor.R + ", " + pnlnewcolour.BackColor.G + ", " + pnlnewcolour.BackColor.B; + } + if (e.Button == MouseButtons.Right) + { + spanel.BackColor = pnlanycustomcolour.BackColor; + saveanymemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void txtcustomgrayshade_TextChanged(object sender, EventArgs e) + { + if (txtcustomgrayshade.Text == "") + { + txtcustomgrayshade.Text = "0"; + } + else + { + if (Convert.ToInt32(txtcustomgrayshade.Text) > 255) + { + txtcustomgrayshade.Text = "255"; + } + else + { + pnlgraycustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtcustomgrayshade.Text), Convert.ToInt16(txtcustomgrayshade.Text), Convert.ToInt16(txtcustomgrayshade.Text)); + } + } + } + + // ERROR: Handles clauses are not supported in C# + private void CheckForNumber(object sender, KeyPressEventArgs e) + { + switch (e.KeyChar) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + e.Handled = true; + break; + } + } + + private void customcolourfailsafe() + { + if (txtcustomgrayshade.Text == "") + txtcustomgrayshade.Text = "0"; + + if (txtanysblue.Text == "") + txtanysblue.Text = "0"; + if (txtanysred.Text == "") + txtanysred.Text = "0"; + if (txtanysgreen.Text == "") + txtanysgreen.Text = "0"; + + if (txtpurplesblue.Text == "") + txtpurplesblue.Text = "255"; + if (txtpurplesred.Text == "") + txtpurplesred.Text = "150"; + if (txtpurplesgreen.Text == "") + txtpurplesgreen.Text = "0"; + + if (txtbluesblue.Text == "") + txtbluesblue.Text = "255"; + if (txtbluesred.Text == "") + txtbluesred.Text = "0"; + if (txtbluesgreen.Text == "") + txtbluesgreen.Text = "0"; + + if (txtgreensblue.Text == "") + txtgreensblue.Text = "0"; + if (txtgreensred.Text == "") + txtgreensred.Text = "0"; + if (txtgreensgreen.Text == "") + txtgreensgreen.Text = "255"; + + if (txtyellowsblue.Text == "") + txtyellowsblue.Text = "0"; + if (txtyellowsred.Text == "") + txtyellowsred.Text = "255"; + if (txtyellowsgreen.Text == "") + txtyellowsgreen.Text = "255"; + + if (txtorangesblue.Text == "") + txtorangesblue.Text = "0"; + if (txtorangesred.Text == "") + txtorangesred.Text = "255"; + if (txtorangesgreen.Text == "") + txtorangesgreen.Text = "60"; + + if (txtbrownsblue.Text == "") + txtbrownsblue.Text = "0"; + if (txtbrownsred.Text == "") + txtbrownsred.Text = "140"; + if (txtbrownsgreen.Text == "") + txtbrownsgreen.Text = "60"; + + if (txtredsblue.Text == "") + txtredsblue.Text = "0"; + if (txtredsred.Text == "") + txtredsred.Text = "255"; + if (txtredsgreen.Text == "") + txtredsgreen.Text = "0"; + + if (txtpinksblue.Text == "") + txtpinksblue.Text = "150"; + if (txtpinksred.Text == "") + txtpinksred.Text = "250"; + if (txtpinksgreen.Text == "") + txtpinksgreen.Text = "0"; + } + + // ERROR: Handles clauses are not supported in C# + private void txtpurplesgreen_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + + pnlpurplecustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtpurplesred.Text), Convert.ToInt16(txtpurplesgreen.Text), Convert.ToInt16(txtpurplesblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlpurpleoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtpurplesblue.Text) > 255) + { + txtpurplesblue.Text = "255"; + } + if (Convert.ToInt32(txtpurplesred.Text) > Convert.ToInt32(txtpurplesblue.Text)) + { + txtpurplesred.Text = txtpurplesblue.Text; + } + if (Convert.ToInt32(txtpurplesgreen.Text) > Convert.ToInt32(txtpurplesblue.Text)) + { + txtpurplesgreen.Text = txtpurplesred.Text; + } + if (Convert.ToInt32(txtpurplesgreen.Text) > Convert.ToInt32(txtpurplesred.Text)) + { + txtpurplesgreen.Text = txtpurplesred.Text; + } + pnlpurplecustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtpurplesred.Text), Convert.ToInt16(txtpurplesgreen.Text), Convert.ToInt16(txtpurplesblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtbluesgreen_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + + pnlbluecustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtbluesred.Text), Convert.ToInt16(txtbluesgreen.Text), Convert.ToInt16(txtbluesblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlblueoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtbluesblue.Text) > 255) + { + txtbluesblue.Text = "255"; + } + if (Convert.ToInt32(txtbluesgreen.Text) > Convert.ToInt32(txtbluesblue.Text)) + { + txtbluesgreen.Text = txtbluesblue.Text; + } + if (Convert.ToInt32(txtbluesred.Text) > Convert.ToInt32(txtbluesblue.Text)) + { + txtbluesred.Text = txtbluesgreen.Text; + } + if (Convert.ToInt32(txtbluesred.Text) > Convert.ToInt32(txtbluesgreen.Text)) + { + txtbluesred.Text = txtbluesgreen.Text; + } + pnlbluecustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtbluesred.Text), Convert.ToInt16(txtbluesgreen.Text), Convert.ToInt16(txtbluesblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtgreensgreen_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + + pnlgreencustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtgreensred.Text), Convert.ToInt16(txtgreensgreen.Text), Convert.ToInt16(txtgreensblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlgreenoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtgreensgreen.Text) > 255) + { + txtgreensgreen.Text = "255"; + } + if (Convert.ToInt32(txtgreensblue.Text) > Convert.ToInt32(txtgreensgreen.Text)) + { + txtgreensblue.Text = txtgreensgreen.Text; + } + if (Convert.ToInt32(txtgreensred.Text) > Convert.ToInt32(txtgreensgreen.Text)) + { + txtgreensred.Text = txtgreensgreen.Text; + } + if (Convert.ToInt32(txtgreensblue.Text) > Convert.ToInt32(txtgreensred.Text + 150)) + { + txtgreensblue.Text = (Convert.ToInt16(txtgreensred.Text) + 150).ToString(); + } + if (Convert.ToInt32(txtgreensred.Text) > Convert.ToInt32(txtgreensblue.Text + 150)) + { + txtgreensred.Text = (Convert.ToInt32(txtgreensblue.Text) + 150).ToString(); + } + pnlgreencustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtgreensred.Text), Convert.ToInt16(txtgreensgreen.Text), Convert.ToInt16(txtgreensblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtyellowsred_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + + pnlyellowcustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtyellowsred.Text), Convert.ToInt16(txtyellowsgreen.Text), Convert.ToInt16(txtyellowsblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlyellowoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtyellowsred.Text) > 255) + { + txtyellowsred.Text = "255"; + } + if (Convert.ToInt32(txtyellowsred.Text) < 180) + { + txtyellowsred.Text = "180"; + } + if (Convert.ToInt32(txtyellowsgreen.Text) > Convert.ToInt32(txtyellowsred.Text)) + { + txtyellowsgreen.Text = txtyellowsred.Text; + } + if (Convert.ToInt32(txtyellowsgreen.Text) < (Convert.ToInt32(txtyellowsred.Text) - 30)) + { + txtyellowsgreen.Text = (Convert.ToInt32(txtyellowsred.Text) - 30).ToString(); + } + if (Convert.ToInt32(txtyellowsblue.Text) > Convert.ToInt32(txtyellowsgreen.Text)) + { + txtyellowsblue.Text = txtyellowsgreen.Text; + } + pnlyellowcustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtyellowsred.Text), Convert.ToInt16(txtyellowsgreen.Text), Convert.ToInt16(txtyellowsblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtorangesred_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + + pnlorangecustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtorangesred.Text), Convert.ToInt16(txtorangesgreen.Text), Convert.ToInt16(txtorangesblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlorangeoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtorangesred.Text) > 255) + { + txtorangesred.Text = "255"; + } + if (Convert.ToInt32(txtorangesred.Text) < 255) + { + txtorangesred.Text = "255"; + } + if (Convert.ToInt32(txtorangesgreen.Text) > Convert.ToInt32(txtorangesred.Text) - 100) + { + txtorangesgreen.Text = (Convert.ToInt32(txtorangesred.Text) - 100).ToString(); + } + if (Convert.ToInt32(txtorangesgreen.Text) < 30) + { + txtorangesgreen.Text = "30"; + } + if (Convert.ToInt32(txtorangesblue.Text) > (Convert.ToInt32(txtorangesgreen.Text) - 30)) + { + txtorangesblue.Text = (Convert.ToInt32(txtorangesgreen.Text) - 30).ToString(); + } + pnlorangecustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtorangesred.Text), Convert.ToInt16(txtorangesgreen.Text), Convert.ToInt16(txtorangesblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtbrownsred_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + + pnlbrowncustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtbrownsred.Text), Convert.ToInt16(txtbrownsgreen.Text), Convert.ToInt16(txtbrownsblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlbrownoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtbrownsred.Text) > 255) + { + txtbrownsred.Text = "255"; + } + if (Convert.ToInt32(txtbrownsred.Text) < 90) + { + txtbrownsred.Text = "90"; + } + if (Convert.ToInt32(txtbrownsgreen.Text) > Convert.ToInt32(txtbrownsred.Text) - 30) + { + txtbrownsgreen.Text = (Convert.ToInt32(txtbrownsred.Text) - 30).ToString(); + } + if (Convert.ToInt32(txtbrownsgreen.Text) < Convert.ToInt32(txtbrownsred.Text) - 128) + { + txtbrownsgreen.Text = (Convert.ToInt32(txtbrownsred.Text) - 128).ToString(); + } + if (Convert.ToInt32(txtbrownsgreen.Text) < 60) + { + txtbrownsgreen.Text = "60"; + } + if (Convert.ToInt32(txtbrownsblue.Text) > Convert.ToInt32(txtbrownsgreen.Text) - 60) + { + txtbrownsblue.Text = (Convert.ToInt32(txtbrownsgreen.Text) - 60).ToString(); + } + pnlbrowncustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtbrownsred.Text), Convert.ToInt16(txtbrownsgreen.Text), Convert.ToInt16(txtbrownsblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtsred_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + + pnlredcustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtredsred.Text), Convert.ToInt16(txtredsgreen.Text), Convert.ToInt16(txtredsblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlredoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtredsred.Text) > 255) + { + txtredsred.Text = "255"; + } + if (Convert.ToInt32(txtredsblue.Text) > Convert.ToInt32(txtredsred.Text) - 80) + { + txtredsblue.Text = (Convert.ToInt32(txtredsred.Text) - 80).ToString(); + } + if (Convert.ToInt32(txtredsgreen.Text) > Convert.ToInt32(txtredsred.Text) - 80) + { + txtredsgreen.Text = (Convert.ToInt32(txtredsred.Text) - 80).ToString(); + } + if (Convert.ToInt32(txtredsgreen.Text) > Convert.ToInt32(txtredsblue.Text + 50)) + { + txtredsgreen.Text = (Convert.ToInt32(txtredsblue.Text) + 50).ToString(); + } + if (Convert.ToInt32(txtredsblue.Text) > Convert.ToInt32(txtredsgreen.Text + 50)) + { + txtredsblue.Text = (Convert.ToInt32(txtredsgreen.Text) + 50).ToString(); + } + pnlredcustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtredsred.Text), Convert.ToInt16(txtredsgreen.Text), Convert.ToInt16(txtredsblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtpinksred_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + try + { + pnlpinkcustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtpinksred.Text), Convert.ToInt16(txtpinksgreen.Text), Convert.ToInt16(txtpinksblue.Text)); + } + catch { } + } + + + + // ERROR: Handles clauses are not supported in C# + private void pnlpinkoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + if (Convert.ToInt32(txtpinksred.Text) > 255) + { + txtpinksred.Text = "255"; + } + if (Convert.ToInt32(txtpinksblue.Text) > Convert.ToInt32(txtpinksred.Text) - 50) + { + txtpinksblue.Text = (Convert.ToInt32(txtpinksred.Text) - 50).ToString(); + } + if (Convert.ToInt32(txtpinksgreen.Text) > Convert.ToInt32(txtpinksblue.Text)) + { + txtpinksgreen.Text = txtpinksblue.Text; + } + pnlpinkcustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtpinksred.Text), Convert.ToInt16(txtpinksgreen.Text), Convert.ToInt16(txtpinksblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void txtanysred_TextChanged(object sender, EventArgs e) + { + // ERROR: Not supported in C#: OnErrorStatement + try + { + pnlanycustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtanysred.Text), Convert.ToInt16(txtanysgreen.Text), Convert.ToInt16(txtanysblue.Text)); + } + catch + { + + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlanyoptions_MouseLeave(object sender, EventArgs e) + { + customcolourfailsafe(); + switch (anylevel) + { + case 1: + if (Convert.ToInt32(txtanysred.Text) > 150) + { + txtanysred.Text = "150"; + } + if (Convert.ToInt32(txtanysred.Text) < 100) + { + txtanysred.Text = "100"; + } + if (Convert.ToInt32(txtanysblue.Text) > 150) + { + txtanysblue.Text = "150"; + } + if (Convert.ToInt32(txtanysblue.Text) < 100) + { + txtanysblue.Text = "100"; + } + if (Convert.ToInt32(txtanysgreen.Text) > 150) + { + txtanysgreen.Text = "150"; + } + if (Convert.ToInt32(txtanysgreen.Text) < 100) + { + txtanysgreen.Text = "100"; + } + break; + case 2: + if (Convert.ToInt32(txtanysred.Text) > 200) + { + txtanysred.Text = "200"; + } + if (Convert.ToInt32(txtanysred.Text) < 100) + { + txtanysred.Text = "100"; + } + if (Convert.ToInt32(txtanysblue.Text) > 200) + { + txtanysblue.Text = "200"; + } + if (Convert.ToInt32(txtanysblue.Text) < 100) + { + txtanysblue.Text = "100"; + } + if (Convert.ToInt32(txtanysgreen.Text) > 200) + { + txtanysgreen.Text = "200"; + } + if (Convert.ToInt32(txtanysgreen.Text) < 100) + { + txtanysgreen.Text = "100"; + } + break; + case 3: + if (Convert.ToInt32(txtanysred.Text) > 225) + { + txtanysred.Text = "225"; + } + if (Convert.ToInt32(txtanysred.Text) < 75) + { + txtanysred.Text = "75"; + } + if (Convert.ToInt32(txtanysblue.Text) > 225) + { + txtanysblue.Text = "225"; + } + if (Convert.ToInt32(txtanysblue.Text) < 75) + { + txtanysblue.Text = "75"; + } + if (Convert.ToInt32(txtanysgreen.Text) > 225) + { + txtanysgreen.Text = "225"; + } + if (Convert.ToInt32(txtanysgreen.Text) < 75) + { + txtanysgreen.Text = "75"; + } + break; + case 4: + if (Convert.ToInt32(txtanysred.Text) > 255) + { + txtanysred.Text = "255"; + } + if (Convert.ToInt32(txtanysred.Text) < 0) + { + txtanysred.Text = "0"; + } + if (Convert.ToInt32(txtanysblue.Text) > 255) + { + txtanysblue.Text = "255"; + } + if (Convert.ToInt32(txtanysblue.Text) < 0) + { + txtanysblue.Text = "0"; + } + if (Convert.ToInt32(txtanysgreen.Text) > 255) + { + txtanysgreen.Text = "255"; + } + if (Convert.ToInt32(txtanysgreen.Text) < 0) + { + txtanysgreen.Text = "0"; + } + break; + } + pnlanycustomcolour.BackColor = Color.FromArgb(Convert.ToInt16(txtanysred.Text), Convert.ToInt16(txtanysgreen.Text), Convert.ToInt16(txtanysblue.Text)); + } + + // ERROR: Handles clauses are not supported in C# + private void pnlgraycustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Gray Rules"; + //infobox.textinfo = "You must input a value between 0 (black) and 255 (white) to form a shade of gray." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Gray Memory Wiped"; + //infobox.textinfo = "All your custom shades of Gray have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.graymemory, 0, API.graymemory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlpurplecustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Purple Rules"; + //infobox.textinfo = "Blue must have the highest value followed by red. Green must then have the lowest value." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Purple Memory Wiped"; + //infobox.textinfo = "All your custom shades of Purple have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.purplememory, 0, API.purplememory.Length); + setupboughtcolours(); + loadmemory(); + } + + } + + // ERROR: Handles clauses are not supported in C# + private void pnlbluecustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Blue Rules"; + //infobox.textinfo = "Blue must have the highest value followed by green. Red must then have the lowest value." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Blue Memory Wiped"; + //infobox.textinfo = "All your custom shades of Blue have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.bluememory, 0, API.bluememory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlgreencustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Green Rules"; + //infobox.textinfo = "Green must have the highest value. Red and Blue need to have values within 150 of eachother." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Green Memory Wiped"; + //infobox.textinfo = "All your custom shades of Green have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.greenmemory, 0, API.greenmemory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlyellowcustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Yellow Rules"; + //infobox.textinfo = "Red must have the highest value and be over 180. Green must be within 30 values of red. Blue must be the lowest value." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Yellow Memory Wiped"; + //infobox.textinfo = "All your custom shades of Yellow have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.yellowmemory, 0, API.yellowmemory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlorangecustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Orange Rules"; + //infobox.textinfo = "Red must have a value of 255. Green must be 100 or more values less than red. Blue must be 30 or more values less than green." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Orange Memory Wiped"; + //infobox.textinfo = "All your custom shades of Orange have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.orangememory, 0, API.orangememory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlbrowncustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Brown Rules"; + //infobox.textinfo = "Red must have the highest value. Green must be 30 - 128 values lower than red. Blue must be 60 or more values less than green." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Brown Memory Wiped"; + //infobox.textinfo = "All your custom shades of Brown have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.brownmemory, 0, API.brownmemory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlredcustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Red Rules"; + //infobox.textinfo = "Red must have the highest value. Green and blue must be 80 or more values less than red but within 50 values of eachother." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Red Memory Wiped"; + //infobox.textinfo = "All your custom shades of Red have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.redmemory, 0, API.redmemory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlpinkcustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + //infobox.title = "Pink Rules"; + //infobox.textinfo = "Red must have the highest value. Blue must be 50 or more values less than red. Green must have the lowest value." + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Pink Memory Wiped"; + //infobox.textinfo = "All your custom shades of Pink have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.pinkmemory, 0, API.pinkmemory.Length); + setupboughtcolours(); + loadmemory(); + } + } + + // ERROR: Handles clauses are not supported in C# + private void pnlanycustomcolour_Click(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + switch (anylevel) + { + case 1: + //infobox.title = "Custom Rules"; + //infobox.textinfo = "Red, Green and Blue may be set to any value between 100 and 150" + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + break; + case 2: + //infobox.title = "Custom Rules"; + //infobox.textinfo = "Red, Green and Blue may be set to any value between 100 and 200" + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + break; + case 3: + //infobox.title = "Custom Rules"; + //infobox.textinfo = "Red, Green and Blue may be set to any value between 75 and 225" + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + break; + case 4: + //infobox.title = "Custom Rules"; + //infobox.textinfo = "Red, Green and Blue may be set to any value between 0 and 255" + Environment.NewLine + Environment.NewLine + "Right click a box on the left to use this colour."; + //infobox.Show(); + break; + } + } + + if (e.Button == MouseButtons.Right) + { + //infobox.title = "Custom Colour Memory Wiped"; + //infobox.textinfo = "All your custom colour shades of have been wiped from memory." + Environment.NewLine + Environment.NewLine + "You can set custom colours but right clicking any of the boxes on the left."; + //infobox.Show(); + Array.Clear(API.anymemory, 0, API.anymemory.Length); + setupboughtcolours(); + loadmemory(); + } + + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } +} diff --git a/ShiftOS.WinForms/Applications/ColorPicker.resx b/ShiftOS.WinForms/Applications/ColorPicker.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/ColorPicker.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Dialog.Designer.cs b/ShiftOS.WinForms/Applications/Dialog.Designer.cs new file mode 100644 index 0000000..66493d6 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Dialog.Designer.cs @@ -0,0 +1,38 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class Dialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Text = "Dialog"; + } + + #endregion + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Dialog.cs b/ShiftOS.WinForms/Applications/Dialog.cs new file mode 100644 index 0000000..e47dfac --- /dev/null +++ b/ShiftOS.WinForms/Applications/Dialog.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications +{ + public partial class Dialog : UserControl, IShiftOSWindow + { + public Dialog() + { + InitializeComponent(); + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } +} diff --git a/ShiftOS.WinForms/Applications/FileDialog.Designer.cs b/ShiftOS.WinForms/Applications/FileDialog.Designer.cs new file mode 100644 index 0000000..c3f7a76 --- /dev/null +++ b/ShiftOS.WinForms/Applications/FileDialog.Designer.cs @@ -0,0 +1,147 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class FileDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lbcurrentfolder = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.pnlfiletype = new System.Windows.Forms.Panel(); + this.btnok = new System.Windows.Forms.Button(); + this.cbfiletypes = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.txtfilename = new System.Windows.Forms.TextBox(); + this.lvitems = new System.Windows.Forms.ListView(); + this.panel1.SuspendLayout(); + this.pnlfiletype.SuspendLayout(); + this.SuspendLayout(); + // + // lbcurrentfolder + // + this.lbcurrentfolder.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbcurrentfolder.Location = new System.Drawing.Point(0, 356); + this.lbcurrentfolder.Name = "lbcurrentfolder"; + this.lbcurrentfolder.Size = new System.Drawing.Size(634, 13); + this.lbcurrentfolder.TabIndex = 1; + this.lbcurrentfolder.Text = "label1"; + // + // panel1 + // + this.panel1.Controls.Add(this.pnlfiletype); + this.panel1.Controls.Add(this.lvitems); + this.panel1.Controls.Add(this.lbcurrentfolder); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(634, 369); + this.panel1.TabIndex = 2; + // + // pnlfiletype + // + this.pnlfiletype.Controls.Add(this.btnok); + this.pnlfiletype.Controls.Add(this.cbfiletypes); + this.pnlfiletype.Controls.Add(this.label1); + this.pnlfiletype.Controls.Add(this.txtfilename); + this.pnlfiletype.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pnlfiletype.Location = new System.Drawing.Point(0, 330); + this.pnlfiletype.Name = "pnlfiletype"; + this.pnlfiletype.Size = new System.Drawing.Size(634, 26); + this.pnlfiletype.TabIndex = 2; + // + // btnok + // + this.btnok.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnok.Location = new System.Drawing.Point(551, 2); + this.btnok.Name = "btnok"; + this.btnok.Size = new System.Drawing.Size(75, 23); + this.btnok.TabIndex = 3; + this.btnok.Text = "Open"; + this.btnok.UseVisualStyleBackColor = true; + // + // cbfiletypes + // + this.cbfiletypes.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.cbfiletypes.FormattingEnabled = true; + this.cbfiletypes.Location = new System.Drawing.Point(424, 2); + this.cbfiletypes.Name = "cbfiletypes"; + this.cbfiletypes.Size = new System.Drawing.Size(121, 21); + this.cbfiletypes.TabIndex = 2; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 6); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(38, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Name:"; + // + // txtfilename + // + this.txtfilename.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtfilename.Location = new System.Drawing.Point(47, 3); + this.txtfilename.Name = "txtfilename"; + this.txtfilename.Size = new System.Drawing.Size(371, 20); + this.txtfilename.TabIndex = 0; + // + // lvitems + // + this.lvitems.Dock = System.Windows.Forms.DockStyle.Fill; + this.lvitems.Location = new System.Drawing.Point(0, 0); + this.lvitems.Name = "lvitems"; + this.lvitems.Size = new System.Drawing.Size(634, 356); + this.lvitems.TabIndex = 0; + this.lvitems.UseCompatibleStateImageBehavior = false; + // + // FileDialog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(634, 369); + this.Controls.Add(this.panel1); + this.Name = "FileDialog"; + this.Text = "File Dialog"; + this.panel1.ResumeLayout(false); + this.pnlfiletype.ResumeLayout(false); + this.pnlfiletype.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label lbcurrentfolder; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.ListView lvitems; + private System.Windows.Forms.Panel pnlfiletype; + private System.Windows.Forms.Button btnok; + private System.Windows.Forms.ComboBox cbfiletypes; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtfilename; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/FileDialog.cs b/ShiftOS.WinForms/Applications/FileDialog.cs new file mode 100644 index 0000000..333a9b7 --- /dev/null +++ b/ShiftOS.WinForms/Applications/FileDialog.cs @@ -0,0 +1,256 @@ +using ShiftOS.Objects.ShiftFS; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static ShiftOS.Objects.ShiftFS.Utils; +using ShiftOS.Engine; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms.Applications +{ + /// + /// + /// + public partial class FileDialog : UserControl, IShiftOSWindow + { + public FileDialog(string[] filetypes, FileOpenerStyle style, Action _callback) + { + callback = _callback; + InitializeComponent(); + foreach(var itm in filetypes) + { + cbfiletypes.Items.Add(itm); + } + cbfiletypes.SelectedIndex = 0; + cbfiletypes.SelectedIndexChanged += (o, a) => { ResetList(); }; + this.lvitems.SelectedIndexChanged += (o, a) => + { + try + { + var itm = lvitems.SelectedItems[0]; + if (FileExists(currentdir + "/" + itm.Text)) + { + txtfilename.Text = itm.Text; + } + } + catch { } + + }; + btnok.Click += (o, a) => + { + string fname = ""; + fname = (!string.IsNullOrWhiteSpace(txtfilename.Text)) ? txtfilename.Text : ""; + fname = (!fname.EndsWith(cbfiletypes.SelectedItem.ToString())) ? fname + cbfiletypes.SelectedItem.ToString() : fname; + fname = (fname == cbfiletypes.SelectedItem.ToString()) ? "" : fname; + + switch (style) + { + + case FileOpenerStyle.Open: + + + if(FileExists(currentdir + "/" + fname)) + { + callback?.Invoke(currentdir + "/" + fname); + this.Close(); + } + else + { + Infobox.Show("{FILE_NOT_FOUND}", "{FILE_NOT_FOUND_EXP}"); + } + break; + case FileOpenerStyle.Save: + if (!string.IsNullOrWhiteSpace(fname)) + { + callback?.Invoke(currentdir + "/" + fname); + this.Close(); + } + else + { + Infobox.Show("{ENTER_FILENAME}", "{ENTER_FILENAME_EXP}"); + } + break; + } + }; + btnok.Text = style.ToString(); + this.Text = style.ToString() + " File"; + this.lvitems.DoubleClick += new EventHandler(this.lvitems_DoubleClick); + this.Load += (o, a) => + { + ChangeDirectory(Paths.GetPath("root")); + }; + } + + private void lvitems_DoubleClick(object sender, EventArgs e) + { + if (lvitems.SelectedItems.Count <= 0) + return; + + var item = lvitems.SelectedItems[0]; + var path = item.Tag as string; + if (currentdir == "__system") + { + ChangeDirectory(path); + } + else if (DirectoryExists(currentdir + "/" + path)) + { + ChangeDirectory(currentdir + "/" + path); + } + else if (FileExists(currentdir + "/" + path)) + { + callback?.Invoke(currentdir + "/" + txtfilename.Text); + this.Close(); + } + else if (path == "__..") + { + ChangeToParent(); + } + } + + Action callback; + + string currentdrive = "0:"; + + public void ChangeToParent() + { + if (currentdir == currentdrive) + { + ChangeDirectory("__system"); + } + + ChangeDirectory(GetParent(currentdir)); + } + + public string GetParent(string path) + { + string[] pathlist = path.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries); + if (pathlist.Length > 1) + { + if (path.EndsWith("/")) + { + path = path.Remove(path.Length - 1, 1); + } + path = path.Remove(path.LastIndexOf('/'), path.Length - path.LastIndexOf('/')); + return path; + } + else + { + return "__system"; + } + } + + private string currentdir = ""; + + public void ChangeDirectory(string path) + { + currentdir = path; + lbcurrentfolder.Text = currentdir; + ResetList(); + } + + public void ResetList() + { + if (lvitems.LargeImageList == null) + { + lvitems.LargeImageList = new ImageList(); + lvitems.LargeImageList.TransparentColor = SkinEngine.LoadedSkin.ControlColor; + lvitems.LargeImageList.ImageSize = new Size(42, 42); + FileSkimmer.GetAllTypes(lvitems.LargeImageList); + } + + + lvitems.Items.Clear(); + + if (currentdir == "__system") + { + //List all drives + foreach (var dir in Mounts) + { + var item = FileSkimmer.ConstructItemAsMount(dir); + item.ImageKey = "Mount"; + lvitems.Items.Add(item); + } + } + else if (DirectoryExists(currentdir)) + { + var up = new ListViewItem(); + up.ImageKey = "UpOne"; + up.Text = "Up one"; + up.Tag = "__.."; + lvitems.Items.Add(up); + + + foreach (var dir in GetDirectories(currentdir)) + { + var item = FileSkimmer.ConstructItem(GetDirectoryInfo(dir)); + item.ImageKey = "Directory"; + lvitems.Items.Add(item); + } + + foreach (var dir in GetFiles(currentdir)) + { + if (dir.EndsWith(cbfiletypes.SelectedItem as string)) + { + var item = FileSkimmer.ConstructItem(GetFileInfo(dir)); + item.ImageKey = FileSkimmerBackend.GetFileType(dir).ToString(); + lvitems.Items.Add(item); + } + } + + } + } + + [Obsolete("Use the relevant static method within File Skimmer instead.")] + public static ListViewItem ConstructItemAsMount(Directory dir) + { + var item = new ListViewItem(); + item.Text = dir.Name + "(" + Mounts.IndexOf(dir).ToString() + ":/)"; + item.Tag = Mounts.IndexOf(dir).ToString() + ":"; + return item; + } + + + [Obsolete("Use the relevant static method within File Skimmer instead.")] + public static ListViewItem ConstructItem(Directory dir) + { + var item = new ListViewItem(); + item.Text = dir.Name; + item.Tag = item.Text; + return item; + } + + [Obsolete("Use the relevant static method within File Skimmer instead.")] + public static ListViewItem ConstructItem(File dir) + { + var item = new ListViewItem(); + item.Text = dir.Name; + item.Tag = item.Text; + return item; + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } + + +} diff --git a/ShiftOS.WinForms/Applications/FileDialog.resx b/ShiftOS.WinForms/Applications/FileDialog.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/FileDialog.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs b/ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs new file mode 100644 index 0000000..7c75bd0 --- /dev/null +++ b/ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs @@ -0,0 +1,86 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class FileSkimmer + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lvitems = new System.Windows.Forms.ListView(); + this.panel1 = new System.Windows.Forms.Panel(); + this.lbcurrentfolder = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // lvitems + // + this.lvitems.Dock = System.Windows.Forms.DockStyle.Fill; + this.lvitems.Location = new System.Drawing.Point(0, 0); + this.lvitems.Name = "lvitems"; + this.lvitems.Size = new System.Drawing.Size(634, 356); + this.lvitems.TabIndex = 0; + this.lvitems.UseCompatibleStateImageBehavior = false; + this.lvitems.DoubleClick += new System.EventHandler(this.lvitems_DoubleClick); + // + // panel1 + // + this.panel1.Controls.Add(this.lvitems); + this.panel1.Controls.Add(this.lbcurrentfolder); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(634, 369); + this.panel1.TabIndex = 1; + // + // lbcurrentfolder + // + this.lbcurrentfolder.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbcurrentfolder.Location = new System.Drawing.Point(0, 356); + this.lbcurrentfolder.Name = "lbcurrentfolder"; + this.lbcurrentfolder.Size = new System.Drawing.Size(634, 13); + this.lbcurrentfolder.TabIndex = 1; + this.lbcurrentfolder.Text = "label1"; + // + // FileSkimmer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(634, 369); + this.Controls.Add(this.panel1); + this.Name = "FileSkimmer"; + this.Text = "File Skimmer"; + this.Load += new System.EventHandler(this.FileSkimmer_Load); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView lvitems; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label lbcurrentfolder; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/FileSkimmer.cs b/ShiftOS.WinForms/Applications/FileSkimmer.cs new file mode 100644 index 0000000..959c90b --- /dev/null +++ b/ShiftOS.WinForms/Applications/FileSkimmer.cs @@ -0,0 +1,238 @@ +using ShiftOS.Objects.ShiftFS; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +using static ShiftOS.Objects.ShiftFS.Utils; +using Newtonsoft.Json; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications +{ + [Launcher("File Skimmer", true, "al_file_skimmer")] + [RequiresUpgrade("file_skimmer")] + [WinOpen("file_skimmer")] + public partial class FileSkimmer : UserControl, IShiftOSWindow + { + public FileSkimmer() + { + InitializeComponent(); + this.Load += (o, a) => + { + ChangeDirectory(Paths.GetPath("root")); + }; + } + + private void lvitems_DoubleClick(object sender, EventArgs e) + { + if (lvitems.SelectedItems.Count <= 0) + return; + + var item = lvitems.SelectedItems[0]; + var path = item.Tag as string; + + if(currentdir == "__system") + { + ChangeDirectory(path); + } + else if(DirectoryExists(currentdir + "/" + path)) + { + ChangeDirectory(currentdir + "/" + path); + } + else if(FileExists(currentdir + "/" + path)) + { + FileSkimmerBackend.OpenFile(currentdir + "/" + path); + } + else if(path == "__..") + { + ChangeToParent(); + } + } + + [Obsolete("This just forwards over to FileSkimmerBackend.OpenFile().")] + public void Open(string path) + { + FileSkimmerBackend.OpenFile(path); + } + + [Obsolete("Forwarded to FileSkimmerBackend.GetFileType().")] + public static FileType GetFileType(string path) + { + return FileSkimmerBackend.GetFileType(path); + } + + string currentdrive = "0:"; + + public void ChangeToParent() + { + if(currentdir == currentdrive) + { + ChangeDirectory("__system"); + } + + ChangeDirectory(GetParent(currentdir)); + } + + public string GetParent(string path) + { + string[] pathlist = path.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries); + if(pathlist.Length > 1) + { + if(path.EndsWith("/")) + { + path = path.Remove(path.Length - 1, 1); + } + path = path.Remove(path.LastIndexOf('/'), path.Length - path.LastIndexOf('/')); + return path; + } + else + { + return "__system"; + } + } + + private string currentdir = ""; + + public void ChangeDirectory(string path) + { + currentdir = path; + lbcurrentfolder.Text = currentdir; + ResetList(); + } + + + public static void GetAllTypes(ImageList list) + { + list.Images.Add("Directory", Properties.Resources.fileicon0); + list.Images.Add("UpOne", Properties.Resources.fileicon5); + list.Images.Add("Mount", Properties.Resources.FloppyDriveIcon); + + foreach (FileType value in Enum.GetValues(typeof(FileType))) + { + list.Images.Add(value.ToString(), GetImage(value)); + } + } + + public void ResetList() + { + if(lvitems.LargeImageList == null) + { + lvitems.LargeImageList = new ImageList(); + lvitems.LargeImageList.TransparentColor = SkinEngine.LoadedSkin.ControlColor; + lvitems.LargeImageList.ImageSize = new Size(42, 42); + GetAllTypes(lvitems.LargeImageList); + } + + + + lvitems.Items.Clear(); + if (currentdir == "__system") + { + //List all drives + foreach (var dir in Mounts) + { + var item = ConstructItemAsMount(dir); + item.ImageKey = "Mount"; + lvitems.Items.Add(item); + } + } + else if (DirectoryExists(currentdir)) + { + var up = new ListViewItem(); + up.Text = "Up one"; + up.ImageKey = "UpOne"; + up.Tag = "__.."; + lvitems.Items.Add(up); + + + foreach(var dir in GetDirectories(currentdir)) + { + var item = ConstructItem(GetDirectoryInfo(dir)); + item.ImageKey = "Directory"; + lvitems.Items.Add(item); + } + + foreach (var dir in GetFiles(currentdir)) + { + var item = ConstructItem(GetFileInfo(dir)); + item.ImageKey = FileSkimmerBackend.GetFileType(dir).ToString(); + lvitems.Items.Add(item); + } + + } + + } + + public static ListViewItem ConstructItemAsMount(Directory dir) + { + var item = new ListViewItem(); + item.Text = dir.Name + "(" + Mounts.IndexOf(dir).ToString() + ":/)"; + item.Tag = Mounts.IndexOf(dir).ToString() + ":"; + return item; + } + + public static ListViewItem ConstructItem(Directory dir) + { + var item = new ListViewItem(); + item.Text = dir.Name; + item.Tag = item.Text; + return item; + } + public static ListViewItem ConstructItem(File dir) + { + var item = new ListViewItem(); + item.Text = dir.Name; + item.ImageKey = "Directory"; + item.Tag = item.Text; + return item; + } + + public static Image GetImage(FileType type) + { + switch(type) + { + case FileType.Executable: + case FileType.Lua: + case FileType.Python: + return Properties.Resources.fileiconsaa; + case FileType.Image: + return Properties.Resources.fileicon3; + case FileType.Skin: + return Properties.Resources.fileicon10; + case FileType.TextFile: + return Properties.Resources.fileicon2; + default: + return Properties.Resources.fileicon1; + } + } + + private void FileSkimmer_Load(object sender, EventArgs e) { + + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } + + +} diff --git a/ShiftOS.WinForms/Applications/FileSkimmer.resx b/ShiftOS.WinForms/Applications/FileSkimmer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/FileSkimmer.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/GraphicPicker.Designer.cs b/ShiftOS.WinForms/Applications/GraphicPicker.Designer.cs new file mode 100644 index 0000000..88749b8 --- /dev/null +++ b/ShiftOS.WinForms/Applications/GraphicPicker.Designer.cs @@ -0,0 +1,257 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class GraphicPicker + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.pgcontents = new System.Windows.Forms.Panel(); + this.btncancel = new System.Windows.Forms.Button(); + this.btnreset = new System.Windows.Forms.Button(); + this.btnapply = new System.Windows.Forms.Button(); + this.Label2 = new System.Windows.Forms.Label(); + this.btnidlebrowse = new System.Windows.Forms.Button(); + this.txtidlefile = new System.Windows.Forms.TextBox(); + this.picidle = new System.Windows.Forms.PictureBox(); + this.btnzoom = new System.Windows.Forms.Button(); + this.btnstretch = new System.Windows.Forms.Button(); + this.btncentre = new System.Windows.Forms.Button(); + this.btntile = new System.Windows.Forms.Button(); + this.pnlgraphicholder = new System.Windows.Forms.Panel(); + this.picgraphic = new System.Windows.Forms.PictureBox(); + this.lblobjecttoskin = new System.Windows.Forms.Label(); + this.pgcontents.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picidle)).BeginInit(); + this.pnlgraphicholder.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picgraphic)).BeginInit(); + this.SuspendLayout(); + // + // pgcontents + // + this.pgcontents.BackColor = System.Drawing.Color.White; + this.pgcontents.Controls.Add(this.btncancel); + this.pgcontents.Controls.Add(this.btnreset); + this.pgcontents.Controls.Add(this.btnapply); + this.pgcontents.Controls.Add(this.Label2); + this.pgcontents.Controls.Add(this.btnidlebrowse); + this.pgcontents.Controls.Add(this.txtidlefile); + this.pgcontents.Controls.Add(this.picidle); + this.pgcontents.Controls.Add(this.btnzoom); + this.pgcontents.Controls.Add(this.btnstretch); + this.pgcontents.Controls.Add(this.btncentre); + this.pgcontents.Controls.Add(this.btntile); + this.pgcontents.Controls.Add(this.pnlgraphicholder); + this.pgcontents.Controls.Add(this.lblobjecttoskin); + this.pgcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.pgcontents.Location = new System.Drawing.Point(0, 0); + this.pgcontents.Name = "pgcontents"; + this.pgcontents.Size = new System.Drawing.Size(390, 383); + this.pgcontents.TabIndex = 20; + // + // btncancel + // + this.btncancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.btncancel.Location = new System.Drawing.Point(21, 335); + this.btncancel.Name = "btncancel"; + this.btncancel.Size = new System.Drawing.Size(109, 32); + this.btncancel.TabIndex = 23; + this.btncancel.Text = "Cancel"; + this.btncancel.UseVisualStyleBackColor = true; + this.btncancel.Click += new System.EventHandler(this.btncancel_Click); + // + // btnreset + // + this.btnreset.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.btnreset.Location = new System.Drawing.Point(136, 335); + this.btnreset.Name = "btnreset"; + this.btnreset.Size = new System.Drawing.Size(109, 32); + this.btnreset.TabIndex = 22; + this.btnreset.Text = "Reset"; + this.btnreset.UseVisualStyleBackColor = true; + this.btnreset.Click += new System.EventHandler(this.btnreset_Click); + // + // btnapply + // + this.btnapply.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.btnapply.Location = new System.Drawing.Point(251, 335); + this.btnapply.Name = "btnapply"; + this.btnapply.Size = new System.Drawing.Size(118, 32); + this.btnapply.TabIndex = 21; + this.btnapply.Text = "Apply"; + this.btnapply.UseVisualStyleBackColor = true; + this.btnapply.Click += new System.EventHandler(this.btnapply_Click); + // + // Label2 + // + this.Label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.Label2.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label2.Location = new System.Drawing.Point(125, 260); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(163, 28); + this.Label2.TabIndex = 12; + this.Label2.Text = "Idle"; + this.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btnidlebrowse + // + this.btnidlebrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnidlebrowse.Location = new System.Drawing.Point(295, 260); + this.btnidlebrowse.Name = "btnidlebrowse"; + this.btnidlebrowse.Size = new System.Drawing.Size(73, 60); + this.btnidlebrowse.TabIndex = 10; + this.btnidlebrowse.Text = "Browse"; + this.btnidlebrowse.UseVisualStyleBackColor = true; + this.btnidlebrowse.Click += new System.EventHandler(this.btnidlebrowse_Click); + // + // txtidlefile + // + this.txtidlefile.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.txtidlefile.BackColor = System.Drawing.Color.White; + this.txtidlefile.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtidlefile.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtidlefile.Location = new System.Drawing.Point(125, 291); + this.txtidlefile.Multiline = true; + this.txtidlefile.Name = "txtidlefile"; + this.txtidlefile.Size = new System.Drawing.Size(163, 29); + this.txtidlefile.TabIndex = 9; + this.txtidlefile.Text = "None"; + this.txtidlefile.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // picidle + // + this.picidle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.picidle.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.picidle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.picidle.Location = new System.Drawing.Point(19, 260); + this.picidle.Name = "picidle"; + this.picidle.Size = new System.Drawing.Size(100, 60); + this.picidle.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.picidle.TabIndex = 8; + this.picidle.TabStop = false; + // + // btnzoom + // + this.btnzoom.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.btnzoom.FlatAppearance.BorderSize = 0; + this.btnzoom.Location = new System.Drawing.Point(286, 144); + this.btnzoom.Name = "btnzoom"; + this.btnzoom.Size = new System.Drawing.Size(82, 65); + this.btnzoom.TabIndex = 7; + this.btnzoom.Text = "Zoom"; + this.btnzoom.UseVisualStyleBackColor = true; + this.btnzoom.Click += new System.EventHandler(this.btnzoom_Click); + // + // btnstretch + // + this.btnstretch.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.btnstretch.FlatAppearance.BorderSize = 0; + this.btnstretch.Location = new System.Drawing.Point(197, 144); + this.btnstretch.Name = "btnstretch"; + this.btnstretch.Size = new System.Drawing.Size(82, 65); + this.btnstretch.TabIndex = 6; + this.btnstretch.Text = "Stretch"; + this.btnstretch.UseVisualStyleBackColor = true; + this.btnstretch.Click += new System.EventHandler(this.btnstretch_Click); + // + // btncentre + // + this.btncentre.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.btncentre.FlatAppearance.BorderSize = 0; + this.btncentre.Location = new System.Drawing.Point(108, 144); + this.btncentre.Name = "btncentre"; + this.btncentre.Size = new System.Drawing.Size(82, 65); + this.btncentre.TabIndex = 5; + this.btncentre.Text = "Center"; + this.btncentre.UseVisualStyleBackColor = true; + this.btncentre.Click += new System.EventHandler(this.btncentre_Click); + // + // btntile + // + this.btntile.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.btntile.FlatAppearance.BorderSize = 0; + this.btntile.Location = new System.Drawing.Point(19, 144); + this.btntile.Name = "btntile"; + this.btntile.Size = new System.Drawing.Size(82, 65); + this.btntile.TabIndex = 4; + this.btntile.Text = "Tile"; + this.btntile.UseVisualStyleBackColor = true; + this.btntile.Click += new System.EventHandler(this.btntile_Click); + // + // pnlgraphicholder + // + this.pnlgraphicholder.Controls.Add(this.picgraphic); + this.pnlgraphicholder.Location = new System.Drawing.Point(19, 38); + this.pnlgraphicholder.Name = "pnlgraphicholder"; + this.pnlgraphicholder.Size = new System.Drawing.Size(350, 100); + this.pnlgraphicholder.TabIndex = 3; + // + // picgraphic + // + this.picgraphic.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.picgraphic.Location = new System.Drawing.Point(0, 0); + this.picgraphic.Name = "picgraphic"; + this.picgraphic.Size = new System.Drawing.Size(350, 100); + this.picgraphic.TabIndex = 0; + this.picgraphic.TabStop = false; + // + // lblobjecttoskin + // + this.lblobjecttoskin.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblobjecttoskin.Location = new System.Drawing.Point(19, 9); + this.lblobjecttoskin.Name = "lblobjecttoskin"; + this.lblobjecttoskin.Size = new System.Drawing.Size(350, 23); + this.lblobjecttoskin.TabIndex = 2; + this.lblobjecttoskin.Text = "Close Button"; + this.lblobjecttoskin.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // GraphicPicker + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(390, 383); + this.Controls.Add(this.pgcontents); + this.Name = "GraphicPicker"; + this.Text = "Graphic Picker"; + this.Load += new System.EventHandler(this.Graphic_Picker_Load); + this.pgcontents.ResumeLayout(false); + this.pgcontents.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picidle)).EndInit(); + this.pnlgraphicholder.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picgraphic)).EndInit(); + this.ResumeLayout(false); + + } + internal System.Windows.Forms.Panel pgcontents; + internal System.Windows.Forms.Button btncancel; + internal System.Windows.Forms.Button btnreset; + internal System.Windows.Forms.Button btnapply; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Button btnidlebrowse; + internal System.Windows.Forms.TextBox txtidlefile; + internal System.Windows.Forms.PictureBox picidle; + internal System.Windows.Forms.Button btnzoom; + internal System.Windows.Forms.Button btnstretch; + internal System.Windows.Forms.Button btncentre; + internal System.Windows.Forms.Button btntile; + internal System.Windows.Forms.Panel pnlgraphicholder; + internal System.Windows.Forms.PictureBox picgraphic; + internal System.Windows.Forms.Label lblobjecttoskin; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/GraphicPicker.cs b/ShiftOS.WinForms/Applications/GraphicPicker.cs new file mode 100644 index 0000000..a8cd3e8 --- /dev/null +++ b/ShiftOS.WinForms/Applications/GraphicPicker.cs @@ -0,0 +1,116 @@ +using ShiftOS.Objects.ShiftFS; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +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.Applications +{ + public partial class GraphicPicker : UserControl, IShiftOSWindow + { + public GraphicPicker(Image old, string name, ImageLayout layout, Action cb) + { + InitializeComponent(); + SelectedLayout = layout; + Callback = cb; + lblobjecttoskin.Text = name; + + } + + public Action Callback; + + public ImageLayout SelectedLayout { get; private set; } + + public void btncancel_Click(object s, EventArgs a) + { + this.Close(); //don't invoke callback + } + + public void btnreset_Click(object s, EventArgs a) + { + this.ImageAsBinary = null; + this.Image = null; + Setup(); + } + + public void btnapply_Click(object s, EventArgs a) + { + Callback?.Invoke(this.ImageAsBinary, this.Image, this.SelectedLayout); + this.Close(); + } + + public byte[] ImageAsBinary { get; set; } + public Image Image { get; set; } + + public void Setup() + { + picidle.BackgroundImage = Image; + picidle.BackgroundImageLayout = SelectedLayout; + } + + public void btnidlebrowse_Click(object s, EventArgs a) + { + AppearanceManager.SetupDialog(new FileDialog(new[] { ".png", ".jpg", ".bmp", ".pic" }, FileOpenerStyle.Open, new Action((file) => + { + ImageAsBinary = Utils.ReadAllBytes(file); + System.IO.File.WriteAllBytes("temp_bin.bmp", ImageAsBinary); + Image = SkinEngine.ImageFromBinary(ImageAsBinary); + Image.Save("temp.bmp", System.Drawing.Imaging.ImageFormat.Bmp); + Setup(); + }))); + } + + public void btnzoom_Click(object s, EventArgs a) + { + this.SelectedLayout = ImageLayout.Zoom; + Setup(); + } + + public void btncentre_Click(object s, EventArgs a) + { + this.SelectedLayout = ImageLayout.Center; + Setup(); + } + + public void btnstretch_Click(object s, EventArgs a) + { + this.SelectedLayout = ImageLayout.Stretch; + Setup(); + } + + public void btntile_Click(object s, EventArgs a) + { + this.SelectedLayout = ImageLayout.Tile; + Setup(); + } + + public void Graphic_Picker_Load(object s, EventArgs a) + { + Setup(); + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } +} diff --git a/ShiftOS.WinForms/Applications/GraphicPicker.resx b/ShiftOS.WinForms/Applications/GraphicPicker.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/GraphicPicker.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/MUDAuthenticator.Designer.cs b/ShiftOS.WinForms/Applications/MUDAuthenticator.Designer.cs new file mode 100644 index 0000000..54f7afe --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDAuthenticator.Designer.cs @@ -0,0 +1,213 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class MUDAuthenticator + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.pnlmain = new System.Windows.Forms.Panel(); + this.pnlusers = new System.Windows.Forms.GroupBox(); + this.lbusers = new System.Windows.Forms.ListBox(); + this.fluserbuttons = new System.Windows.Forms.FlowLayoutPanel(); + this.btnview = new System.Windows.Forms.Button(); + this.btnrefreshusers = new System.Windows.Forms.Button(); + this.pnllogin = new System.Windows.Forms.GroupBox(); + this.txtpassword = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.btnlogin = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.pnlmain.SuspendLayout(); + this.pnlusers.SuspendLayout(); + this.fluserbuttons.SuspendLayout(); + this.pnllogin.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.pnlmain); + this.panel1.Controls.Add(this.pnllogin); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(622, 430); + this.panel1.TabIndex = 0; + // + // pnlmain + // + this.pnlmain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pnlmain.Controls.Add(this.pnlusers); + this.pnlmain.Location = new System.Drawing.Point(13, 13); + this.pnlmain.Name = "pnlmain"; + this.pnlmain.Size = new System.Drawing.Size(597, 405); + this.pnlmain.TabIndex = 1; + this.pnlmain.Visible = false; + // + // pnlusers + // + this.pnlusers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pnlusers.Controls.Add(this.lbusers); + this.pnlusers.Controls.Add(this.fluserbuttons); + this.pnlusers.Location = new System.Drawing.Point(16, 27); + this.pnlusers.Name = "pnlusers"; + this.pnlusers.Size = new System.Drawing.Size(265, 356); + this.pnlusers.TabIndex = 0; + this.pnlusers.TabStop = false; + this.pnlusers.Text = "groupBox1"; + // + // lbusers + // + this.lbusers.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbusers.FormattingEnabled = true; + this.lbusers.Location = new System.Drawing.Point(3, 16); + this.lbusers.Name = "lbusers"; + this.lbusers.Size = new System.Drawing.Size(259, 308); + this.lbusers.TabIndex = 0; + // + // fluserbuttons + // + this.fluserbuttons.AutoSize = true; + this.fluserbuttons.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.fluserbuttons.Controls.Add(this.btnview); + this.fluserbuttons.Controls.Add(this.btnrefreshusers); + this.fluserbuttons.Dock = System.Windows.Forms.DockStyle.Bottom; + this.fluserbuttons.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; + this.fluserbuttons.Location = new System.Drawing.Point(3, 324); + this.fluserbuttons.Name = "fluserbuttons"; + this.fluserbuttons.Size = new System.Drawing.Size(259, 29); + this.fluserbuttons.TabIndex = 1; + // + // btnview + // + this.btnview.AutoSize = true; + this.btnview.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnview.Location = new System.Drawing.Point(173, 3); + this.btnview.Name = "btnview"; + this.btnview.Size = new System.Drawing.Size(83, 23); + this.btnview.TabIndex = 0; + this.btnview.Text = "View user info"; + this.btnview.UseVisualStyleBackColor = true; + // + // btnrefreshusers + // + this.btnrefreshusers.AutoSize = true; + this.btnrefreshusers.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnrefreshusers.Location = new System.Drawing.Point(113, 3); + this.btnrefreshusers.Name = "btnrefreshusers"; + this.btnrefreshusers.Size = new System.Drawing.Size(54, 23); + this.btnrefreshusers.TabIndex = 1; + this.btnrefreshusers.Text = "Refresh"; + this.btnrefreshusers.UseVisualStyleBackColor = true; + // + // pnllogin + // + this.pnllogin.Controls.Add(this.txtpassword); + this.pnllogin.Controls.Add(this.label2); + this.pnllogin.Controls.Add(this.btnlogin); + this.pnllogin.Controls.Add(this.label1); + this.pnllogin.Location = new System.Drawing.Point(177, 180); + this.pnllogin.Name = "pnllogin"; + this.pnllogin.Size = new System.Drawing.Size(419, 251); + this.pnllogin.TabIndex = 0; + this.pnllogin.TabStop = false; + this.pnllogin.Text = "Log in"; + // + // txtpassword + // + this.txtpassword.Location = new System.Drawing.Point(13, 137); + this.txtpassword.Name = "txtpassword"; + this.txtpassword.Size = new System.Drawing.Size(387, 20); + this.txtpassword.TabIndex = 3; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(10, 100); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(81, 13); + this.label2.TabIndex = 2; + this.label2.Text = "{PASSWORD}:"; + // + // btnlogin + // + this.btnlogin.Location = new System.Drawing.Point(325, 209); + this.btnlogin.Name = "btnlogin"; + this.btnlogin.Size = new System.Drawing.Size(75, 23); + this.btnlogin.TabIndex = 1; + this.btnlogin.Text = "Submit"; + this.btnlogin.UseVisualStyleBackColor = true; + this.btnlogin.Click += new System.EventHandler(this.btnlogin_Click); + // + // label1 + // + this.label1.Location = new System.Drawing.Point(7, 20); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(393, 64); + this.label1.TabIndex = 0; + this.label1.Text = "{LOGIN_EXP}"; + // + // MUDAuthenticator + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.ClientSize = new System.Drawing.Size(622, 430); + this.Controls.Add(this.panel1); + this.Name = "MUDAuthenticator"; + this.Text = "Multi-User Domain Admin Panel"; + this.panel1.ResumeLayout(false); + this.pnlmain.ResumeLayout(false); + this.pnlusers.ResumeLayout(false); + this.pnlusers.PerformLayout(); + this.fluserbuttons.ResumeLayout(false); + this.fluserbuttons.PerformLayout(); + this.pnllogin.ResumeLayout(false); + this.pnllogin.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.GroupBox pnllogin; + private System.Windows.Forms.TextBox txtpassword; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btnlogin; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel pnlmain; + private System.Windows.Forms.GroupBox pnlusers; + private System.Windows.Forms.ListBox lbusers; + private System.Windows.Forms.FlowLayoutPanel fluserbuttons; + private System.Windows.Forms.Button btnview; + private System.Windows.Forms.Button btnrefreshusers; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/MUDAuthenticator.cs b/ShiftOS.WinForms/Applications/MUDAuthenticator.cs new file mode 100644 index 0000000..9b588e6 --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDAuthenticator.cs @@ -0,0 +1,150 @@ +using ShiftOS.Objects; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications +{ + [MultiplayerOnly] + [Launcher("MUD Administrator", true, "al_mud_cracker")] + [RequiresUpgrade("mud_cracker")] + [WinOpen("mud_administrator")] + public partial class MUDAuthenticator : UserControl, IShiftOSWindow + { + public MUDAuthenticator() + { + try + { + InitializeComponent(); + ServerManager.ServerAccessGranted += () => + { + this.Invoke(new Action(() => { Granted(); })); + }; + ServerManager.ServerAccessDenied += () => + { + this.Invoke(new Action(() => { Denied(); })); + }; + ServerManager.GUIDReceived += (guid) => + { + this.guid = guid; + }; + ServerManager.UsersReceived += (users) => + { + foreach(var user in users) + { + if (!this.users.ContainsKey(user.Username)) + { + this.users.Add(user.Username, user); + } + else + { + this.users[user.Username].OnlineChat += ";" + user.OnlineChat; + } + } + this.Invoke(new Action(() => + { + SetupUserList(); + })); + }; + } + catch + { + + } + + pnllogin.Left = (pnllogin.Parent.Width - pnllogin.Width) / 2; + pnllogin.Top = (pnllogin.Parent.Height - pnllogin.Height) / 2; + + pnllogin.Parent.SizeChanged += (o, a) => + { + pnllogin.Left = (pnllogin.Parent.Width - pnllogin.Width) / 2; + pnllogin.Top = (pnllogin.Parent.Height - pnllogin.Height) / 2; + }; + + pnlmain.Left = (pnlmain.Parent.Width - pnlmain.Width) / 2; + pnlmain.Top = (pnlmain.Parent.Height - pnlmain.Height) / 2; + + + + } + + public void Granted() + { + Infobox.Show("{ACCESS_GRANTED}", "{ACCESS_GRANTED_MUDADMIN_EXP}"); + //This will tell the server to take the granted password off the list of granted passwords + //so the user must generate and crack a new one. + ServerManager.SendMessage("mudhack_killpass", ""); + + SetupAuthUI(); + } + + public void SetupAuthUI() + { + pnllogin.Hide(); + + pnlmain.Show(); + + PopulateUserList(); + } + + Dictionary users = new Dictionary(); + + public void PopulateUserList() + { + users = null; + ServerManager.SendMessage("mudhack_getallusers", ""); + } + + private string guid = null; + + public void SetupUserList() + { + lbusers.Items.Clear(); + foreach(var kv in users) + { + guid = null; + ServerManager.SendMessage("getguid_send", kv.Key); + while(guid == null) + { + + } + users[kv.Key].Guid = guid; + lbusers.Items.Add(kv.Key); + } + } + + public void Denied() + { + Infobox.Show("{ACCESS_DENIED}", "{ACCESS_DENIED_MUDADMIN_EXP}"); + } + + private void btnlogin_Click(object sender, EventArgs e) + { + ServerManager.SendMessage("mudhack_verify", "{pass: \"" + txtpassword.Text + "\"}"); + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } +} diff --git a/ShiftOS.WinForms/Applications/MUDAuthenticator.resx b/ShiftOS.WinForms/Applications/MUDAuthenticator.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDAuthenticator.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/MUDControlCentre.Designer.cs b/ShiftOS.WinForms/Applications/MUDControlCentre.Designer.cs new file mode 100644 index 0000000..bcc5c96 --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDControlCentre.Designer.cs @@ -0,0 +1,617 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class MUDControlCentre + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.youToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.profileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tsMemos = new System.Windows.Forms.ToolStripMenuItem(); + this.disconnectFromMuDToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.shopsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.browseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.myShopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tasksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.currentTaskToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.browseJobsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.txtappstatus = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer(); + this.you_memos = new System.Windows.Forms.Panel(); + this.flmemos = new System.Windows.Forms.FlowLayoutPanel(); + this.label3 = new System.Windows.Forms.Label(); + this.you_systemstatus = new System.Windows.Forms.Panel(); + this.lblsysstatus = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.legionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.createLegionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.joinLegionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.myLegionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.lgn_view = new System.Windows.Forms.Panel(); + this.banner = new System.Windows.Forms.Panel(); + this.lblegiontitle = new System.Windows.Forms.Label(); + this.btnleavelegion = new System.Windows.Forms.Button(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.btnjoinlegion = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.lbdescription = new System.Windows.Forms.Label(); + this.pnllgnusers = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.lvusers = new System.Windows.Forms.ListView(); + this.lgn_join = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.label8 = new System.Windows.Forms.Label(); + this.fllegionlist = new System.Windows.Forms.FlowLayoutPanel(); + this.menuStrip1.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.toolStripContainer1.BottomToolStripPanel.SuspendLayout(); + this.toolStripContainer1.ContentPanel.SuspendLayout(); + this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); + this.toolStripContainer1.SuspendLayout(); + this.you_memos.SuspendLayout(); + this.you_systemstatus.SuspendLayout(); + this.lgn_view.SuspendLayout(); + this.banner.SuspendLayout(); + this.flowLayoutPanel1.SuspendLayout(); + this.pnllgnusers.SuspendLayout(); + this.lgn_join.SuspendLayout(); + this.panel3.SuspendLayout(); + this.flowLayoutPanel2.SuspendLayout(); + this.SuspendLayout(); + // + // menuStrip1 + // + this.menuStrip1.Dock = System.Windows.Forms.DockStyle.None; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.youToolStripMenuItem, + this.shopsToolStripMenuItem, + this.tasksToolStripMenuItem, + this.legionsToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(756, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // youToolStripMenuItem + // + this.youToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.profileToolStripMenuItem, + this.tsMemos, + this.disconnectFromMuDToolStripMenuItem}); + this.youToolStripMenuItem.Name = "youToolStripMenuItem"; + this.youToolStripMenuItem.Size = new System.Drawing.Size(39, 20); + this.youToolStripMenuItem.Text = "You"; + // + // profileToolStripMenuItem + // + this.profileToolStripMenuItem.Name = "profileToolStripMenuItem"; + this.profileToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.profileToolStripMenuItem.Text = "System status"; + this.profileToolStripMenuItem.Click += new System.EventHandler(this.profileToolStripMenuItem_Click); + // + // tsMemos + // + this.tsMemos.Name = "tsMemos"; + this.tsMemos.Size = new System.Drawing.Size(192, 22); + this.tsMemos.Text = "Memos"; + this.tsMemos.Click += new System.EventHandler(this.tsMemos_Click); + // + // disconnectFromMuDToolStripMenuItem + // + this.disconnectFromMuDToolStripMenuItem.Name = "disconnectFromMuDToolStripMenuItem"; + this.disconnectFromMuDToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.disconnectFromMuDToolStripMenuItem.Text = "Disconnect from MUD"; + this.disconnectFromMuDToolStripMenuItem.Click += new System.EventHandler(this.disconnectFromMuDToolStripMenuItem_Click); + // + // shopsToolStripMenuItem + // + this.shopsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.browseToolStripMenuItem, + this.myShopToolStripMenuItem}); + this.shopsToolStripMenuItem.Name = "shopsToolStripMenuItem"; + this.shopsToolStripMenuItem.Size = new System.Drawing.Size(51, 20); + this.shopsToolStripMenuItem.Text = "Shops"; + // + // browseToolStripMenuItem + // + this.browseToolStripMenuItem.Name = "browseToolStripMenuItem"; + this.browseToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.browseToolStripMenuItem.Text = "Browse"; + // + // myShopToolStripMenuItem + // + this.myShopToolStripMenuItem.Name = "myShopToolStripMenuItem"; + this.myShopToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.myShopToolStripMenuItem.Text = "My Shop"; + // + // tasksToolStripMenuItem + // + this.tasksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.currentTaskToolStripMenuItem, + this.browseJobsToolStripMenuItem}); + this.tasksToolStripMenuItem.Name = "tasksToolStripMenuItem"; + this.tasksToolStripMenuItem.Size = new System.Drawing.Size(47, 20); + this.tasksToolStripMenuItem.Text = "Tasks"; + // + // currentTaskToolStripMenuItem + // + this.currentTaskToolStripMenuItem.Name = "currentTaskToolStripMenuItem"; + this.currentTaskToolStripMenuItem.Size = new System.Drawing.Size(138, 22); + this.currentTaskToolStripMenuItem.Text = "Current task"; + // + // browseJobsToolStripMenuItem + // + this.browseJobsToolStripMenuItem.Name = "browseJobsToolStripMenuItem"; + this.browseJobsToolStripMenuItem.Size = new System.Drawing.Size(138, 22); + this.browseJobsToolStripMenuItem.Text = "Browse Jobs"; + // + // statusStrip1 + // + this.statusStrip1.Dock = System.Windows.Forms.DockStyle.None; + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.txtappstatus}); + this.statusStrip1.Location = new System.Drawing.Point(0, 0); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(756, 22); + this.statusStrip1.TabIndex = 1; + this.statusStrip1.Text = "statusStrip1"; + // + // txtappstatus + // + this.txtappstatus.Name = "txtappstatus"; + this.txtappstatus.Size = new System.Drawing.Size(118, 17); + this.txtappstatus.Text = "toolStripStatusLabel1"; + // + // toolStripContainer1 + // + // + // toolStripContainer1.BottomToolStripPanel + // + this.toolStripContainer1.BottomToolStripPanel.Controls.Add(this.statusStrip1); + // + // toolStripContainer1.ContentPanel + // + this.toolStripContainer1.ContentPanel.Controls.Add(this.lgn_view); + this.toolStripContainer1.ContentPanel.Controls.Add(this.lgn_join); + this.toolStripContainer1.ContentPanel.Controls.Add(this.you_memos); + this.toolStripContainer1.ContentPanel.Controls.Add(this.you_systemstatus); + this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(756, 442); + this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.toolStripContainer1.Location = new System.Drawing.Point(0, 0); + this.toolStripContainer1.Name = "toolStripContainer1"; + this.toolStripContainer1.Size = new System.Drawing.Size(756, 488); + this.toolStripContainer1.TabIndex = 2; + this.toolStripContainer1.Text = "toolStripContainer1"; + // + // toolStripContainer1.TopToolStripPanel + // + this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.menuStrip1); + // + // you_memos + // + this.you_memos.Controls.Add(this.flmemos); + this.you_memos.Controls.Add(this.label3); + this.you_memos.Dock = System.Windows.Forms.DockStyle.Fill; + this.you_memos.Location = new System.Drawing.Point(0, 0); + this.you_memos.Name = "you_memos"; + this.you_memos.Size = new System.Drawing.Size(756, 442); + this.you_memos.TabIndex = 1; + // + // flmemos + // + this.flmemos.Dock = System.Windows.Forms.DockStyle.Fill; + this.flmemos.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flmemos.Location = new System.Drawing.Point(0, 43); + this.flmemos.Name = "flmemos"; + this.flmemos.Padding = new System.Windows.Forms.Padding(15); + this.flmemos.Size = new System.Drawing.Size(756, 399); + this.flmemos.TabIndex = 1; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Dock = System.Windows.Forms.DockStyle.Top; + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Margin = new System.Windows.Forms.Padding(15); + this.label3.Name = "label3"; + this.label3.Padding = new System.Windows.Forms.Padding(15); + this.label3.Size = new System.Drawing.Size(71, 43); + this.label3.TabIndex = 0; + this.label3.Tag = "header1"; + this.label3.Text = "Memos"; + // + // you_systemstatus + // + this.you_systemstatus.Controls.Add(this.lblsysstatus); + this.you_systemstatus.Controls.Add(this.label1); + this.you_systemstatus.Dock = System.Windows.Forms.DockStyle.Fill; + this.you_systemstatus.Location = new System.Drawing.Point(0, 0); + this.you_systemstatus.Name = "you_systemstatus"; + this.you_systemstatus.Size = new System.Drawing.Size(756, 442); + this.you_systemstatus.TabIndex = 0; + // + // lblsysstatus + // + this.lblsysstatus.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblsysstatus.Location = new System.Drawing.Point(0, 43); + this.lblsysstatus.Name = "lblsysstatus"; + this.lblsysstatus.Padding = new System.Windows.Forms.Padding(15); + this.lblsysstatus.Size = new System.Drawing.Size(756, 399); + this.lblsysstatus.TabIndex = 1; + this.lblsysstatus.Text = "Username: {username}\r\nSystem name: {sysname}\r\n\r\nCodepoints: {cp}\r\nUpgrades: {boug" + + "ht}/{available}\r\n\r\nSystem version: {sysver}\r\n\r\nShared scripts: {scripts}\r\n\r\nCurr" + + "ent legion: {legionname}\r\nRole: {role}"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Margin = new System.Windows.Forms.Padding(15); + this.label1.Name = "label1"; + this.label1.Padding = new System.Windows.Forms.Padding(15); + this.label1.Size = new System.Drawing.Size(56, 43); + this.label1.TabIndex = 0; + this.label1.Tag = "header1"; + this.label1.Text = "You"; + // + // legionsToolStripMenuItem + // + this.legionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.createLegionToolStripMenuItem, + this.joinLegionToolStripMenuItem, + this.myLegionToolStripMenuItem}); + this.legionsToolStripMenuItem.Name = "legionsToolStripMenuItem"; + this.legionsToolStripMenuItem.Size = new System.Drawing.Size(60, 20); + this.legionsToolStripMenuItem.Text = "Legions"; + // + // createLegionToolStripMenuItem + // + this.createLegionToolStripMenuItem.Name = "createLegionToolStripMenuItem"; + this.createLegionToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.createLegionToolStripMenuItem.Text = "Create Legion"; + // + // joinLegionToolStripMenuItem + // + this.joinLegionToolStripMenuItem.Name = "joinLegionToolStripMenuItem"; + this.joinLegionToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.joinLegionToolStripMenuItem.Text = "Join Legion"; + this.joinLegionToolStripMenuItem.Click += new System.EventHandler(this.joinLegionToolStripMenuItem_Click); + // + // myLegionToolStripMenuItem + // + this.myLegionToolStripMenuItem.Name = "myLegionToolStripMenuItem"; + this.myLegionToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.myLegionToolStripMenuItem.Text = "My Legion"; + this.myLegionToolStripMenuItem.Click += new System.EventHandler(this.myLegionToolStripMenuItem_Click); + // + // lgn_view + // + this.lgn_view.Controls.Add(this.pnllgnusers); + this.lgn_view.Controls.Add(this.lbdescription); + this.lgn_view.Controls.Add(this.label2); + this.lgn_view.Controls.Add(this.banner); + this.lgn_view.Dock = System.Windows.Forms.DockStyle.Fill; + this.lgn_view.Location = new System.Drawing.Point(0, 0); + this.lgn_view.Name = "lgn_view"; + this.lgn_view.Size = new System.Drawing.Size(756, 442); + this.lgn_view.TabIndex = 2; + // + // banner + // + this.banner.BackColor = System.Drawing.Color.Blue; + this.banner.Controls.Add(this.flowLayoutPanel1); + this.banner.Controls.Add(this.lblegiontitle); + this.banner.Dock = System.Windows.Forms.DockStyle.Top; + this.banner.Location = new System.Drawing.Point(0, 0); + this.banner.Name = "banner"; + this.banner.Size = new System.Drawing.Size(756, 100); + this.banner.TabIndex = 0; + this.banner.Tag = "keepbg"; + // + // lblegiontitle + // + this.lblegiontitle.AutoSize = true; + this.lblegiontitle.Location = new System.Drawing.Point(18, 30); + this.lblegiontitle.Name = "lblegiontitle"; + this.lblegiontitle.Size = new System.Drawing.Size(62, 13); + this.lblegiontitle.TabIndex = 0; + this.lblegiontitle.Tag = "header1 keepbg"; + this.lblegiontitle.Text = "Legion Title"; + // + // btnleavelegion + // + this.btnleavelegion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnleavelegion.AutoSize = true; + this.btnleavelegion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnleavelegion.Location = new System.Drawing.Point(99, 3); + this.btnleavelegion.Name = "btnleavelegion"; + this.btnleavelegion.Size = new System.Drawing.Size(101, 23); + this.btnleavelegion.TabIndex = 1; + this.btnleavelegion.Tag = "keepbg"; + this.btnleavelegion.Text = "Leave this Legion"; + this.btnleavelegion.UseVisualStyleBackColor = true; + this.btnleavelegion.Click += new System.EventHandler(this.btnleavelegion_Click); + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.flowLayoutPanel1.AutoSize = true; + this.flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel1.Controls.Add(this.btnleavelegion); + this.flowLayoutPanel1.Controls.Add(this.btnjoinlegion); + this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; + this.flowLayoutPanel1.Location = new System.Drawing.Point(550, 68); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(203, 29); + this.flowLayoutPanel1.TabIndex = 2; + this.flowLayoutPanel1.Tag = "keepbg"; + // + // btnjoinlegion + // + this.btnjoinlegion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnjoinlegion.AutoSize = true; + this.btnjoinlegion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnjoinlegion.Location = new System.Drawing.Point(3, 3); + this.btnjoinlegion.Name = "btnjoinlegion"; + this.btnjoinlegion.Size = new System.Drawing.Size(90, 23); + this.btnjoinlegion.TabIndex = 2; + this.btnjoinlegion.Tag = "keepbg"; + this.btnjoinlegion.Text = "Join this Legion"; + this.btnjoinlegion.UseVisualStyleBackColor = true; + this.btnjoinlegion.Click += new System.EventHandler(this.btnjoinlegion_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(21, 130); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(60, 13); + this.label2.TabIndex = 1; + this.label2.Tag = "header2"; + this.label2.Text = "Description"; + // + // lbdescription + // + this.lbdescription.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbdescription.Location = new System.Drawing.Point(24, 185); + this.lbdescription.Name = "lbdescription"; + this.lbdescription.Size = new System.Drawing.Size(354, 231); + this.lbdescription.TabIndex = 2; + this.lbdescription.Text = "This is the description of this multi-user domain legion. Keep it descriptive."; + // + // pnllgnusers + // + this.pnllgnusers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.pnllgnusers.Controls.Add(this.lvusers); + this.pnllgnusers.Controls.Add(this.label4); + this.pnllgnusers.Location = new System.Drawing.Point(413, 130); + this.pnllgnusers.Name = "pnllgnusers"; + this.pnllgnusers.Size = new System.Drawing.Size(337, 286); + this.pnllgnusers.TabIndex = 3; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Dock = System.Windows.Forms.DockStyle.Top; + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(34, 13); + this.label4.TabIndex = 2; + this.label4.Tag = "header2"; + this.label4.Text = "Users"; + // + // lvusers + // + this.lvusers.Dock = System.Windows.Forms.DockStyle.Fill; + this.lvusers.FullRowSelect = true; + this.lvusers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lvusers.HideSelection = false; + this.lvusers.Location = new System.Drawing.Point(0, 13); + this.lvusers.Name = "lvusers"; + this.lvusers.Size = new System.Drawing.Size(337, 273); + this.lvusers.TabIndex = 3; + this.lvusers.UseCompatibleStateImageBehavior = false; + this.lvusers.View = System.Windows.Forms.View.SmallIcon; + // + // lgn_join + // + this.lgn_join.Controls.Add(this.fllegionlist); + this.lgn_join.Controls.Add(this.panel3); + this.lgn_join.Dock = System.Windows.Forms.DockStyle.Fill; + this.lgn_join.Location = new System.Drawing.Point(0, 0); + this.lgn_join.Name = "lgn_join"; + this.lgn_join.Size = new System.Drawing.Size(756, 442); + this.lgn_join.TabIndex = 3; + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.Blue; + this.panel3.Controls.Add(this.flowLayoutPanel2); + this.panel3.Controls.Add(this.label8); + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(0, 0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(756, 100); + this.panel3.TabIndex = 0; + this.panel3.Tag = ""; + // + // flowLayoutPanel2 + // + this.flowLayoutPanel2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.flowLayoutPanel2.AutoSize = true; + this.flowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel2.Controls.Add(this.button1); + this.flowLayoutPanel2.Controls.Add(this.button2); + this.flowLayoutPanel2.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; + this.flowLayoutPanel2.Location = new System.Drawing.Point(547, 3); + this.flowLayoutPanel2.Name = "flowLayoutPanel2"; + this.flowLayoutPanel2.Size = new System.Drawing.Size(209, 29); + this.flowLayoutPanel2.TabIndex = 2; + this.flowLayoutPanel2.Tag = "keepbg"; + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button1.AutoSize = true; + this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button1.Location = new System.Drawing.Point(100, 3); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(106, 23); + this.button1.TabIndex = 1; + this.button1.Tag = "keepbg"; + this.button1.Text = "Create new Legion"; + this.button1.UseVisualStyleBackColor = true; + // + // button2 + // + this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button2.AutoSize = true; + this.button2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button2.Location = new System.Drawing.Point(3, 3); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(91, 23); + this.button2.TabIndex = 2; + this.button2.Tag = "keepbg"; + this.button2.Text = "Use invite code"; + this.button2.UseVisualStyleBackColor = true; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(18, 17); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(70, 13); + this.label8.TabIndex = 0; + this.label8.Tag = "header1 keepbg"; + this.label8.Text = "Join a Legion"; + // + // fllegionlist + // + this.fllegionlist.Dock = System.Windows.Forms.DockStyle.Fill; + this.fllegionlist.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.fllegionlist.Location = new System.Drawing.Point(0, 100); + this.fllegionlist.Name = "fllegionlist"; + this.fllegionlist.Size = new System.Drawing.Size(756, 342); + this.fllegionlist.TabIndex = 1; + // + // MUDControlCentre + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.Controls.Add(this.toolStripContainer1); + this.ForeColor = System.Drawing.Color.White; + this.Name = "MUDControlCentre"; + this.Text = "MUD Control Centre"; + this.Size = new System.Drawing.Size(756, 488); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.toolStripContainer1.BottomToolStripPanel.ResumeLayout(false); + this.toolStripContainer1.BottomToolStripPanel.PerformLayout(); + this.toolStripContainer1.ContentPanel.ResumeLayout(false); + this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false); + this.toolStripContainer1.TopToolStripPanel.PerformLayout(); + this.toolStripContainer1.ResumeLayout(false); + this.toolStripContainer1.PerformLayout(); + this.you_memos.ResumeLayout(false); + this.you_memos.PerformLayout(); + this.you_systemstatus.ResumeLayout(false); + this.you_systemstatus.PerformLayout(); + this.lgn_view.ResumeLayout(false); + this.lgn_view.PerformLayout(); + this.banner.ResumeLayout(false); + this.banner.PerformLayout(); + this.flowLayoutPanel1.ResumeLayout(false); + this.flowLayoutPanel1.PerformLayout(); + this.pnllgnusers.ResumeLayout(false); + this.pnllgnusers.PerformLayout(); + this.lgn_join.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.flowLayoutPanel2.ResumeLayout(false); + this.flowLayoutPanel2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem youToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem profileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem tsMemos; + private System.Windows.Forms.ToolStripMenuItem disconnectFromMuDToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem shopsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem browseToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem myShopToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem tasksToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem currentTaskToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem browseJobsToolStripMenuItem; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel txtappstatus; + private System.Windows.Forms.ToolStripContainer toolStripContainer1; + private System.Windows.Forms.Panel you_systemstatus; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label lblsysstatus; + private System.Windows.Forms.Panel you_memos; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.FlowLayoutPanel flmemos; + private System.Windows.Forms.ToolStripMenuItem legionsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem createLegionToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem joinLegionToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem myLegionToolStripMenuItem; + private System.Windows.Forms.Panel lgn_view; + private System.Windows.Forms.Panel banner; + private System.Windows.Forms.Label lblegiontitle; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Button btnleavelegion; + private System.Windows.Forms.Button btnjoinlegion; + private System.Windows.Forms.Panel pnllgnusers; + private System.Windows.Forms.ListView lvusers; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label lbdescription; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Panel lgn_join; + private System.Windows.Forms.FlowLayoutPanel fllegionlist; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Label label8; + } +} diff --git a/ShiftOS.WinForms/Applications/MUDControlCentre.cs b/ShiftOS.WinForms/Applications/MUDControlCentre.cs new file mode 100644 index 0000000..7cd398b --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDControlCentre.cs @@ -0,0 +1,314 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using Newtonsoft.Json; +using ShiftOS.Objects; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms.Applications +{ + [RequiresUpgrade("mud_fundamentals")] + [Launcher("MUD Control Centre", true, "al_mud_control_centre")] + [WinOpen("mud_control_centre")] + public partial class MUDControlCentre : UserControl, IShiftOSWindow + { + public MUDControlCentre() + { + if (SaveSystem.CurrentSave.CurrentLegions == null) + SaveSystem.CurrentSave.CurrentLegions = new List(); + InitializeComponent(); + ServerManager.MessageReceived += (msg) => + { + try + { + this.Invoke(new Action(() => + { + if (msg.Name == "user_not_found_in_legion") + { + + ShowLegionInfo(new Legion + { + Name = "No legion", + ShortName = "NONE", + Description = "You are not currently in any legions! You can go to 'Join Legion' and look for a legion to join, however, or create your own.", + Publicity = LegionPublicity.UnlistedInviteOnly, + BannerColor = ConsoleColor.DarkRed + }); + } + else if(msg.Name == "legion_users_found") + { + lvusers.Items.Clear(); + foreach(var usr in JsonConvert.DeserializeObject(msg.Contents)) + { + lvusers.Items.Add(usr); + } + } + else if (msg.Name == "user_legion") + { + ShowLegionInfo(JsonConvert.DeserializeObject(msg.Contents)); + } + else if(msg.Name == "legion_all") + { + PopulateJoinLegion(JsonConvert.DeserializeObject>(msg.Contents)); + } + + })); + } + catch { } + }; + } + + public void PopulateJoinLegion(List legions) + { + lgn_join.BringToFront(); + + fllegionlist.Controls.Clear(); + + foreach(var lgn in legions) + { + var bnr = new Panel(); + bnr.Height = 100; + bnr.Tag = "keepbg"; + bnr.BackColor = GetColor(lgn.BannerColor); + + bnr.Width = fllegionlist.Width; + + var lTitle = new Label(); + lTitle.AutoSize = true; + lTitle.Tag = "keepbg header2"; + lTitle.Text = $"[{lgn.ShortName}] {lgn.Name}"; + lTitle.Location = new Point(18, 17); + bnr.Controls.Add(lTitle); + lTitle.Show(); + + + var flButtons = new FlowLayoutPanel(); + flButtons.AutoSize = true; + flButtons.AutoSizeMode = AutoSizeMode.GrowAndShrink; + flButtons.Tag = "keepbg"; + flButtons.FlowDirection = FlowDirection.RightToLeft; + flButtons.Anchor = AnchorStyles.Top | AnchorStyles.Right; + flButtons.Top = 2; + flButtons.Left = bnr.Width - flButtons.Width - 2; + bnr.Controls.Add(flButtons); + flButtons.Show(); + + var btn = new Button(); + btn.Text = "More info"; + btn.Click += (o, a) => + { + ShowLegionInfo(lgn); + }; + flButtons.Controls.Add(btn); + btn.Show(); + + fllegionlist.Controls.Add(bnr); + bnr.Show(); + ControlManager.SetupControls(bnr); + } + } + + public Color GetColor(ConsoleColor color) + { + switch (color) + { + case ConsoleColor.Black: + return Color.Black; + case ConsoleColor.Gray: + return Color.Gray; + case ConsoleColor.DarkGray: + return Color.DarkGray; + case ConsoleColor.Blue: + return Color.Blue; + case ConsoleColor.Cyan: + return Color.Cyan; + case ConsoleColor.DarkBlue: + return Color.DarkBlue; + case ConsoleColor.DarkCyan: + return Color.DarkCyan; + case ConsoleColor.DarkGreen: + return Color.DarkGreen; + case ConsoleColor.DarkMagenta: + return Color.DarkMagenta; + case ConsoleColor.DarkRed: + return Color.DarkRed; + case ConsoleColor.DarkYellow: + case ConsoleColor.Yellow: + return Color.Yellow; + case ConsoleColor.Green: + return Color.Green; + case ConsoleColor.Magenta: + return Color.Magenta; + case ConsoleColor.Red: + return Color.Red; + case ConsoleColor.White: + return Color.White; + default: + return Color.Black; + } + + } + + public void OnLoad() + { + ServerManager.MessageReceived += (msg) => + { + if(msg.Name == "mud_usermemos") + { + try + { + foreach (var memo in JsonConvert.DeserializeObject(msg.Contents)) + { + this.Invoke(new Action(() => + { + var lbtitle = new Label(); + lbtitle.Text = memo.Subject; + lbtitle.Tag = "header3"; + ControlManager.SetupControls(lbtitle); + flmemos.Controls.Add(lbtitle); + + var lbsubject = new Label(); + lbsubject.Text = "From " + memo.UserFrom; + flmemos.Controls.Add(lbsubject); + + var lbbody = new Label(); + lbbody.Margin = new Padding(0, 15, 0, 15); + lbbody.Text = memo.Body; + flmemos.Controls.Add(lbbody); + + lbtitle.Show(); + lbsubject.Show(); + lbbody.Show(); + + })); + } + } + catch { } + } + }; + + SetupSystemStatus(); + } + + public void SetupSystemStatus() + { + int scripts = 0; + string legionname = ""; + + foreach(var lgn in SaveSystem.CurrentSave.CurrentLegions) + { + legionname += Environment.NewLine + " - " + lgn; + } + + you_systemstatus.BringToFront(); + + lblsysstatus.Text = $@"Username: {SaveSystem.CurrentSave.Username} +System name: {SaveSystem.CurrentSave.SystemName} + +Codepoints: {SaveSystem.CurrentSave.Codepoints} +Upgrades: {SaveSystem.CurrentSave.CountUpgrades()}/{Shiftorium.GetDefaults().Count} + +System version: {SaveSystem.CurrentSave.MajorVersion}.{SaveSystem.CurrentSave.MinorVersion}.{SaveSystem.CurrentSave.Revision} + +Shared scripts: {scripts} + +Current legions: {legionname}"; + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + private void tsMemos_Click(object sender, EventArgs e) + { + ServerManager.SendMessage("get_memos_for_user", $@"{{ + username: ""{SaveSystem.CurrentSave.Username}"" +}}"); + you_memos.BringToFront(); + } + + private void profileToolStripMenuItem_Click(object sender, EventArgs e) + { + SetupSystemStatus(); + } + + private void disconnectFromMuDToolStripMenuItem_Click(object sender, EventArgs e) + { + + + + } + + public void ShowLegionInfo(Legion lgn) + { + lgn_view.BringToFront(); + + lblegiontitle.Text = $"[{lgn.ShortName}] {lgn.Name}"; + lbdescription.Text = lgn.Description; + if(lgn.Publicity == LegionPublicity.PublicInviteOnly || lgn.Publicity == LegionPublicity.UnlistedInviteOnly) + { + btnjoinlegion.Hide(); + } + + banner.BackColor = GetColor(lgn.BannerColor); + + ServerManager.SendMessage("legion_get_users", JsonConvert.SerializeObject(lgn)); + + btnleavelegion.Hide(); + + if(SaveSystem.CurrentSave.CurrentLegions.Contains(lgn.ShortName)) + { + btnjoinlegion.Hide(); + btnleavelegion.Show(); + } + + } + + private void myLegionToolStripMenuItem_Click(object sender, EventArgs e) + { + ServerManager.SendMessage("user_get_legion", JsonConvert.SerializeObject(SaveSystem.CurrentSave)); + } + + private void joinLegionToolStripMenuItem_Click(object sender, EventArgs e) + { + ServerManager.SendMessage("legion_get_all", ""); + } + + private void btnjoinlegion_Click(object sender, EventArgs e) + { + string shortname = lblegiontitle.Text.Split(']')[0].Remove(0, 1); + + SaveSystem.CurrentSave.CurrentLegions.Add(shortname); + + SaveSystem.SaveGame(); + ServerManager.SendMessage("user_get_legion", JsonConvert.SerializeObject(SaveSystem.CurrentSave)); + } + + private void btnleavelegion_Click(object sender, EventArgs e) + { + string shortname = lblegiontitle.Text.Split(']')[0].Remove(0, 1); + + SaveSystem.CurrentSave.CurrentLegions.Remove(shortname); + + SaveSystem.SaveGame(); + ServerManager.SendMessage("user_get_legion", JsonConvert.SerializeObject(SaveSystem.CurrentSave)); + + } + } +} diff --git a/ShiftOS.WinForms/Applications/MUDControlCentre.resx b/ShiftOS.WinForms/Applications/MUDControlCentre.resx new file mode 100644 index 0000000..f1d13d7 --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDControlCentre.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 132, 17 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/MUDPasswordCracker.Designer.cs b/ShiftOS.WinForms/Applications/MUDPasswordCracker.Designer.cs new file mode 100644 index 0000000..39f3fec --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDPasswordCracker.Designer.cs @@ -0,0 +1,102 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class MUDPasswordCracker + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.txtpassword = new System.Windows.Forms.TextBox(); + this.lblpassword = new System.Windows.Forms.Label(); + this.btncrack = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.txtpassword); + this.panel1.Controls.Add(this.lblpassword); + this.panel1.Controls.Add(this.btncrack); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(439, 131); + this.panel1.TabIndex = 0; + // + // txtpassword + // + this.txtpassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtpassword.Location = new System.Drawing.Point(13, 53); + this.txtpassword.Name = "txtpassword"; + this.txtpassword.Size = new System.Drawing.Size(414, 20); + this.txtpassword.TabIndex = 2; + // + // lblpassword + // + this.lblpassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lblpassword.Location = new System.Drawing.Point(13, 13); + this.lblpassword.Name = "lblpassword"; + this.lblpassword.Size = new System.Drawing.Size(414, 36); + this.lblpassword.TabIndex = 1; + this.lblpassword.Text = "{PASSWORD}:"; + this.lblpassword.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // btncrack + // + this.btncrack.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.btncrack.Location = new System.Drawing.Point(12, 96); + this.btncrack.Name = "btncrack"; + this.btncrack.Size = new System.Drawing.Size(415, 23); + this.btncrack.TabIndex = 0; + this.btncrack.Text = "{CRACK}"; + this.btncrack.UseVisualStyleBackColor = true; + this.btncrack.Click += new System.EventHandler(this.btncrack_Click); + // + // MUDPasswordCracker + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(439, 131); + this.Controls.Add(this.panel1); + this.Name = "MUDPasswordCracker"; + this.Text = "Multi-User Domain Password Cracker v1.0"; + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TextBox txtpassword; + private System.Windows.Forms.Label lblpassword; + private System.Windows.Forms.Button btncrack; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/MUDPasswordCracker.cs b/ShiftOS.WinForms/Applications/MUDPasswordCracker.cs new file mode 100644 index 0000000..acfe53d --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDPasswordCracker.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications +{ + [MultiplayerOnly] + [Launcher("MUD cracker 1.0", true, "al_mud_cracker")] + [RequiresUpgrade("mud_cracker")] + [WinOpen("mud_cracker")] + public partial class MUDPasswordCracker : UserControl, IShiftOSWindow + { + public MUDPasswordCracker() + { + InitializeComponent(); + } + + private string PasswordToCrack { get; set; } + private string Password { get; set; } + + + private void btncrack_Click(object sender, EventArgs e) + { + ServerManager.ServerPasswordGenerated += (pass) => + { + PasswordToCrack = pass; + this.Invoke(new Action(() => + { + BeginCrack(); + })); + }; + ServerManager.InitiateMUDHack(); + } + + public void BeginCrack() + { + btncrack.Enabled = false; + btncrack.Text = "Starting crack..."; + + var t = new Thread(new ThreadStart(() => + { + int secondsleft = 30; + while(secondsleft > 0) + { + try + { + this.Invoke(new Action(() => + { + btncrack.Text = $"Cracking... step {secondsleft}."; + })); + + + + secondsleft -= 1; + + Thread.Sleep(1000); + } + catch + { + + } + } + this.Invoke(new Action(() => EndCrack())); + + })); + t.IsBackground = true; + t.Start(); + } + + public void EndCrack() + { + lblpassword.Show(); + txtpassword.Show(); + txtpassword.ReadOnly = true; + txtpassword.Text = PasswordToCrack; + + } + + public void OnLoad() + { + + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } +} diff --git a/ShiftOS.WinForms/Applications/MUDPasswordCracker.resx b/ShiftOS.WinForms/Applications/MUDPasswordCracker.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/MUDPasswordCracker.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/NameChanger.Designer.cs b/ShiftOS.WinForms/Applications/NameChanger.Designer.cs new file mode 100644 index 0000000..1df97d3 --- /dev/null +++ b/ShiftOS.WinForms/Applications/NameChanger.Designer.cs @@ -0,0 +1,55 @@ +namespace ShiftOS.WinForms.Applications { + partial class NameChanger { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + this.listBox1 = new System.Windows.Forms.ListBox(); + this.SuspendLayout(); + // + // listBox1 + // + this.listBox1.FormattingEnabled = true; + this.listBox1.Location = new System.Drawing.Point(3, 3); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(138, 342); + this.listBox1.TabIndex = 0; + this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged); + // + // NameChanger + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.listBox1); + this.Name = "NameChanger"; + this.Text = "Name Changer"; + this.Size = new System.Drawing.Size(459, 406); + this.Load += new System.EventHandler(this.NameChanger_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListBox listBox1; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/NameChanger.cs b/ShiftOS.WinForms/Applications/NameChanger.cs new file mode 100644 index 0000000..28b7200 --- /dev/null +++ b/ShiftOS.WinForms/Applications/NameChanger.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications { + + [Launcher("Name Changer", true, "al_name_changer")] + [RequiresUpgrade("name_changer")] + [WinOpen("name_changer")] + public partial class NameChanger : UserControl, IShiftOSWindow { + public NameChanger() { + InitializeComponent(); + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + private void NameChanger_Load(object sender, EventArgs e) { + + } + + private void listBox1_SelectedIndexChanged(object sender, EventArgs e) + { + + } + } +} diff --git a/ShiftOS.WinForms/Applications/NameChanger.resx b/ShiftOS.WinForms/Applications/NameChanger.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/NameChanger.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Pong.Designer.cs b/ShiftOS.WinForms/Applications/Pong.Designer.cs new file mode 100644 index 0000000..55441a0 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Pong.Designer.cs @@ -0,0 +1,706 @@ +using ShiftOS.WinForms.Controls; + +namespace ShiftOS.WinForms.Applications +{ + partial class Pong + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.gameTimer = new System.Windows.Forms.Timer(this.components); + this.counter = new System.Windows.Forms.Timer(this.components); + this.tmrcountdown = new System.Windows.Forms.Timer(this.components); + this.tmrstoryline = new System.Windows.Forms.Timer(this.components); + this.pgcontents = new ShiftOS.WinForms.Controls.Canvas(); + this.pnlgamestats = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.label12 = new System.Windows.Forms.Label(); + this.lblnextstats = new System.Windows.Forms.Label(); + this.Label7 = new System.Windows.Forms.Label(); + this.lblpreviousstats = new System.Windows.Forms.Label(); + this.Label4 = new System.Windows.Forms.Label(); + this.btnplayon = new System.Windows.Forms.Button(); + this.Label3 = new System.Windows.Forms.Label(); + this.btncashout = new System.Windows.Forms.Button(); + this.Label2 = new System.Windows.Forms.Label(); + this.lbllevelreached = new System.Windows.Forms.Label(); + this.pnlhighscore = new System.Windows.Forms.Panel(); + this.lbhighscore = new System.Windows.Forms.ListBox(); + this.label10 = new System.Windows.Forms.Label(); + this.pnlfinalstats = new System.Windows.Forms.Panel(); + this.btnplayagain = new System.Windows.Forms.Button(); + this.lblfinalcodepoints = new System.Windows.Forms.Label(); + this.Label11 = new System.Windows.Forms.Label(); + this.lblfinalcomputerreward = new System.Windows.Forms.Label(); + this.Label9 = new System.Windows.Forms.Label(); + this.lblfinallevelreward = new System.Windows.Forms.Label(); + this.lblfinallevelreached = new System.Windows.Forms.Label(); + this.lblfinalcodepointswithtext = new System.Windows.Forms.Label(); + this.pnllose = new System.Windows.Forms.Panel(); + this.lblmissedout = new System.Windows.Forms.Label(); + this.lblbutyougained = new System.Windows.Forms.Label(); + this.btnlosetryagain = new System.Windows.Forms.Button(); + this.Label5 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.pnlintro = new System.Windows.Forms.Panel(); + this.Label6 = new System.Windows.Forms.Label(); + this.btnstartgame = new System.Windows.Forms.Button(); + this.Label8 = new System.Windows.Forms.Label(); + this.lblbeatai = new System.Windows.Forms.Label(); + this.lblcountdown = new System.Windows.Forms.Label(); + this.ball = new ShiftOS.WinForms.Controls.Canvas(); + this.paddleHuman = new System.Windows.Forms.PictureBox(); + this.paddleComputer = new System.Windows.Forms.Panel(); + this.lbllevelandtime = new System.Windows.Forms.Label(); + this.lblstatscodepoints = new System.Windows.Forms.Label(); + this.lblstatsY = new System.Windows.Forms.Label(); + this.lblstatsX = new System.Windows.Forms.Label(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.button2 = new System.Windows.Forms.Button(); + this.pgcontents.SuspendLayout(); + this.pnlgamestats.SuspendLayout(); + this.pnlhighscore.SuspendLayout(); + this.pnlfinalstats.SuspendLayout(); + this.pnllose.SuspendLayout(); + this.pnlintro.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.paddleHuman)).BeginInit(); + this.flowLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // gameTimer + // + this.gameTimer.Interval = 30; + this.gameTimer.Tick += new System.EventHandler(this.gameTimer_Tick); + // + // counter + // + this.counter.Interval = 1000; + this.counter.Tick += new System.EventHandler(this.counter_Tick); + // + // tmrcountdown + // + this.tmrcountdown.Interval = 1000; + this.tmrcountdown.Tick += new System.EventHandler(this.countdown_Tick); + // + // tmrstoryline + // + this.tmrstoryline.Interval = 1000; + this.tmrstoryline.Tick += new System.EventHandler(this.tmrstoryline_Tick); + // + // pgcontents + // + this.pgcontents.BackColor = System.Drawing.Color.White; + this.pgcontents.Controls.Add(this.pnlhighscore); + this.pgcontents.Controls.Add(this.pnlgamestats); + this.pgcontents.Controls.Add(this.pnlfinalstats); + this.pgcontents.Controls.Add(this.pnllose); + this.pgcontents.Controls.Add(this.pnlintro); + this.pgcontents.Controls.Add(this.lblbeatai); + this.pgcontents.Controls.Add(this.lblcountdown); + this.pgcontents.Controls.Add(this.ball); + this.pgcontents.Controls.Add(this.paddleHuman); + this.pgcontents.Controls.Add(this.paddleComputer); + this.pgcontents.Controls.Add(this.lbllevelandtime); + this.pgcontents.Controls.Add(this.lblstatscodepoints); + this.pgcontents.Controls.Add(this.lblstatsY); + this.pgcontents.Controls.Add(this.lblstatsX); + this.pgcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.pgcontents.Location = new System.Drawing.Point(0, 0); + this.pgcontents.Name = "pgcontents"; + this.pgcontents.Size = new System.Drawing.Size(700, 400); + this.pgcontents.TabIndex = 20; + this.pgcontents.Paint += new System.Windows.Forms.PaintEventHandler(this.pgcontents_Paint); + this.pgcontents.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove); + // + // pnlgamestats + // + this.pnlgamestats.Controls.Add(this.button1); + this.pnlgamestats.Controls.Add(this.label12); + this.pnlgamestats.Controls.Add(this.lblnextstats); + this.pnlgamestats.Controls.Add(this.Label7); + this.pnlgamestats.Controls.Add(this.lblpreviousstats); + this.pnlgamestats.Controls.Add(this.Label4); + this.pnlgamestats.Controls.Add(this.btnplayon); + this.pnlgamestats.Controls.Add(this.Label3); + this.pnlgamestats.Controls.Add(this.btncashout); + this.pnlgamestats.Controls.Add(this.Label2); + this.pnlgamestats.Controls.Add(this.lbllevelreached); + this.pnlgamestats.Location = new System.Drawing.Point(56, 76); + this.pnlgamestats.Name = "pnlgamestats"; + this.pnlgamestats.Size = new System.Drawing.Size(466, 284); + this.pnlgamestats.TabIndex = 6; + this.pnlgamestats.Visible = false; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button1.Location = new System.Drawing.Point(32, 223); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(191, 35); + this.button1.TabIndex = 10; + this.button1.Text = "{PONG_VIEW_HIGHSCORES}"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.btnhighscore_Click); + // + // label12 + // + this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label12.Location = new System.Drawing.Point(8, 187); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(245, 33); + this.label12.TabIndex = 9; + this.label12.Text = "{PONG_HIGHSCORE_EXP}"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblnextstats + // + this.lblnextstats.AutoSize = true; + this.lblnextstats.Location = new System.Drawing.Point(278, 136); + this.lblnextstats.Name = "lblnextstats"; + this.lblnextstats.Size = new System.Drawing.Size(0, 13); + this.lblnextstats.TabIndex = 8; + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label7.Location = new System.Drawing.Point(278, 119); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(124, 16); + this.Label7.TabIndex = 7; + this.Label7.Text = "Next Level Stats:"; + // + // lblpreviousstats + // + this.lblpreviousstats.AutoSize = true; + this.lblpreviousstats.Location = new System.Drawing.Point(278, 54); + this.lblpreviousstats.Name = "lblpreviousstats"; + this.lblpreviousstats.Size = new System.Drawing.Size(0, 13); + this.lblpreviousstats.TabIndex = 6; + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label4.Location = new System.Drawing.Point(278, 37); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(154, 16); + this.Label4.TabIndex = 5; + this.Label4.Text = "Previous Level Stats:"; + // + // btnplayon + // + this.btnplayon.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnplayon.Location = new System.Drawing.Point(32, 147); + this.btnplayon.Name = "btnplayon"; + this.btnplayon.Size = new System.Drawing.Size(191, 35); + this.btnplayon.TabIndex = 4; + this.btnplayon.Text = "Play on for 3 codepoints!"; + this.btnplayon.UseVisualStyleBackColor = true; + this.btnplayon.Click += new System.EventHandler(this.btnplayon_Click); + // + // Label3 + // + this.Label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label3.Location = new System.Drawing.Point(8, 111); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(245, 33); + this.Label3.TabIndex = 3; + this.Label3.Text = "{PONG_PLAYON_DESC}"; + this.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btncashout + // + this.btncashout.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btncashout.Location = new System.Drawing.Point(32, 73); + this.btncashout.Name = "btncashout"; + this.btncashout.Size = new System.Drawing.Size(191, 35); + this.btncashout.TabIndex = 2; + this.btncashout.Text = "Cash out with 1 codepoint!"; + this.btncashout.UseVisualStyleBackColor = true; + this.btncashout.Click += new System.EventHandler(this.btncashout_Click); + // + // Label2 + // + this.Label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label2.Location = new System.Drawing.Point(8, 37); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(245, 33); + this.Label2.TabIndex = 1; + this.Label2.Text = "{PONG_CASHOUT_DESC}"; + this.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lbllevelreached + // + this.lbllevelreached.AutoSize = true; + this.lbllevelreached.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbllevelreached.Location = new System.Drawing.Point(149, 6); + this.lbllevelreached.Name = "lbllevelreached"; + this.lbllevelreached.Size = new System.Drawing.Size(185, 20); + this.lbllevelreached.TabIndex = 0; + this.lbllevelreached.Text = "You Reached Level 2!"; + // + // pnlhighscore + // + this.pnlhighscore.Controls.Add(this.lbhighscore); + this.pnlhighscore.Controls.Add(this.flowLayoutPanel1); + this.pnlhighscore.Controls.Add(this.label10); + this.pnlhighscore.Location = new System.Drawing.Point(67, 29); + this.pnlhighscore.Name = "pnlhighscore"; + this.pnlhighscore.Size = new System.Drawing.Size(539, 311); + this.pnlhighscore.TabIndex = 14; + this.pnlhighscore.Visible = false; + // + // lbhighscore + // + this.lbhighscore.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbhighscore.FormattingEnabled = true; + this.lbhighscore.Location = new System.Drawing.Point(0, 36); + this.lbhighscore.MultiColumn = true; + this.lbhighscore.Name = "lbhighscore"; + this.lbhighscore.SelectionMode = System.Windows.Forms.SelectionMode.None; + this.lbhighscore.Size = new System.Drawing.Size(539, 246); + this.lbhighscore.TabIndex = 1; + // + // label10 + // + this.label10.Dock = System.Windows.Forms.DockStyle.Top; + this.label10.Location = new System.Drawing.Point(0, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(539, 36); + this.label10.TabIndex = 0; + this.label10.Text = "{HIGH_SCORES}"; + this.label10.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // pnlfinalstats + // + this.pnlfinalstats.Controls.Add(this.btnplayagain); + this.pnlfinalstats.Controls.Add(this.lblfinalcodepoints); + this.pnlfinalstats.Controls.Add(this.Label11); + this.pnlfinalstats.Controls.Add(this.lblfinalcomputerreward); + this.pnlfinalstats.Controls.Add(this.Label9); + this.pnlfinalstats.Controls.Add(this.lblfinallevelreward); + this.pnlfinalstats.Controls.Add(this.lblfinallevelreached); + this.pnlfinalstats.Controls.Add(this.lblfinalcodepointswithtext); + this.pnlfinalstats.Location = new System.Drawing.Point(172, 74); + this.pnlfinalstats.Name = "pnlfinalstats"; + this.pnlfinalstats.Size = new System.Drawing.Size(362, 226); + this.pnlfinalstats.TabIndex = 9; + this.pnlfinalstats.Visible = false; + // + // btnplayagain + // + this.btnplayagain.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnplayagain.Location = new System.Drawing.Point(5, 194); + this.btnplayagain.Name = "btnplayagain"; + this.btnplayagain.Size = new System.Drawing.Size(352, 29); + this.btnplayagain.TabIndex = 16; + this.btnplayagain.Text = "{PLAY}"; + this.btnplayagain.UseVisualStyleBackColor = true; + this.btnplayagain.Click += new System.EventHandler(this.btnplayagain_Click); + // + // lblfinalcodepoints + // + this.lblfinalcodepoints.Font = new System.Drawing.Font("Microsoft Sans Serif", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblfinalcodepoints.Location = new System.Drawing.Point(3, 124); + this.lblfinalcodepoints.Name = "lblfinalcodepoints"; + this.lblfinalcodepoints.Size = new System.Drawing.Size(356, 73); + this.lblfinalcodepoints.TabIndex = 15; + this.lblfinalcodepoints.Text = "134 CP"; + this.lblfinalcodepoints.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label11 + // + this.Label11.AutoSize = true; + this.Label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label11.Location = new System.Drawing.Point(162, 82); + this.Label11.Name = "Label11"; + this.Label11.Size = new System.Drawing.Size(33, 33); + this.Label11.TabIndex = 14; + this.Label11.Text = "+"; + this.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblfinalcomputerreward + // + this.lblfinalcomputerreward.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblfinalcomputerreward.Location = new System.Drawing.Point(193, 72); + this.lblfinalcomputerreward.Name = "lblfinalcomputerreward"; + this.lblfinalcomputerreward.Size = new System.Drawing.Size(151, 52); + this.lblfinalcomputerreward.TabIndex = 12; + this.lblfinalcomputerreward.Text = "34"; + this.lblfinalcomputerreward.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label9 + // + this.Label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label9.Location = new System.Drawing.Point(179, 31); + this.Label9.Name = "Label9"; + this.Label9.Size = new System.Drawing.Size(180, 49); + this.Label9.TabIndex = 11; + this.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblfinallevelreward + // + this.lblfinallevelreward.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblfinallevelreward.Location = new System.Drawing.Point(12, 72); + this.lblfinallevelreward.Name = "lblfinallevelreward"; + this.lblfinallevelreward.Size = new System.Drawing.Size(151, 52); + this.lblfinallevelreward.TabIndex = 10; + this.lblfinallevelreward.Text = "100"; + this.lblfinallevelreward.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblfinallevelreached + // + this.lblfinallevelreached.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblfinallevelreached.Location = new System.Drawing.Point(3, 31); + this.lblfinallevelreached.Name = "lblfinallevelreached"; + this.lblfinallevelreached.Size = new System.Drawing.Size(170, 49); + this.lblfinallevelreached.TabIndex = 9; + this.lblfinallevelreached.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblfinalcodepointswithtext + // + this.lblfinalcodepointswithtext.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblfinalcodepointswithtext.Location = new System.Drawing.Point(3, 2); + this.lblfinalcodepointswithtext.Name = "lblfinalcodepointswithtext"; + this.lblfinalcodepointswithtext.Size = new System.Drawing.Size(356, 26); + this.lblfinalcodepointswithtext.TabIndex = 1; + this.lblfinalcodepointswithtext.Text = "You cashed out with 134 codepoints!"; + this.lblfinalcodepointswithtext.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnllose + // + this.pnllose.Controls.Add(this.lblmissedout); + this.pnllose.Controls.Add(this.lblbutyougained); + this.pnllose.Controls.Add(this.btnlosetryagain); + this.pnllose.Controls.Add(this.Label5); + this.pnllose.Controls.Add(this.Label1); + this.pnllose.Location = new System.Drawing.Point(209, 71); + this.pnllose.Name = "pnllose"; + this.pnllose.Size = new System.Drawing.Size(266, 214); + this.pnllose.TabIndex = 10; + this.pnllose.Visible = false; + // + // lblmissedout + // + this.lblmissedout.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblmissedout.Location = new System.Drawing.Point(3, 175); + this.lblmissedout.Name = "lblmissedout"; + this.lblmissedout.Size = new System.Drawing.Size(146, 35); + this.lblmissedout.TabIndex = 3; + this.lblmissedout.Text = "You Missed Out On: 500 Codepoints"; + this.lblmissedout.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblbutyougained + // + if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade_2")) + { + this.lblbutyougained.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblbutyougained.Location = new System.Drawing.Point(3, 125); + this.lblbutyougained.Name = "lblbutyougained"; + this.lblbutyougained.Size = new System.Drawing.Size(146, 35); + this.lblbutyougained.TabIndex = 3; + this.lblbutyougained.Text = "But you gained 5 Codepoints"; + this.lblbutyougained.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + } else + { + this.lblbutyougained.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblbutyougained.Location = new System.Drawing.Point(3, 125); + this.lblbutyougained.Name = "lblbutyougained"; + this.lblbutyougained.Size = new System.Drawing.Size(0, 0); + this.lblbutyougained.TabIndex = 3; + this.lblbutyougained.Text = "But you gained 5 Codepoints"; + this.lblbutyougained.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + } + // + // btnlosetryagain + // + this.btnlosetryagain.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnlosetryagain.Location = new System.Drawing.Point(155, 176); + this.btnlosetryagain.Name = "btnlosetryagain"; + this.btnlosetryagain.Size = new System.Drawing.Size(106, 35); + this.btnlosetryagain.TabIndex = 2; + this.btnlosetryagain.Text = "Try Again"; + this.btnlosetryagain.UseVisualStyleBackColor = true; + this.btnlosetryagain.Click += new System.EventHandler(this.btnlosetryagain_Click); + // + // Label5 + // + this.Label5.Location = new System.Drawing.Point(7, 26); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(260, 163); + this.Label5.TabIndex = 1; + // + // Label1 + // + this.Label1.Dock = System.Windows.Forms.DockStyle.Top; + this.Label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label1.Location = new System.Drawing.Point(0, 0); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(266, 16); + this.Label1.TabIndex = 0; + this.Label1.Text = "You lose!"; + this.Label1.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // pnlintro + // + this.pnlintro.Controls.Add(this.Label6); + this.pnlintro.Controls.Add(this.btnstartgame); + this.pnlintro.Controls.Add(this.Label8); + this.pnlintro.Location = new System.Drawing.Point(52, 29); + this.pnlintro.Name = "pnlintro"; + this.pnlintro.Size = new System.Drawing.Size(595, 303); + this.pnlintro.TabIndex = 13; + // + // Label6 + // + this.Label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label6.Location = new System.Drawing.Point(3, 39); + this.Label6.Name = "Label6"; + this.Label6.Size = new System.Drawing.Size(589, 227); + this.Label6.TabIndex = 15; + this.Label6.Text = "{PONG_DESC}"; + this.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.Label6.Click += new System.EventHandler(this.Label6_Click); + // + // btnstartgame + // + this.btnstartgame.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnstartgame.Location = new System.Drawing.Point(186, 273); + this.btnstartgame.Name = "btnstartgame"; + this.btnstartgame.Size = new System.Drawing.Size(242, 28); + this.btnstartgame.TabIndex = 15; + this.btnstartgame.Text = "{PLAY}"; + this.btnstartgame.UseVisualStyleBackColor = true; + this.btnstartgame.Click += new System.EventHandler(this.btnstartgame_Click); + // + // Label8 + // + this.Label8.AutoSize = true; + this.Label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label8.ForeColor = System.Drawing.Color.Black; + this.Label8.Location = new System.Drawing.Point(250, 5); + this.Label8.Name = "Label8"; + this.Label8.Size = new System.Drawing.Size(280, 31); + this.Label8.TabIndex = 14; + this.Label8.Text = "{PONG_WELCOME}"; + this.Label8.Click += new System.EventHandler(this.Label8_Click); + // + // lblbeatai + // + this.lblbeatai.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblbeatai.Location = new System.Drawing.Point(47, 41); + this.lblbeatai.Name = "lblbeatai"; + this.lblbeatai.Size = new System.Drawing.Size(600, 30); + this.lblbeatai.TabIndex = 8; + this.lblbeatai.Text = "You got 2 codepoints for beating the Computer!"; + this.lblbeatai.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblbeatai.Visible = false; + // + // lblcountdown + // + this.lblcountdown.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblcountdown.Location = new System.Drawing.Point(182, 152); + this.lblcountdown.Name = "lblcountdown"; + this.lblcountdown.Size = new System.Drawing.Size(315, 49); + this.lblcountdown.TabIndex = 7; + this.lblcountdown.Text = "3"; + this.lblcountdown.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblcountdown.Visible = false; + // + // ball + // + this.ball.BackColor = System.Drawing.Color.Black; + this.ball.Location = new System.Drawing.Point(300, 152); + this.ball.Name = "ball"; + this.ball.Size = new System.Drawing.Size(20, 20); + this.ball.TabIndex = 2; + this.ball.MouseEnter += new System.EventHandler(this.ball_MouseEnter); + this.ball.MouseLeave += new System.EventHandler(this.ball_MouseLeave); + // + // paddleHuman + // + this.paddleHuman.BackColor = System.Drawing.Color.Black; + this.paddleHuman.Location = new System.Drawing.Point(10, 134); + this.paddleHuman.Name = "paddleHuman"; + this.paddleHuman.Size = new System.Drawing.Size(20, 100); + this.paddleHuman.TabIndex = 3; + this.paddleHuman.TabStop = false; + // + // paddleComputer + // + this.paddleComputer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.paddleComputer.BackColor = System.Drawing.Color.Black; + this.paddleComputer.Location = new System.Drawing.Point(666, 134); + this.paddleComputer.MaximumSize = new System.Drawing.Size(20, 100); + this.paddleComputer.Name = "paddleComputer"; + this.paddleComputer.Size = new System.Drawing.Size(20, 100); + this.paddleComputer.TabIndex = 1; + // + // lbllevelandtime + // + this.lbllevelandtime.Dock = System.Windows.Forms.DockStyle.Top; + this.lbllevelandtime.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbllevelandtime.Location = new System.Drawing.Point(0, 0); + this.lbllevelandtime.Name = "lbllevelandtime"; + this.lbllevelandtime.Size = new System.Drawing.Size(700, 22); + this.lbllevelandtime.TabIndex = 4; + this.lbllevelandtime.Text = "Level: 1 - 58 Seconds Left"; + this.lbllevelandtime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblstatscodepoints + // + this.lblstatscodepoints.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lblstatscodepoints.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblstatscodepoints.Location = new System.Drawing.Point(239, 356); + this.lblstatscodepoints.Name = "lblstatscodepoints"; + this.lblstatscodepoints.Size = new System.Drawing.Size(219, 35); + this.lblstatscodepoints.TabIndex = 12; + this.lblstatscodepoints.Text = "Codepoints: "; + this.lblstatscodepoints.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblstatsY + // + this.lblstatsY.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.lblstatsY.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblstatsY.Location = new System.Drawing.Point(542, 356); + this.lblstatsY.Name = "lblstatsY"; + this.lblstatsY.Size = new System.Drawing.Size(144, 35); + this.lblstatsY.TabIndex = 11; + this.lblstatsY.Text = "Yspeed:"; + this.lblstatsY.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblstatsX + // + this.lblstatsX.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblstatsX.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblstatsX.Location = new System.Drawing.Point(3, 356); + this.lblstatsX.Name = "lblstatsX"; + this.lblstatsX.Size = new System.Drawing.Size(144, 35); + this.lblstatsX.TabIndex = 5; + this.lblstatsX.Text = "Xspeed: "; + this.lblstatsX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.AutoSize = true; + this.flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel1.Controls.Add(this.button2); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 282); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(539, 29); + this.flowLayoutPanel1.TabIndex = 2; + // + // button2 + // + this.button2.AutoSize = true; + this.button2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button2.Location = new System.Drawing.Point(476, 3); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(60, 23); + this.button2.TabIndex = 0; + this.button2.Text = "{CLOSE}"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // Pong + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.pgcontents); + this.DoubleBuffered = true; + this.Name = "Pong"; + this.Text = "{PONG_NAME}"; + this.Size = new System.Drawing.Size(820, 500); + this.Load += new System.EventHandler(this.Pong_Load); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove); + this.pgcontents.ResumeLayout(false); + this.pnlgamestats.ResumeLayout(false); + this.pnlgamestats.PerformLayout(); + this.pnlhighscore.ResumeLayout(false); + this.pnlhighscore.PerformLayout(); + this.pnlfinalstats.ResumeLayout(false); + this.pnlfinalstats.PerformLayout(); + this.pnllose.ResumeLayout(false); + this.pnlintro.ResumeLayout(false); + this.pnlintro.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.paddleHuman)).EndInit(); + this.flowLayoutPanel1.ResumeLayout(false); + this.flowLayoutPanel1.PerformLayout(); + this.ResumeLayout(false); + + } + internal System.Windows.Forms.Panel paddleComputer; + internal System.Windows.Forms.Timer gameTimer; + internal System.Windows.Forms.PictureBox paddleHuman; + internal System.Windows.Forms.Label lbllevelandtime; + internal System.Windows.Forms.Label lblstatsX; + internal System.Windows.Forms.Timer counter; + internal System.Windows.Forms.Panel pnlgamestats; + internal System.Windows.Forms.Label lblnextstats; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.Label lblpreviousstats; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.Button btnplayon; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.Button btncashout; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label lbllevelreached; + internal System.Windows.Forms.Label lblcountdown; + internal System.Windows.Forms.Timer tmrcountdown; + internal System.Windows.Forms.Label lblbeatai; + internal System.Windows.Forms.Panel pnlfinalstats; + internal System.Windows.Forms.Button btnplayagain; + internal System.Windows.Forms.Label lblfinalcodepoints; + internal System.Windows.Forms.Label Label11; + internal System.Windows.Forms.Label lblfinalcomputerreward; + internal System.Windows.Forms.Label Label9; + internal System.Windows.Forms.Label lblfinallevelreward; + internal System.Windows.Forms.Label lblfinallevelreached; + internal System.Windows.Forms.Label lblfinalcodepointswithtext; + internal System.Windows.Forms.Panel pnllose; + internal System.Windows.Forms.Label lblmissedout; + internal System.Windows.Forms.Label lblbutyougained; + internal System.Windows.Forms.Button btnlosetryagain; + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.Label lblstatscodepoints; + internal System.Windows.Forms.Label lblstatsY; + internal System.Windows.Forms.Panel pnlintro; + internal System.Windows.Forms.Label Label6; + internal System.Windows.Forms.Button btnstartgame; + internal System.Windows.Forms.Label Label8; + internal System.Windows.Forms.Timer tmrstoryline; + private System.Windows.Forms.Panel pnlhighscore; + private System.Windows.Forms.ListBox lbhighscore; + private System.Windows.Forms.Label label10; + internal Canvas pgcontents; + internal Canvas ball; + internal System.Windows.Forms.Button button1; + internal System.Windows.Forms.Label label12; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Pong.cs b/ShiftOS.WinForms/Applications/Pong.cs new file mode 100644 index 0000000..72e5994 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Pong.cs @@ -0,0 +1,631 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Newtonsoft.Json; +using ShiftOS.Engine; +using ShiftOS.Objects; + +namespace ShiftOS.WinForms.Applications +{ + [Launcher("Pong", true, "al_pong")] + [WinOpen("pong")] + public partial class Pong : UserControl, IShiftOSWindow + { + int xVel = 7; + int yVel = 8; + int computerspeed = 8; + int level = 1; + int secondsleft = 60; + int casualposition; + double xveldec = 3.0; + double yveldec = 3.0; + double incrementx = 0.4; + double incrementy = 0.2; + int levelxspeed = 3; + int levelyspeed = 3; + int beatairewardtotal; + int beataireward = 1; + int[] levelrewards = new int[50]; + int totalreward; + int countdown = 3; + + bool aiShouldIsbeEnabled = true; + + public Pong() + { + InitializeComponent(); + } + + private void Pong_Load(object sender, EventArgs e) + { + setuplevelrewards(); + } + + // Move the paddle according to the mouse position. + private void pongMain_MouseMove(object sender, MouseEventArgs e) + { + var loc = this.PointToClient(MousePosition); + paddleHuman.Location = new Point(paddleHuman.Location.X, (loc.Y) - (paddleHuman.Height / 2)); + } + + + // ERROR: Handles clauses are not supported in C# + private void gameTimer_Tick(object sender, EventArgs e) + { + if (this.Left < Screen.PrimaryScreen.Bounds.Width) + { + ball.BackColor = SkinEngine.LoadedSkin.ControlTextColor; + paddleComputer.BackColor = SkinEngine.LoadedSkin.ControlTextColor; + paddleHuman.BackColor = SkinEngine.LoadedSkin.ControlTextColor; + + + + //Set the computer player to move according to the ball's position. + if(aiShouldIsbeEnabled) + if (ball.Location.X > 500 - xVel * 10 && xVel > 0) + { + if (ball.Location.Y > paddleComputer.Location.Y + 50) + { + paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed); + } + if (ball.Location.Y < paddleComputer.Location.Y + 50) + { + paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed); + } + casualposition = rand.Next(-150, 201); + } + else + { + //used to be me.location.y + if (paddleComputer.Location.Y > this.Size.Height / 2 - paddleComputer.Height + casualposition) + { + paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed); + } + //used to be me.location.y + if (paddleComputer.Location.Y < this.Size.Height / 2 - paddleComputer.Height + casualposition) + { + paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed); + } + } + + //Set Xvel and Yvel speeds from decimal + if (xVel > 0) + xVel = (int)Math.Round(xveldec); + if (xVel < 0) + xVel = (int)-Math.Round(xveldec); + if (yVel > 0) + yVel = (int)Math.Round(yveldec); + if (yVel < 0) + yVel = (int)-Math.Round(yveldec); + + // Move the game ball. + ball.Location = new Point(ball.Location.X + xVel, ball.Location.Y + yVel); + + // Check for top wall. + if (ball.Location.Y < 0) + { + ball.Location = new Point(ball.Location.X, 0); + yVel = -yVel; + } + + // Check for bottom wall. + if (ball.Location.Y > pgcontents.Height - ball.Height) + { + ball.Location = new Point(ball.Location.X, pgcontents.Height - ball.Size.Height); + yVel = -yVel; + } + + // Check for player paddle. + if (ball.Bounds.IntersectsWith(paddleHuman.Bounds)) + { + ball.Location = new Point(paddleHuman.Location.X + ball.Size.Width, ball.Location.Y); + //randomly increase x or y speed of ball + switch (rand.Next(1, 3)) + { + case 1: + xveldec = xveldec + incrementx; + break; + case 2: + if (yveldec > 0) + yveldec = yveldec + incrementy; + if (yveldec < 0) + yveldec = yveldec - incrementy; + break; + } + xVel = -xVel; + } + + // Check for computer paddle. + if (ball.Bounds.IntersectsWith(paddleComputer.Bounds)) + { + ball.Location = new Point(paddleComputer.Location.X - paddleComputer.Size.Width + 1, ball.Location.Y); + xveldec = xveldec + incrementx; + xVel = -xVel; + } + + // Check for left wall. + if (ball.Location.X < -100) + { + ball.Location = new Point(this.Size.Width / 2 + 200, this.Size.Height / 2); + paddleComputer.Location = new Point(paddleComputer.Location.X, ball.Location.Y); + if (xVel > 0) + xVel = -xVel; + pnllose.Show(); + gameTimer.Stop(); + counter.Stop(); + lblmissedout.Text = Localization.Parse("{YOU_MISSED_OUT_ON}:") + Environment.NewLine + lblstatscodepoints.Text.Replace(Localization.Parse("{CODEPOINTS}: "), "") + Localization.Parse(" {CODEPOINTS}"); + if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade_2")) + { + totalreward = levelrewards[level - 1] + beatairewardtotal; + double onePercent = (totalreward / 100); + lblbutyougained.Text = Localization.Parse("{BUT_YOU_GAINED}:") + Environment.NewLine + onePercent.ToString("") + (Localization.Parse(" {CODEPOINTS}")); + SaveSystem.TransferCodepointsFrom("pong", (totalreward / 100)); + } + } + + // Check for right wall. + if (ball.Location.X > this.Width - ball.Size.Width - paddleComputer.Width + 100) + { + ball.Location = new Point(this.Size.Width / 2 + 200, this.Size.Height / 2); + paddleComputer.Location = new Point(paddleComputer.Location.X, ball.Location.Y); + if (xVel > 0) + xVel = -xVel; + beatairewardtotal = beatairewardtotal + beataireward; + lblbeatai.Show(); + lblbeatai.Text = Localization.Parse($"{{PONG_BEAT_AI_REWARD_SECONDARY}}: {beataireward}"); + tmrcountdown.Start(); + gameTimer.Stop(); + counter.Stop(); + } + + //lblstats.Text = "Xspeed: " & Math.Abs(xVel) & " Yspeed: " & Math.Abs(yVel) & " Human Location: " & paddleHuman.Location.ToString & " Computer Location: " & paddleComputer.Location.ToString & Environment.NewLine & " Ball Location: " & ball.Location.ToString & " Xdec: " & xveldec & " Ydec: " & yveldec & " Xinc: " & incrementx & " Yinc: " & incrementy + lblstatsX.Text = Localization.Parse("{H_VEL}: ") + xveldec; + lblstatsY.Text = Localization.Parse("{V_VEL}: ") + yveldec; + lblstatscodepoints.Text = Localization.Parse("{CODEPOINTS}: ") + (levelrewards[level - 1] + beatairewardtotal).ToString(); + lbllevelandtime.Text = Localization.Parse("{LEVEL}: " + level + " - " + secondsleft + " {SECONDS_LEFT}"); + + if (xVel > 20 || xVel < -20) + { + paddleHuman.Width = Math.Abs(xVel); + paddleComputer.Width = Math.Abs(xVel); + } + else + { + paddleHuman.Width = 20; + paddleComputer.Width = 20; + } + + computerspeed = Math.Abs(yVel); + + // pgcontents.Refresh() + // pgcontents.CreateGraphics.FillRectangle(Brushes.Black, ball.Location.X, ball.Location.Y, ball.Width, ball.Height) + + } + } + + // ERROR: Handles clauses are not supported in C# + private void counter_Tick(object sender, EventArgs e) + { + if (this.Left < Screen.PrimaryScreen.Bounds.Width) + { + secondsleft = secondsleft - 1; + if (secondsleft == -1) + { + secondsleft = 60; + level = level + 1; + generatenextlevel(); + pnlgamestats.Show(); + pnlgamestats.BringToFront(); + pnlgamestats.Location = new Point((pgcontents.Width / 2) - (pnlgamestats.Width / 2), (pgcontents.Height / 2) - (pnlgamestats.Height / 2)); + + counter.Stop(); + gameTimer.Stop(); + SendHighscores(); + } + lblstatscodepoints.Text = Localization.Parse("{CODEPOINTS}: ") + (levelrewards[level - 1] + beatairewardtotal).ToString(); + } + } + + public void SendHighscores() + { + var highscore = new PongHighscore + { + UserName = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}", + HighestLevel = level, + HighestCodepoints = totalreward + }; + ServerManager.SendMessage("pong_sethighscore", JsonConvert.SerializeObject(highscore)); + } + + // ERROR: Handles clauses are not supported in C# + private void btnplayon_Click(object sender, EventArgs e) + { + xveldec = levelxspeed; + yveldec = levelyspeed; + + secondsleft = 60; + + tmrcountdown.Start(); + lblbeatai.Text = Localization.Parse($"{{PONG_BEAT_AI_REWARD}}: {beataireward}"); + pnlgamestats.Hide(); + lblbeatai.Show(); + ball.Location = new Point(paddleHuman.Location.X + paddleHuman.Width + 50, paddleHuman.Location.Y + paddleHuman.Height / 2); + if (xVel < 0) + xVel = Math.Abs(xVel); + lbllevelandtime.Text = Localization.Parse("{LEVEL}: " + level + " - " + secondsleft + " {SECONDS_LEFT}"); + } + + //Increase the ball speed stats for the next level + private void generatenextlevel() + { + lbllevelreached.Text = Localization.Parse("{YOU_REACHED_LEVEL} " + level + "!"); + + lblpreviousstats.Text = Localization.Parse("{INITIAL_H_VEL}: " + levelxspeed + Environment.NewLine + "{INITIAL_V_VEL}: " + levelyspeed + Environment.NewLine + "{INC_H_VEL}: " + incrementx + Environment.NewLine + "{INC_V_VEL}: " + incrementy); + + switch (rand.Next(1, 3)) + { + case 1: + levelxspeed = levelxspeed + 1; + break; + case 2: + levelxspeed = levelxspeed + 2; + break; + } + + switch (rand.Next(1, 3)) + { + case 1: + levelyspeed = levelyspeed + 1; + break; + case 2: + levelyspeed = levelyspeed + 2; + break; + } + + switch (rand.Next(1, 6)) + { + case 1: + incrementx = incrementx + 0.1; + break; + case 2: + incrementx = incrementx + 0.2; + break; + case 3: + incrementy = incrementy + 0.1; + break; + case 4: + incrementy = incrementy + 0.2; + break; + case 5: + incrementy = incrementy + 0.3; + break; + } + + lblnextstats.Text = Localization.Parse("{INITIAL_H_VEL}: " + levelxspeed + Environment.NewLine + "{INITIAL_V_VEL}: " + levelyspeed + Environment.NewLine + "{INC_H_VEL}: " + incrementx + Environment.NewLine + "{INC_V_VEL}: " + incrementy); + + if (level < 15) + { + if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade")) + { + beataireward = level * 10; + } else + { + beataireward = level * 5; + } + } + else + { + if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade")) + { + double br = levelrewards[level - 1] / 10; + beataireward = (int)Math.Round(br) * 10; + } else + { + double br = levelrewards[level - 1] / 10; + beataireward = (int)Math.Round(br) * 5; + } + } + + totalreward = levelrewards[level - 1] + beatairewardtotal; + + btncashout.Text = Localization.Parse("{CASH_OUT_WITH_CODEPOINTS}"); + btnplayon.Text = Localization.Parse("{PONG_PLAY_ON_FOR_MORE}"); + } + + private void setuplevelrewards() + { + if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade")) + { + levelrewards[0] = 0; + levelrewards[1] = 40; + levelrewards[2] = 120; + levelrewards[3] = 280; + levelrewards[4] = 580; + levelrewards[5] = 800; + levelrewards[6] = 1200; + levelrewards[7] = 1800; + levelrewards[8] = 2400; + levelrewards[9] = 3200; + levelrewards[10] = 4000; + levelrewards[11] = 5000; + levelrewards[12] = 6000; + levelrewards[13] = 8000; + levelrewards[14] = 10000; + levelrewards[15] = 12000; + levelrewards[16] = 16000; + levelrewards[17] = 20000; + levelrewards[18] = 26000; + levelrewards[19] = 32000; + levelrewards[20] = 40000; + levelrewards[21] = 50000; + levelrewards[22] = 64000; + levelrewards[23] = 80000; + levelrewards[24] = 100000; + levelrewards[25] = 120000; + levelrewards[26] = 150000; + levelrewards[27] = 180000; + levelrewards[28] = 220000; + levelrewards[29] = 280000; + levelrewards[30] = 360000; + levelrewards[31] = 440000; + levelrewards[32] = 540000; + levelrewards[33] = 640000; + levelrewards[34] = 800000; + levelrewards[35] = 1000000; + levelrewards[36] = 1280000; + levelrewards[37] = 1600000; + levelrewards[38] = 2000000; + levelrewards[39] = 3000000; + levelrewards[40] = 4000000; + } else + { + levelrewards[0] = 0; + levelrewards[1] = 20; + levelrewards[2] = 60; + levelrewards[3] = 140; + levelrewards[4] = 290; + levelrewards[5] = 400; + levelrewards[6] = 600; + levelrewards[7] = 900; + levelrewards[8] = 1200; + levelrewards[9] = 1600; + levelrewards[10] = 2000; + levelrewards[11] = 2500; + levelrewards[12] = 3000; + levelrewards[13] = 4000; + levelrewards[14] = 5000; + levelrewards[15] = 6000; + levelrewards[16] = 8000; + levelrewards[17] = 10000; + levelrewards[18] = 13000; + levelrewards[19] = 16000; + levelrewards[20] = 20000; + levelrewards[21] = 25000; + levelrewards[22] = 32000; + levelrewards[23] = 40000; + levelrewards[24] = 50000; + levelrewards[25] = 60000; + levelrewards[26] = 75000; + levelrewards[27] = 90000; + levelrewards[28] = 110000; + levelrewards[29] = 140000; + levelrewards[30] = 180000; + levelrewards[31] = 220000; + levelrewards[32] = 270000; + levelrewards[33] = 320000; + levelrewards[34] = 400000; + levelrewards[35] = 500000; + levelrewards[36] = 640000; + levelrewards[37] = 800000; + levelrewards[38] = 1000000; + levelrewards[39] = 1500000; + levelrewards[40] = 2000000; + } + } + + // ERROR: Handles clauses are not supported in C# + private void countdown_Tick(object sender, EventArgs e) + { + if (this.Left < Screen.PrimaryScreen.Bounds.Width) + { + switch (countdown) + { + case 0: + countdown = 3; + lblcountdown.Hide(); + lblbeatai.Hide(); + gameTimer.Start(); + counter.Start(); + tmrcountdown.Stop(); + break; + case 1: + lblcountdown.Text = "1"; + countdown = countdown - 1; + break; + case 2: + lblcountdown.Text = "2"; + countdown = countdown - 1; + break; + case 3: + lblcountdown.Text = "3"; + countdown = countdown - 1; + lblcountdown.Show(); + break; + } + + } + } + + // ERROR: Handles clauses are not supported in C# + private void btncashout_Click(object sender, EventArgs e) + { + pnlgamestats.Hide(); + pnlfinalstats.Show(); + lblfinalcodepointswithtext.Text = Localization.Parse("{YOU_WON} " + totalreward + " {CODEPOINTS}!"); + lblfinallevelreached.Text = Localization.Parse("{CODEPOINTS_FOR_BEATING_LEVEL}: ") + (level - 1).ToString(); + lblfinallevelreward.Text = levelrewards[level - 1].ToString(); + lblfinalcomputerreward.Text = beatairewardtotal.ToString(); + lblfinalcodepoints.Text = totalreward + Localization.Parse(" {CODEPOINTS_SHORT}"); + SaveSystem.TransferCodepointsFrom("pong", totalreward); + } + + private void newgame() + { + pnlfinalstats.Hide(); + pnllose.Hide(); + pnlintro.Hide(); + + level = 1; + totalreward = 0; + if (ShiftoriumFrontend.UpgradeInstalled("pong_upgrade")) + { + beataireward = 10; + } else + { + beataireward = 5; + } + beatairewardtotal = 0; + secondsleft = 60; + lblstatscodepoints.Text = Localization.Parse("{CODEPOINTS}: "); + //reset stats text + lblstatsX.Text = Localization.Parse("{H_VEL}: "); + lblstatsY.Text = Localization.Parse("{V_VEL}: "); + + levelxspeed = 3; + levelyspeed = 3; + + incrementx = 0.4; + incrementy = 0.2; + + xveldec = levelxspeed; + yveldec = levelyspeed; + + tmrcountdown.Start(); + lblbeatai.Text = Localization.Parse($"{{PONG_BEAT_AI_REWARD}}: {beataireward}"); + pnlgamestats.Hide(); + lblbeatai.Show(); + ball.Location = new Point(paddleHuman.Location.X + paddleHuman.Width + 50, (paddleHuman.Location.Y + paddleHuman.Height) / 2); + if (xVel < 0) + xVel = Math.Abs(xVel); + lbllevelandtime.Text = Localization.Parse("{{LEVEL}}: " + level + " - " + secondsleft + " {SECONDS_LEFT}"); + } + + public void btnhighscore_Click(object s, EventArgs a) + { + pnlhighscore.BringToFront(); + SetupHighScores(); + } + + public void SetupHighScores() + { + lbhighscore.Items.Clear(); + ServerManager.MessageReceived += (msg) => + { + if(msg.Name == "pong_highscores") + { + var hs = JsonConvert.DeserializeObject>(msg.Contents); + + var orderedhs = hs.OrderByDescending(i => i.HighestLevel); + + foreach(var score in orderedhs) + { + this.Invoke(new Action(() => + { + lbhighscore.Items.Add($"{score.UserName}\t\t\t{score.HighestLevel}\t\t{score.HighestCodepoints} CP"); + })); + } + } + }; + ServerManager.SendMessage("pong_gethighscores", null); + pnlhighscore.Show(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnplayagain_Click(object sender, EventArgs e) + { + newgame(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnlosetryagain_Click(object sender, EventArgs e) + { + newgame(); + } + + // ERROR: Handles clauses are not supported in C# + private void btnstartgame_Click(object sender, EventArgs e) + { + newgame(); + } + + Random rand = new Random(); + // ERROR: Handles clauses are not supported in C# + private void tmrstoryline_Tick(object sender, EventArgs e) + { + // Random chance of showing getshiftnet storyline + int i = rand.Next(0, 100); + + if (i >= 25 && i <= 50) + { + tmrstoryline.Stop(); + } + + } + + // ERROR: Handles clauses are not supported in C# + private void me_closing(object sender, FormClosingEventArgs e) + { + tmrstoryline.Stop(); + } + + private void Label6_Click(object sender, EventArgs e) + { + + } + + private void Label8_Click(object sender, EventArgs e) + { + + } + + private void pgcontents_Paint(object sender, PaintEventArgs e) { + + } + + private void ball_MouseEnter(object sender, EventArgs e) { + aiShouldIsbeEnabled = false; + } + + private void ball_MouseLeave(object sender, EventArgs e) { + aiShouldIsbeEnabled = true; + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + private void button2_Click(object sender, EventArgs e) + { + pnlhighscore.Hide(); + } + } +} diff --git a/ShiftOS.WinForms/Applications/Pong.resx b/ShiftOS.WinForms/Applications/Pong.resx new file mode 100644 index 0000000..3b5619d --- /dev/null +++ b/ShiftOS.WinForms/Applications/Pong.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 227, 17 + + + 134, 17 + + + 340, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Shifter.Designer.cs b/ShiftOS.WinForms/Applications/Shifter.Designer.cs new file mode 100644 index 0000000..b4a45ea --- /dev/null +++ b/ShiftOS.WinForms/Applications/Shifter.Designer.cs @@ -0,0 +1,164 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class Shifter + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.flbody = new System.Windows.Forms.FlowLayoutPanel(); + this.flcategory = new System.Windows.Forms.FlowLayoutPanel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.flmeta = new System.Windows.Forms.FlowLayoutPanel(); + this.btnapply = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.panel4); + this.panel1.Controls.Add(this.panel3); + this.panel1.Controls.Add(this.panel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(893, 539); + this.panel1.TabIndex = 0; + // + // panel4 + // + this.panel4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel4.Controls.Add(this.flbody); + this.panel4.Controls.Add(this.flcategory); + this.panel4.Location = new System.Drawing.Point(154, 283); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(734, 253); + this.panel4.TabIndex = 2; + // + // flbody + // + this.flbody.AutoScroll = true; + this.flbody.Dock = System.Windows.Forms.DockStyle.Fill; + this.flbody.Location = new System.Drawing.Point(126, 0); + this.flbody.Name = "flbody"; + this.flbody.Size = new System.Drawing.Size(608, 253); + this.flbody.TabIndex = 3; + // + // flcategory + // + this.flcategory.Dock = System.Windows.Forms.DockStyle.Left; + this.flcategory.Location = new System.Drawing.Point(0, 0); + this.flcategory.Name = "flcategory"; + this.flcategory.Size = new System.Drawing.Size(126, 253); + this.flcategory.TabIndex = 2; + // + // panel3 + // + this.panel3.Controls.Add(this.label1); + this.panel3.Location = new System.Drawing.Point(155, 12); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(640, 360); + this.panel3.TabIndex = 1; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(640, 360); + this.label1.TabIndex = 0; + this.label1.Text = "Preview not available."; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.panel2.Controls.Add(this.flmeta); + this.panel2.Controls.Add(this.btnapply); + this.panel2.Location = new System.Drawing.Point(12, 12); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(136, 511); + this.panel2.TabIndex = 0; + // + // flmeta + // + this.flmeta.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.flmeta.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flmeta.Location = new System.Drawing.Point(4, 4); + this.flmeta.Name = "flmeta"; + this.flmeta.Size = new System.Drawing.Size(126, 450); + this.flmeta.TabIndex = 1; + // + // btnapply + // + this.btnapply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnapply.Location = new System.Drawing.Point(3, 460); + this.btnapply.Name = "btnapply"; + this.btnapply.Size = new System.Drawing.Size(127, 48); + this.btnapply.TabIndex = 0; + this.btnapply.Text = "Apply"; + this.btnapply.UseVisualStyleBackColor = true; + this.btnapply.Click += new System.EventHandler(this.btnapply_Click); + // + // Shifter + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.panel1); + this.Name = "Shifter"; + this.Text = "Shifter"; + this.Size = new System.Drawing.Size(893, 539); + this.Load += new System.EventHandler(this.Shifter_Load); + this.panel1.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.FlowLayoutPanel flmeta; + private System.Windows.Forms.Button btnapply; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.FlowLayoutPanel flbody; + private System.Windows.Forms.FlowLayoutPanel flcategory; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Shifter.cs b/ShiftOS.WinForms/Applications/Shifter.cs new file mode 100644 index 0000000..6becfcb --- /dev/null +++ b/ShiftOS.WinForms/Applications/Shifter.cs @@ -0,0 +1,616 @@ +using Newtonsoft.Json; +using ShiftOS.Objects.ShiftFS; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms.Applications +{ + [Launcher("Shifter", true, "al_shifter")] + [RequiresUpgrade("shifter")] + [WinOpen("shifter")] + public partial class Shifter : UserControl, IShiftOSWindow + { + public Shifter() + { + InitializeComponent(); + PopulateShifter(); + } + + public int CodepointValue = 0; + public List settings = new List(); + public Skin LoadedSkin = null; + + public void PopulateShifter() + { + if (LoadedSkin == null) + LoadedSkin = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(SkinEngine.LoadedSkin)); + + settings.Clear(); + + foreach(var field in LoadedSkin.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance)) + { + if (ShiftoriumFrontend.UpgradeAttributesUnlocked(field)) + { + bool addToShifter = true; + ShifterSetting setting = new Applications.ShifterSetting(); + foreach (var attr in field.GetCustomAttributes(false)) + { + if (attr is ShifterHiddenAttribute) + { + addToShifter = false; + continue; + } + + if (attr is ShifterMetaAttribute) + { + setting.Category = (attr as ShifterMetaAttribute).Meta; + } + if (attr is ShifterCategoryAttribute) + { + setting.SubCategory = (attr as ShifterCategoryAttribute).Category; + } + if (attr is ShifterNameAttribute) + { + setting.Name = (attr as ShifterNameAttribute).Name; + } + if (attr is ShifterDescriptionAttribute) + { + setting.Description = (attr as ShifterDescriptionAttribute).Description; + } + + } + if (addToShifter == true) + { + setting.Field = field; + settings.Add(setting); + } + } + } + + PopulateCategories(); + } + + public void PopulateCategories() + { + flmeta.Controls.Clear(); + + List cats = new List(); + + foreach(var c in this.settings) + { + if (!cats.Contains(c.Category)) + { + cats.Add(c.Category); + } + } + + foreach(var c in cats) + { + var btn = new Button(); + btn.Text = c; + btn.Width = flmeta.Width - (flmeta.Margin.Left * 2); + btn.FlatStyle = FlatStyle.Flat; + btn.Click += (o, a) => + { + PopulateSubcategories(c); + }; + + flmeta.Controls.Add(btn); + btn.Show(); + } + } + + public void PopulateSubcategories(string cat) + { + flcategory.Controls.Clear(); + + List cats = new List(); + + foreach (var c in this.settings) + { + if (c.Category == cat) + { + if (!cats.Contains(c.SubCategory)) + { + cats.Add(c.SubCategory); + } + } + } + + foreach (var c in cats) + { + var btn = new Button(); + btn.Text = c; + btn.Width = flcategory.Width - (flcategory.Margin.Left * 2); + btn.FlatStyle = FlatStyle.Flat; + btn.Click += (o, a) => + { + PopulateBody(cat, c); + }; + + flcategory.Controls.Add(btn); + btn.Show(); + } + } + + public void PopulateBody(string cat, string subcat) + { + flbody.Controls.Clear(); + + List cats = new List(); + + foreach (var c in this.settings) + { + if (c.SubCategory == subcat && c.Category == cat) + { + if (c.Field.FlagFullfilled(LoadedSkin)) + { + if (!cats.Contains(c)) + { + cats.Add(c); + } + } + } + } + + foreach(var c in cats) + { + var lbl = new Label(); + int labelHeight = 0; + lbl.AutoSize = true; + lbl.Text = c.Name + ":"; + flbody.Controls.Add(lbl); + lbl.TextAlign = ContentAlignment.MiddleLeft; + lbl.Show(); + //Cool - label's in. + if(c.Field.FieldType == typeof(Point)) + { + var width = new TextBox(); + var height = new TextBox(); + labelHeight = width.Height; //irony? + width.Width = 30; + height.Width = width.Width; + width.Text = ((Point)c.Field.GetValue(this.LoadedSkin)).X.ToString(); + height.Text = ((Point)c.Field.GetValue(this.LoadedSkin)).Y.ToString(); + flbody.SetFlowBreak(height, true); + ControlManager.SetupControl(width); + ControlManager.SetupControl(height); + + flbody.Controls.Add(width); + width.Show(); + flbody.Controls.Add(height); + height.Show(); + + EventHandler tc = (o, a) => + { + try + { + int x = Convert.ToInt32(width.Text); + int y = Convert.ToInt32(height.Text); + + int oldx = ((Point)c.Field.GetValue(this.LoadedSkin)).X; + int oldy = ((Point)c.Field.GetValue(this.LoadedSkin)).Y; + + if(x != oldx || y != oldy) + { + c.Field.SetValue(LoadedSkin, new Point(x, y)); + CodepointValue += 200; + } + } + catch + { + width.Text = ((Point)c.Field.GetValue(this.LoadedSkin)).X.ToString(); + height.Text = ((Point)c.Field.GetValue(this.LoadedSkin)).Y.ToString(); + } + }; + + width.TextChanged += tc; + height.TextChanged += tc; + + } + else if(c.Field.FieldType == typeof(string)) + { + var str = new TextBox(); + str.Width = 120; + ControlManager.SetupControl(str); + labelHeight = str.Height; + str.Text = c.Field.GetValue(LoadedSkin).ToString(); + flbody.SetFlowBreak(str, true); + str.TextChanged += (o, a) => { c.Field.SetValue(LoadedSkin, str.Text); CodepointValue += 100; }; + flbody.Controls.Add(str); + str.Show(); + } + else if(c.Field.FieldType == typeof(byte[])) + { + //We'll assume that this is an image file. + var color = new Button(); + color.Width = 40; + labelHeight = color.Height; + //just so it's flat like the system. + ControlManager.SetupControl(color); + flbody.SetFlowBreak(color, true); + + color.BackgroundImage = SkinEngine.ImageFromBinary((byte[])c.Field.GetValue(this.LoadedSkin)); + color.Click += (o, a) => + { + AppearanceManager.SetupDialog(new GraphicPicker(color.BackgroundImage, c.Name, GetLayout(c.Field.GetImageName()), new Action((col, gdiImg, layout) => + { + c.Field.SetValue(LoadedSkin, col); + color.BackgroundImage = SkinEngine.ImageFromBinary(col); + color.BackgroundImageLayout = layout; + LoadedSkin.SkinImageLayouts[c.Field.GetImageName()] = layout; + CodepointValue += 700; + }))); + }; + flbody.Controls.Add(color); + color.Show(); + } + else if (c.Field.FieldType == typeof(Size)) + { + var width = new TextBox(); + var height = new TextBox(); + width.Width = 30; + height.Width = width.Width; + labelHeight = width.Height; + flbody.SetFlowBreak(height, true); + + width.Text = ((Size)c.Field.GetValue(this.LoadedSkin)).Width.ToString(); + height.Text = ((Size)c.Field.GetValue(this.LoadedSkin)).Height.ToString(); + ControlManager.SetupControl(width); + ControlManager.SetupControl(height); + + flbody.Controls.Add(width); + width.Show(); + flbody.Controls.Add(height); + height.Show(); + + EventHandler tc = (o, a) => + { + try + { + int x = Convert.ToInt32(width.Text); + int y = Convert.ToInt32(height.Text); + + int oldx = ((Size)c.Field.GetValue(this.LoadedSkin)).Width; + int oldy = ((Size)c.Field.GetValue(this.LoadedSkin)).Height; + + if (x != oldx || y != oldy) + { + c.Field.SetValue(LoadedSkin, new Size(x, y)); + CodepointValue += 200; + } + } + catch + { + width.Text = ((Size)c.Field.GetValue(this.LoadedSkin)).Width.ToString(); + height.Text = ((Size)c.Field.GetValue(this.LoadedSkin)).Height.ToString(); + } + }; + + width.TextChanged += tc; + height.TextChanged += tc; + + } + else if(c.Field.FieldType == typeof(bool)) + { + var check = new CheckBox(); + check.Checked = ((bool)c.Field.GetValue(LoadedSkin)); + labelHeight = check.Height; + check.CheckedChanged += (o, a) => + { + c.Field.SetValue(LoadedSkin, check.Checked); + CodepointValue += 50; + }; + flbody.SetFlowBreak(check, true); + + flbody.Controls.Add(check); + check.Show(); + } + else if(c.Field.FieldType == typeof(Font)) + { + var name = new ComboBox(); + var size = new TextBox(); + var style = new ComboBox(); + + name.Width = 120; + labelHeight = name.Height; + size.Width = 40; + style.Width = 80; + flbody.SetFlowBreak(style, true); + + ControlManager.SetupControl(name); + ControlManager.SetupControl(size); + ControlManager.SetupControl(style); + + //populate the font name box + foreach(var font in FontFamily.Families) + { + name.Items.Add(font.Name); + } + name.Text = ((Font)c.Field.GetValue(LoadedSkin)).Name; + + size.Text = ((Font)c.Field.GetValue(LoadedSkin)).Size.ToString(); + + //populate the style box + foreach(var s in (FontStyle[])Enum.GetValues(typeof(FontStyle))) + { + style.Items.Add(s.ToString()); + } + style.Text = ((Font)c.Field.GetValue(LoadedSkin)).Style.ToString(); + + name.SelectedIndexChanged += (o, a) => + { + var en = (FontStyle[])Enum.GetValues(typeof(FontStyle)); + + var f = en[style.SelectedIndex]; + + c.Field.SetValue(LoadedSkin, new Font(name.Text, (float)Convert.ToInt32(size.Text), f)); + CodepointValue += 100; + }; + + style.SelectedIndexChanged += (o, a) => + { + var en = (FontStyle[])Enum.GetValues(typeof(FontStyle)); + + var f = en[style.SelectedIndex]; + + c.Field.SetValue(LoadedSkin, new Font(name.Text, (float)Convert.ToInt32(size.Text), f)); + CodepointValue += 50; + }; + + size.TextChanged += (o, a) => + { + try + { + var en = (FontStyle[])Enum.GetValues(typeof(FontStyle)); + + var f = en[style.SelectedIndex]; + + c.Field.SetValue(LoadedSkin, new Font(name.Text, (float)Convert.ToInt32(size.Text), f)); + } + catch + { + size.Text = ((Font)c.Field.GetValue(LoadedSkin)).Size.ToString(); + } + CodepointValue += 50; + }; + + flbody.Controls.Add(name); + flbody.Controls.Add(size); + flbody.Controls.Add(style); + + name.Show(); + size.Show(); + style.Show(); + + } + else if(c.Field.FieldType == typeof(Color)) + { + var color = new Button(); + color.Width = 40; + labelHeight = color.Height; + //just so it's flat like the system. + ControlManager.SetupControl(color); + + color.BackColor = ((Color)c.Field.GetValue(LoadedSkin)); + color.BackColorChanged += (o, a) => + { + c.Field.SetValue(LoadedSkin, color.BackColor); + }; + color.Click += (o, a) => + { + AppearanceManager.SetupDialog(new ColorPicker(color.BackColor, c.Name, new Action((col) => + { + color.BackColor = col; + CodepointValue += 300; + }))); + }; + flbody.SetFlowBreak(color, true); + + flbody.Controls.Add(color); + color.Show(); + } + else if(c.Field.FieldType == typeof(int)) + { + if (c.Field.HasShifterEnumMask()) + { + var name = new ComboBox(); + name.Width = 120; + ControlManager.SetupControl(name); + string[] items = c.Field.GetShifterEnumMask(); + foreach(var item in items) + { + name.Items.Add(item); + } + name.SelectedIndex = (int)c.Field.GetValue(LoadedSkin); + name.SelectedIndexChanged += (o, a) => + { + c.Field.SetValue(LoadedSkin, name.SelectedIndex); + CodepointValue += 75; + }; + labelHeight = name.Height; + flbody.Controls.Add(name); + name.Show(); + flbody.SetFlowBreak(name, true); + + } + else + { + var width = new TextBox(); + width.Width = 30; + width.Text = ((int)c.Field.GetValue(this.LoadedSkin)).ToString(); + ControlManager.SetupControl(width); + labelHeight = width.Height; + flbody.Controls.Add(width); + width.Show(); + + EventHandler tc = (o, a) => + { + try + { + int x = Convert.ToInt32(width.Text); + + int oldx = ((int)c.Field.GetValue(this.LoadedSkin)); + + if (x != oldx) + { + c.Field.SetValue(LoadedSkin, x); + CodepointValue += 75; + } + } + catch + { + width.Text = ((int)c.Field.GetValue(this.LoadedSkin)).ToString(); + } + }; + + width.TextChanged += tc; + flbody.SetFlowBreak(width, true); + + } + } + lbl.AutoSize = false; + lbl.Width = (int)this.CreateGraphics().MeasureString(lbl.Text, SkinEngine.LoadedSkin.MainFont).Width + 15; + lbl.Height = labelHeight; + lbl.TextAlign = ContentAlignment.MiddleLeft; + + if (!string.IsNullOrWhiteSpace(c.Description)) + { + var desc = new Label(); + flbody.SetFlowBreak(desc, true); + desc.Text = c.Description; + desc.AutoSize = true; + flbody.Controls.Add(desc); + desc.Show(); + } + } + } + + public ImageLayout GetLayout(string name) + { + if (!LoadedSkin.SkinImageLayouts.ContainsKey(name)) + { + LoadedSkin.SkinImageLayouts.Add(name, ImageLayout.Tile); + return ImageLayout.Tile; + } + else + { + return LoadedSkin.SkinImageLayouts[name]; + } + } + + private void btnapply_Click(object sender, EventArgs e) + { + //Apply the skin. + Utils.WriteAllText(Paths.GetPath("skin.json"), JsonConvert.SerializeObject(LoadedSkin)); + SkinEngine.LoadSkin(); + CodepointValue = CodepointValue / 4; + Infobox.Show("{SHIFTER_SKIN_APPLIED}", "{YOU_HAVE_EARNED} " + CodepointValue.ToString() + " {CODEPOINTS}."); + ShiftOS.Engine.Shiftorium.Silent = true; + SaveSystem.CurrentSave.Codepoints += CodepointValue; + SaveSystem.SaveGame(); + ShiftOS.Engine.Shiftorium.Silent = false; + CodepointValue = 0; + } + + private void Shifter_Load(object sender, EventArgs e) { + + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } + + public class ShifterSetting + { + public string Name { get; set; } + public string Description { get; set; } + public string Category { get; set; } + public string SubCategory { get; set; } + public FieldInfo Field { get; set; } + } + + public static class ShifterReflectionUtilities + { + public static bool HasShifterEnumMask(this FieldInfo field) + { + foreach(var attr in field.GetCustomAttributes(false)) + { + if (attr is ShifterEnumMaskAttribute) + return true; + } + return false; + } + + public static bool FlagFullfilled(this FieldInfo field, Skin skn) + { + foreach(var attr in field.GetCustomAttributes(false)) + { + if(attr is ShifterFlagAttribute) + { + return (attr as ShifterFlagAttribute).IsTrue(skn); + } + } + return true; + } + + public static string GetImageName(this FieldInfo field) + { + foreach (var attr in field.GetCustomAttributes(false)) + { + if (attr is ImageAttribute) + { + var eattr = attr as ImageAttribute; + return eattr.Name; + } + } + return null; + + } + + public static string[] GetShifterEnumMask(this FieldInfo field) + { + if(field.HasShifterEnumMask()) + { + foreach (var attr in field.GetCustomAttributes(false)) + { + if (attr is ShifterEnumMaskAttribute) + { + var eattr = attr as ShifterEnumMaskAttribute; + return eattr.Items; + } + } + return null; + } + else + { + return null; + } + } + } +} diff --git a/ShiftOS.WinForms/Applications/Shifter.resx b/ShiftOS.WinForms/Applications/Shifter.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Shifter.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs new file mode 100644 index 0000000..f0a11e3 --- /dev/null +++ b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.Designer.cs @@ -0,0 +1,237 @@ +using ShiftOS.WinForms.Controls; + +namespace ShiftOS.WinForms.Applications +{ + partial class ShiftoriumFrontend + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.lbupgradedesc = new System.Windows.Forms.Label(); + this.pnlupgradeactions = new System.Windows.Forms.Panel(); + this.btnbuy = new System.Windows.Forms.Button(); + this.lbupgradetitle = new System.Windows.Forms.Label(); + this.pnllist = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.pgupgradeprogress = new ShiftOS.WinForms.Controls.ShiftedProgressBar(); + this.lbupgrades = new System.Windows.Forms.ListBox(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.pnlupgradeactions.SuspendLayout(); + this.pnllist.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.panel2); + this.panel1.Controls.Add(this.pnllist); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(782, 427); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.lbupgradedesc); + this.panel2.Controls.Add(this.pnlupgradeactions); + this.panel2.Controls.Add(this.lbupgradetitle); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(406, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(376, 427); + this.panel2.TabIndex = 1; + // + // label2 + // + if (ShiftoriumFrontend.UpgradeInstalled("shiftorium_gui_codepoints_display")) + { + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(128, 357); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(135, 13); + this.label2.TabIndex = 3; + this.label2.Text = "You have: %cp Codepoints"; + this.label2.Click += new System.EventHandler(this.label2_Click); + } else + { + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(128, 357); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(1, 1); + this.label2.TabIndex = 3; + this.label2.Text = ""; + this.label2.Click += new System.EventHandler(this.label2_Click); + } + // + // lbupgradedesc + // + this.lbupgradedesc.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbupgradedesc.Location = new System.Drawing.Point(0, 42); + this.lbupgradedesc.Name = "lbupgradedesc"; + this.lbupgradedesc.Size = new System.Drawing.Size(376, 348); + this.lbupgradedesc.TabIndex = 2; + this.lbupgradedesc.Text = "{SHIFTORIUM_EXP}"; + this.lbupgradedesc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbupgradedesc.UseCompatibleTextRendering = true; + // + // pnlupgradeactions + // + this.pnlupgradeactions.Controls.Add(this.btnbuy); + this.pnlupgradeactions.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pnlupgradeactions.Location = new System.Drawing.Point(0, 390); + this.pnlupgradeactions.Name = "pnlupgradeactions"; + this.pnlupgradeactions.Size = new System.Drawing.Size(376, 37); + this.pnlupgradeactions.TabIndex = 1; + // + // btnbuy + // + this.btnbuy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnbuy.AutoSize = true; + this.btnbuy.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnbuy.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnbuy.Location = new System.Drawing.Point(327, 9); + this.btnbuy.Name = "btnbuy"; + this.btnbuy.Size = new System.Drawing.Size(37, 25); + this.btnbuy.TabIndex = 0; + this.btnbuy.Text = "Buy"; + this.btnbuy.UseVisualStyleBackColor = true; + this.btnbuy.Visible = false; + this.btnbuy.Click += new System.EventHandler(this.btnbuy_Click); + // + // lbupgradetitle + // + this.lbupgradetitle.Dock = System.Windows.Forms.DockStyle.Top; + this.lbupgradetitle.Location = new System.Drawing.Point(0, 0); + this.lbupgradetitle.Name = "lbupgradetitle"; + this.lbupgradetitle.Size = new System.Drawing.Size(376, 42); + this.lbupgradetitle.TabIndex = 0; + this.lbupgradetitle.Text = "{WELCOME_TO_SHIFTORIUM}"; + this.lbupgradetitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbupgradetitle.UseCompatibleTextRendering = true; + // + // pnllist + // + this.pnllist.Controls.Add(this.label2); + this.pnllist.Controls.Add(this.label1); + this.pnllist.Controls.Add(this.pgupgradeprogress); + this.pnllist.Controls.Add(this.lbupgrades); + this.pnllist.Dock = System.Windows.Forms.DockStyle.Left; + this.pnllist.Location = new System.Drawing.Point(0, 0); + this.pnllist.Name = "pnllist"; + this.pnllist.Size = new System.Drawing.Size(406, 427); + this.pnllist.TabIndex = 0; + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 399); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(137, 13); + this.label1.TabIndex = 2; + this.label1.Text = "{UPGRADE_PROGRESS}:"; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 399); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(137, 13); + this.label3.TabIndex = 2; + int upgradepercent = (pgupgradeprogress.Value / 100) * 100; + this.label3.Text = upgradepercent.ToString(); + // + // pgupgradeprogress + // + this.pgupgradeprogress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pgupgradeprogress.BlockSize = 5; + this.pgupgradeprogress.Location = new System.Drawing.Point(146, 390); + this.pgupgradeprogress.Maximum = 100; + this.pgupgradeprogress.Name = "pgupgradeprogress"; + this.pgupgradeprogress.Size = new System.Drawing.Size(254, 23); + this.pgupgradeprogress.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + this.pgupgradeprogress.TabIndex = 1; + this.pgupgradeprogress.Value = 25; + // + // lbupgrades + // + this.lbupgrades.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbupgrades.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.lbupgrades.FormattingEnabled = true; + this.lbupgrades.Location = new System.Drawing.Point(3, 66); + this.lbupgrades.Name = "lbupgrades"; + this.lbupgrades.Size = new System.Drawing.Size(397, 277); + this.lbupgrades.TabIndex = 0; + this.lbupgrades.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.lbupgrades_DrawItem); + // + // ShiftoriumFrontend + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.Controls.Add(this.panel1); + this.ForeColor = System.Drawing.Color.LightGreen; + this.Name = "ShiftoriumFrontend"; + this.Text = "{SHIFTORIUM_NAME}"; + this.Size = new System.Drawing.Size(782, 427); + this.Load += new System.EventHandler(this.Shiftorium_Load); + this.panel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.pnlupgradeactions.ResumeLayout(false); + this.pnlupgradeactions.PerformLayout(); + this.pnllist.ResumeLayout(false); + this.pnllist.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel pnllist; + private System.Windows.Forms.ListBox lbupgrades; + private System.Windows.Forms.Label lbupgradedesc; + private System.Windows.Forms.Panel pnlupgradeactions; + private System.Windows.Forms.Label lbupgradetitle; + private System.Windows.Forms.Button btnbuy; + private ShiftedProgressBar pgupgradeprogress; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs new file mode 100644 index 0000000..2f32eb9 --- /dev/null +++ b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using static ShiftOS.Engine.SkinEngine; +using backend = ShiftOS.Engine.Shiftorium; +namespace ShiftOS.WinForms.Applications +{ + [Launcher("Shiftorium", true, "al_shiftorium")] + [RequiresUpgrade("shiftorium_gui")] + [WinOpen("shiftorium")] + public partial class ShiftoriumFrontend : UserControl, IShiftOSWindow + { + + public static System.Timers.Timer timer100; + + + public ShiftoriumFrontend() + { + + InitializeComponent(); + PopulateShiftorium(); + lbupgrades.SelectedIndexChanged += (o, a) => + { + try + { + lbupgrades.Refresh(); + SelectUpgrade(lbupgrades.SelectedItem.ToString()); + } + catch { } + }; + this.pgupgradeprogress.Maximum = backend.GetDefaults().Count; + this.pgupgradeprogress.Value = SaveSystem.CurrentSave.CountUpgrades(); + backend.Installed += () => + { + this.pgupgradeprogress.Maximum = backend.GetDefaults().Count; + this.pgupgradeprogress.Value = SaveSystem.CurrentSave.CountUpgrades(); + }; + + } + + public void SelectUpgrade(string name) + { + btnbuy.Show(); + var upg = upgrades[name]; + lbupgradetitle.Text = Localization.Parse(upg.Name); + lbupgradedesc.Text = Localization.Parse(upg.Description); + } + + Dictionary upgrades = new Dictionary(); + + public void PopulateShiftorium() + { + lbupgrades.Items.Clear(); + upgrades.Clear(); + Timer(); + + foreach (var upg in backend.GetAvailable()) + { + String name = Localization.Parse(upg.Name) + " - " + upg.Cost.ToString() + "CP"; + upgrades.Add(name, upg); + lbupgrades.Items.Add(name); + } + } + + public static bool UpgradeInstalled(string upg) + { + return backend.UpgradeInstalled(upg); + } + + public static bool UpgradeAttributesUnlocked(FieldInfo finf) + { + return backend.UpgradeAttributesUnlocked(finf); + } + + public static bool UpgradeAttributesUnlocked(MethodInfo finf) + { + return backend.UpgradeAttributesUnlocked(finf); + } + + public static bool UpgradeAttributesUnlocked(Type finf) + { + return backend.UpgradeAttributesUnlocked(finf); + } + + public static bool UpgradeAttributesUnlocked(PropertyInfo finf) + { + return backend.UpgradeAttributesUnlocked(finf); + } + + private void lbupgrades_DrawItem(object sender, DrawItemEventArgs e) + { + var foreground = new SolidBrush(LoadedSkin.ControlTextColor); + var background = new SolidBrush(LoadedSkin.ControlColor); + + e.Graphics.FillRectangle(background, e.Bounds); + try + { + if (lbupgrades.GetSelected(e.Index) == true) + { + e.Graphics.FillRectangle(foreground, e.Bounds); + e.Graphics.DrawString(lbupgrades.Items[e.Index].ToString(), e.Font, background, e.Bounds.Location); + } + else + { + e.Graphics.FillRectangle(background, e.Bounds); + e.Graphics.DrawString(lbupgrades.Items[e.Index].ToString(), e.Font, foreground, e.Bounds.Location); + } + } + catch + { + } + } + + private void btnbuy_Click(object sender, EventArgs e) + { + backend.Silent = true; + backend.Buy(upgrades[lbupgrades.SelectedItem.ToString()].ID, upgrades[lbupgrades.SelectedItem.ToString()].Cost); + backend.Silent = false; + PopulateShiftorium(); + btnbuy.Hide(); + } + + private void Shiftorium_Load(object sender, EventArgs e) { + + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + + } + + private void label2_Click(object sender, EventArgs e) + { + + } + + void Timer() + { + timer100 = new System.Timers.Timer(); + timer100.Interval = 2000; + //timer100.Elapsed += ???; + timer100.AutoReset = true; + timer100.Enabled = true; + } + } +} diff --git a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.resx b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Skin Loader.Designer.cs b/ShiftOS.WinForms/Applications/Skin Loader.Designer.cs new file mode 100644 index 0000000..0197e34 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Skin Loader.Designer.cs @@ -0,0 +1,460 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class Skin_Loader + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pnldesktop = new System.Windows.Forms.Panel(); + this.pnlborder = new System.Windows.Forms.Panel(); + this.flbuttons = new System.Windows.Forms.FlowLayoutPanel(); + this.btnclose = new System.Windows.Forms.Button(); + this.btnloaddefault = new System.Windows.Forms.Button(); + this.btnexport = new System.Windows.Forms.Button(); + this.btnimport = new System.Windows.Forms.Button(); + this.btnapply = new System.Windows.Forms.Button(); + this.desktoppanel = new System.Windows.Forms.Panel(); + this.sysmenuholder = new System.Windows.Forms.Panel(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.apps = new System.Windows.Forms.ToolStripMenuItem(); + this.lbtime = new System.Windows.Forms.Label(); + this.item1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.item2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.item3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.item4ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.pnlcontents = new System.Windows.Forms.Panel(); + this.pnltitle = new System.Windows.Forms.Panel(); + this.pnlminimize = new System.Windows.Forms.Panel(); + this.pnlmaximize = new System.Windows.Forms.Panel(); + this.pnlclose = new System.Windows.Forms.Panel(); + this.lbtitletext = new System.Windows.Forms.Label(); + this.pnlbottom = new System.Windows.Forms.Panel(); + this.pnlbottomr = new System.Windows.Forms.Panel(); + this.pnlbottoml = new System.Windows.Forms.Panel(); + this.pnlright = new System.Windows.Forms.Panel(); + this.pnlleft = new System.Windows.Forms.Panel(); + this.pnltitlemaster = new System.Windows.Forms.Panel(); + this.pnltitleright = new System.Windows.Forms.Panel(); + this.pnltitleleft = new System.Windows.Forms.Panel(); + this.pnldesktop.SuspendLayout(); + this.pnlborder.SuspendLayout(); + this.flbuttons.SuspendLayout(); + this.desktoppanel.SuspendLayout(); + this.sysmenuholder.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.pnltitle.SuspendLayout(); + this.pnlbottom.SuspendLayout(); + this.pnltitlemaster.SuspendLayout(); + this.SuspendLayout(); + // + // pnldesktop + // + this.pnldesktop.BackColor = System.Drawing.Color.Black; + this.pnldesktop.Controls.Add(this.desktoppanel); + this.pnldesktop.Location = new System.Drawing.Point(13, 13); + this.pnldesktop.Name = "pnldesktop"; + this.pnldesktop.Size = new System.Drawing.Size(522, 251); + this.pnldesktop.TabIndex = 0; + // + // pnlborder + // + this.pnlborder.BackColor = System.Drawing.Color.Black; + this.pnlborder.Controls.Add(this.pnlcontents); + this.pnlborder.Controls.Add(this.pnlbottom); + this.pnlborder.Controls.Add(this.pnlright); + this.pnlborder.Controls.Add(this.pnlleft); + this.pnlborder.Controls.Add(this.pnltitlemaster); + this.pnlborder.Location = new System.Drawing.Point(12, 270); + this.pnlborder.Name = "pnlborder"; + this.pnlborder.Size = new System.Drawing.Size(522, 251); + this.pnlborder.TabIndex = 1; + // + // flbuttons + // + this.flbuttons.AutoSize = true; + this.flbuttons.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flbuttons.Controls.Add(this.btnclose); + this.flbuttons.Controls.Add(this.btnloaddefault); + this.flbuttons.Controls.Add(this.btnexport); + this.flbuttons.Controls.Add(this.btnimport); + this.flbuttons.Controls.Add(this.btnapply); + this.flbuttons.Dock = System.Windows.Forms.DockStyle.Bottom; + this.flbuttons.Location = new System.Drawing.Point(0, 629); + this.flbuttons.Name = "flbuttons"; + this.flbuttons.Size = new System.Drawing.Size(547, 29); + this.flbuttons.TabIndex = 2; + // + // btnclose + // + this.btnclose.AutoSize = true; + this.btnclose.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnclose.Location = new System.Drawing.Point(3, 3); + this.btnclose.Name = "btnclose"; + this.btnclose.Size = new System.Drawing.Size(60, 23); + this.btnclose.TabIndex = 0; + this.btnclose.Text = "{CLOSE}"; + this.btnclose.UseVisualStyleBackColor = true; + this.btnclose.Click += new System.EventHandler(this.btnclose_Click); + // + // btnloaddefault + // + this.btnloaddefault.AccessibleRole = System.Windows.Forms.AccessibleRole.None; + this.btnloaddefault.AutoSize = true; + this.btnloaddefault.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnloaddefault.Location = new System.Drawing.Point(69, 3); + this.btnloaddefault.Name = "btnloaddefault"; + this.btnloaddefault.Size = new System.Drawing.Size(109, 23); + this.btnloaddefault.TabIndex = 1; + this.btnloaddefault.Text = "{LOAD_DEFAULT}"; + this.btnloaddefault.UseVisualStyleBackColor = true; + this.btnloaddefault.Click += new System.EventHandler(this.btnloaddefault_Click); + // + // btnexport + // + this.btnexport.AutoSize = true; + this.btnexport.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnexport.Location = new System.Drawing.Point(184, 3); + this.btnexport.Name = "btnexport"; + this.btnexport.Size = new System.Drawing.Size(69, 23); + this.btnexport.TabIndex = 2; + this.btnexport.Text = "{EXPORT}"; + this.btnexport.UseVisualStyleBackColor = true; + this.btnexport.Click += new System.EventHandler(this.btnexport_Click); + // + // btnimport + // + this.btnimport.AutoSize = true; + this.btnimport.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnimport.Location = new System.Drawing.Point(259, 3); + this.btnimport.Name = "btnimport"; + this.btnimport.Size = new System.Drawing.Size(67, 23); + this.btnimport.TabIndex = 3; + this.btnimport.Text = "{IMPORT}"; + this.btnimport.UseVisualStyleBackColor = true; + this.btnimport.Click += new System.EventHandler(this.btnimport_Click); + // + // btnapply + // + this.btnapply.AutoSize = true; + this.btnapply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnapply.Location = new System.Drawing.Point(332, 3); + this.btnapply.Name = "btnapply"; + this.btnapply.Size = new System.Drawing.Size(59, 23); + this.btnapply.TabIndex = 4; + this.btnapply.Text = "{APPLY}"; + this.btnapply.UseVisualStyleBackColor = true; + this.btnapply.Click += new System.EventHandler(this.btnapply_Click); + // + // desktoppanel + // + this.desktoppanel.BackColor = System.Drawing.Color.Green; + this.desktoppanel.Controls.Add(this.sysmenuholder); + this.desktoppanel.Controls.Add(this.lbtime); + this.desktoppanel.Dock = System.Windows.Forms.DockStyle.Top; + this.desktoppanel.Location = new System.Drawing.Point(0, 0); + this.desktoppanel.Name = "desktoppanel"; + this.desktoppanel.Size = new System.Drawing.Size(522, 24); + this.desktoppanel.TabIndex = 1; + // + // sysmenuholder + // + this.sysmenuholder.Controls.Add(this.menuStrip1); + this.sysmenuholder.Location = new System.Drawing.Point(12, 5); + this.sysmenuholder.Name = "sysmenuholder"; + this.sysmenuholder.Size = new System.Drawing.Size(68, 24); + this.sysmenuholder.TabIndex = 1; + // + // menuStrip1 + // + this.menuStrip1.Dock = System.Windows.Forms.DockStyle.Fill; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.apps}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Padding = new System.Windows.Forms.Padding(0); + this.menuStrip1.Size = new System.Drawing.Size(68, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // apps + // + this.apps.AutoSize = false; + this.apps.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.item1ToolStripMenuItem, + this.item2ToolStripMenuItem, + this.item3ToolStripMenuItem, + this.toolStripSeparator1, + this.item4ToolStripMenuItem}); + this.apps.Name = "apps"; + this.apps.Padding = new System.Windows.Forms.Padding(0); + this.apps.Size = new System.Drawing.Size(58, 20); + this.apps.Text = "ShiftOS"; + // + // lbtime + // + this.lbtime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbtime.AutoSize = true; + this.lbtime.Location = new System.Drawing.Point(445, 5); + this.lbtime.Name = "lbtime"; + this.lbtime.Size = new System.Drawing.Size(35, 13); + this.lbtime.TabIndex = 0; + this.lbtime.Text = "label1"; + this.lbtime.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // item1ToolStripMenuItem + // + this.item1ToolStripMenuItem.Name = "item1ToolStripMenuItem"; + this.item1ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.item1ToolStripMenuItem.Text = "Item 1"; + // + // item2ToolStripMenuItem + // + this.item2ToolStripMenuItem.Name = "item2ToolStripMenuItem"; + this.item2ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.item2ToolStripMenuItem.Text = "Item 2"; + // + // item3ToolStripMenuItem + // + this.item3ToolStripMenuItem.Name = "item3ToolStripMenuItem"; + this.item3ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.item3ToolStripMenuItem.Text = "Item 3"; + // + // item4ToolStripMenuItem + // + this.item4ToolStripMenuItem.Name = "item4ToolStripMenuItem"; + this.item4ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.item4ToolStripMenuItem.Text = "Item 4"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); + // + // pnlcontents + // + this.pnlcontents.BackColor = System.Drawing.Color.Black; + this.pnlcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlcontents.ForeColor = System.Drawing.Color.White; + this.pnlcontents.Location = new System.Drawing.Point(2, 30); + this.pnlcontents.Name = "pnlcontents"; + this.pnlcontents.Size = new System.Drawing.Size(518, 219); + this.pnlcontents.TabIndex = 9; + // + // pnltitle + // + this.pnltitle.BackColor = System.Drawing.Color.Black; + this.pnltitle.Controls.Add(this.pnlminimize); + this.pnltitle.Controls.Add(this.pnlmaximize); + this.pnltitle.Controls.Add(this.pnlclose); + this.pnltitle.Controls.Add(this.lbtitletext); + this.pnltitle.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnltitle.Location = new System.Drawing.Point(2, 0); + this.pnltitle.Name = "pnltitle"; + this.pnltitle.Size = new System.Drawing.Size(518, 30); + this.pnltitle.TabIndex = 0; + // + // pnlminimize + // + this.pnlminimize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pnlminimize.BackColor = System.Drawing.Color.Green; + this.pnlminimize.Location = new System.Drawing.Point(437, 3); + this.pnlminimize.Name = "pnlminimize"; + this.pnlminimize.Size = new System.Drawing.Size(24, 24); + this.pnlminimize.TabIndex = 3; + // + // pnlmaximize + // + this.pnlmaximize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pnlmaximize.BackColor = System.Drawing.Color.Yellow; + this.pnlmaximize.Location = new System.Drawing.Point(464, 3); + this.pnlmaximize.Name = "pnlmaximize"; + this.pnlmaximize.Size = new System.Drawing.Size(24, 24); + this.pnlmaximize.TabIndex = 2; + // + // pnlclose + // + this.pnlclose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pnlclose.BackColor = System.Drawing.Color.Red; + this.pnlclose.Location = new System.Drawing.Point(491, 3); + this.pnlclose.Name = "pnlclose"; + this.pnlclose.Size = new System.Drawing.Size(24, 24); + this.pnlclose.TabIndex = 1; + // + // lbtitletext + // + this.lbtitletext.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbtitletext.AutoSize = true; + this.lbtitletext.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold); + this.lbtitletext.ForeColor = System.Drawing.Color.White; + this.lbtitletext.Location = new System.Drawing.Point(4, 0); + this.lbtitletext.Name = "lbtitletext"; + this.lbtitletext.Size = new System.Drawing.Size(77, 14); + this.lbtitletext.TabIndex = 0; + this.lbtitletext.Text = "Title text"; + this.lbtitletext.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.lbtitletext.UseMnemonic = false; + // + // pnlbottom + // + this.pnlbottom.BackColor = System.Drawing.Color.Black; + this.pnlbottom.Controls.Add(this.pnlbottomr); + this.pnlbottom.Controls.Add(this.pnlbottoml); + this.pnlbottom.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pnlbottom.Location = new System.Drawing.Point(2, 249); + this.pnlbottom.Name = "pnlbottom"; + this.pnlbottom.Size = new System.Drawing.Size(518, 2); + this.pnlbottom.TabIndex = 6; + // + // pnlbottomr + // + this.pnlbottomr.Dock = System.Windows.Forms.DockStyle.Right; + this.pnlbottomr.Location = new System.Drawing.Point(516, 0); + this.pnlbottomr.Name = "pnlbottomr"; + this.pnlbottomr.Size = new System.Drawing.Size(2, 2); + this.pnlbottomr.TabIndex = 3; + // + // pnlbottoml + // + this.pnlbottoml.Dock = System.Windows.Forms.DockStyle.Left; + this.pnlbottoml.Location = new System.Drawing.Point(0, 0); + this.pnlbottoml.Name = "pnlbottoml"; + this.pnlbottoml.Size = new System.Drawing.Size(2, 2); + this.pnlbottoml.TabIndex = 2; + // + // pnlright + // + this.pnlright.BackColor = System.Drawing.Color.Black; + this.pnlright.Dock = System.Windows.Forms.DockStyle.Right; + this.pnlright.Location = new System.Drawing.Point(520, 30); + this.pnlright.Name = "pnlright"; + this.pnlright.Size = new System.Drawing.Size(2, 221); + this.pnlright.TabIndex = 8; + // + // pnlleft + // + this.pnlleft.BackColor = System.Drawing.Color.Black; + this.pnlleft.Dock = System.Windows.Forms.DockStyle.Left; + this.pnlleft.Location = new System.Drawing.Point(0, 30); + this.pnlleft.Name = "pnlleft"; + this.pnlleft.Size = new System.Drawing.Size(2, 221); + this.pnlleft.TabIndex = 7; + // + // pnltitlemaster + // + this.pnltitlemaster.Controls.Add(this.pnltitle); + this.pnltitlemaster.Controls.Add(this.pnltitleright); + this.pnltitlemaster.Controls.Add(this.pnltitleleft); + this.pnltitlemaster.Dock = System.Windows.Forms.DockStyle.Top; + this.pnltitlemaster.Location = new System.Drawing.Point(0, 0); + this.pnltitlemaster.Name = "pnltitlemaster"; + this.pnltitlemaster.Size = new System.Drawing.Size(522, 30); + this.pnltitlemaster.TabIndex = 5; + // + // pnltitleright + // + this.pnltitleright.Dock = System.Windows.Forms.DockStyle.Right; + this.pnltitleright.Location = new System.Drawing.Point(520, 0); + this.pnltitleright.Name = "pnltitleright"; + this.pnltitleright.Size = new System.Drawing.Size(2, 30); + this.pnltitleright.TabIndex = 5; + // + // pnltitleleft + // + this.pnltitleleft.Dock = System.Windows.Forms.DockStyle.Left; + this.pnltitleleft.Location = new System.Drawing.Point(0, 0); + this.pnltitleleft.Name = "pnltitleleft"; + this.pnltitleleft.Size = new System.Drawing.Size(2, 30); + this.pnltitleleft.TabIndex = 4; + // + // Skin_Loader + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(547, 658); + this.Controls.Add(this.flbuttons); + this.Controls.Add(this.pnlborder); + this.Controls.Add(this.pnldesktop); + this.Name = "Skin_Loader"; + this.Text = "Skin Loader"; + this.pnldesktop.ResumeLayout(false); + this.pnlborder.ResumeLayout(false); + this.flbuttons.ResumeLayout(false); + this.flbuttons.PerformLayout(); + this.desktoppanel.ResumeLayout(false); + this.desktoppanel.PerformLayout(); + this.sysmenuholder.ResumeLayout(false); + this.sysmenuholder.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.pnltitle.ResumeLayout(false); + this.pnltitle.PerformLayout(); + this.pnlbottom.ResumeLayout(false); + this.pnltitlemaster.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel pnldesktop; + private System.Windows.Forms.Panel pnlborder; + private System.Windows.Forms.FlowLayoutPanel flbuttons; + private System.Windows.Forms.Button btnclose; + private System.Windows.Forms.Button btnloaddefault; + private System.Windows.Forms.Button btnexport; + private System.Windows.Forms.Button btnimport; + private System.Windows.Forms.Button btnapply; + private System.Windows.Forms.Panel desktoppanel; + private System.Windows.Forms.Panel sysmenuholder; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem apps; + private System.Windows.Forms.ToolStripMenuItem item1ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem item2ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem item3ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem item4ToolStripMenuItem; + private System.Windows.Forms.Label lbtime; + private System.Windows.Forms.Panel pnlcontents; + private System.Windows.Forms.Panel pnlbottom; + private System.Windows.Forms.Panel pnlbottomr; + private System.Windows.Forms.Panel pnlbottoml; + private System.Windows.Forms.Panel pnlright; + private System.Windows.Forms.Panel pnlleft; + private System.Windows.Forms.Panel pnltitlemaster; + private System.Windows.Forms.Panel pnltitle; + private System.Windows.Forms.Panel pnlminimize; + private System.Windows.Forms.Panel pnlmaximize; + private System.Windows.Forms.Panel pnlclose; + private System.Windows.Forms.Label lbtitletext; + private System.Windows.Forms.Panel pnltitleright; + private System.Windows.Forms.Panel pnltitleleft; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Skin Loader.cs b/ShiftOS.WinForms/Applications/Skin Loader.cs new file mode 100644 index 0000000..9b2abba --- /dev/null +++ b/ShiftOS.WinForms/Applications/Skin Loader.cs @@ -0,0 +1,306 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Newtonsoft.Json; +using ShiftOS.Engine; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms.Applications +{ + [Launcher("Skin Loader", true, "al_skin_loader")] + [RequiresUpgrade("skinning")] + [WinOpen("skin_loader")] + public partial class Skin_Loader : UserControl, IShiftOSWindow + { + public Skin_Loader() + { + InitializeComponent(); + + LoadedSkin = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(SkinEngine.LoadedSkin)); + this.Load += (o, a) => { SetupUI(); }; + + } + + public Skin LoadedSkin { get; set; } + + public void SetupUI() + { + SetupDesktop(); + Setup(); + } + + public void SetupDesktop() + { + menuStrip1.Renderer = new ShiftOSMenuRenderer(); + + this.DoubleBuffered = true; + desktoppanel.BackColor = Color.Green; + + //upgrades + + if (SaveSystem.CurrentSave != null) + { + desktoppanel.Visible = ShiftoriumFrontend.UpgradeInstalled("desktop"); + lbtime.Visible = ShiftoriumFrontend.UpgradeInstalled("desktop_clock_widget"); + + //skinning + lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor; + + sysmenuholder.Visible = ShiftoriumFrontend.UpgradeInstalled("app_launcher"); + + //The Color Picker can give us transparent colors - which Windows Forms fucking despises when dealing with form backgrounds. + //To compensate, we must recreate the desktop color and make the alpha channel '255'. + pnldesktop.BackColor = Color.FromArgb(LoadedSkin.DesktopColor.R, LoadedSkin.DesktopColor.G, LoadedSkin.DesktopColor.B); + //Not doing this will cause an ArgumentException. + + pnldesktop.BackgroundImage = GetImage("desktopbackground"); + pnldesktop.BackgroundImageLayout = GetImageLayout("desktopbackground"); + desktoppanel.BackgroundImage = GetImage("desktoppanel"); + menuStrip1.BackgroundImage = GetImage("applauncher"); + lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor; + lbtime.Font = LoadedSkin.DesktopPanelClockFont; + lbtime.Text = Applications.Terminal.GetTime(); + lbtime.Left = desktoppanel.Width - lbtime.Width - LoadedSkin.DesktopPanelClockFromRight.X; + lbtime.Top = LoadedSkin.DesktopPanelClockFromRight.Y; + + if (desktoppanel.BackgroundImage == null) + { + lbtime.BackColor = LoadedSkin.DesktopPanelClockBackgroundColor; + } + else + { + lbtime.BackColor = Color.Transparent; + } + apps.Text = LoadedSkin.AppLauncherText; + sysmenuholder.Location = LoadedSkin.AppLauncherFromLeft; + sysmenuholder.Size = LoadedSkin.AppLauncherHolderSize; + apps.Size = sysmenuholder.Size; + menuStrip1.Renderer = new ShiftOSMenuRenderer(new AppLauncherColorTable()); + desktoppanel.BackColor = LoadedSkin.DesktopPanelColor; + desktoppanel.BackgroundImageLayout = GetImageLayout("desktoppanel"); + desktoppanel.Height = LoadedSkin.DesktopPanelHeight; + if (LoadedSkin.DesktopPanelPosition == 1) + { + desktoppanel.Dock = DockStyle.Bottom; + } + else + { + desktoppanel.Dock = DockStyle.Top; + } + } + + } + + public ImageLayout GetImageLayout(string img) + { + if (LoadedSkin.SkinImageLayouts.ContainsKey(img)) + { + return LoadedSkin.SkinImageLayouts[img]; + } + else + { + LoadedSkin.SkinImageLayouts.Add(img, ImageLayout.Tile); + return ImageLayout.Tile; + } + } + + public Image GetImage(string img) + { + var type = typeof(Skin); + + foreach (var field in type.GetFields()) + { + foreach (var attr in field.GetCustomAttributes(false)) + { + if (attr is ImageAttribute) + { + var iattr = attr as ImageAttribute; + if (iattr.Name == img) + { + byte[] image = (byte[])field.GetValue(LoadedSkin); + return SkinEngine.ImageFromBinary(image); + } + } + } + } + + return null; + } + + bool IsDialog = false; + + public void Setup() + { + pnlcontents.BackColor = LoadedSkin.ControlColor; + + this.lbtitletext.Text = Localization.Parse("{TEMPLATE}"); + this.Dock = DockStyle.Fill; + + if (SaveSystem.CurrentSave != null) + { + this.pnltitle.Visible = ShiftoriumFrontend.UpgradeInstalled("wm_titlebar"); + this.pnlclose.Visible = ShiftoriumFrontend.UpgradeInstalled("close_button"); + this.pnlminimize.Visible = (IsDialog == false) && ShiftoriumFrontend.UpgradeInstalled("minimize_button"); + this.pnlmaximize.Visible = (IsDialog == false) && ShiftoriumFrontend.UpgradeInstalled("maximize_button"); + SetupSkin(); + } + else + { + this.pnltitle.Visible = false; + this.pnlclose.Visible = false; + this.pnlminimize.Visible = false; + this.pnlmaximize.Visible = false; + + } + } + + public void SetupSkin() + { + pnltitlemaster.Height = LoadedSkin.TitlebarHeight; + pnltitle.BackColor = LoadedSkin.TitleBackgroundColor; + pnltitle.BackgroundImage = GetImage("titlebar"); + pnltitleleft.Visible = LoadedSkin.ShowTitleCorners; + pnltitleright.Visible = LoadedSkin.ShowTitleCorners; + pnltitleleft.BackColor = LoadedSkin.TitleLeftCornerBackground; + pnltitleright.BackColor = LoadedSkin.TitleRightCornerBackground; + pnltitleleft.Width = LoadedSkin.TitleLeftCornerWidth; + pnltitleright.Width = LoadedSkin.TitleRightCornerWidth; + pnltitleleft.BackgroundImage = GetImage("titleleft"); + pnltitleleft.BackgroundImageLayout = GetImageLayout("titleleft"); + pnltitleright.BackgroundImage = GetImage("titleright"); + pnltitleright.BackgroundImageLayout = GetImageLayout("titleright"); + + + lbtitletext.BackColor = LoadedSkin.TitleBackgroundColor; + lbtitletext.ForeColor = LoadedSkin.TitleTextColor; + lbtitletext.Font = LoadedSkin.TitleFont; + + pnlleft.BackColor = LoadedSkin.BorderLeftBackground; + pnlleft.BackgroundImage = GetImage("leftborder"); + pnlleft.BackgroundImageLayout = GetImageLayout("leftborder"); + pnlleft.Width = LoadedSkin.LeftBorderWidth; + pnlright.BackColor = LoadedSkin.BorderRightBackground; + pnlright.BackgroundImage = GetImage("rightborder"); + pnlright.BackgroundImageLayout = GetImageLayout("rightborder"); + pnlright.Width = LoadedSkin.RightBorderWidth; + + pnlbottom.BackColor = LoadedSkin.BorderBottomBackground; + pnlbottom.BackgroundImage = GetImage("bottomborder"); + pnlbottom.BackgroundImageLayout = GetImageLayout("bottomborder"); + pnlbottom.Height = LoadedSkin.BottomBorderWidth; + + pnlbottomr.BackColor = LoadedSkin.BorderBottomRightBackground; + pnlbottomr.BackgroundImage = GetImage("bottomrborder"); + pnlbottomr.BackgroundImageLayout = GetImageLayout("bottomrborder"); + pnlbottoml.BackColor = LoadedSkin.BorderBottomLeftBackground; + pnlbottoml.BackgroundImage = GetImage("bottomlborder"); + pnlbottoml.BackgroundImageLayout = GetImageLayout("bottomlborder"); + + lbtitletext.ForeColor = LoadedSkin.TitleTextColor; + lbtitletext.Font = LoadedSkin.TitleFont; + pnlclose.BackColor = LoadedSkin.CloseButtonColor; + pnlclose.BackgroundImage = GetImage("closebutton"); + pnlclose.BackgroundImageLayout = GetImageLayout("closebutton"); + pnlminimize.BackColor = LoadedSkin.MinimizeButtonColor; + pnlminimize.BackgroundImage = GetImage("minimizebutton"); + pnlminimize.BackgroundImageLayout = GetImageLayout("minimizebutton"); + pnlmaximize.BackColor = LoadedSkin.MaximizeButtonColor; + pnlmaximize.BackgroundImage = GetImage("maximizebutton"); + pnlmaximize.BackgroundImageLayout = GetImageLayout("maximizebutton"); + + pnlclose.Size = LoadedSkin.CloseButtonSize; + pnlminimize.Size = LoadedSkin.MinimizeButtonSize; + pnlmaximize.Size = LoadedSkin.MaximizeButtonSize; + pnlclose.Location = FromRight(LoadedSkin.CloseButtonFromSide); + pnlminimize.Location = FromRight(LoadedSkin.MinimizeButtonFromSide); + pnlmaximize.Location = FromRight(LoadedSkin.MaximizeButtonFromSide); + pnlclose.Left -= pnlclose.Width; + pnlmaximize.Left -= pnlmaximize.Width; + pnlminimize.Left -= pnlminimize.Width; + + switch (LoadedSkin.TitleTextCentered) + { + case false: + lbtitletext.Location = LoadedSkin.TitleTextLeft; + break; + default: + lbtitletext.Left = (pnltitle.Width - lbtitletext.Width) / 2; + lbtitletext.Top = LoadedSkin.TitleTextLeft.Y; + break; + } + } + + public Point FromRight(Point input) + { + return new Point(pnltitle.Width - input.X, input.Y); + } + + private void btnapply_Click(object sender, EventArgs e) + { + ShiftOS.Objects.ShiftFS.Utils.WriteAllText(Paths.GetPath("skin.json"), JsonConvert.SerializeObject(LoadedSkin)); + SkinEngine.LoadSkin(); + } + + private void btnclose_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void btnloaddefault_Click(object sender, EventArgs e) + { + this.LoadedSkin = new ShiftOS.Engine.Skin(); + SetupUI(); + } + + private void btnexport_Click(object sender, EventArgs e) + { + AppearanceManager.SetupDialog(new FileDialog(new[] { ".skn" }, FileOpenerStyle.Save, new Action((filename) => + { + ShiftOS.Objects.ShiftFS.Utils.WriteAllText(filename, JsonConvert.SerializeObject(LoadedSkin)); + string fname = filename.Split('/')[filename.Split('/').Length - 1]; + if(!System.IO.Directory.Exists(Paths.SharedFolder + "\\skins")) + { + System.IO.Directory.CreateDirectory(Paths.SharedFolder + "\\skins"); + } + + string path = Paths.SharedFolder + "\\skins\\" + SaveSystem.CurrentSave.Username + "-" + fname; + System.IO.File.WriteAllText(path, JsonConvert.SerializeObject(LoadedSkin)); + + }))); + } + + private void btnimport_Click(object sender, EventArgs e) + { + AppearanceManager.SetupDialog(new FileDialog(new[] { ".skn" }, FileOpenerStyle.Open, new Action((filename) => + { + LoadedSkin = JsonConvert.DeserializeObject(ShiftOS.Objects.ShiftFS.Utils.ReadAllText(filename)); + SetupUI(); + }))); + } + + public void OnLoad() + { + + SetupUI(); + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } +} diff --git a/ShiftOS.WinForms/Applications/Skin Loader.resx b/ShiftOS.WinForms/Applications/Skin Loader.resx new file mode 100644 index 0000000..b77504b --- /dev/null +++ b/ShiftOS.WinForms/Applications/Skin Loader.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Terminal.Designer.cs b/ShiftOS.WinForms/Applications/Terminal.Designer.cs new file mode 100644 index 0000000..dab5c98 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Terminal.Designer.cs @@ -0,0 +1,65 @@ +using System.Windows.Forms; + +namespace ShiftOS.WinForms.Applications +{ + partial class Terminal + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.rtbterm = new Controls.TerminalBox(); + this.SuspendLayout(); + // + // rtbterm + // + this.rtbterm.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.rtbterm.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtbterm.Location = new System.Drawing.Point(0, 0); + this.rtbterm.Name = "rtbterm"; + this.rtbterm.Size = new System.Drawing.Size(493, 295); + this.rtbterm.TabIndex = 0; + this.rtbterm.Text = ""; + this.rtbterm.TextChanged += new System.EventHandler(this.rtbterm_TextChanged); + // + // Terminal + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.rtbterm); + this.Name = "Terminal"; + this.Text = "{TERMINAL_NAME}"; + this.Size = new System.Drawing.Size(493, 295); + this.Tag = "hidden"; + this.Load += new System.EventHandler(this.Terminal_Load); + this.ResumeLayout(false); + + } + + #endregion + + private Controls.TerminalBox rtbterm = new Controls.TerminalBox(); + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/Terminal.cs b/ShiftOS.WinForms/Applications/Terminal.cs new file mode 100644 index 0000000..86563f6 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Terminal.cs @@ -0,0 +1,306 @@ +//#define TRAILER +//#define CRASHONSTART +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Text.RegularExpressions; +using System.Collections; +using static ShiftOS.Engine.SkinEngine; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications { + [Launcher("Terminal", false)] + [WinOpen("terminal")] + public partial class Terminal : UserControl, IShiftOSWindow { + public static Stack ConsoleStack = new Stack(); + + public static System.Windows.Forms.Timer ti = new System.Windows.Forms.Timer(); + + public static string latestCommmand = ""; + + [Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")] + public static bool PrefixEnabled + { + get + { + return TerminalBackend.PrefixEnabled; + } + set + { + TerminalBackend.PrefixEnabled = value; + } + } + + [Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")] + public static bool InStory + { + get + { + return TerminalBackend.InStory; + } + set + { + TerminalBackend.InStory = value; + } + } + + [Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")] + public static string LastCommand + { + get + { + return TerminalBackend.LastCommand; + } + set + { + TerminalBackend.LastCommand = value; + } + } + + [Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")] + public static void InvokeCommand(string text) + { + TerminalBackend.InvokeCommand(text); + } + + public Terminal() { + + InitializeComponent(); + SaveSystem.GameReady += () => { + try { + this.Invoke(new Action(() => { + ResetAllKeywords(); + rtbterm.Text = ""; + TerminalBackend.PrefixEnabled = true; + TerminalBackend.InStory = false; + Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + if (SaveSystem.CurrentSave.StoryPosition == 6) { + Infobox.Show("Welcome to ShiftOS.", "Welcome to the ShiftOS multi-user domain. Your goal is to upgrade your system as much as possible, and gain as much wealth as possible. The first step is to get a feel for the environment. Go forth and explore, young Shifter."); + SaveSystem.CurrentSave.StoryPosition++; + } + })); + } catch { } + }; + + + this.DoubleBuffered = true; + + } + + public void FocusOnTerminal() { + rtbterm.Focus(); + } + + public static string GetTime() { + var time = DateTime.Now; + if (ShiftoriumFrontend.UpgradeInstalled("full_precision_time")) { + return DateTime.Now.ToString("h:mm:ss tt"); + } else if (ShiftoriumFrontend.UpgradeInstalled("clock_am_and_pm")) { + return time.TimeOfDay.TotalHours > 12 ? $"{time.Hour - 12} PM" : $"{time.Hour} AM"; + } else if (ShiftoriumFrontend.UpgradeInstalled("clock_hours")) { + return ((int)time.TimeOfDay.TotalHours).ToString(); + } else if (ShiftoriumFrontend.UpgradeInstalled("clock_minutes")) { + return ((int)time.TimeOfDay.TotalMinutes).ToString(); + } else if (ShiftoriumFrontend.UpgradeInstalled("clock")) { + return ((int)time.TimeOfDay.TotalSeconds).ToString(); + } + + return ""; + } + + + public static event TextSentEventHandler TextSent; + + public void ResetAllKeywords() { + string primary = SaveSystem.CurrentSave.Username + " "; + string secondary = "shiftos "; + + + var asm = Assembly.GetExecutingAssembly(); + + var types = asm.GetTypes(); + + foreach (var type in types) { + foreach (var a in type.GetCustomAttributes(false)) { + if (ShiftoriumFrontend.UpgradeAttributesUnlocked(type)) { + if (a is Namespace) { + var ns = a as Namespace; + if (!primary.Contains(ns.name)) { + primary += ns.name + " "; + } + foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Static)) { + if (ShiftoriumFrontend.UpgradeAttributesUnlocked(method)) { + foreach (var ma in method.GetCustomAttributes(false)) { + if (ma is Command) { + var cmd = ma as Command; + if (!secondary.Contains(cmd.name)) + secondary += cmd.name + " "; + } + } + } + } + } + } + } + } + + + } + + public static void MakeWidget(Controls.TerminalBox txt) { + AppearanceManager.StartConsoleOut(); + txt.GotFocus += (o, a) => { + AppearanceManager.ConsoleOut = txt; + }; + txt.KeyDown += (o, a) => { + if (a.KeyCode == Keys.Enter) { + try { + a.SuppressKeyPress = true; + Console.WriteLine(""); + var text = txt.Lines.ToArray(); + var text2 = text[text.Length - 2]; + var text3 = ""; + var text4 = Regex.Replace(text2, @"\t|\n|\r", ""); + + if (TerminalBackend.PrefixEnabled) { + text3 = text4.Remove(0, $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ".Length); + } + TerminalBackend.LastCommand = text3; + TextSent?.Invoke(text4); + if (TerminalBackend.InStory == false) { + TerminalBackend.InvokeCommand(text3); + } + if (TerminalBackend.PrefixEnabled) { + Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + } + } catch { + } + } else if (a.KeyCode == Keys.Back) { + var tostring3 = txt.Lines[txt.Lines.Length - 1]; + var tostringlen = tostring3.Length + 1; + var workaround = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "; + var derp = workaround.Length + 1; + if (tostringlen != derp) { + AppearanceManager.CurrentPosition--; + } else { + a.SuppressKeyPress = true; + } + } else if (a.KeyCode == Keys.Left) + { + var getstring = txt.Lines[txt.Lines.Length - 1]; + var stringlen = getstring.Length + 1; + var header = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "; + var headerlen = header.Length + 1; + var selstart = txt.SelectionStart; + var remstrlen = txt.TextLength - stringlen; + var finalnum = selstart - remstrlen; + + if (finalnum != headerlen) + { + AppearanceManager.CurrentPosition--; + } + else + { + a.SuppressKeyPress = true; + } + } + //( ͡° ͜ʖ ͡° ) You found the lennyface without looking at the commit message. Message Michael in the #shiftos channel on Discord saying "ladouceur" somewhere in your message if you see this. + else if (a.KeyCode == Keys.Up) { + var tostring3 = txt.Lines[txt.Lines.Length - 1]; + if (tostring3 == $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ") + Console.Write(TerminalBackend.LastCommand); + a.SuppressKeyPress = true; + + } else { + + AppearanceManager.CurrentPosition++; + } + + }; + + AppearanceManager.ConsoleOut = txt; + + txt.Focus(); + + txt.Font = LoadedSkin.TerminalFont; + txt.ForeColor = LoadedSkin.TerminalForeColor; + txt.BackColor = LoadedSkin.TerminalBackColor; + + } + + private void Terminal_Load(object sender, EventArgs e) { + + } + + private void Terminal_FormClosing(object sender, FormClosingEventArgs e) { + ti.Stop(); + } + + public void OnLoad() { + MakeWidget(rtbterm); + + if (SaveSystem.CurrentSave != null) { + if (!ShiftoriumFrontend.UpgradeInstalled("window_manager")) { + rtbterm.Text = AppearanceManager.LastTerminalText; + rtbterm.Select(rtbterm.TextLength, 0); + } + Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + + } + + + } + + public void OnSkinLoad() { + try { + rtbterm.Font = LoadedSkin.TerminalFont; + rtbterm.ForeColor = LoadedSkin.TerminalForeColor; + rtbterm.BackColor = LoadedSkin.TerminalBackColor; + } catch { + + } + + } + + public bool OnUnload() { + if (SaveSystem.ShuttingDown == false) { + if (!ShiftoriumFrontend.UpgradeInstalled("desktop")) { + if (AppearanceManager.OpenForms.Count <= 1) { + Console.WriteLine(""); + Console.WriteLine("{WIN_CANTCLOSETERMINAL}"); + try { + Console.WriteLine(""); + + if (TerminalBackend.PrefixEnabled) { + Console.Write($"{SaveSystem.CurrentSave.Username}@shiftos:~$ "); + } + } catch (Exception ex) { + Console.WriteLine(ex); + } + return false; + } + } + } + return true; + } + + public void OnUpgrade() { + } + + private void rtbterm_TextChanged(object sender, EventArgs e) + { + + } + } +} diff --git a/ShiftOS.WinForms/Applications/Terminal.cs.rej b/ShiftOS.WinForms/Applications/Terminal.cs.rej new file mode 100644 index 0000000..8f0aed5 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Terminal.cs.rej @@ -0,0 +1,12 @@ +diff a/ShiftOS_TheReturn/Applications/Terminal.cs b/ShiftOS_TheReturn/Applications/Terminal.cs (rejected hunks) +@@ -228,6 +228,10 @@ + string args = text.Substring(argStart, text.Length - argStart); + text = text.Remove(argStart, text.Length - argStart).Replace(" ", ""); + ++ if(string.IsNullOrWhiteSpace(args)) ++ { ++ return new Dictionary(); ++ } + return JsonConvert.DeserializeObject>(args); + } + diff --git a/ShiftOS.WinForms/Applications/Terminal.resx b/ShiftOS.WinForms/Applications/Terminal.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/Terminal.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/TextPad.Designer.cs b/ShiftOS.WinForms/Applications/TextPad.Designer.cs new file mode 100644 index 0000000..6e26779 --- /dev/null +++ b/ShiftOS.WinForms/Applications/TextPad.Designer.cs @@ -0,0 +1,138 @@ +namespace ShiftOS.WinForms.Applications +{ + partial class TextPad + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer(); + this.txtcontents = new System.Windows.Forms.TextBox(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripContainer1.ContentPanel.SuspendLayout(); + this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); + this.toolStripContainer1.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // toolStripContainer1 + // + this.toolStripContainer1.BottomToolStripPanelVisible = false; + // + // toolStripContainer1.ContentPanel + // + this.toolStripContainer1.ContentPanel.Controls.Add(this.txtcontents); + this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(648, 395); + this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.toolStripContainer1.LeftToolStripPanelVisible = false; + this.toolStripContainer1.Location = new System.Drawing.Point(0, 0); + this.toolStripContainer1.Name = "toolStripContainer1"; + this.toolStripContainer1.RightToolStripPanelVisible = false; + this.toolStripContainer1.Size = new System.Drawing.Size(648, 419); + this.toolStripContainer1.TabIndex = 0; + this.toolStripContainer1.Text = "toolStripContainer1"; + // + // toolStripContainer1.TopToolStripPanel + // + this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.menuStrip1); + // + // txtcontents + // + this.txtcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtcontents.Location = new System.Drawing.Point(0, 0); + this.txtcontents.Multiline = true; + this.txtcontents.Name = "txtcontents"; + this.txtcontents.Size = new System.Drawing.Size(648, 395); + this.txtcontents.TabIndex = 0; + this.txtcontents.TabStop = false; + this.txtcontents.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtcontents_KeyDown); + // + // menuStrip1 + // + this.menuStrip1.Dock = System.Windows.Forms.DockStyle.None; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newToolStripMenuItem, + this.openToolStripMenuItem, + this.saveToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(648, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // newToolStripMenuItem + // + this.newToolStripMenuItem.Name = "newToolStripMenuItem"; + this.newToolStripMenuItem.Size = new System.Drawing.Size(43, 20); + this.newToolStripMenuItem.Text = "New"; + this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click); + // + // openToolStripMenuItem + // + this.openToolStripMenuItem.Name = "openToolStripMenuItem"; + this.openToolStripMenuItem.Size = new System.Drawing.Size(48, 20); + this.openToolStripMenuItem.Text = "Open"; + this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); + // + // saveToolStripMenuItem + // + this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; + this.saveToolStripMenuItem.Size = new System.Drawing.Size(43, 20); + this.saveToolStripMenuItem.Text = "Save"; + this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + // + // TextPad + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.toolStripContainer1); + this.Name = "TextPad"; + this.Text = "{TEXTPAD_NAME}"; + this.Size = new System.Drawing.Size(648, 419); + this.toolStripContainer1.ContentPanel.ResumeLayout(false); + this.toolStripContainer1.ContentPanel.PerformLayout(); + this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false); + this.toolStripContainer1.TopToolStripPanel.PerformLayout(); + this.toolStripContainer1.ResumeLayout(false); + this.toolStripContainer1.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ToolStripContainer toolStripContainer1; + private System.Windows.Forms.TextBox txtcontents; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/TextPad.cs b/ShiftOS.WinForms/Applications/TextPad.cs new file mode 100644 index 0000000..f566f2d --- /dev/null +++ b/ShiftOS.WinForms/Applications/TextPad.cs @@ -0,0 +1,88 @@ +using ShiftOS.Objects.ShiftFS; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Applications +{ + [Launcher("TextPad", true, "al_textpad")] + [RequiresUpgrade("textpad")] + [WinOpen("textpad")] + public partial class TextPad : UserControl, IShiftOSWindow + { + public TextPad() + { + InitializeComponent(); + } + + private void newToolStripMenuItem_Click(object sender, EventArgs e) + { + txtcontents.Text = ""; + } + + private void openToolStripMenuItem_Click(object sender, EventArgs e) + { + var types = new List(); + types.Add(".txt"); + if (ShiftoriumFrontend.UpgradeInstalled("textpad_lua_support")) + types.Add(".lua"); + if (ShiftoriumFrontend.UpgradeInstalled("textpad_python_support")) + types.Add(".py"); + + + AppearanceManager.SetupDialog(new FileDialog(types.ToArray(), FileOpenerStyle.Open, new Action((file) => this.LoadFile(file)))); + } + + public void LoadFile(string file) + { + txtcontents.Text = Utils.ReadAllText(file); + } + + public void SaveFile(string file) + { + Utils.WriteAllText(file, txtcontents.Text); + } + + private void saveToolStripMenuItem_Click(object sender, EventArgs e) + { + var types = new List(); + types.Add(".txt"); + if (ShiftoriumFrontend.UpgradeInstalled("textpad_lua_support")) + types.Add(".lua"); + if (ShiftoriumFrontend.UpgradeInstalled("textpad_python_support")) + types.Add(".py"); + + AppearanceManager.SetupDialog(new FileDialog(types.ToArray(), FileOpenerStyle.Save, new Action((file) => this.SaveFile(file)))); + + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + private void txtcontents_KeyDown(object sender, KeyEventArgs e) + { + + } + } +} diff --git a/ShiftOS.WinForms/Applications/TextPad.resx b/ShiftOS.WinForms/Applications/TextPad.resx new file mode 100644 index 0000000..d5494e3 --- /dev/null +++ b/ShiftOS.WinForms/Applications/TextPad.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/VirusScanner.Designer.cs b/ShiftOS.WinForms/Applications/VirusScanner.Designer.cs new file mode 100644 index 0000000..554b526 --- /dev/null +++ b/ShiftOS.WinForms/Applications/VirusScanner.Designer.cs @@ -0,0 +1,202 @@ +using ShiftOS.WinForms.Controls; + +namespace ShiftOS.WinForms.Applications +{ + partial class VirusScanner + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btnfullscan = new System.Windows.Forms.Button(); + this.btnhomescan = new System.Windows.Forms.Button(); + this.btnsysscan = new System.Windows.Forms.Button(); + this.grpresults = new System.Windows.Forms.GroupBox(); + this.lbviruses = new System.Windows.Forms.ListBox(); + this.btnremoveviruses = new System.Windows.Forms.Button(); + this.lblresults = new System.Windows.Forms.Label(); + this.grpabout = new System.Windows.Forms.GroupBox(); + this.rtbterm = new TerminalBox(); + this.lblabout = new System.Windows.Forms.Label(); + this.pgcontents = new System.Windows.Forms.Panel(); + this.grpresults.SuspendLayout(); + this.grpabout.SuspendLayout(); + this.pgcontents.SuspendLayout(); + this.SuspendLayout(); + // + // btnfullscan + // + this.btnfullscan.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnfullscan.Location = new System.Drawing.Point(10, 12); + this.btnfullscan.Name = "btnfullscan"; + this.btnfullscan.Size = new System.Drawing.Size(175, 23); + this.btnfullscan.TabIndex = 0; + this.btnfullscan.Text = "{START_SYSTEM_SCAN}"; + this.btnfullscan.UseVisualStyleBackColor = true; + this.btnfullscan.Click += new System.EventHandler(this.btnfullscan_Click); + // + // btnhomescan + // + this.btnhomescan.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnhomescan.Location = new System.Drawing.Point(10, 41); + this.btnhomescan.Name = "btnhomescan"; + this.btnhomescan.Size = new System.Drawing.Size(175, 23); + this.btnhomescan.TabIndex = 1; + this.btnhomescan.Text = "{SCAN_HOME}"; + this.btnhomescan.UseVisualStyleBackColor = true; + this.btnhomescan.Click += new System.EventHandler(this.btnhomescan_Click); + // + // btnsysscan + // + this.btnsysscan.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnsysscan.Location = new System.Drawing.Point(10, 70); + this.btnsysscan.Name = "btnsysscan"; + this.btnsysscan.Size = new System.Drawing.Size(175, 23); + this.btnsysscan.TabIndex = 2; + this.btnsysscan.Text = "{SCAN_SYSTEM}"; + this.btnsysscan.UseVisualStyleBackColor = true; + this.btnsysscan.Click += new System.EventHandler(this.btnsysscan_Click); + // + // grpresults + // + this.grpresults.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.grpresults.Controls.Add(this.lbviruses); + this.grpresults.Controls.Add(this.btnremoveviruses); + this.grpresults.Controls.Add(this.lblresults); + this.grpresults.Location = new System.Drawing.Point(3, 168); + this.grpresults.Name = "grpresults"; + this.grpresults.Size = new System.Drawing.Size(179, 158); + this.grpresults.TabIndex = 3; + this.grpresults.TabStop = false; + this.grpresults.Text = "{RESULTS}"; + // + // lbviruses + // + this.lbviruses.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbviruses.FormattingEnabled = true; + this.lbviruses.Location = new System.Drawing.Point(3, 16); + this.lbviruses.Name = "lbviruses"; + this.lbviruses.Size = new System.Drawing.Size(173, 116); + this.lbviruses.TabIndex = 2; + // + // btnremoveviruses + // + this.btnremoveviruses.Dock = System.Windows.Forms.DockStyle.Bottom; + this.btnremoveviruses.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnremoveviruses.Location = new System.Drawing.Point(3, 132); + this.btnremoveviruses.Name = "btnremoveviruses"; + this.btnremoveviruses.Size = new System.Drawing.Size(173, 23); + this.btnremoveviruses.TabIndex = 1; + this.btnremoveviruses.Text = "Remove"; + this.btnremoveviruses.UseVisualStyleBackColor = true; + this.btnremoveviruses.Visible = false; + this.btnremoveviruses.Click += new System.EventHandler(this.btnremoveviruses_Click); + // + // lblresults + // + this.lblresults.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblresults.Location = new System.Drawing.Point(3, 16); + this.lblresults.Name = "lblresults"; + this.lblresults.Size = new System.Drawing.Size(173, 139); + this.lblresults.TabIndex = 0; + this.lblresults.Text = "{SCAN_NOT_STARTED}"; + // + // grpabout + // + this.grpabout.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.grpabout.Controls.Add(this.rtbterm); + this.grpabout.Controls.Add(this.lblabout); + this.grpabout.Location = new System.Drawing.Point(191, 12); + this.grpabout.Name = "grpabout"; + this.grpabout.Size = new System.Drawing.Size(362, 314); + this.grpabout.TabIndex = 5; + this.grpabout.TabStop = false; + this.grpabout.Text = "{ABOUT}"; + // + // rtbterm + // + this.rtbterm.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtbterm.Location = new System.Drawing.Point(3, 16); + this.rtbterm.Name = "rtbterm"; + this.rtbterm.Size = new System.Drawing.Size(356, 295); + this.rtbterm.TabIndex = 1; + this.rtbterm.Text = ""; + // + // lblabout + // + this.lblabout.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblabout.Location = new System.Drawing.Point(3, 16); + this.lblabout.Name = "lblabout"; + this.lblabout.Size = new System.Drawing.Size(356, 295); + this.lblabout.TabIndex = 0; + this.lblabout.Text = "{VIRUSSCANNER_ABOUT}"; + // + // pgcontents + // + this.pgcontents.BackColor = System.Drawing.Color.White; + this.pgcontents.Controls.Add(this.grpabout); + this.pgcontents.Controls.Add(this.grpresults); + this.pgcontents.Controls.Add(this.btnsysscan); + this.pgcontents.Controls.Add(this.btnhomescan); + this.pgcontents.Controls.Add(this.btnfullscan); + this.pgcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.pgcontents.Location = new System.Drawing.Point(0, 0); + this.pgcontents.Name = "pgcontents"; + this.pgcontents.Size = new System.Drawing.Size(565, 343); + this.pgcontents.TabIndex = 25; + // + // VirusScanner + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pgcontents); + this.Name = "VirusScanner"; + this.Text = "Virus Scanner"; + this.Size = new System.Drawing.Size(565, 343); + this.Load += new System.EventHandler(this.VirusScanner_Load); + this.grpresults.ResumeLayout(false); + this.grpabout.ResumeLayout(false); + this.pgcontents.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + internal System.Windows.Forms.Button btnfullscan; + internal System.Windows.Forms.Button btnhomescan; + internal System.Windows.Forms.Button btnsysscan; + internal System.Windows.Forms.GroupBox grpresults; + internal System.Windows.Forms.Button btnremoveviruses; + internal System.Windows.Forms.Label lblresults; + internal System.Windows.Forms.GroupBox grpabout; + internal System.Windows.Forms.Label lblabout; + internal System.Windows.Forms.Panel pgcontents; + private TerminalBox rtbterm; + private System.Windows.Forms.ListBox lbviruses; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/VirusScanner.cs b/ShiftOS.WinForms/Applications/VirusScanner.cs new file mode 100644 index 0000000..740c1a8 --- /dev/null +++ b/ShiftOS.WinForms/Applications/VirusScanner.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using Newtonsoft.Json; +using ShiftOS.Engine; +using ShiftOS.Objects; +using static ShiftOS.Objects.ShiftFS.Utils; + +namespace ShiftOS.WinForms.Applications +{ + [Launcher("Virus Scanner", true, "al_virus_scanner")] + [RequiresUpgrade("virus_scanner")] + [WinOpen("virus_scanner")] + public partial class VirusScanner : UserControl, IShiftOSWindow + { + public VirusScanner() + { + InitializeComponent(); + Action runner = new Action((msg) => + { + if(msg.Name == "virusdb") + { + VirusDB = JsonConvert.DeserializeObject>(msg.Contents); + } + }); + + ServerManager.MessageReceived += (srv) => + { + runner?.Invoke(srv); + runner = null; + }; + + ServerManager.SendMessage("getvirusdb", ""); + } + + Dictionary VirusDB = null; + + private void btnfullscan_Click(object sender, EventArgs e) + { + lblabout.Hide(); + lbviruses.Hide(); + rtbterm.Show(); + rtbterm.Focus(); + rtbterm.Text = ""; + var t = new Thread(new ThreadStart(() => + { + ScanFolder("0:"); + })); + t.IsBackground = true; + t.Start(); + } + + public List infected = new List(); + + public void ScanFolder(string path) + { + this.Invoke(new Action(() => + { + lblresults.Hide(); + })); + foreach (var file in GetFiles(path)) + { + Console.WriteLine(file + " is now being scanned."); + string contents = ReadAllText(file); + + foreach(var kv in VirusDB) + { + if(kv.Value == contents) + { + if(kv.Key.EndsWith(".0") || kv.Key.EndsWith(".1")) + { + infected.Add(file); + Console.WriteLine($"{file} - Virus detected: {kv.Key}"); + this.Invoke(new Action(() => + { + AddVirusToList(kv.Key); + })); + } + } + } + } + + foreach(var dir in GetDirectories(path)) + { + if (dir != null) + { + ScanFolder(dir); + } + } + } + + public void AddVirusToList(string type) + { + lblresults.Hide(); + lbviruses.Show(); + btnremoveviruses.Show(); + lbviruses.Items.Add(type); + } + + private void VirusScanner_Load(object sender, EventArgs e) + { + Applications.Terminal.MakeWidget(rtbterm); + rtbterm.Hide(); + } + + private void btnhomescan_Click(object sender, EventArgs e) + { + lblabout.Hide(); + rtbterm.Show(); + rtbterm.Focus(); + rtbterm.Text = ""; + var t = new Thread(new ThreadStart(() => + { + ScanFolder(Paths.GetPath("home")); + })); + t.IsBackground = true; + t.Start(); + } + + private void btnsysscan_Click(object sender, EventArgs e) + { + lblabout.Hide(); + rtbterm.Show(); + rtbterm.Focus(); + rtbterm.Text = ""; + var t = new Thread(new ThreadStart(() => + { + ScanFolder(Paths.GetPath("system")); + })); + t.IsBackground = true; + t.Start(); + } + + private void btnremoveviruses_Click(object sender, EventArgs e) + { + while(infected.Count > 0) + { + Delete(infected[0]); + infected.RemoveAt(0); + } + + lbviruses.Items.Clear(); + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + } + + public class InfectedFile + { + public string FilePath { get; set; } + public List Viruses { get; set; } + + public InfectedFile(string fpath, string[] viruses) + { + FilePath = fpath; + Viruses = new List(viruses); + } + } +} diff --git a/ShiftOS.WinForms/Applications/VirusScanner.resx b/ShiftOS.WinForms/Applications/VirusScanner.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/VirusScanner.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Applications/mp3Player.Designer.cs b/ShiftOS.WinForms/Applications/mp3Player.Designer.cs new file mode 100644 index 0000000..f901dc7 --- /dev/null +++ b/ShiftOS.WinForms/Applications/mp3Player.Designer.cs @@ -0,0 +1,97 @@ +namespace ShiftOS.Engine +{ + partial class UserControl1 + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Komponenten-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.mp3FilePath = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.stopMp3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // mp3FilePath + // + this.mp3FilePath.Location = new System.Drawing.Point(131, 8); + this.mp3FilePath.Name = "mp3FilePath"; + this.mp3FilePath.ReadOnly = true; + this.mp3FilePath.Size = new System.Drawing.Size(239, 20); + this.mp3FilePath.TabIndex = 1; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(3, 8); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(122, 21); + this.button1.TabIndex = 2; + this.button1.Text = "Choose Song"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // stopMp3 + // + this.stopMp3.Location = new System.Drawing.Point(445, 8); + this.stopMp3.Name = "stopMp3"; + this.stopMp3.Size = new System.Drawing.Size(65, 21); + this.stopMp3.TabIndex = 3; + this.stopMp3.Text = "Stop"; + this.stopMp3.UseVisualStyleBackColor = true; + this.stopMp3.Click += new System.EventHandler(this.stopMp3_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(376, 8); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(63, 21); + this.button2.TabIndex = 4; + this.button2.Text = "Play"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // UserControl1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.button2); + this.Controls.Add(this.stopMp3); + this.Controls.Add(this.button1); + this.Controls.Add(this.mp3FilePath); + this.Name = "UserControl1"; + this.Text = "{WAV_PLAYER_NAME}"; + this.Size = new System.Drawing.Size(530, 70); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox mp3FilePath; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button stopMp3; + private System.Windows.Forms.Button button2; + } +} diff --git a/ShiftOS.WinForms/Applications/mp3Player.cs b/ShiftOS.WinForms/Applications/mp3Player.cs new file mode 100644 index 0000000..c4afd0d --- /dev/null +++ b/ShiftOS.WinForms/Applications/mp3Player.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ShiftOS.Engine +{ + [Launcher("WAV Player", true, "wav_player_al")] + [RequiresUpgrade("wav_player")] + [WinOpen("wav_player")] + public partial class UserControl1 : UserControl, IShiftOSWindow + { + string path; + public UserControl1() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog(); + ofd.Filter = "WAV|*.wav"; + + if(ofd.ShowDialog() == DialogResult.OK) + { + path = ofd.FileName; + mp3FilePath.Text = ofd.FileName; + } + } + + private void stopMp3_Click(object sender, EventArgs e) + { + System.Media.SoundPlayer player = new System.Media.SoundPlayer(); + player.Stop(); + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + private void button2_Click(object sender, EventArgs e) + { + System.Media.SoundPlayer player = new System.Media.SoundPlayer(); + player.SoundLocation = path; + player.Load(); + player.Play(); + } + } +} diff --git a/ShiftOS.WinForms/Applications/mp3Player.resx b/ShiftOS.WinForms/Applications/mp3Player.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Applications/mp3Player.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Commands.cs b/ShiftOS.WinForms/Commands.cs new file mode 100644 index 0000000..9fb1785 --- /dev/null +++ b/ShiftOS.WinForms/Commands.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ShiftOS.Engine; +using System.IO; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Threading; + +namespace ShiftOS.WinForms +{ + [Namespace("coherence")] + [RequiresUpgrade("kernel_coherence")] + public static class CoherenceCommands + { + [DllImport("user32.dll")] + static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); + + static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); + const UInt32 SWP_SHOWWINDOW = 0x0040; + + + + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect); + + [StructLayout(LayoutKind.Sequential)] + public struct RECT + { + public int Left; // x position of upper-left corner + public int Top; // y position of upper-left corner + public int Right; // x position of lower-right corner + public int Bottom; // y position of lower-right corner + } + + [Command("launch", "process: \"C:\\path\\to\\process\" - The process path to launch.", "Launch a process inside kernel coherence.")] + [RequiresArgument("process")] + public static bool LaunchApp(Dictionary args) + { + string process = args["process"].ToString(); + var prc = Process.Start(process); + StartCoherence(prc); + return true; + } + + private static void StartCoherence(Process prc) + { + RECT rct = new RECT(); + + + while (!GetWindowRect(prc.MainWindowHandle, ref rct)) + { + } + + + + AppearanceManager.Invoke(new Action(() => + { + IShiftOSWindow coherenceWindow = new Applications.CoherenceOverlay(prc.MainWindowHandle, rct); + + AppearanceManager.SetupWindow(coherenceWindow); + SetWindowPos(prc.MainWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); + + //MakeExternalWindowBorderless(prc.MainWindowHandle); + })); + + } + + const int WS_BORDER = 8388608; + const int WS_DLGFRAME = 4194304; + const int WS_CAPTION = WS_BORDER | WS_DLGFRAME; + const int WS_SYSMENU = 524288; + const int WS_THICKFRAME = 262144; + const int WS_MINIMIZE = 536870912; + const int WS_MAXIMIZEBOX = 65536; + const int GWL_STYLE = -16; + const int GWL_EXSTYLE = -20; + const int WS_EX_DLGMODALFRAME = 0x1; + const int SWP_NOMOVE = 0x2; + const int SWP_NOSIZE = 0x1; + const int SWP_FRAMECHANGED = 0x20; + const uint MF_BYPOSITION = 0x400; + const uint MF_REMOVE = 0x1000; + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)] + public static extern int GetWindowLong(IntPtr hWnd, int nIndex); + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)] + public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)] + public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags); + public static void MakeExternalWindowBorderless(IntPtr MainWindowHandle) + { + int Style = 0; + Style = GetWindowLong(MainWindowHandle, GWL_STYLE); + Style = Style & ~WS_CAPTION; + Style = Style & ~WS_SYSMENU; + Style = Style & ~WS_THICKFRAME; + Style = Style & ~WS_MINIMIZE; + Style = Style & ~WS_MAXIMIZEBOX; + SetWindowLong(MainWindowHandle, GWL_STYLE, Style); + Style = GetWindowLong(MainWindowHandle, GWL_EXSTYLE); + SetWindowLong(MainWindowHandle, GWL_EXSTYLE, Style | WS_EX_DLGMODALFRAME); + SetWindowPos(MainWindowHandle, new IntPtr(0), 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED); + } + } +} diff --git a/ShiftOS.WinForms/Controls/ColorControl.Designer.cs b/ShiftOS.WinForms/Controls/ColorControl.Designer.cs new file mode 100644 index 0000000..ca6b1a7 --- /dev/null +++ b/ShiftOS.WinForms/Controls/ColorControl.Designer.cs @@ -0,0 +1,69 @@ +using System.Windows.Forms; + +namespace ShiftOS.WinForms.Controls +{ + partial class ColorControl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pnlcolorbox = new Canvas(); + this.SuspendLayout(); + // + // pnlcolorbox + // + this.pnlcolorbox.Location = new System.Drawing.Point(37, 18); + this.pnlcolorbox.Name = "pnlcolorbox"; + this.pnlcolorbox.Size = new System.Drawing.Size(255, 255); + this.pnlcolorbox.TabIndex = 0; + // + // ColorPicker + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.Controls.Add(this.pnlcolorbox); + this.ForeColor = System.Drawing.Color.White; + this.Name = "ColorPicker"; + this.Size = new System.Drawing.Size(332, 520); + this.Load += new System.EventHandler(this.ColorPicker_Load); + this.ResumeLayout(false); + + } + + #endregion + + private Canvas pnlcolorbox; + } + + internal class Canvas : Panel + { + public Canvas() : base() + { + DoubleBuffered = true; + } + } +} diff --git a/ShiftOS.WinForms/Controls/ColorControl.cs b/ShiftOS.WinForms/Controls/ColorControl.cs new file mode 100644 index 0000000..09b4c34 --- /dev/null +++ b/ShiftOS.WinForms/Controls/ColorControl.cs @@ -0,0 +1,243 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms.Controls +{ + public partial class ColorControl : UserControl + { + public ColorControl() + { + InitializeComponent(); + this.DoubleBuffered = true; + } + + public Color SelectedForeground = Color.Black; + + public Color GetColorFromCoords(Point pt) + { + for (int r = 0; r <= 255; r++) + { + //As we move to the right of the panel things should get more blue... + //and as we go down, more red + //and as we go down AND to the right, green. + for (int b = 0; b <= 255; b++) + { + int xy = LinearInterpolate(0, 255 * 255, pt.X * pt.Y, 0, 255); + int g = LinearInterpolate(0, 255 * 255, r * b, 0, 255); + if (pt.X == b && pt.Y == r && g == xy) + return Color.FromArgb(r, g, b); + } + } + + return Color.Empty; + } + + public Color SelectedColor + { + get + { + return SelectedForeground; + } + set + { + SelectedForeground = value; + } + } + + int LastX, LastY = 0; + + private void ColorPicker_Load(object sender, EventArgs e) + { + pnlcolorbox.MouseMove += (o, a) => + { + if (a.Button == MouseButtons.Left) + { + SelectedColor = GetColorFromCoords(a.Location); + LastX = a.Location.X; + LastY = a.Location.Y; + DrawEverything(); + } + + }; + pnlcolorbox.Paint += (o, a) => + { + + float selectedX = 0; + float selectedY = 0; + float width = 5; + float height = 5; + + for (int r = 0; r <= 255; r++) + { + //As we move to the right of the panel things should get more blue... + //and as we go down, more red + //and as we go down AND to the right, green. + for (int b = 0; b <= 255; b++) + { + int g = LinearInterpolate(0, 255 * 255, r * b, 0, 255); + var c = Color.FromArgb(r, g, b); + a.Graphics.FillRectangle(new SolidBrush(c), b, r, 1, 1); + if (SelectedColor == c) + { + selectedX = b - 2; + selectedY = r - 2; + } + } + } + + int selectedg = LinearInterpolate(0, 255 * 255, (int)(selectedX + 2 * selectedY + 2), 0, 255); + var inverted = InvertColor((int)selectedX + 2, selectedg, (int)selectedY + 2); + a.Graphics.DrawEllipse(new Pen(new SolidBrush(inverted), 1), selectedX, selectedY, width, height); + + }; + + red.Width = 255; + red.Left = pnlcolorbox.Left; + red.Top = pnlcolorbox.Top + pnlcolorbox.Height + 5; + red.Height = 20; + red.TextChanged += (o, a) => + { + if(red.Text != SelectedColor.R.ToString()) + { + try + { + SelectedColor = Color.FromArgb(SelectedColor.A, Convert.ToInt32(red.Text), SelectedColor.G, SelectedColor.B); + DrawEverything(); + } + catch + { + red.Text = SelectedColor.R.ToString(); + } + } + }; + this.Controls.Add(red); + red.Show(); + + green.Width = 255; + green.Left = pnlcolorbox.Left; + green.Top = red.Top + red.Height + 5; + green.Height = 20; + green.TextChanged += (o, a) => + { + if (green.Text != SelectedColor.G.ToString()) + { + try + { + SelectedColor = Color.FromArgb(SelectedColor.A, SelectedColor.R, Convert.ToInt32(green.Text), SelectedColor.B); + DrawEverything(); + } + catch + { + green.Text = SelectedColor.G.ToString(); + } + } + }; + this.Controls.Add(green); + green.Show(); + + blue.Width = 255; + blue.Left = pnlcolorbox.Left; + blue.Top = green.Top + red.Height + 5; + blue.Height = 20; + blue.TextChanged += (o, a) => + { + if (blue.Text != SelectedColor.B.ToString()) + { + try + { + SelectedColor = Color.FromArgb(SelectedColor.A, SelectedColor.R, SelectedColor.G, Convert.ToInt32(blue.Text)); + DrawEverything(); + } + catch + { + blue.Text = SelectedColor.B.ToString(); + } + } + }; + this.Controls.Add(blue); + blue.Show(); + + alpha.Width = 255; + alpha.Left = pnlcolorbox.Left; + alpha.Top = blue.Top + red.Height + 5; + alpha.Height = 20; + alpha.TextChanged += (o, a) => + { + if (alpha.Text != SelectedColor.A.ToString()) + { + try + { + SelectedColor = Color.FromArgb(Convert.ToInt32(alpha.Text), SelectedColor.R, SelectedColor.G, SelectedColor.B); + DrawEverything(); + } + catch + { + alpha.Text = SelectedColor.A.ToString(); + } + } + }; this.Controls.Add(alpha); + alpha.Show(); + + preview.Width = 255; + preview.Left = pnlcolorbox.Left; + preview.Top = alpha.Top + red.Height + 5; + preview.Height = 20; + preview.Paint += (o, a) => + { + int width = preview.Width / 2; + int height = preview.Height; + a.Graphics.FillRectangle(new SolidBrush(SelectedForeground), 0, 0, width * 2, height); + }; + this.Controls.Add(preview); + preview.Show(); + + ControlManager.SetupControl(red); + ControlManager.SetupControl(green); + ControlManager.SetupControl(blue); + ControlManager.SetupControl(alpha); + + + DrawEverything(); + } + + + TextBox red = new TextBox(); + TextBox green = new TextBox(); + TextBox blue = new TextBox(); + TextBox alpha = new TextBox(); + Panel preview = new Panel(); + + + public Color InvertColor(int r, int g, int b) + { + return Color.FromArgb(255 - r, 255 - g, 255 - b); + } + + public void DrawEverything() + { + pnlcolorbox.Refresh(); + red.Text = SelectedColor.R.ToString(); + green.Text = SelectedColor.G.ToString(); + blue.Text = SelectedColor.B.ToString(); + alpha.Text = SelectedColor.A.ToString(); + preview.Refresh(); + } + + public int LinearInterpolate(int input_start, int input_end, int input, int output_start, int output_end) + { + int input_range = input_end - input_start; + int output_range = output_end - output_start; + + return (input - input_start) * output_range / input_range + output_start; + } + + } +} diff --git a/ShiftOS.WinForms/Controls/ShiftedProgressBar.Designer.cs b/ShiftOS.WinForms/Controls/ShiftedProgressBar.Designer.cs new file mode 100644 index 0000000..a59a09c --- /dev/null +++ b/ShiftOS.WinForms/Controls/ShiftedProgressBar.Designer.cs @@ -0,0 +1,36 @@ +namespace ShiftOS.WinForms.Controls +{ + partial class ShiftedProgressBar + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/ShiftOS.WinForms/Controls/ShiftedProgressBar.cs b/ShiftOS.WinForms/Controls/ShiftedProgressBar.cs new file mode 100644 index 0000000..4707541 --- /dev/null +++ b/ShiftOS.WinForms/Controls/ShiftedProgressBar.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ShiftOS.WinForms.Controls +{ + public partial class ShiftedProgressBar : Control + { + public ShiftedProgressBar() + { + this.SizeChanged += (o, a) => + { + this.Refresh(); + }; + var t = new Timer(); + t.Interval = 100; + t.Tick += (o, a) => + { + if(this._style == ProgressBarStyle.Marquee) + { + if(_marqueePos >= this.Width) + { + _marqueePos = 0 - (this.Width / 4); + } + else + { + _marqueePos++; + } + this.Refresh(); + } + }; + t.Start(); + } + + private int _value = 0; + private int _max = 100; + public int Value + { + get + { + return _value; + } + set + { + _value = value; + this.Refresh(); + } + } + public int Maximum + { + get + { + return _max; + } + set + { + _max = value; + this.Refresh(); + } + } + + public ProgressBarStyle _style = ProgressBarStyle.Continuous; + + public ProgressBarStyle Style + { + get { return _style; } + set { _style = value; this.Refresh(); } + } + + private int _blocksize = 5; + + public int BlockSize + { + get { return _blocksize; } + set + { + _blocksize = value; + this.Refresh(); + } + } + + protected override void OnPaint(PaintEventArgs pe) + { + pe.Graphics.Clear(this.BackColor); + switch (_style) + { + case ProgressBarStyle.Continuous: + double width = linear(this.Value, 0, this.Maximum, 0, this.Width); + pe.Graphics.FillRectangle(new SolidBrush(Color.Green), new RectangleF(0, 0, (float)width, this.Height)); + break; + case ProgressBarStyle.Blocks: + int block_count = this.Width / (this._blocksize + 2); + int blocks = (int)linear(this.Value, 0, this.Maximum, 0, block_count); + for(int i = 0; i < blocks - 1; i++) + { + int position = i * (_blocksize + 2); + pe.Graphics.FillRectangle(new SolidBrush(Color.Green), new Rectangle(position, 0, _blocksize, this.Height)); + } + break; + case ProgressBarStyle.Marquee: + pe.Graphics.FillRectangle(new SolidBrush(Color.Green), new Rectangle(_marqueePos, 0, this.Width / 4, this.Height)); + break; + } + } + + private int _marqueePos = 0; + + static private double linear(double x, double x0, double x1, double y0, double y1) + { + if ((x1 - x0) == 0) + { + return (y0 + y1) / 2; + } + return y0 + (x - x0) * (y1 - y0) / (x1 - x0); + } + } +} diff --git a/ShiftOS.WinForms/Controls/TerminalBox.cs b/ShiftOS.WinForms/Controls/TerminalBox.cs new file mode 100644 index 0000000..e0745d4 --- /dev/null +++ b/ShiftOS.WinForms/Controls/TerminalBox.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; + +namespace ShiftOS.WinForms.Controls +{ + public class TerminalBox : RichTextBox, ITerminalWidget + { + public void SelectBottom() + { + try + { + this.Select(this.Text.Length, 0); + this.ScrollToCaret(); + } + catch { } + } + + public void Write(string text) + { + this.Text += Localization.Parse(text); + } + + public void WriteLine(string text) + { + this.Text += Localization.Parse(text) + Environment.NewLine; + } + } +} diff --git a/ShiftOS.WinForms/Oobe.Designer.cs b/ShiftOS.WinForms/Oobe.Designer.cs new file mode 100644 index 0000000..6c1de0d --- /dev/null +++ b/ShiftOS.WinForms/Oobe.Designer.cs @@ -0,0 +1,952 @@ +using ShiftOS.WinForms.Controls; + +namespace ShiftOS.WinForms +{ + partial class Oobe + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pnlshadow = new System.Windows.Forms.Panel(); + this.pnllanguage = new System.Windows.Forms.Panel(); + this.btnselectlang = new System.Windows.Forms.Button(); + this.lblanguage = new System.Windows.Forms.ListBox(); + this.label1 = new System.Windows.Forms.Label(); + this.pnluserinfo = new System.Windows.Forms.Panel(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.flowLayoutPanel4 = new System.Windows.Forms.FlowLayoutPanel(); + this.label5 = new System.Windows.Forms.Label(); + this.txtusername = new System.Windows.Forms.TextBox(); + this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel(); + this.label4 = new System.Windows.Forms.Label(); + this.txtpassword = new System.Windows.Forms.TextBox(); + this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); + this.label3 = new System.Windows.Forms.Label(); + this.txtsysname = new System.Windows.Forms.TextBox(); + this.btnsetuserinfo = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.pnldiscourse = new System.Windows.Forms.Panel(); + this.flowLayoutPanel5 = new System.Windows.Forms.FlowLayoutPanel(); + this.flowLayoutPanel6 = new System.Windows.Forms.FlowLayoutPanel(); + this.label6 = new System.Windows.Forms.Label(); + this.txtdiscoursename = new System.Windows.Forms.TextBox(); + this.flowLayoutPanel7 = new System.Windows.Forms.FlowLayoutPanel(); + this.label7 = new System.Windows.Forms.Label(); + this.txtdiscoursepass = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.label9 = new System.Windows.Forms.Label(); + this.pnlterminaltutorial = new System.Windows.Forms.Panel(); + this.pnlreenteruserinfo = new System.Windows.Forms.Panel(); + this.flowLayoutPanel8 = new System.Windows.Forms.FlowLayoutPanel(); + this.flowLayoutPanel9 = new System.Windows.Forms.FlowLayoutPanel(); + this.label8 = new System.Windows.Forms.Label(); + this.txtruser = new System.Windows.Forms.TextBox(); + this.flowLayoutPanel10 = new System.Windows.Forms.FlowLayoutPanel(); + this.label10 = new System.Windows.Forms.Label(); + this.txtrpass = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.label11 = new System.Windows.Forms.Label(); + this.pnlauthfail = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.label14 = new System.Windows.Forms.Label(); + this.pnlauthdone = new System.Windows.Forms.Panel(); + this.button4 = new System.Windows.Forms.Button(); + this.label12 = new System.Windows.Forms.Label(); + this.pgsystemstatus = new ShiftOS.WinForms.Controls.ShiftedProgressBar(); + this.txtterm = new ShiftOS.WinForms.Controls.TerminalBox(); + this.pnlrelogin = new System.Windows.Forms.Panel(); + this.flowLayoutPanel11 = new System.Windows.Forms.FlowLayoutPanel(); + this.flowLayoutPanel12 = new System.Windows.Forms.FlowLayoutPanel(); + this.label13 = new System.Windows.Forms.Label(); + this.txtluser = new System.Windows.Forms.TextBox(); + this.flowLayoutPanel13 = new System.Windows.Forms.FlowLayoutPanel(); + this.label15 = new System.Windows.Forms.Label(); + this.txtlpass = new System.Windows.Forms.TextBox(); + this.button5 = new System.Windows.Forms.Button(); + this.label16 = new System.Windows.Forms.Label(); + this.pnlrelogerror = new System.Windows.Forms.Panel(); + this.button6 = new System.Windows.Forms.Button(); + this.label17 = new System.Windows.Forms.Label(); + this.pnllanguage.SuspendLayout(); + this.pnluserinfo.SuspendLayout(); + this.flowLayoutPanel1.SuspendLayout(); + this.flowLayoutPanel4.SuspendLayout(); + this.flowLayoutPanel3.SuspendLayout(); + this.flowLayoutPanel2.SuspendLayout(); + this.pnldiscourse.SuspendLayout(); + this.flowLayoutPanel5.SuspendLayout(); + this.flowLayoutPanel6.SuspendLayout(); + this.flowLayoutPanel7.SuspendLayout(); + this.pnlterminaltutorial.SuspendLayout(); + this.pnlreenteruserinfo.SuspendLayout(); + this.flowLayoutPanel8.SuspendLayout(); + this.flowLayoutPanel9.SuspendLayout(); + this.flowLayoutPanel10.SuspendLayout(); + this.pnlauthfail.SuspendLayout(); + this.pnlauthdone.SuspendLayout(); + this.pnlrelogin.SuspendLayout(); + this.flowLayoutPanel11.SuspendLayout(); + this.flowLayoutPanel12.SuspendLayout(); + this.flowLayoutPanel13.SuspendLayout(); + this.pnlrelogerror.SuspendLayout(); + this.SuspendLayout(); + // + // pnlshadow + // + this.pnlshadow.BackColor = System.Drawing.Color.Black; + this.pnlshadow.Location = new System.Drawing.Point(900, 460); + this.pnlshadow.Name = "pnlshadow"; + this.pnlshadow.Size = new System.Drawing.Size(794, 318); + this.pnlshadow.TabIndex = 0; + // + // pnllanguage + // + this.pnllanguage.BackColor = System.Drawing.Color.DarkGray; + this.pnllanguage.Controls.Add(this.btnselectlang); + this.pnllanguage.Controls.Add(this.lblanguage); + this.pnllanguage.Controls.Add(this.label1); + this.pnllanguage.Location = new System.Drawing.Point(43, 75); + this.pnllanguage.Name = "pnllanguage"; + this.pnllanguage.Size = new System.Drawing.Size(542, 321); + this.pnllanguage.TabIndex = 1; + // + // btnselectlang + // + this.btnselectlang.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.btnselectlang.AutoSize = true; + this.btnselectlang.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnselectlang.FlatAppearance.BorderSize = 0; + this.btnselectlang.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.btnselectlang.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.btnselectlang.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnselectlang.ForeColor = System.Drawing.Color.White; + this.btnselectlang.Location = new System.Drawing.Point(230, 281); + this.btnselectlang.Name = "btnselectlang"; + this.btnselectlang.Size = new System.Drawing.Size(106, 22); + this.btnselectlang.TabIndex = 2; + this.btnselectlang.Text = "{SELECT_LANG}"; + this.btnselectlang.UseVisualStyleBackColor = true; + this.btnselectlang.Click += new System.EventHandler(this.btnselectlang_Click); + // + // lblanguage + // + this.lblanguage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lblanguage.BackColor = System.Drawing.Color.DarkGray; + this.lblanguage.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.lblanguage.FormattingEnabled = true; + this.lblanguage.ItemHeight = 12; + this.lblanguage.Location = new System.Drawing.Point(14, 83); + this.lblanguage.Name = "lblanguage"; + this.lblanguage.Size = new System.Drawing.Size(514, 192); + this.lblanguage.TabIndex = 1; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(542, 70); + this.label1.TabIndex = 0; + this.label1.Text = "{WELCOME_TO_SHIFTOS}\r\n\r\n{PLEASE_CHOOSE_A_SYSTEM_LANGUAGE}"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnluserinfo + // + this.pnluserinfo.BackColor = System.Drawing.Color.DarkGray; + this.pnluserinfo.Controls.Add(this.flowLayoutPanel1); + this.pnluserinfo.Controls.Add(this.btnsetuserinfo); + this.pnluserinfo.Controls.Add(this.label2); + this.pnluserinfo.Location = new System.Drawing.Point(653, 94); + this.pnluserinfo.Name = "pnluserinfo"; + this.pnluserinfo.Size = new System.Drawing.Size(334, 233); + this.pnluserinfo.TabIndex = 2; + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.AutoSize = true; + this.flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel1.Controls.Add(this.flowLayoutPanel4); + this.flowLayoutPanel1.Controls.Add(this.flowLayoutPanel3); + this.flowLayoutPanel1.Controls.Add(this.flowLayoutPanel2); + this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel1.Location = new System.Drawing.Point(18, 73); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(308, 96); + this.flowLayoutPanel1.TabIndex = 3; + this.flowLayoutPanel1.WrapContents = false; + // + // flowLayoutPanel4 + // + this.flowLayoutPanel4.AutoSize = true; + this.flowLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel4.Controls.Add(this.label5); + this.flowLayoutPanel4.Controls.Add(this.txtusername); + this.flowLayoutPanel4.Location = new System.Drawing.Point(3, 3); + this.flowLayoutPanel4.Name = "flowLayoutPanel4"; + this.flowLayoutPanel4.Size = new System.Drawing.Size(302, 28); + this.flowLayoutPanel4.TabIndex = 2; + // + // label5 + // + this.label5.Location = new System.Drawing.Point(3, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(108, 28); + this.label5.TabIndex = 0; + this.label5.Text = "{USER_NAME}:"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtusername + // + this.txtusername.BackColor = System.Drawing.Color.Black; + this.txtusername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtusername.ForeColor = System.Drawing.Color.Gray; + this.txtusername.Location = new System.Drawing.Point(117, 3); + this.txtusername.Name = "txtusername"; + this.txtusername.Size = new System.Drawing.Size(182, 19); + this.txtusername.TabIndex = 1; + // + // flowLayoutPanel3 + // + this.flowLayoutPanel3.AutoSize = true; + this.flowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel3.Controls.Add(this.label4); + this.flowLayoutPanel3.Controls.Add(this.txtpassword); + this.flowLayoutPanel3.Location = new System.Drawing.Point(3, 37); + this.flowLayoutPanel3.Name = "flowLayoutPanel3"; + this.flowLayoutPanel3.Size = new System.Drawing.Size(302, 25); + this.flowLayoutPanel3.TabIndex = 2; + // + // label4 + // + this.label4.Location = new System.Drawing.Point(3, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(108, 22); + this.label4.TabIndex = 0; + this.label4.Text = "{PASSWORD}: "; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtpassword + // + this.txtpassword.BackColor = System.Drawing.Color.Black; + this.txtpassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtpassword.ForeColor = System.Drawing.Color.Gray; + this.txtpassword.Location = new System.Drawing.Point(117, 3); + this.txtpassword.Name = "txtpassword"; + this.txtpassword.PasswordChar = '*'; + this.txtpassword.Size = new System.Drawing.Size(182, 19); + this.txtpassword.TabIndex = 1; + // + // flowLayoutPanel2 + // + this.flowLayoutPanel2.AutoSize = true; + this.flowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel2.Controls.Add(this.label3); + this.flowLayoutPanel2.Controls.Add(this.txtsysname); + this.flowLayoutPanel2.Location = new System.Drawing.Point(3, 68); + this.flowLayoutPanel2.Name = "flowLayoutPanel2"; + this.flowLayoutPanel2.Size = new System.Drawing.Size(302, 25); + this.flowLayoutPanel2.TabIndex = 0; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(3, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(108, 22); + this.label3.TabIndex = 0; + this.label3.Text = "{SYSTEM_NAME}:"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtsysname + // + this.txtsysname.BackColor = System.Drawing.Color.Black; + this.txtsysname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtsysname.ForeColor = System.Drawing.Color.Gray; + this.txtsysname.Location = new System.Drawing.Point(117, 3); + this.txtsysname.Name = "txtsysname"; + this.txtsysname.Size = new System.Drawing.Size(182, 19); + this.txtsysname.TabIndex = 1; + // + // btnsetuserinfo + // + this.btnsetuserinfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.btnsetuserinfo.AutoSize = true; + this.btnsetuserinfo.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnsetuserinfo.FlatAppearance.BorderSize = 0; + this.btnsetuserinfo.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.btnsetuserinfo.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.btnsetuserinfo.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnsetuserinfo.ForeColor = System.Drawing.Color.White; + this.btnsetuserinfo.Location = new System.Drawing.Point(138, 192); + this.btnsetuserinfo.Name = "btnsetuserinfo"; + this.btnsetuserinfo.Size = new System.Drawing.Size(71, 22); + this.btnsetuserinfo.TabIndex = 2; + this.btnsetuserinfo.Text = "{SUBMIT}"; + this.btnsetuserinfo.UseVisualStyleBackColor = true; + this.btnsetuserinfo.Click += new System.EventHandler(this.btnsetuserinfo_Click); + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Top; + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(334, 70); + this.label2.TabIndex = 0; + this.label2.Text = "{USER_INFO}\r\n\r\n{USER_INFO_EXP}"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnldiscourse + // + this.pnldiscourse.BackColor = System.Drawing.Color.DarkGray; + this.pnldiscourse.Controls.Add(this.flowLayoutPanel5); + this.pnldiscourse.Controls.Add(this.button1); + this.pnldiscourse.Controls.Add(this.label9); + this.pnldiscourse.Location = new System.Drawing.Point(1050, 104); + this.pnldiscourse.Name = "pnldiscourse"; + this.pnldiscourse.Size = new System.Drawing.Size(334, 233); + this.pnldiscourse.TabIndex = 4; + // + // flowLayoutPanel5 + // + this.flowLayoutPanel5.AutoSize = true; + this.flowLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel5.Controls.Add(this.flowLayoutPanel6); + this.flowLayoutPanel5.Controls.Add(this.flowLayoutPanel7); + this.flowLayoutPanel5.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel5.Location = new System.Drawing.Point(14, 121); + this.flowLayoutPanel5.Name = "flowLayoutPanel5"; + this.flowLayoutPanel5.Size = new System.Drawing.Size(308, 65); + this.flowLayoutPanel5.TabIndex = 3; + this.flowLayoutPanel5.WrapContents = false; + // + // flowLayoutPanel6 + // + this.flowLayoutPanel6.AutoSize = true; + this.flowLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel6.Controls.Add(this.label6); + this.flowLayoutPanel6.Controls.Add(this.txtdiscoursename); + this.flowLayoutPanel6.Location = new System.Drawing.Point(3, 3); + this.flowLayoutPanel6.Name = "flowLayoutPanel6"; + this.flowLayoutPanel6.Size = new System.Drawing.Size(302, 28); + this.flowLayoutPanel6.TabIndex = 2; + // + // label6 + // + this.label6.Location = new System.Drawing.Point(3, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(108, 28); + this.label6.TabIndex = 0; + this.label6.Text = "{USER_NAME}:"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtdiscoursename + // + this.txtdiscoursename.BackColor = System.Drawing.Color.Black; + this.txtdiscoursename.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtdiscoursename.ForeColor = System.Drawing.Color.Gray; + this.txtdiscoursename.Location = new System.Drawing.Point(117, 3); + this.txtdiscoursename.Name = "txtdiscoursename"; + this.txtdiscoursename.Size = new System.Drawing.Size(182, 19); + this.txtdiscoursename.TabIndex = 1; + // + // flowLayoutPanel7 + // + this.flowLayoutPanel7.AutoSize = true; + this.flowLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel7.Controls.Add(this.label7); + this.flowLayoutPanel7.Controls.Add(this.txtdiscoursepass); + this.flowLayoutPanel7.Location = new System.Drawing.Point(3, 37); + this.flowLayoutPanel7.Name = "flowLayoutPanel7"; + this.flowLayoutPanel7.Size = new System.Drawing.Size(302, 25); + this.flowLayoutPanel7.TabIndex = 2; + // + // label7 + // + this.label7.Location = new System.Drawing.Point(3, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(108, 22); + this.label7.TabIndex = 0; + this.label7.Text = "{PASSWORD}: "; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtdiscoursepass + // + this.txtdiscoursepass.BackColor = System.Drawing.Color.Black; + this.txtdiscoursepass.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtdiscoursepass.ForeColor = System.Drawing.Color.Gray; + this.txtdiscoursepass.Location = new System.Drawing.Point(117, 3); + this.txtdiscoursepass.Name = "txtdiscoursepass"; + this.txtdiscoursepass.PasswordChar = '*'; + this.txtdiscoursepass.Size = new System.Drawing.Size(182, 19); + this.txtdiscoursepass.TabIndex = 1; + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button1.AutoSize = true; + this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button1.FlatAppearance.BorderSize = 0; + this.button1.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.button1.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button1.ForeColor = System.Drawing.Color.White; + this.button1.Location = new System.Drawing.Point(138, 192); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(71, 22); + this.button1.TabIndex = 2; + this.button1.Text = "{SUBMIT}"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label9 + // + this.label9.Dock = System.Windows.Forms.DockStyle.Top; + this.label9.Location = new System.Drawing.Point(0, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(334, 88); + this.label9.TabIndex = 0; + this.label9.Text = "{DISCOURSE_INTEGRATION}\r\n\r\n{DISCOURSE_INTEGRATION_EXP}"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlterminaltutorial + // + this.pnlterminaltutorial.BackColor = System.Drawing.Color.DarkGray; + this.pnlterminaltutorial.Controls.Add(this.pgsystemstatus); + this.pnlterminaltutorial.Controls.Add(this.txtterm); + this.pnlterminaltutorial.Location = new System.Drawing.Point(622, 384); + this.pnlterminaltutorial.Name = "pnlterminaltutorial"; + this.pnlterminaltutorial.Size = new System.Drawing.Size(940, 604); + this.pnlterminaltutorial.TabIndex = 5; + // + // pnlreenteruserinfo + // + this.pnlreenteruserinfo.BackColor = System.Drawing.Color.DarkGray; + this.pnlreenteruserinfo.Controls.Add(this.flowLayoutPanel8); + this.pnlreenteruserinfo.Controls.Add(this.button2); + this.pnlreenteruserinfo.Controls.Add(this.label11); + this.pnlreenteruserinfo.Location = new System.Drawing.Point(791, 384); + this.pnlreenteruserinfo.Name = "pnlreenteruserinfo"; + this.pnlreenteruserinfo.Size = new System.Drawing.Size(334, 233); + this.pnlreenteruserinfo.TabIndex = 6; + // + // flowLayoutPanel8 + // + this.flowLayoutPanel8.AutoSize = true; + this.flowLayoutPanel8.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel8.Controls.Add(this.flowLayoutPanel9); + this.flowLayoutPanel8.Controls.Add(this.flowLayoutPanel10); + this.flowLayoutPanel8.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel8.Location = new System.Drawing.Point(14, 121); + this.flowLayoutPanel8.Name = "flowLayoutPanel8"; + this.flowLayoutPanel8.Size = new System.Drawing.Size(308, 65); + this.flowLayoutPanel8.TabIndex = 3; + this.flowLayoutPanel8.WrapContents = false; + // + // flowLayoutPanel9 + // + this.flowLayoutPanel9.AutoSize = true; + this.flowLayoutPanel9.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel9.Controls.Add(this.label8); + this.flowLayoutPanel9.Controls.Add(this.txtruser); + this.flowLayoutPanel9.Location = new System.Drawing.Point(3, 3); + this.flowLayoutPanel9.Name = "flowLayoutPanel9"; + this.flowLayoutPanel9.Size = new System.Drawing.Size(302, 28); + this.flowLayoutPanel9.TabIndex = 2; + // + // label8 + // + this.label8.Location = new System.Drawing.Point(3, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(108, 28); + this.label8.TabIndex = 0; + this.label8.Text = "{USER_NAME}:"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtruser + // + this.txtruser.BackColor = System.Drawing.Color.Black; + this.txtruser.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtruser.ForeColor = System.Drawing.Color.Gray; + this.txtruser.Location = new System.Drawing.Point(117, 3); + this.txtruser.Name = "txtruser"; + this.txtruser.Size = new System.Drawing.Size(182, 19); + this.txtruser.TabIndex = 1; + // + // flowLayoutPanel10 + // + this.flowLayoutPanel10.AutoSize = true; + this.flowLayoutPanel10.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel10.Controls.Add(this.label10); + this.flowLayoutPanel10.Controls.Add(this.txtrpass); + this.flowLayoutPanel10.Location = new System.Drawing.Point(3, 37); + this.flowLayoutPanel10.Name = "flowLayoutPanel10"; + this.flowLayoutPanel10.Size = new System.Drawing.Size(302, 25); + this.flowLayoutPanel10.TabIndex = 2; + // + // label10 + // + this.label10.Location = new System.Drawing.Point(3, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(108, 22); + this.label10.TabIndex = 0; + this.label10.Text = "{PASSWORD}: "; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtrpass + // + this.txtrpass.BackColor = System.Drawing.Color.Black; + this.txtrpass.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtrpass.ForeColor = System.Drawing.Color.Gray; + this.txtrpass.Location = new System.Drawing.Point(117, 3); + this.txtrpass.Name = "txtrpass"; + this.txtrpass.PasswordChar = '*'; + this.txtrpass.Size = new System.Drawing.Size(182, 19); + this.txtrpass.TabIndex = 1; + // + // button2 + // + this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button2.AutoSize = true; + this.button2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button2.FlatAppearance.BorderSize = 0; + this.button2.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.button2.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button2.ForeColor = System.Drawing.Color.White; + this.button2.Location = new System.Drawing.Point(138, 192); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(71, 22); + this.button2.TabIndex = 2; + this.button2.Text = "{SUBMIT}"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label11 + // + this.label11.Dock = System.Windows.Forms.DockStyle.Top; + this.label11.Location = new System.Drawing.Point(0, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(334, 88); + this.label11.TabIndex = 0; + this.label11.Text = "Enter new username and password\r\n\r\nAs per recent changes within the multi-user do" + + "main, you must re-enter your username and password to re-complete registration w" + + "ith the multi-user domain."; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlauthfail + // + this.pnlauthfail.BackColor = System.Drawing.Color.DarkGray; + this.pnlauthfail.Controls.Add(this.button3); + this.pnlauthfail.Controls.Add(this.label14); + this.pnlauthfail.Location = new System.Drawing.Point(161, 460); + this.pnlauthfail.Name = "pnlauthfail"; + this.pnlauthfail.Size = new System.Drawing.Size(334, 138); + this.pnlauthfail.TabIndex = 7; + // + // button3 + // + this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button3.AutoSize = true; + this.button3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button3.FlatAppearance.BorderSize = 0; + this.button3.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.button3.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button3.ForeColor = System.Drawing.Color.White; + this.button3.Location = new System.Drawing.Point(138, 97); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(71, 22); + this.button3.TabIndex = 2; + this.button3.Text = "{SUBMIT}"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // label14 + // + this.label14.Dock = System.Windows.Forms.DockStyle.Top; + this.label14.Location = new System.Drawing.Point(0, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(334, 88); + this.label14.TabIndex = 0; + this.label14.Text = "Registration Failure\r\n\r\nThat account already exists."; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlauthdone + // + this.pnlauthdone.BackColor = System.Drawing.Color.DarkGray; + this.pnlauthdone.Controls.Add(this.button4); + this.pnlauthdone.Controls.Add(this.label12); + this.pnlauthdone.Location = new System.Drawing.Point(122, 640); + this.pnlauthdone.Name = "pnlauthdone"; + this.pnlauthdone.Size = new System.Drawing.Size(334, 138); + this.pnlauthdone.TabIndex = 8; + // + // button4 + // + this.button4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button4.AutoSize = true; + this.button4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button4.FlatAppearance.BorderSize = 0; + this.button4.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.button4.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button4.ForeColor = System.Drawing.Color.White; + this.button4.Location = new System.Drawing.Point(138, 97); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(71, 22); + this.button4.TabIndex = 2; + this.button4.Text = "{SUBMIT}"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // label12 + // + this.label12.Dock = System.Windows.Forms.DockStyle.Top; + this.label12.Location = new System.Drawing.Point(0, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(334, 88); + this.label12.TabIndex = 0; + this.label12.Text = "Registration Failure\r\n\r\nYou may proceed on with your regular day."; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pgsystemstatus + // + this.pgsystemstatus.BackColor = System.Drawing.Color.Black; + this.pgsystemstatus.BlockSize = 5; + this.pgsystemstatus.Location = new System.Drawing.Point(4, 578); + this.pgsystemstatus.Maximum = 100; + this.pgsystemstatus.Name = "pgsystemstatus"; + this.pgsystemstatus.Size = new System.Drawing.Size(933, 23); + this.pgsystemstatus.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + this.pgsystemstatus.TabIndex = 2; + this.pgsystemstatus.Text = "shiftedProgressBar1"; + this.pgsystemstatus.Value = 0; + this.pgsystemstatus.Visible = false; + // + // txtterm + // + this.txtterm.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtterm.Location = new System.Drawing.Point(4, 3); + this.txtterm.Name = "txtterm"; + this.txtterm.Size = new System.Drawing.Size(933, 598); + this.txtterm.TabIndex = 1; + this.txtterm.Text = ""; + // + // pnlrelogin + // + this.pnlrelogin.BackColor = System.Drawing.Color.DarkGray; + this.pnlrelogin.Controls.Add(this.flowLayoutPanel11); + this.pnlrelogin.Controls.Add(this.button5); + this.pnlrelogin.Controls.Add(this.label16); + this.pnlrelogin.Location = new System.Drawing.Point(513, 445); + this.pnlrelogin.Name = "pnlrelogin"; + this.pnlrelogin.Size = new System.Drawing.Size(334, 233); + this.pnlrelogin.TabIndex = 7; + // + // flowLayoutPanel11 + // + this.flowLayoutPanel11.AutoSize = true; + this.flowLayoutPanel11.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel11.Controls.Add(this.flowLayoutPanel12); + this.flowLayoutPanel11.Controls.Add(this.flowLayoutPanel13); + this.flowLayoutPanel11.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel11.Location = new System.Drawing.Point(14, 121); + this.flowLayoutPanel11.Name = "flowLayoutPanel11"; + this.flowLayoutPanel11.Size = new System.Drawing.Size(308, 65); + this.flowLayoutPanel11.TabIndex = 3; + this.flowLayoutPanel11.WrapContents = false; + // + // flowLayoutPanel12 + // + this.flowLayoutPanel12.AutoSize = true; + this.flowLayoutPanel12.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel12.Controls.Add(this.label13); + this.flowLayoutPanel12.Controls.Add(this.txtluser); + this.flowLayoutPanel12.Location = new System.Drawing.Point(3, 3); + this.flowLayoutPanel12.Name = "flowLayoutPanel12"; + this.flowLayoutPanel12.Size = new System.Drawing.Size(302, 28); + this.flowLayoutPanel12.TabIndex = 2; + // + // label13 + // + this.label13.Location = new System.Drawing.Point(3, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(108, 28); + this.label13.TabIndex = 0; + this.label13.Text = "{USER_NAME}:"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtluser + // + this.txtluser.BackColor = System.Drawing.Color.Black; + this.txtluser.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtluser.ForeColor = System.Drawing.Color.Gray; + this.txtluser.Location = new System.Drawing.Point(117, 3); + this.txtluser.Name = "txtluser"; + this.txtluser.Size = new System.Drawing.Size(182, 19); + this.txtluser.TabIndex = 1; + // + // flowLayoutPanel13 + // + this.flowLayoutPanel13.AutoSize = true; + this.flowLayoutPanel13.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanel13.Controls.Add(this.label15); + this.flowLayoutPanel13.Controls.Add(this.txtlpass); + this.flowLayoutPanel13.Location = new System.Drawing.Point(3, 37); + this.flowLayoutPanel13.Name = "flowLayoutPanel13"; + this.flowLayoutPanel13.Size = new System.Drawing.Size(302, 25); + this.flowLayoutPanel13.TabIndex = 2; + // + // label15 + // + this.label15.Location = new System.Drawing.Point(3, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(108, 22); + this.label15.TabIndex = 0; + this.label15.Text = "{PASSWORD}: "; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtlpass + // + this.txtlpass.BackColor = System.Drawing.Color.Black; + this.txtlpass.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtlpass.ForeColor = System.Drawing.Color.Gray; + this.txtlpass.Location = new System.Drawing.Point(117, 3); + this.txtlpass.Name = "txtlpass"; + this.txtlpass.PasswordChar = '*'; + this.txtlpass.Size = new System.Drawing.Size(182, 19); + this.txtlpass.TabIndex = 1; + // + // button5 + // + this.button5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button5.AutoSize = true; + this.button5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button5.FlatAppearance.BorderSize = 0; + this.button5.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.button5.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button5.ForeColor = System.Drawing.Color.White; + this.button5.Location = new System.Drawing.Point(138, 192); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(71, 22); + this.button5.TabIndex = 2; + this.button5.Text = "{SUBMIT}"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // label16 + // + this.label16.Dock = System.Windows.Forms.DockStyle.Top; + this.label16.Location = new System.Drawing.Point(0, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(334, 88); + this.label16.TabIndex = 0; + this.label16.Text = "Re-enter User Login\r\n\r\nThe auto-login attempt for your current user account did n" + + "ot work on this multi-user domain. Please enter the correct username and passwor" + + "d for this MUD."; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnlrelogerror + // + this.pnlrelogerror.BackColor = System.Drawing.Color.DarkGray; + this.pnlrelogerror.Controls.Add(this.button6); + this.pnlrelogerror.Controls.Add(this.label17); + this.pnlrelogerror.Location = new System.Drawing.Point(124, 816); + this.pnlrelogerror.Name = "pnlrelogerror"; + this.pnlrelogerror.Size = new System.Drawing.Size(334, 138); + this.pnlrelogerror.TabIndex = 9; + // + // button6 + // + this.button6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button6.AutoSize = true; + this.button6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.button6.FlatAppearance.BorderSize = 0; + this.button6.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Black; + this.button6.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Red; + this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button6.ForeColor = System.Drawing.Color.White; + this.button6.Location = new System.Drawing.Point(138, 97); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(71, 22); + this.button6.TabIndex = 2; + this.button6.Text = "{SUBMIT}"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // label17 + // + this.label17.Dock = System.Windows.Forms.DockStyle.Top; + this.label17.Location = new System.Drawing.Point(0, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(334, 88); + this.label17.TabIndex = 0; + this.label17.Text = "Access denied.\r\n\r\nEither you entered details for an account that doesn\'t exist or" + + " you attempted to break into an existing account with the incorrect password."; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Oobe + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.DarkBlue; + this.ClientSize = new System.Drawing.Size(1916, 1000); + this.Controls.Add(this.pnlrelogerror); + this.Controls.Add(this.pnlrelogin); + this.Controls.Add(this.pnlauthdone); + this.Controls.Add(this.pnlauthfail); + this.Controls.Add(this.pnlreenteruserinfo); + this.Controls.Add(this.pnlterminaltutorial); + this.Controls.Add(this.pnldiscourse); + this.Controls.Add(this.pnluserinfo); + this.Controls.Add(this.pnllanguage); + this.Controls.Add(this.pnlshadow); + this.Font = new System.Drawing.Font("Lucida Console", 9F); + this.Name = "Oobe"; + this.Text = "OutOfBoxExperience"; + this.pnllanguage.ResumeLayout(false); + this.pnllanguage.PerformLayout(); + this.pnluserinfo.ResumeLayout(false); + this.pnluserinfo.PerformLayout(); + this.flowLayoutPanel1.ResumeLayout(false); + this.flowLayoutPanel1.PerformLayout(); + this.flowLayoutPanel4.ResumeLayout(false); + this.flowLayoutPanel4.PerformLayout(); + this.flowLayoutPanel3.ResumeLayout(false); + this.flowLayoutPanel3.PerformLayout(); + this.flowLayoutPanel2.ResumeLayout(false); + this.flowLayoutPanel2.PerformLayout(); + this.pnldiscourse.ResumeLayout(false); + this.pnldiscourse.PerformLayout(); + this.flowLayoutPanel5.ResumeLayout(false); + this.flowLayoutPanel5.PerformLayout(); + this.flowLayoutPanel6.ResumeLayout(false); + this.flowLayoutPanel6.PerformLayout(); + this.flowLayoutPanel7.ResumeLayout(false); + this.flowLayoutPanel7.PerformLayout(); + this.pnlterminaltutorial.ResumeLayout(false); + this.pnlreenteruserinfo.ResumeLayout(false); + this.pnlreenteruserinfo.PerformLayout(); + this.flowLayoutPanel8.ResumeLayout(false); + this.flowLayoutPanel8.PerformLayout(); + this.flowLayoutPanel9.ResumeLayout(false); + this.flowLayoutPanel9.PerformLayout(); + this.flowLayoutPanel10.ResumeLayout(false); + this.flowLayoutPanel10.PerformLayout(); + this.pnlauthfail.ResumeLayout(false); + this.pnlauthfail.PerformLayout(); + this.pnlauthdone.ResumeLayout(false); + this.pnlauthdone.PerformLayout(); + this.pnlrelogin.ResumeLayout(false); + this.pnlrelogin.PerformLayout(); + this.flowLayoutPanel11.ResumeLayout(false); + this.flowLayoutPanel11.PerformLayout(); + this.flowLayoutPanel12.ResumeLayout(false); + this.flowLayoutPanel12.PerformLayout(); + this.flowLayoutPanel13.ResumeLayout(false); + this.flowLayoutPanel13.PerformLayout(); + this.pnlrelogerror.ResumeLayout(false); + this.pnlrelogerror.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel pnlshadow; + private System.Windows.Forms.Panel pnllanguage; + private System.Windows.Forms.Button btnselectlang; + private System.Windows.Forms.ListBox lblanguage; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel pnluserinfo; + private System.Windows.Forms.Button btnsetuserinfo; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox txtusername; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox txtpassword; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtsysname; + private System.Windows.Forms.Panel pnldiscourse; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel6; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox txtdiscoursename; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel7; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox txtdiscoursepass; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Panel pnlterminaltutorial; + private Controls.TerminalBox txtterm; + private ShiftedProgressBar pgsystemstatus; + private System.Windows.Forms.Panel pnlreenteruserinfo; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel8; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox txtruser; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel10; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox txtrpass; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Panel pnlauthfail; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Panel pnlauthdone; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Panel pnlrelogin; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel11; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel12; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TextBox txtluser; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel13; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.TextBox txtlpass; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Panel pnlrelogerror; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Label label17; + } +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Oobe.cs b/ShiftOS.WinForms/Oobe.cs new file mode 100644 index 0000000..2a3e547 --- /dev/null +++ b/ShiftOS.WinForms/Oobe.cs @@ -0,0 +1,407 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using Newtonsoft.Json; +using ShiftOS.Engine; +using ShiftOS.Objects; +using ShiftOS.Objects.ShiftFS; + +namespace ShiftOS.WinForms +{ + public partial class Oobe : Form, IOobe + { + public Save MySave { get; private set; } + + public bool IsTransferMode = false; + + public Oobe() + { + InitializeComponent(); + } + + public void HideAll() + { + foreach (Control ctrl in this.Controls) + { + if (ctrl != this.pnlshadow) + { + ctrl.Hide(); + } + } + } + + public void SetupUI() + { + HideAll(); + Panel shown = null; + if (IsTransferMode == false) + { + switch (MySave.StoryPosition) + { + case 0: + shown = pnllanguage; + SetupLanguages(); + break; + case 1: + shown = pnluserinfo; + break; + case 2: + shown = pnldiscourse; + break; + default: + shown = pnlterminaltutorial; + SetupTerminal(); + break; + } + } + else + { + switch (TransferProgress) + { + case 0: + shown = pnlreenteruserinfo; + break; + case 1: + shown = pnlauthfail; + break; + case 2: + shown = pnlauthdone; + break; + case 4: + shown = pnlrelogin; + break; + case 5: + shown = pnlrelogerror; + break; + } + } + + if (shown != null) + { + shown.Location = new Point((int)(shown.Parent?.Width - shown.Width) / 2, (int)(shown?.Parent.Height - shown.Height) / 2); + pnlshadow.Size = (Size)shown.Size; + pnlshadow.Location = new Point((int)shown.Left + 15, (int)shown.Top + 15); + shown.Show(); + } + } + + private int TransferProgress = 0; + + public void SetupTerminal() + { + //just so that the terminal can access our save + SaveSystem.CurrentSave = MySave; + + Applications.Terminal.MakeWidget(txtterm); + TerminalBackend.InStory = false; + TerminalBackend.PrefixEnabled = true; + Console.WriteLine("{TERMINAL_TUTORIAL_1}"); + SaveSystem.TransferCodepointsFrom("oobe", 50); + + Shiftorium.Installed += () => + { + if (SaveSystem.CurrentSave.StoryPosition < 5) + { + if (Shiftorium.UpgradeInstalled("mud_fundamentals")) + { + Console.WriteLine("{TERMINAL_TUTORIAL_2}"); + txtterm.Height -= pgsystemstatus.Height - 4; + pgsystemstatus.Show(); + + StartInstall(); + + } + } + }; + + } + + public int thingsDone + { + get + { + return pgsystemstatus.Value; + } + set + { + this.Invoke(new Action(() => + { + pgsystemstatus.Value = value; + })); + } + } + + public int thingsToDo + { + get + { + return pgsystemstatus.Maximum; + } + set + { + this.Invoke(new Action(() => + { + pgsystemstatus.Maximum = value; + })); + } + } + + public void StartInstall() + { + Dictionary Aliases = new Dictionary(); + Aliases.Add("help", "sos.help"); + Aliases.Add("save", "sos.save"); + Aliases.Add("shutdown", "sys.shutdown"); + Aliases.Add("status", "sos.status"); + Aliases.Add("pong", "win.open{app:\"pong\"}"); + Aliases.Add("programs", "sos.help{topic:\"programs\"}"); + + foreach (var path in Paths.GetAll()) + { + Console.WriteLine("{CREATE}: " + path); + thingsDone += 1; + Thread.Sleep(500); + } + thingsToDo = Aliases.Count + Paths.GetAll().Length + 2; + + Console.WriteLine("{INSTALL}: {PONG}"); + thingsDone++; + Thread.Sleep(200); + + Console.WriteLine("{INSTALL}: {TERMINAL}"); + thingsDone++; + Thread.Sleep(200); + + foreach (var kv in Aliases) + { + Console.WriteLine($"{{ALIAS}}: {kv.Key} => {kv.Value}"); + thingsDone++; + Thread.Sleep(450); + } + + SaveSystem.CurrentSave.StoryPosition = 5; + SaveSystem.SaveGame(); + } + + List supportedLangs + { + get + { + //return JsonConvert.DeserializeObject>(Properties.Resources.languages); + + return new List(new[] { "english" }); + } + } + + public void SetupLanguages() + { + lblanguage.Items.Clear(); + + foreach (var supportedLang in supportedLangs) + { + lblanguage.Items.Add(supportedLang); + } + } + + public void SetupAllControls() + { + foreach (Control ctrl in this.Controls) + { + SetupControl(ctrl); + } + } + + public void SetupControl(Control ctrl) + { + if (!string.IsNullOrWhiteSpace(ctrl.Text)) + ctrl.Text = Localization.Parse(ctrl.Text); + try + { + foreach (Control child in ctrl.Controls) + { + SetupControl(child); + } + } + catch + { + } + + } + + private void btnselectlang_Click(object sender, EventArgs e) + { + if (lblanguage.SelectedItem != null) + { + string l = lblanguage.SelectedItem as string; + MySave.Language = l; + MySave.StoryPosition = 1; + SetupUI(); + } + } + + private void btnsetuserinfo_Click(object sender, EventArgs e) + { + if (!string.IsNullOrWhiteSpace(txtusername.Text)) + { + MySave.Username = txtusername.Text; + + MySave.Password = txtpassword.Text; + + MySave.SystemName = (string.IsNullOrWhiteSpace(txtsysname.Text)) ? "shiftos" : txtsysname.Text; + + MySave.StoryPosition = 2; + + SetupUI(); + } + } + + private void button1_Click(object sender, EventArgs e) + { + if (!string.IsNullOrWhiteSpace(txtdiscoursename.Text)) + { + MySave.DiscourseName = txtdiscoursename.Text; + MySave.DiscoursePass = txtdiscoursepass.Text; + } + MySave.StoryPosition = 3; + SetupUI(); + } + + public void StartShowing(Save save) + { + IsTransferMode = false; + MySave = save; + SetupAllControls(); + this.FormBorderStyle = FormBorderStyle.None; + this.WindowState = FormWindowState.Maximized; + this.TopMost = true; + + this.Load += (o, a) => + { + SetupUI(); + }; + SaveSystem.GameReady += () => + { + this.Invoke(new Action(() => + { + this.Close(); + (AppearanceManager.OpenForms[0] as WindowBorder).BringToFront(); + Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + })); + + }; + this.Show(); + } + + public void ShowSaveTransfer(Save save) + { + MySave = save; + ServerManager.MessageReceived += (msg) => + { + if(msg.Name == "mud_notfound") + { + TransferProgress = 2; + this.Invoke(new Action(() => { SetupUI(); })); + } + else if(msg.Name == "mud_found") + { + TransferProgress = 1; + this.Invoke(new Action(() => { SetupUI(); })); + } + else if(msg.Name == "mud_saved") + { + try + { + this.Invoke(new Action(() => + { + SaveSystem.CurrentSave = MySave; + this.Close(); + Utils.Delete(Paths.SaveFileInner); + })); + } + catch { } + } + }; + IsTransferMode = true; + this.FormBorderStyle = FormBorderStyle.None; + this.WindowState = FormWindowState.Maximized; + this.TopMost = true; + this.Show(); + SetupUI(); + } + + private void button2_Click(object sender, EventArgs e) + { + pnlreenteruserinfo.Hide(); + pnlshadow.Size = new Size(0, 0); + ServerManager.SendMessage("mud_checkuserexists", $@"{{ + username: ""{txtruser.Text}"", + password: ""{txtrpass.Text}"" +}}"); + MySave.Username = txtruser.Text; + MySave.Password = txtrpass.Text; + } + + private void button3_Click(object sender, EventArgs e) + { + TransferProgress = 0; + SetupUI(); + } + + private void button4_Click(object sender, EventArgs e) + { + ServerManager.SendMessage("mud_save", JsonConvert.SerializeObject(MySave)); + } + + public void PromptForLogin() + { + ServerManager.MessageReceived += (msg) => + { + if (msg.Name == "mud_notfound") + { + TransferProgress = 5; + this.Invoke(new Action(() => { SetupUI(); })); + } + else if (msg.Name == "mud_found") + { + this.Invoke(new Action(() => + { + Utils.WriteAllText(Paths.GetPath("user.dat"), $@"{{ + username: ""{txtluser.Text}"", + password: ""{txtlpass.Text}"" +}}"); + SaveSystem.ReadSave(); + this.Close(); + })); + } + }; + IsTransferMode = true; + TransferProgress = 4; + this.FormBorderStyle = FormBorderStyle.None; + this.WindowState = FormWindowState.Maximized; + this.TopMost = true; + this.Show(); + SetupUI(); + } + + private void button6_Click(object sender, EventArgs e) + { + TransferProgress = 4; + SetupUI(); + } + + private void button5_Click(object sender, EventArgs e) + { + ServerManager.SendMessage("mud_checkuserexists", $@"{{ + username: ""{txtluser.Text}"", + password: ""{txtlpass.Text}"" +}}"); + } + } +} diff --git a/ShiftOS.WinForms/Oobe.resx b/ShiftOS.WinForms/Oobe.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/Oobe.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Program.cs b/ShiftOS.WinForms/Program.cs new file mode 100644 index 0000000..458f4c2 --- /dev/null +++ b/ShiftOS.WinForms/Program.cs @@ -0,0 +1,180 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using Newtonsoft.Json; +using static ShiftOS.Objects.ShiftFS.Utils; +using ShiftOS.WinForms.Applications; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Localization.RegisterProvider(new WFLanguageProvider()); + Shiftorium.RegisterProvider(new WinformsShiftoriumProvider()); + AppearanceManager.OnExit += () => + { + Environment.Exit(0); + }; + + TerminalBackend.TerminalRequested += () => + { + AppearanceManager.SetupWindow(new Applications.Terminal()); + }; + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + AppearanceManager.Initiate(new WinformsWindowManager()); + OutOfBoxExperience.Init(new Oobe()); + Infobox.Init(new WinformsInfobox()); + FileSkimmerBackend.Init(new WinformsFSFrontend()); + var desk = new WinformsDesktop(); + Desktop.Init(desk); + Application.Run(desk); + } + } + + internal class WinformsShiftoriumProvider : IShiftoriumProvider + { + public List GetDefaults() + { + return JsonConvert.DeserializeObject>(Properties.Resources.Shiftorium); + } + } + + internal class WinformsInfobox : IInfobox + { + public void Open(string title, string msg) + { + Dialog frm = new Dialog(); + frm.Text = title; + var pnl = new Panel(); + var flow = new FlowLayoutPanel(); + var btnok = new Button(); + btnok.AutoSize = true; + btnok.AutoSizeMode = AutoSizeMode.GrowAndShrink; + flow.Height = btnok.Height + 4; + btnok.Text = "ok"; + flow.Dock = DockStyle.Bottom; + flow.Controls.Add(btnok); + btnok.Show(); btnok.Click += (o, a) => + { + frm.Close(); + }; + pnl.Controls.Add(flow); + flow.Show(); + var lbl = new Label(); + lbl.Text = msg; + lbl.TextAlign = ContentAlignment.MiddleCenter; + lbl.Dock = DockStyle.Fill; + lbl.AutoSize = false; + pnl.Controls.Add(lbl); lbl.Show(); + frm.Controls.Add(pnl); + pnl.Dock = DockStyle.Fill; + frm.Size = new Size(320, 200); + AppearanceManager.SetupDialog(frm); + + } + } + + public class WinformsFSFrontend : IFileSkimmer + { + public void OpenDirectory(string path) + { + var fs = new Applications.FileSkimmer(); + AppearanceManager.SetupWindow(fs); + fs.ChangeDirectory(path); + } + + public void GetPath(string[] filetypes, FileOpenerStyle style, Action callback) + { + AppearanceManager.SetupDialog(new Applications.FileDialog(filetypes, style, callback)); + } + + public void OpenFile(string path) + { + try + { + switch (FileSkimmerBackend.GetFileType(path)) + { + case FileType.TextFile: + if (!Shiftorium.UpgradeInstalled("textpad")) + throw new Exception(); + + var txt = new TextPad(); + AppearanceManager.SetupWindow(txt); + txt.LoadFile(path); + break; + case FileType.Executable: + //NYI + throw new Exception(); + case FileType.Python: + var p = new Engine.Scripting.PythonInterpreter(); + try + { + p.ExecuteFile(path); + } + catch (Exception ex) + { + Infobox.Show("{PY_EXCEPTION}", ex.Message); + } + break; + case FileType.Lua: + try + { + var runner = new Engine.Scripting.LuaInterpreter(); + runner.ExecuteFile(path); + } + catch (Exception ex) + { + Infobox.Show("{LUA_ERROR}", ex.Message); + } + break; + case FileType.JSON: + //NYI + throw new Exception(); + case FileType.Filesystem: + MountPersistent(path); + //If this doesn't fail... + FileSkimmerBackend.OpenDirectory((Mounts.Count - 1).ToString() + ":"); + break; + case FileType.Skin: + if (!Shiftorium.UpgradeInstalled("skinning")) + throw new Exception(); + + var sl = new Skin_Loader(); + AppearanceManager.SetupWindow(sl); + sl.LoadedSkin = JsonConvert.DeserializeObject(ReadAllText(path)); + sl.SetupUI(); + break; + case FileType.Image: + if (!Shiftorium.UpgradeInstalled("artpad_open")) + throw new Exception(); + + var ap = new Artpad(); + AppearanceManager.SetupWindow(ap); + ap.LoadPicture(path); + break; + default: + throw new Exception(); + + } + } + catch + { + Infobox.Show("{NO_APP_TO_OPEN}", "{NO_APP_TO_OPEN_EXP}"); + } + + } + + } +} diff --git a/ShiftOS.WinForms/Properties/AssemblyInfo.cs b/ShiftOS.WinForms/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0e51d99 --- /dev/null +++ b/ShiftOS.WinForms/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ShiftOS.WinForms")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ShiftOS.WinForms")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("2295d2e2-3a00-4e02-b66f-b961ac329fe6")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ShiftOS.WinForms/Properties/Resources.Designer.cs b/ShiftOS.WinForms/Properties/Resources.Designer.cs new file mode 100644 index 0000000..85b14c8 --- /dev/null +++ b/ShiftOS.WinForms/Properties/Resources.Designer.cs @@ -0,0 +1,585 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.WinForms.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ShiftOS.WinForms.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadcirclerubber { + get { + object obj = ResourceManager.GetObject("ArtPadcirclerubber", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadcirclerubberselected { + get { + object obj = ResourceManager.GetObject("ArtPadcirclerubberselected", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPaderacer { + get { + object obj = ResourceManager.GetObject("ArtPaderacer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadfloodfill { + get { + object obj = ResourceManager.GetObject("ArtPadfloodfill", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadlinetool { + get { + object obj = ResourceManager.GetObject("ArtPadlinetool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadmagnify { + get { + object obj = ResourceManager.GetObject("ArtPadmagnify", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadnew { + get { + object obj = ResourceManager.GetObject("ArtPadnew", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadopen { + get { + object obj = ResourceManager.GetObject("ArtPadopen", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadOval { + get { + object obj = ResourceManager.GetObject("ArtPadOval", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadpaintbrush { + get { + object obj = ResourceManager.GetObject("ArtPadpaintbrush", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadpencil { + get { + object obj = ResourceManager.GetObject("ArtPadpencil", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadpixelplacer { + get { + object obj = ResourceManager.GetObject("ArtPadpixelplacer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadRectangle { + get { + object obj = ResourceManager.GetObject("ArtPadRectangle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadredo { + get { + object obj = ResourceManager.GetObject("ArtPadredo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadsave { + get { + object obj = ResourceManager.GetObject("ArtPadsave", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadsquarerubber { + get { + object obj = ResourceManager.GetObject("ArtPadsquarerubber", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadsquarerubberselected { + get { + object obj = ResourceManager.GetObject("ArtPadsquarerubberselected", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadtexttool { + get { + object obj = ResourceManager.GetObject("ArtPadtexttool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadundo { + get { + object obj = ResourceManager.GetObject("ArtPadundo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon0 { + get { + object obj = ResourceManager.GetObject("fileicon0", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon1 { + get { + object obj = ResourceManager.GetObject("fileicon1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon10 { + get { + object obj = ResourceManager.GetObject("fileicon10", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon11 { + get { + object obj = ResourceManager.GetObject("fileicon11", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon12 { + get { + object obj = ResourceManager.GetObject("fileicon12", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon13 { + get { + object obj = ResourceManager.GetObject("fileicon13", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon14 { + get { + object obj = ResourceManager.GetObject("fileicon14", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon15 { + get { + object obj = ResourceManager.GetObject("fileicon15", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon16 { + get { + object obj = ResourceManager.GetObject("fileicon16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon17 { + get { + object obj = ResourceManager.GetObject("fileicon17", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon18 { + get { + object obj = ResourceManager.GetObject("fileicon18", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon19 { + get { + object obj = ResourceManager.GetObject("fileicon19", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon2 { + get { + object obj = ResourceManager.GetObject("fileicon2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon3 { + get { + object obj = ResourceManager.GetObject("fileicon3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon4 { + get { + object obj = ResourceManager.GetObject("fileicon4", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon5 { + get { + object obj = ResourceManager.GetObject("fileicon5", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon6 { + get { + object obj = ResourceManager.GetObject("fileicon6", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon7 { + get { + object obj = ResourceManager.GetObject("fileicon7", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon8 { + get { + object obj = ResourceManager.GetObject("fileicon8", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicon9 { + get { + object obj = ResourceManager.GetObject("fileicon9", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileiconsaa { + get { + object obj = ResourceManager.GetObject("fileiconsaa", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap FloppyDriveIcon { + get { + object obj = ResourceManager.GetObject("FloppyDriveIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string hello { + get { + return ResourceManager.GetString("hello", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [ + /// "english" + /// "deutsch - in beta" + ///]. + /// + internal static string languages { + get { + return ResourceManager.GetString("languages", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [ + /// { + /// Name: "MUD Fundamentals", + /// Cost: 50, + /// Description: "Some basic commands for the terminal that'll help you out in the multi-user domain.", + /// Dependencies: null + /// }, + /// { + /// Name: "WM 4 Windows", + /// Cost: 150, + /// Description: "Display up to 4 simultaneous windows on-screen in a 2x2 grid.", + /// Dependencies: "window_manager" + /// }, + /// { + /// Name: "Virus Scanner", + /// Cost: 2000, + /// Description: "Being inside the multi-user domain comes with many risks, one of which being viruses. The Virus Scanner can m [rest of string was truncated]";. + /// + internal static string Shiftorium { + get { + return ResourceManager.GetString("Shiftorium", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [ + /// "http://downloads.michaeltheshifter.me/music/blockride.mp3", + /// "http://downloads.michaeltheshifter.me/music/nightcoding.mp3" + ///]. + /// + internal static string Songs { + get { + return ResourceManager.GetString("Songs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to { + /// "{SUBMIT}":"Bestätigen", + /// + ///"{TERMINAL_TUTORIAL_1}":"Wilkommen zum ShiftOS Terminal. Hier wirst du die meiste Zeit in ShiftOS verbringen. + /// + ///Eine kurze Erklärung wie du das Terminal benutzt lautet wiefolgt. Du kannst das command 'sos.help' benutzen um eine Liste aller commands aufzurufen. Schreib es + ///einfach in das Terminal und drücke <enter> um alle commands anzuzeigen. + /// + ///Commands können mit argumenten versehen werden, indem du ein key-value Paar in einem {} Block hinter dem command angibst. Zum Be [rest of string was truncated]";. + /// + internal static string strings_de { + get { + return ResourceManager.GetString("strings_de", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to { + /// "{SUBMIT}":"Submit", + /// + ///"{TERMINAL_TUTORIAL_1}":"Welcome to the ShiftOS terminal. This is where you will spend the bulk of your time within ShiftOS. + /// + ///A brief rundown of how to use the terminal is as follows. You can use the 'sos.help' command to show a list of all commands. Simply type it in and strike <enter> to view all commands. + /// + ///Commands can be sent arguments by specifying a key-value pair inside a {} block at the end of the command. For example: + /// + ///some.command{print:\"hello\"} + ///math.add{op1 [rest of string was truncated]";. + /// + internal static string strings_en { + get { + return ResourceManager.GetString("strings_en", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to { + /// Character: "sys", + /// Lines:[ + /// "Hello there, %user.", + /// "Welcome to ShiftOS.", + /// "This is an automated message to all new sentiences within the ShiftOS multi-user domain.", + /// "Before you can begin with ShiftOS, you'll need to know a few things about it.", + /// "One: Terminal command syntax.", + /// "Inside ShiftOS, the bulk of your time is going to be spent within the Terminal.", + /// "The Terminal is an application that starts up when you turn on your computer. It allows you to execute system commands, ope [rest of string was truncated]";. + /// + internal static string sys_shiftoriumstory { + get { + return ResourceManager.GetString("sys_shiftoriumstory", resourceCulture); + } + } + } +} diff --git a/ShiftOS.WinForms/Properties/Resources.resx b/ShiftOS.WinForms/Properties/Resources.resx new file mode 100644 index 0000000..279a944 --- /dev/null +++ b/ShiftOS.WinForms/Properties/Resources.resx @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\ArtPadcirclerubber.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadcirclerubberselected.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPaderacer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadfloodfill.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadlinetool.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadmagnify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadnew.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadopen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadOval.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadpaintbrush.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadpencil.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadpixelplacer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadRectangle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadredo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadsave.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadsquarerubber.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadsquarerubberselected.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadtexttool.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArtPadundo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon10.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon11.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon12.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon13.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon14.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon15.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon16.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon17.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon18.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon19.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon2.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon3.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon4.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon5.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon6.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon7.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon8.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileicon9.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\fileiconsaa.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\FloppyDriveIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\hello.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + + + ..\Resources\languages.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Shiftorium.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Songs.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\strings_de.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\strings_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\sys_shiftoriumstory.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Properties/Settings.Designer.cs b/ShiftOS.WinForms/Properties/Settings.Designer.cs new file mode 100644 index 0000000..e9093dc --- /dev/null +++ b/ShiftOS.WinForms/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.WinForms.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/ShiftOS.WinForms/Properties/Settings.settings b/ShiftOS.WinForms/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/ShiftOS.WinForms/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ShiftOS.WinForms/Resources/ArtPadOval.png b/ShiftOS.WinForms/Resources/ArtPadOval.png new file mode 100644 index 0000000000000000000000000000000000000000..fceec4c242ef5ea504100c532a536c70edcd0c2a GIT binary patch literal 49912 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 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadRectangle.png b/ShiftOS.WinForms/Resources/ArtPadRectangle.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e2aa2eb54de3bf5152b2d926c44533b2ec36d5 GIT binary patch literal 47715 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�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 H_aFKvb(>yO literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPaderacer.png b/ShiftOS.WinForms/Resources/ArtPaderacer.png new file mode 100644 index 0000000000000000000000000000000000000000..051718cfc2cc82e6f0e740f233678de977aa545f GIT binary patch literal 61665 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

&O?5B3d-JC z$pex48ASY95rN{cL>V@WuluzF!m)M|$sA%ou$uIr2~asoaQQkOUMBfuX6-?#otsRK z>7G+;vb|sV-Nha-Uw~4_HJ!1oi&6yZWD^(1U7Wxwt?hH6qbb~82k+0tSgE<*nW`fZ zq+LsQN$TF%ZdxsLCB!~Ts0w_rwXh8d7kIMR!-rspG%X;ykL(8Uq%p&5;M)#`Ly^7w zXW~FuoEz|a(%cJ-aAjR~AoeEk&0|GH_&RK@25F}F_Up7C5I_CGrMmL4jy^cB6(*67 zT{>Uy3hx>FBLV)Df<-fB>U%FkI-U$ATVGc8tt$U5b!L=uG4(d5XU;&zgjBoo+jc<; zW==8~c|W7<_GFY3ZL2#}V`0UI64~|hx3r@1Rj%FuFg|Q?TjXvB56JtTrYU<*+IT(vjf!ibIZ|3ZiZ7+p^Y%nLFG$-!V`}8dyglPWZgIeLV16BYk+ASO-zR zaE=+zs?CANdg9%XY+($tcb5)Z@=#YMF8B|7OM5NF*YVG0NG9u?-FbW0b1uE5xx_Ia zbCf%Ex~|-MB^)BY(G?h?2lefT&m$LJi+3cQ*KIt9lcl4uR;&>q6dAI|W_CBG*K?6s z7x@4GC`l+1b1j!5$A|SB6a|Hs-cI}R#Y?Ixq82VroaUA;AFVijom~H3A1V&;bv3te zu=1q)Xk}yPEWrTj>}8;{vy@=a6Hw(=b(OWUwNvtUw|eidrfuQxU?F130FZnx?koBz zz{$$foX*$D(b+@PSAyYhxuTEpzbCnZ7nhHZ52p_wr;ED{7mtXD$X{Z3c{v^_I6VBEJ?0j2H5qllV0 zES@KCjiM!Q2M+6{#<1FEx48%@4!Af_N=Pzd!z3ahuiK0@pp85BAzSsZgS}hGmo&U=>&-Z+4r4%Jn-D{;UM}K|0@AAR#{w|Myekgwg z!X+2EAOUF1y2u3yKx5WLE=T|xvo3N$0??RskqZ)l#;l86kN`AhUF3oUpfT$r7bF0U zSr@q=0cgy+$OQ>NW7b73NB|nME^k;k%G|le8es*~M&)Q2ob{R24rGS5unOo$vnTKCm|)&1}Uemo+@@;YxMWcdb;~ z9;BDnPcNDWw2p7nqU_Vni#BVy{4g^ibtNpAt!v}U6@8*czoLqs4R+oby{T4*?W!&< zPj2ZLt^K>7zbM!LaAmHxS;NbA#)LsrYvh<-81Fg$@^iqcKCZO)Yd`cpmI#)?o;c0r c?!%<3+mI#1wz&81r~Y4sDUgcAxt!Y0e~T3zcmMzZ literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadundo.png b/ShiftOS.WinForms/Resources/ArtPadundo.png new file mode 100644 index 0000000000000000000000000000000000000000..6484122248840bc2c3b2a5b093c5f809eec098cc GIT binary patch literal 63747 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 KS0(c%?Ee9$BySJ^ literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/FloppyDriveIcon.png b/ShiftOS.WinForms/Resources/FloppyDriveIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..09ad898fb32064816319ab4afeba4c3861ad356b GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@g3~=+977`9-_E?v)u152diUS|`MJvSVOh;j zM7WFP+y(9JzBmd-e%vsSP4;m^3-vPbvd$Fp$MKC#$oVN|2b zd$UA+)=59fU)GUDA-szwF8+Va@X+eE|LX6qel>JjpC)e#z1)vV4W+&YEAJI{=-?;OXk;vd$@?Nu?2)2LO*i BV%-1$ literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/Shiftorium.txt b/ShiftOS.WinForms/Resources/Shiftorium.txt new file mode 100644 index 0000000..614c668 --- /dev/null +++ b/ShiftOS.WinForms/Resources/Shiftorium.txt @@ -0,0 +1,658 @@ +[ + { + Name: "MUD Fundamentals", + Cost: 50, + Description: "Some basic commands for the terminal that'll help you out in the multi-user domain.", + Dependencies: null + }, + { + Name: "Color Depth Dithering", + Cost: 1000, + Description: "Right now, if you try to display images on the screen, with a low color depth like we have, the image will be totally unrecognizable! With this upgrade, we can adapt a simple 1-dimensional dithering algorithm into the video driver to hopefully smooth out the transition between colors.", + }, + { + Name: "Color Depth Floyd-Steinberg Dithering", + Cost: 2000, + Description: "So your images look... alright... with the new dithering algorithm, but let's take things even further and get rid of the jagged lines in the image using a 2-dimensional algorithm called the Floyd-Steinberg algorithm. It'll sure make things look better.", + Dependencies: "color_depth_dithering" + }, + { + Name: "Color Depth 2 bits", + Cost: 2000, + Description: "We can only display black and white - 0 or 1 in binary. Let's take it even further by adding an extra bit to our binary notation - making black, white, dark gray and light gray possible!", + }, + { + Name: "Color Depth 4 bits", + Cost: 4000, + Description: "4 colors is nice - but let's take it even further. With our dithering algorithm in place, let's make our images even smoother by giving a 16-color palette to the video driver!", + Dependencies: "color_depth_2_bits;color_depth_dithering" + }, + { + Name: "Color Depth 6 bits", + Cost: 6000, + Description: "Let's extend our color range into the depths of 6 bits! This'll make up to 64 different shades of gray possible! We're getting even closer to modern-day color...", + Dependencies: "color_depth_4_bits" + }, + { + Name: "Color Depth 8 bits", + Cost: 8000, + Description: "What do you get when you bite your food? You get perhaps a yummy taste. What do you get when you take a byte of memory? 256 shades of gray, of course!", + Dependencies: "color_depth_6_bits" + }, + { + Name: "Color Depth 16 bits", + Cost: 16000, + Description: "If we were just given another byte... we could divide the two up into three channels and allow mixing and matching of the channels to create colors other than gray! Let's do it.", + Dependencies: "color_depth_8_bits" + }, + { + Name: "Color Depth 24 Bits", + Cost: 24000, + Description: "Having actual color is nice for our images as we can truly see detail in our images - but if we had a third byte, each channel could have up to 256 values - adding up to almost 17 million different colors! Our eyes can't even distinguish that many.", + Dependencies: "color_depth_16_bits" + }, + { + Name: "AL MUD Control Centre", + Cost: 75, + Dependencies: "mud_fundamentals;app_launcher", + Description: "Want to access your MUD profile, legions, jobs and shops, but don't want to open your Terminal? This upgrade is for you!" + }, + { + Name: "Kernel Coherence", + Cost: 10000, + Dependencies: "wm_free_placement", + Description: "With the free placement upgrade, you can place windows of any size anywhere on the desktop, which means theoretically you could add kernel coherence between ShiftOS and another GUI-based operating system and run their applications inside ShiftOS. This upgrade unlocks that.", + }, + { + Name: "Pong Increased Paddle Size", + Cost: 1000, + Dependencies: "pong_upgrade", + Description: "Having trouble keeping that darn ball in front of you? Well, with this upgrade, your paddle increases in height.... slightly.", + }, + { + Name: "WM 4 Windows", + Cost: 150, + Description: "Display up to 4 simultaneous windows on-screen in a 2x2 grid.", + Dependencies: "window_manager" + }, + { + Name: "Virus Scanner", + Cost: 2000, + Description: "Being inside the multi-user domain comes with many risks, one of which being viruses. The Virus Scanner can mitigate this threat by allowing you to scan the files on your system for any viruses and delete them for you.", + Dependencies: "mud_fundamentals;file_skimmer" + }, + { + Name: "AL Virus Scanner", + Cost: 150, + Description: "Add an App Launcher entry for the Virus Scanner.", + Dependencies: "virus_scanner;app_launcher" + }, + { + Name: "WM Panel Buttons", + Cost: 200, + Description: "Sometimes it's useful to have a list of windows that are open on your system so you can easily switch between them.", + Dependencies: "desktop;wm_unlimited_windows" + }, + { + Name: "AL Skin Loader", + Cost: 125, + Description: "Buy this upgrade to add an entry for the Skin Loader to the App Launcher.", + Dependencies: "app_launcher;skinning" + }, + { + Name: "Shift Panel Buttons", + Cost: 150, + Description: "Want to customize your panel buttons? This Shifter category is for you!", + Dependencies: "wm_panel_buttons" + }, + { + Name: "TextPad Lua Support", + Cost: 450, + Description: "Use TextPad to write Lua scripts!", + Dependencies: "textpad;file_skimmer", + }, + { + Name: "TextPad Python Support", + Cost: 450, + Description: "Use TextPad to write Python scripts!", + Dependencies: "textpad;file_skimmer", + }, + { + Name: "App Launcher", + Cost: 10000, + Description: "It may be expensive, but having an easy-access menu to all your apps is very valuable.", + Dependencies:"desktop;wm_unlimited_windows" + }, + { + Name: "MUD Cracker", + Cost: 500, + Description: "An application for cracking the current multi-user domain's admin password.", + Dependencies: "mud_fundamentals" + }, + { + Name: "AL MUD Cracker", + Cost: 100, + Description: "Add a launcher item for the MUD cracker.", + Dependencies: "mud_cracker;app_launcher" + }, + { + Name: "Textpad", + Cost: 2500, + Description: "\"Write, save and open a text document.\"", + Dependencies: "file_skimmer" + }, + { + Name: "Shifter", + Cost: 20000, + Description: "Tired of the green and black look that is ShiftOS's default skin? Use the Shifter to shift it your way.", + Dependencies: "desktop;wm_unlimited_windows", + }, + { + Name: "Name Changer", + Cost: 10000, + Description: "Are you not a linux person and want the terminal to be called Command Prompt? Well this app is for you!", + Dependencies: "shifter", + }, + { + Name: "AL Name Changer", + Cost: 200, + Description: "Launch the Name Changer from the app launcher.", + Dependencies: "name_changer", + }, + { + Name: "{UPGRADE_DEVELOPMENT}", + Cost: 20000, + Description: "Dont buy this upgrade yet, it does nothing", + Dependencies: "", + }, + { + Name: "AL Shifter", + Cost: 500, + Description: "Launch the Shifter from the app launcher.", + Dependencies: "app_launcher;shifter" + }, + { + Name: "AL Pong", + Cost: 100, + Description: "Launch Pong from the app launcher.", + Dependencies: "app_launcher" + }, + { + Name: "AL Textpad", + Cost: 250, + Description: "Write, save and open text documents from the App Launcher.", + Dependencies:"app_launcher;textpad" + }, + { + Name: "AL File Skimmer", + Cost: 200, + Description: "Open the File Skimmer from your App Launcher.", + Dependencies:"app_launcher;file_skimmer" + }, + { + Name: "WM Free Placement", + Cost: 2000, + Description: "Disable the grid system and allow windows to be freely positioned, moved, and overlapped.", + Dependencies: "wm_4_windows" + }, + { + Name: "Desktop", + Cost: 10000, + Description: "Use a fully customizable desktop in place of the terminal to control ShiftOS.", + Dependencies: "window_manager" + }, + { + Name: "Close command", + Cost: 150, + Description: "Add a win.close script to allow you to close windows.", + Dependencies: "mud_fundamentals", + }, + { + Name: "WM Unlimited Windows", + Cost: 5000, + Description: "Break the limit of windows that can be run. Perfect for high-maintenance tasks.", + Dependencies: "wm_free_placement;close_command" + }, + { + Name: "Minimize Command", + Cost: 1250, + Description: "Use the win.mini{id} command to minimize/restore windows.", + Dependencies: "desktop" + }, + { + Name: "Maximize Command", + Cost: 1250, + Description: "Use the win.max{id} command to maximize windows.", + Dependencies: "wm_titlebar;desktop;wm_free_placement" + }, + { + Name: "Close Button", + Cost: 1000, + Description: "Add a close button to the titlebar to easily close applications.", + Dependencies: "wm_titlebar;close_command" + }, + { + Name: "Minimize Button", + Cost: 1000, + Description: "Minimize windows using a button on the titlebar", + Dependencies: "wm_titlebar;minimize_command" + }, + { + Name: "Shiftorium Bulk Buy", + Cost: 2000, + Description:"Tired of typing shiftorium.buy{} all the time? This upgrade will add a bulk buy command which allows you to specify a comma-separated list of upgrades to buy." + }, + { + Name: "File Skimmer", + Cost: 500, + Description: "View the files on your computer using File Skimmer.", + Dependencies: null + }, + { + Name: "Maximize Button", + Cost: 500, + Description: "Maximize windows using a button on the titlebar", + Dependencies: "wm_titlebar;maximize_command" + }, + { + Name: "Clock", + Cost: 100, + Description: "Adds a script that shows the amount of seconds that have passed since Midnight. Use 'sys.clock' to activate it.", + Dependencies: "mud_fundamentals" + }, + { + Name: "WM Titlebar", + Cost: 250, + Description: "Display a title on each window.", + Dependencies: "window_manager" + }, + { + Name: "Clock Minutes", + Cost: 250, + Description: "Upgrade the sys.clock command to show minutes since midnight with a {type:\"m\"} argument.", + Dependencies: "clock" + }, + { + Name: "Clock Hours", + Cost: 225, + Description: "Upgrade the sys.clock command to show hours since midnight with a {type:\"h\"} argument.", + Dependencies: "clock_minutes" + }, + { + Name: "Clock AM and PM", + Cost: 75, + Description: "Change the clock to be 12-hour based, showing whether the current time is ante-meridiem or post-meridiem.", + Dependencies: "clock_hours", + }, + { + Name: "Full Precision Time", + Cost: 500, + Description: "Show full-precision time by default when using sys.clock.", + Dependencies: "clock_am_and_pm" + }, + { + Name: "Desktop Clock Widget", + Cost: 1000, + Description: "Add a widget to the desktop which shows the results of sys.clock as text on the desktop.", + Dependencies: "clock;desktop" + }, + { + Name: "AL MUD Chat", + Cost: 125, + Description: "Adds an app launcher entry for the MUD chat application.", + Dependencies: "mud_fundamentals;app_launcher" + }, + { + Name: "Draggable windows", + Cost: 400, + Description: "Allows you to drag windows around with the mouse using the title bar.", + Dependencies: "wm_titlebar;wm_free_placement" + }, + { + Name: "Window Manager", + Cost: 100, + Description: "Allows you to run two windows simultaneously within ShiftOS.", + Dependencies: "mud_fundamentals" + }, + { + Name: "Pong Upgrade", + Cost: 4000, + Description: "This upgrade makes pong double the codepoints you get from it so you can spend less time grinding!", + Dependencies: "mud_fundamentals;window_manager" + }, + { + Name: "Pong Upgrade 2", + Cost: 10000, + Description: "So you lost in pong, it must be sad to lose all the codepoints you've gained. With this upgrade you can save 1 percent of the loss, so at least you get something for losing!", + Dependencies: "mud_fundamentals;window_manager;pong_upgrade" + }, + { + Name: "WAV Player", + Cost: 10000, + Description: "Want to listen to the greatest tunes? Well get this app asap!", + Dependencies: "desktop;wm_free_placement" + }, + { + Name: "WAV Player AL", + Cost: 300, + Description: "Just another app launcher, making it easier to listen to your favorite songs!", + Dependencies: "desktop;wm_free_placement;wav_player" + }, + + //SHIFTER SUBCATEGORIES + + { + Name: "Shift Titlebar", + Cost: 100, + Description: "Customize the Titlebar within the Shifter.", + Dependencies: "shifter;wm_titlebar" + }, + { + Name: "Shift Title Text", + Cost: 100, + Description: "Title text looking boring? This upgrade lets you customize the font, color, and position of the Title Text.", + Dependencies: "shift_titlebar" + }, + { + Name: "Shift Window Borders", + Cost: 100, + Description: "Want to customize the look of the ShiftOS window borders? Buy this upgrade and you can customize the color and thickness of the borders.", + Dependencies: "shifter" + }, + { + Name: "Shift Desktop Panel", + Cost: 100, + Description: "Not liking your desktop panel the way it is? Buy this upgrade to allow you to change the color, height, and position of the desktop panel.", + Dependencies: "shifter;desktop" + }, + { + Name: "Shift App Launcher", + Cost: 100, + Description: "You've made your desktop panel look very nice, but your app launcher looks kinda out of place. This upgrade will fix that, allowing you to change the position, size, and appearance of the app launcher button.", + Dependencies: "shift_desktop_panel;app_launcher" + }, + { + Name: "Shift Panel Clock", + Cost: 100, + Dependencies: "shift_desktop_panel;desktop_clock_widget", + Description: "That clock is very simple - let's shift it! This upgrade allows you to customize the font and color of the panel clock." + }, + { + Name: "Shift Title Buttons", + Cost: 100, + Dependencies: "close_button;minimize_button;maximize_button;shift_titlebar", + Description: "Those title buttons look very similar and primitive - with this upgrade you can change the size, position, and color of each button." + }, + + //SKINNING STUFF + + { + Name: "Skinning", + Cost: 50000, + Description: "It may be expensive, but with this upgrade, you can break the limitations of using just solid colors and gradients for your skin and start using images!", + Dependencies: "shifter" + }, + + + //ARTPAD + { + Name: "Artpad", + Cost: 25000, + Description: "ArtPad is a very extensible tool that allows you to draw images within ShiftOS. Buy this upgrade to gain access to it through win.open{}!" + }, + { + Name: "AL Artpad", + Cost: 250, + Description: "Add an App Launcher Entry for Artpad!", + Dependencies: "artpad;app_launcher" + }, + + + + + //ARTPAD PIXEL LIMITS + + { + Name: "Artpad Pixel Limit 4", + Cost: 100, + Dependencies: "artpad", + Description: "Having ArtPad is great, but there's not much you can draw with only 2 pixels. Buy this upgrade to increase the breathing room your imagination can have." + }, + { + Name: "Artpad Pixel Limit 8", + Cost: 150, + Dependencies: "artpad_pixel_limit_4", + Description: "With a 4 pixel limit, you can do some simple patterns and such, but it's still not great. Buy this upgrade to double the pixel limit and add even more possibilities!" + }, + { + Name: "Artpad Pixel Limit 16", + Cost: 200, + Dependencies:"artpad_pixel_limit_8", + Description: "Now we can have 8-pixel images, but we still can't do much more than simple patterns and icons. Use this upgrade to double the max image size yet again and allow even more images!" + }, + { + Name: "Artpad Pixel Limit 64", + Cost: 600, + Dependencies: "artpad_pixel_limit_16", + Description: "Alright. Now it's time to kick it into high-gear. Patterns and icons are fun, but let's increase the image size even more to allow higher-detail icons/patterns and small sprites!" + }, + { + Name: "Artpad Pixel Limit 256", + Cost: 1000, + Dependencies: "artpad_pixel_limit_64", + Description: "We can create high resolution icons and patterns, but we still can't really do too much more than that. Buy this upgrade and you'll be able to have up to 256 pixels in an image!" + }, + { + Name: "Artpad Pixel Limit 1024", + Cost: 1250, + Dependencies: "artpad_pixel_limit_256", + Description: "Let's make things even higher quality! With this upgrade, we'll be able to increase the image size by 4 times! ArtPad is really starting to advance." + }, + { + Name: "Artpad Pixel Limit 4096", + Cost: 4800, + Dependencies: "artpad_pixel_limit_1024", + Description: "Now we can do 1024-pixel images, but how about increasing the limit by 4 times yet again? That'll leave even more room for imagination and drawings!" + }, + { + Name: "Artpad Pixel Limit 16384", + Cost: 19200, + Dependencies: "artpad_pixel_limit_4096", + Description: "We're ever-so-slightly approaching limitless possibilities. With this upgrade, images in ArtPad will be able to have up to 16384 pixels. We can make desktop backgrounds for small monitors!" + }, + { + Name: "Artpad Pixel Limit 65536", + Cost: 76800, + Dependencies: "artpad_pixel_limit_16384", + Description: "Wow! This might be the last time we'll have to deal with pixel limits. It's amazing how far we've came since 2-pixel gradients. Now let's go even further." + }, + { + Name: "Artpad Limitless Pixels", + Cost: 100000, + Dependencies: "artpad_pixel_limit_65536", + Description: "We have a pretty high pixel limit, but with this upgrade, pixel limits are no more! With limitless pixels comes limitless creativity. Have fun!" + }, + + { + Name: "AL Shutdown", + Cost: 300, + Dependencies: "app_launcher", + Description: "Want to shut down ShiftOS from your app launcher? This is the perfect upgrade for you." + }, + + { + Name: "Help Description", + Id: "help_description", + Cost: 150, + Dependencies: "", + Description: "Dont understand what some commands do in the terminal? With this upgrade, it adds a handy little description to almost every command when you run the command sos.help!" + }, + { + Name: "Help Usage", + Cost: 150, + Dependencies: "help_description", + Description: "You got descriptions on what some commands do in the terminal, but wouldn't it be handy to also see what the proper usage is for? Now you can with this upgrade!" + }, + + //ARTPAD TOOLS + { + Name: "Artpad Pixel Placer", + Dependencies: "artpad", + Cost: 750, + Description: "This tool extends the Pixel Setter to allow you to use your mouse to place pixels by clicking on the canvas." + }, + { + Name: "Artpad PP Movement Mode", + Dependencies: "artpad_pixel_placer", + Cost: 500, + Description: "This tool extends the Pixel Placer and allows you to drag your mouse while the button is held down to draw pixels on the canvas." + }, + { + Name: "Artpad Pencil", + Dependencies: "artpad_pp_movement_mode", + Cost: 1000, + Description: "Using the power of the Pixel Placer's movement mode, the Pencil can draw strokes of different thicknesses. Most tools will extend this tool." + }, + { + Name: "Artpad Paintbrush", + Cost: 1000, + Dependencies: "artpad_pencil", + Description: "The Paintbrush allows you to draw more thick strokes on the canvas than the Pencil does." + }, + { + Name: "Artpad Eraser", + Cost: 500, + Dependencies: "artpad_paintbrush;artpad_undo", + Description: "Undo not effective? Want to only erase a select bit of the canvas? Use this tool to get an eraser!" + }, + { + Name: "Artpad Load", + Cost: 350, + Dependencies: "artpad;file_skimmer", + Description: "Want to start off from an existing masterpiece? This tool is for you. Select any .pic file and it'll be loaded onto the canvas!" + }, + { + Name: "Artpad Line Tool", + Cost: 800, + Dependencies: "artpad_pp_movement_mode", + Description: "Using the power of linear interpolation and the Pixel Placer Movement Mode, the Line tool can help you draw straight lines from one point to another." + }, + { + Name: "Artpad Rectangle Tool", + Cost: 400, + Dependencies: "artpad_line_tool", + Description: "With the line tool we are able to figure out the distance from point A to point B. Let's use that basic framework to draw rectangles!" + }, + { + Name: "Artpad Oval Tool", + Cost: 401, + Dependencies: "artpad_line_tool", + Description: "Want to draw some ovals? With this tool, you can! It uses the data from the line tool to construct a circle as you drag the mouse." + }, + { + Name: "Artpad Fill Tool", + Cost: 1000, + Dependencies: "artpad_pixel_placer", + Description: "The Pixel Placer is useful because we can grab pixel coordinates from the mouse, and determine how we can fill the area with a certain color - let's do that!" + }, + { + Name: "Artpad Text Tool", + Cost: 1500, + Dependencies: "artpad_pixel_placer", + Description: "Want to place text on your canvas? Use the Text Tool to do so!" + }, + { + Name: "Artpad New", + Dependencies: "artpad", + Cost: 500, + Description: "Made a mistake? Want a blank canvas? This tool gives you just that." + }, + { + Name: "Artpad Open", + Dependencies: "artpad;file_skimmer", + Cost: 600, + Description: "Want to edit an artpad picture? If you have the File Skimmer, then this tool is for you!" + }, + { + Name: "Artpad Save", + Dependencies: "artpad;file_skimmer", + Cost: 1000, + Description: "Have you been working extra-hard on a masterpiece in ArtPad and want to save? This upgrade is a must-have!" + }, + { + Name: "Artpad Undo", + Dependencies: "artpad_new", + Cost: 59, + Description: "Mistakes happen - but if you have to clear the canvas every time you mess up one single pixel it can get annoying. This tool will help mitigate that - you'll be able to make your last change magically disappear!" + }, + { + Name: "Artpad Redo", + Dependencies: "artpad_undo", + Cost: 50, + Description: "Did you change your mind about that mistake you've undone? Want it back? This tool is for you. Note that the second you add something new after an undo, the undone change is wiped forever!" + }, + + + + //ARTPAD COLOR PALETTES + + { + Name: "Artpad 4 Color Palettes", + Dependencies: "artpad", + Cost: 150, + Description: "Want to add an extra 2 colors to your palette? Buy this upgrade to do so!" + }, + { + Name: "Artpad 8 Color Palettes", + Dependencies: "artpad_4_color_palettes", + Cost: 400, + Description: "Want to add an extra 4 color palette entries to your Artpad to have even more colors used at once? Buy this upgrade, and that will happen!" + }, + { + Name: "Artpad 16 Color Palettes", + Dependencies: "artpad_8_color_palettes", + Cost: 600, + Description: "With this upgrade, you can have up to 16 different colors in your ArtPad palette. Good for drawing intense scenes without constantly selecting different colors." + }, + { + Name: "Artpad 32 Color Palettes", + Dependencies: "artpad_16_color_palettes", + Cost: 850, + Description: "Having 16 different color palettes is nice, but you know what's nicer? Having 32!" + }, + { + Name: "Artpad 64 Color Palettes", + Dependencies: "artpad_32_color_palettes", + Cost: 1700, + Description: "Well then. We have 32 color palettes - let's double that." + }, + { + Name: "Artpad 128 Color Palettes", + Dependencies: "artpad_128_color_palettes", + Cost: 3400, + Description: "With this upgrade we'll be able to have 128 simultaneous colors in our palette. It may get a bit glitchy though... maybe a window manager upgrade could help?" + }, + + + + //SHIFTORIUM UPGRADES FOR THE SHIFTORIUM ITSELF + + { + Name: "Shiftorium GUI", + Cost: 100, + Description: "You may spend lots of time in your terminal - executing scripts, chatting, etc, but why make it so difficult and repetitive to upgrade your system? With this upgrade, a GUI will be added to the Shiftorium, and will be accessible using win.open{app:\"shiftorium\"}." + }, + { + Name: "AL Shiftorium", + Cost: 250, + Dependencies: "shiftorium_gui;app_launcher", + Description: "Add an App Launcher Entry for the Shiftorium!" + }, + { + Name: "Shiftorium GUI Codepoints Display", + Cost: 2500, + Dependencies: "shiftorium_gui", + Description: "In the shiftorium GUI but dont know what you can spend because you can't see how many code points are on hand? Well shop easy, because with this upgrade that is now possible! You have to restart the shiftorium for it to work." + } + +] \ No newline at end of file diff --git a/ShiftOS.WinForms/Resources/Songs.txt b/ShiftOS.WinForms/Resources/Songs.txt new file mode 100644 index 0000000..1b7daff --- /dev/null +++ b/ShiftOS.WinForms/Resources/Songs.txt @@ -0,0 +1,4 @@ +[ + "http://downloads.michaeltheshifter.me/music/blockride.mp3", + "http://downloads.michaeltheshifter.me/music/nightcoding.mp3" +] \ No newline at end of file diff --git a/ShiftOS.WinForms/Resources/fileicon0.bmp b/ShiftOS.WinForms/Resources/fileicon0.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e9f684ecbde2c4b88021322753910dc2cce3bbf9 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f~lS^jv*25Z!a9=YETehdszFcHrIKHpRCgI zqXl(8`d%gMn0sAq%DU8N+JE2dSd_M1(Esb_$Fts-+ilymQ+{oN#@T>b3r(Ce+b;1e omGm;6l7=d<+o}H0+Z`RuMS`(U0_;Ao1X{@8>FVdQ&MBb@0DR0$lmGw# literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon1.bmp b/ShiftOS.WinForms/Resources/fileicon1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ba26acb9c7929b812868c4c62a7fcc8dd241157a GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8lHQ)IEF;HzrAkV_sD^vCDHG^;Di$#&sgRh zU{_FAQc`}*;^sPa>AbRV`yTh)B|lZNw|Xo7GyQhpjnFY(*~rIY3z{wGEvsFKoh+Sq z{&~gDm}8e;rr&x0eShEKhXz2A?~m7BI4I+PdDH8!R^6v%Z(Mg`FShahT(B(2a4GZo z)s1}5DrQw3HaNr7cl`11o`*pUe>(R+zW-QvUVIZsYMG)!-NQ?fUUUB*f4tEBGT5js zKXM+atrEPSv-H1=)r`lPv&8mE^!@(3&izvX+u`RA)t&f2qE_Pj-!2vJPL#K^XO}(m z(PZx7$b->lcNMmle^A-Cu?TF^*Vc)%d58ozyWjmPTuyE6zvj&=st2AO+H z9EsH1V`pC5`>$PU*0$fXE|}s7eo(aBGr4t0ara&B^}H6$oQ|pQf$4z3)78&qol`;+ E0E#6PUH||9 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon10.bmp b/ShiftOS.WinForms/Resources/fileicon10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..81505bd8b63024e3f34f4bd506ad1d2b0db5e0f0 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f{Q&}977`9-}YVPa!}-O{{5@&cU%iE(`!ea zfG-CE%)5G*WpaH|z4&9%+AVeh^E5})y`B3Ynw O89ZJ6T-G@yGywoRCTJ!A literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon11.bmp b/ShiftOS.WinForms/Resources/fileicon11.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6fb6f6a00e13bd4b51d0241134a520e273b8e864 GIT binary patch literal 498 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8rnTw977`9&rWdcI^w{?{QT?Zw~;MZ5_+~| z))aD;a9&+@;`oQ^i~pW}XS;B4PS2HCBvSJJ`|>?pRx>6~^tyA<*!|Z(m-=?TXDLh0 zMerV-xTUW+FWiy6*eIwROs4O!FWo(=7#bRoFaeY9Rfmr}|IGgInQMhWmtH9_o)|n` L{an^LB{Ts5{BO{Y literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon12.bmp b/ShiftOS.WinForms/Resources/fileicon12.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a345c0d270eb1f97c4d236dda11df7f1390c242d GIT binary patch literal 430 zcmV;f0a5;mP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0YgbdK~z{r?UF$b z#UKbod-`7ce@MoN0u6;OZ0t*B!HhC4JU({j_Yxhy)!FxK#yc>n+a literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon13.bmp b/ShiftOS.WinForms/Resources/fileicon13.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5fb0a4bb4dfa674a5a731b7b4e4d1050b02a53ec GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8nQfH977`9_nu?yYcb$)4)i-;`+ zPk#Th#_qoLF*B!ov%XtA|NYbQvhD1odo#aVoS&?BFSn~Q{oZNg^ZP&f-Op8CqV)dL snUmj3O4+NnYl8iHvf=+M?%Us(HO?&*e0en52^bX&p00i_>zopr04%uIdH?_b literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon14.bmp b/ShiftOS.WinForms/Resources/fileicon14.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f52f6a1faed3d969200fa2d47c9acb987a36469f GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8jL($977`9_s+P;*KEMU{IjaAdhtTH$Y;|M zuUfx!k-Bm4^ET-?z3;Wh_q22{&I!K}@pEIiNW$@NGk=}Qi2J&+xN6hS>ZencF|L*GVH!)Lwa-@FBGkYBMojG-#$Fg_n#_LM$1Jsx# z-+bD8vnTs5|CCOK12A+%@=J|4vyyyCpZ~89 z`d457>D4>$XYV(gl;>=_=cmo=uu=Tqc6RgYg+4CxCe&X}|?LHTtrSL(YJ?FOc^c$8uzf#20fI-UO>FVdQ&MBb@03}1W A`v3p{ literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon15.bmp b/ShiftOS.WinForms/Resources/fileicon15.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bb0e0290c130be2fbfd6cd1c623a4c67b7d87f08 GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8kTsvIEF;Hznv7l?vMeGOQh}ZRMrd4$9GMe zx@Br1m;85+#Yg&k)*gD>@LXx@=QnKrD@AX9Z+!l@E-bRi3yu#D%anhSN~w=Vxvv*{F`%9cyCG^ncJli?q=rJXV0krZ$6(P^Xe1FPJC2< zu(jl(-{1Pce#>+#?!D7>teR{NTW&UbvTxrCXPZga_x-wj{9*NzxV`$y(#pqpX1?U9 zI2xD47B;c>q2cp+Zcn7XdyCC=>}9oByhrT)blp>yuPi@*er{Je6{w)l#{HB2tdG0y z>qnQcn8urEJN*&vmYevy!yGJo&V9w%eJixTS*`+cfu_}56x_J4CNSZ|yid{Xd#+o` zKJraXNq$nnUzPrArE8;W+M({tifIX=AiqRy(>SvJl45(L*`~IfYln5DBc07&Cr;~K zqd5Dk!D+W^6V6u6NL9{0@l2vBcH+$AEAoRSZ@w{p{kdjc|ED`Z`_CGFc~*CR?n!Mu z<=LNq%>MJur!IKr_LDs8i+9cWWA@E03CtA*8CB4{+T>wbHKW=^OWidubK-%K$l&Sf K=d#Wzp$Pza*Y@K8 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon16.bmp b/ShiftOS.WinForms/Resources/fileicon16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8ae66eb2f41cd971b1173081edfb914b1cc9b8f2 GIT binary patch literal 606 zcmV-k0-^nhP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0rN>jK~z{r?UYfD z0x=9jIX(B~1S}@@)>GOtGG)K^NtW6qwIdK*-f;htwsYSNJgKeFejo6>Ua#AirTsqO ziA8rWOZ$DubN8}O)1A2I&Shztal74kYQS@$7}|dyWL0DaZ3^5a-BTvsF|;XGcbrH4 zz9uHKF|;Xg_nOXUYXE1-VJ(I>#q6$MFHp^AS2cnALou`|M)&S7hMi(no77`yGe@7~ zry#2$GiWnr*OCBP6`4VsSM-(d0$CNAL7P{0E(wrTkr}i(vis8n$g0Q;+8o)vBtTY0 zX3*xy|Dqp2o5s5((I4p@$g0Q;+B9aN{bDnXKn@i{tHvm7w8-oZ!FQq<#xy(}_yUe< z@Q{4g>!ujSHV`5_*ugv1ad!EezV}cJqZ7nf<6^8Ofg)mfU)QUQz63?!?g++3k3npxzv-qC)5Mh zk9isi8G}jCuhiGQ$KM0a#n7g3W6&?-@?MX64&TMlrs&NT2w~Rcb;sX0d>3;t?9G7( zV_s6t@!1}}i#eEkfbRVa?p_l=Cmbzx?u svv59UxSWLk8J&T%F^9lE(1gq72LkR&ZOk(uwEzGB07*qoM6N<$f)pVOi~s-t literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon17.bmp b/ShiftOS.WinForms/Resources/fileicon17.bmp new file mode 100644 index 0000000000000000000000000000000000000000..be1e63d59701f66b7e7f9c75d0d951be24047795 GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8ge{c977`9-%bzgJ7mDaTKy|dTH;UB8V%pr z(~NIdDOVN-r_Z}-zfD-Kd(|9wQ;X209`WqwYVV((K6M}89G$4WYrd44q<`I%pQ(B; za_5>Ur4QzWNWHx7Jk9mlgf!cf$P~WJYou`4CQ2QDQyufS53Kc_tNn!3iIz)#s(1f7 z|4)Z2Qf#L4tilcPtLp7%&36RbA#>+k+WSQiRnFZ^{rjZu-k5#yCeJ1vqjrgMeWO-Vev3?%jb zcbL2P>sqPIq#r*c{l9X*w&^uFZs08V=K1+wWy=qKUVX{K_}KpC@8?S|o_Bt}4p;hT zxwQS;G+ff$3f`~ob}Bh{cy9GY$?){QlMYBWM$S?Q33MwDWzV@S{E9u+r=;qOJ1{aB NJYD@<);T3K0RX|A%8>v7 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon18.bmp b/ShiftOS.WinForms/Resources/fileicon18.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c12a51f016aa955d806d6ebaad89560265d9b169 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8p1qX977`9-%h>Qb=ZK1<@48{Z{wbCv1=)m z2|bZ(X`}GU>eQP{)8))<#C$FLvkJ1jChp^#^SpA}^r=8vWUZcdt?b#z*l*!co#kQE zrf%Y!Guc!5Z`FxSCuA(%?k9w|1{c~*VUmHKbx zfna0rh`*g*pL=m$>=&j?oh4lXOGk0se5uV{XOQLT6 zXFV$iWV(2^N8;OM6V=-8zdxV5&g*rhRA$nTzc**T4-`(zVN=avVzjv#K%XgbSo4e0dlwP0C@{Z%oC6zopr0MjkcS^xk5 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon19.bmp b/ShiftOS.WinForms/Resources/fileicon19.bmp new file mode 100644 index 0000000000000000000000000000000000000000..45f03e14c177150e0c9cfdc1e24dec97011f632c GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8g_cRIEF;H@9pL8Ycb$)-uXZGIm>3#javh! zh^3seIjQyYLs86!TFu)(-?90nXE6tM8mkb5qp!o!6FLP$Yk~^Vgm)0+2uH9BKRY{oq=QmyW&-Rp~}=ZUzWn`NcU`nmu*}XV%}AbG^-a zS6Eh*s~w)lYwEam{)L@|7g}dInBI$g7gYXpKd))yt6SogaltEX-vM>5SXX=TZTUr= z!!v;rS$j6$S^Dl%y>wPnl>Nfu#|yYYVyjE8MBaUTr)`!)>D%;Aetz#>T7y-;`g5*q z-HU(H8yBht%)PHSD>SV5T+Ry4kn447@2{lnsyYJE5w_Xqxg1DM?C+U-jJuynf)zcE zb+wk=Z25odLbVlNyKb)gHMbh5e!(^E4c1U4=w5l>99?*+c^1UyXMaBkoAYJCv)Te} zzp8-Gb~{AXZCC7M+wGP1?8P^?oE4GAw}bbe+ikbcJqILQ8o$@N_L|w1JMRCl)W84Y zp5u3t=j=zVMgL}(8}GDFD)y>l%scAI&sjH>^Y};h%7^RjF}ghv2gWRer>mdKI;Vst E09!T%RsaA1 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon2.bmp b/ShiftOS.WinForms/Resources/fileicon2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c4ffe12e2ea167a40a4dcb5deabe1db776ab2544 GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8k{^`977`9&t7!QVlfnOzGzt+U)}VB%WT<{ zxr^%ptaa_Kq<^Tr`1j>+wpR-3pSO6+K1rEZwz7H7nP8jqpY_Xw*ez!+k3~r7U0$7c z#}BUPvR>(g$(3C%UCrMu;VUxo-+jf=?^)(_s}m<}VwZ*A-7y!$dW$ebb%7 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon3.bmp b/ShiftOS.WinForms/Resources/fileicon3.bmp new file mode 100644 index 0000000000000000000000000000000000000000..543a1624bbe219fe11f7037ef7de59031b8cac70 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@g6}+C977`9-%fDkJFLLNQdzri?ke_h?d;rb zT?-c&U5ep3I(ggSMCNzCIp1^Ez5aDdc-BFus%dSTSXUf8S2e9&>j%ftO##&bjLaeO zt-p>-ypc&?)$de&Lx`Vk1t0fTRzZn{5prGq=?`py%4$pw&3~K^)SY(2ssC*CwAQp6 zn>cv7=7_C&@c4}RVduh`>a&d7TB2e^B+p8g<$GkfiM>C#+nzJ^%cJFOkL;gBDqUgP z>`~UXS#zOeJofsWTi1t&B$Pi5hzZkdK6^Rf{|gOKyM=EWZ>H&pc2!N|{W|YL mmVd_9->rF%9?ECFW##;N>fmF~cW;0`XYh3Ob6Mw<&;$U{0gU7T literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon4.bmp b/ShiftOS.WinForms/Resources/fileicon4.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d55037b0706338dafb8eef6bd30be8fc3d52890e GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f)hMl977`9-=25mI$*%VeDKfz%bIK#gKu|- zFI1HJ5W2?QMJ6M!DEVKkQ)YVWx(X5Q(&LL3-kqy|>$%hJ==?2b+seMr%b3o;Ryp&s zaFqMSdHP%W7Uk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f_pq&977`9-%g0;I&8qhQd<>o?Wz*p6Sy(X zkoRWe&+e_xQkBN;ht|sM{XXH-H=B*@riWJTu|I!@|Jc8~cjWIXI>;YE)JcX?XVlpE8p z%SMTEuDQK1;H>B^=@oC!#NEH;Z2I(XR~K(vpTQMnXLd=e!vXy~vMDckoNev2t}Oa? n?NzCAc}n~J3+*2FJhJ6Y^L4qWpZ~%F^aq2dtDnm{r-UW|)7x_{ literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon6.bmp b/ShiftOS.WinForms/Resources/fileicon6.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b604e09ad9704783eb88939a8545c9c252e2d3fe GIT binary patch literal 557 zcmV+|0@D47P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0m4Z{K~z{r?U*r= zf-n?7IfWG!owb!MJtZ|ASKtO7!5KP>Jpm{10A7L0&dw8L^B9wXm~}Hi%sQLQym2L; z|DS<`u*pZZ+wCUmx(?3aa1edpi~Id99%|EeyZN%F8)kpDlTteIRIV2=nSntSQFZB#ymIUi<;j!_HupP%(n)L=DH?pylV zbc{hnrWiKOW*=~l%g%o_QS-QhTb9xAoe>_#1|Lxbm}s($hI~8>%(&q9 zD5EFKXpk~vRuSc2f=qz9kVBU7FG}B1WEsDr93#n^Fv?~fjxQ2@7g2O=oJHlwu-*|I v0yf@k!e5HgVJ;~l;7P`y(H?4_(vsvGgU5zXP@0xN00000NkvXXu0mjf|J~}$ literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon7.bmp b/ShiftOS.WinForms/Resources/fileicon7.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8d8573ef4aef6a8fc1bd82a4996915000ea374f5 GIT binary patch literal 851 zcmV-Z1FZasP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0_aIZK~z{r?btC+ zGcgc`VNO9sm5!Qu z_Kf{{X6)T?@+Uv<@9)FS&CStucXv0uzP=70A0NXf+Skw9+na%J(dFgkaD9FK1?b}9 zVmLiLU9&wuKObIRUVa`Fj3_Oa%atA;9#*=#x*E>T&erTlgIZ`8wS37KFpz*nmu9os znxD3@y+Jve{PFRrtNZ)=VX;`O`DYHG?4(?~1}tqygC-JWf>OrR9uR+P|IA_h`T2Pz zn<79h+sU9nEMT!f>YvZ&tNv}E<>rWA%XShdM^Fk~8|>}v?ds$vQrkd#QI8G+3dUk! zomPvMW4{K}Lavn5Ywp8cBg)2sk_j@GlV96T0<{n*FcvhCx(qmgUbKKEsyR&NlbzCT zGH4)8P|BF7fbD^@QO_VEkmfJ#CW9uuH7Mz4(*xaAlR#Y~QrwfvzD^^*)N@a=mB@|) z4J3$NCB5+nP)5Eb*-*CuC36_t8B~N?5$LH*|5#A#8rwVd`>6E&QP3&+Q=qxpT5|XP z8c;9}M@xCZ`Jeh-^`oFBaOI?~dXmo4*TvnktL1@l5Ksq#@-h+WDVKm+O6$005o@DxF}+#AVxoC_%@{dV(+- z)N|Ymib?cKk9N{kKj$Oa`5+a?h!=V+yVQ#5H5C?^Z;qdHRhfVv%8rBQ1X=phu) z)M!q<{#Im<3Ys^0u%xX-T6KCf&@AkN7fJG6{r{?nlEqtU*^*6kK@B85$CNS=G@nnj dzw$Xb`3JLN&(DixP?Z1x002ovPDHLkV1m~Hi>m+t literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileicon8.bmp b/ShiftOS.WinForms/Resources/fileicon8.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7dc8cb8dc4cbc1add94ed3b18724dbd252f2e413 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8a{ctIEF;HpY3bxJ7mD){IjZV_Tkty#zzfP z6}G8I`bw*RJz8KrQE9tzgG}_Cd7IMKU4K34TN9Z5ZHI$rwL_n-pMRvS6vI80ulu~; zc1-yy`FDoh9KSa&&sblX=MgD?k^kkvnJ)e3)&*HBrPeOtUb(e8xz;0q>qV^TcRpS( z#_-jCf+9-m*yk!~6l{HUVS&T@RXfW)0vd|f-IablpS?8E`r_ivtFQEVM9v2qb@(OA zmHAIr*iPJ3^@X{@dS$+=@mBSqYjWQM)!%prtq=O^5o!F(QT^Samq+HEoAAly)GxbV zir*jjEOJl(Sr(om@%=*Um0No^+No%;epxrGx}9xl!|Kp@&Qq$|hxpVVRS7&lDlF;d z>b!=-It}PD3;n+*3?_v$hMZ#ush%_a`w0UkzE8ysmpMz~*4~xQKKHo}XsG2AyLVgC z+vMgxy&XF-@r@nOhL`Qd`C`>p&ZmIJ{q13@3eWVn59^;?HT9Kyn_(?W%-Tx~+Ot;L zPE35lbZ2hIYe%U^Q)RZQ8}-CA{nmMq70R{I>1`*^Vs0+5BUxB2o&z2IuQEV9f1$eadvI3zk~RM`8boWEpWJx#Wy)7U@e?nj6^@H7 nU%uuzD8}Swom=pz=qK~t>EHW~q%IE!CJ6>lS3j3^P6k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@8Y(TpCQIG8RF%K` zydb=v+dY@u(^9U}F8mt#VZu47@cqeu=KN>mf4Qdc>-!J)E$=`2KON|l_oq7UdjV~F z{QM16qowY>xlotwDPjM74#wW1{8G3n wM}*@uKfZ(d7h(xYaDh3`wDu}Kv#4VT5?_3K#}Y1J9566=y85}Sb4q9e0FPAJ5dZ)H literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/fileiconsaa.png b/ShiftOS.WinForms/Resources/fileiconsaa.png new file mode 100644 index 0000000000000000000000000000000000000000..291770a8b00bce9025277ae8817702942b6a1598 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+97>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f)XXJ5hcO-X(i=}MX3x0iJ5sNdU>fO3MP66 zdZwwZMyWtG6FprVLn7SYPIlyKFc4t={pDYcsnf!wSDId2k`fW&n$8EqLZdyVZ}=YP zcgf>~-M>?1_rz=FMyklP|9NPXHxIGl8{i!8xie-1CVT$q))LYgyl za)2pkX!Ej%eCAbORYM$|uBwFiA`?2!vb8O{yr=hFTDrL8rAF+p$hQnv%c}nsCrEh% P9mnA5>gTe~DWM4fB8Frs literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/hello.txt b/ShiftOS.WinForms/Resources/hello.txt new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/ShiftOS.WinForms/Resources/hello.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ShiftOS.WinForms/Resources/languages.txt b/ShiftOS.WinForms/Resources/languages.txt new file mode 100644 index 0000000..ca34308 --- /dev/null +++ b/ShiftOS.WinForms/Resources/languages.txt @@ -0,0 +1,4 @@ +[ + "english" + "deutsch - in beta" +] \ No newline at end of file diff --git a/ShiftOS.WinForms/Resources/strings_de.txt b/ShiftOS.WinForms/Resources/strings_de.txt new file mode 100644 index 0000000..3cd11e4 --- /dev/null +++ b/ShiftOS.WinForms/Resources/strings_de.txt @@ -0,0 +1,227 @@ +{ + "{SUBMIT}":"Bestätigen", + +"{TERMINAL_TUTORIAL_1}":"Wilkommen zum ShiftOS Terminal. Hier wirst du die meiste Zeit in ShiftOS verbringen. + +Eine kurze Erklärung wie du das Terminal benutzt lautet wiefolgt. Du kannst das command 'sos.help' benutzen um eine Liste aller commands aufzurufen. Schreib es +einfach in das Terminal und drücke um alle commands anzuzeigen. + +Commands können mit argumenten versehen werden, indem du ein key-value Paar in einem {} Block hinter dem command angibst. Zum Beispiel: + +some.command{print:\"Guten Tag!\"} +math.add{op1:1, op2:2} +set.value{key:\"somekey\", value:true} + +Dir wurden 50 Codepoints als Startgeld gegeben - benutz dein Wissen um mit ihnen das MUD Fundamentals Shiftorium Upgrade zu kaufen. Das ganze mit dem Terminal. +Um das MUD Fundamentals Upgrade zu kaufen, tippe shiftorium.buy{upgrade:\"mud_fundamentals\"} in das Terminal. Das ganze funktioniert auch mit anderen Upgrades die +du kaufen willst, ersetze mud_fundamentals einfach mit einem anderen Upgradenamen. +", + + + "{TERMINAL_TUTORIAL_2}":"Du hast den Test erfolgreich bestanden. ShiftOS wird seine Grundfunktionen installieren.", + "{ABOUT}":"Über", + "{START_SYSTEM_SCAN}":"Starte systemweiten Scan", + "{SCAN_HOME}":"Scanne 0:/home", + "{SCAN_SYSTEM}":"Scanne 0:/system", + "{RESULTS}":"Ergebnisse", + "{VIRUSSCANNER_ABOUT}":"Wilkommen zum ShiftOS Virenscanner. + +Der ShiftOS Virenscanner ist ein Werkzeug welches dir erlaubt jede/s Datei oder System zu scannen und herauszufinden +ob es ein Virus ist. Wenn ein Virus erkannt wird, hast do die Option ihn danach zu löschen indem du 'Entfernen' +klickst. + +Wenn eine Systemdatei von dem Virenscanner erkannt wird, wird sie ersetzt.", + "{PLAY}":"Spielen", + "{APPLICATIONS}":"Anwendungen", + "{TERMINAL}":"Terminal", + "{PONG}":"Pong", + "{CODEPOINTS}":"Codepoints", + "{SHIFTORIUM}":"Shiftorium", + "{HACK}":"Hack", + "{SHIFTER}":"Shifter", + "{MUD_SHORT}":"MUD", + "{MUD}":"Multi-user domain", + "{DESKTOP}":"Desktop", + "{WINDOW}":"Fenster", + "{WINDOW_MANAGER}":"Fenstermanager", + "{UPGRADE}":"Upgrade", + "{UPGRADES}":"Upgrades", + "{APPLICATION}":"Anwendung", + "{SCRIPT}":"Skript", + "{ERROR}":"Error", + "{SCRIPTS}":"Skripts", + "{NULL}":"null", + "{ID}":"ID Num", + "{SYSTEM_INITIATED}":"System initialisiert", + "{PASSWORD}":"Passwort", + "{CRACK}":"Crack", + "{ARTPAD_UNDO_ERROR}":"Artpad - Fehler rückgängig machen", + "{ARTPAD_NEXT_STEP_WILL_KILL_CANVAS_JUST_FLIPPING_CLICK_NEW}":"You cannot undo the previous action as it would delete the canvas. If you'd like to clear the canvas, click New.", + "{ARTPAD_REDO_ERROR}":"Artpad - Wiederherstellungserror", + "{ARTPAD_NOTHING_TO_REDO}":"Artpad kann nichts wiederherstellen! Behalte im Kopf, dass wenn du etwas rückgängig machst und dann zeichnest, das der Verlauf gelöscht wird.", + "{ARTPAD_MAGNIFIER_ERROR}": "Artpad - Magnifier Error", + "{ARTPAD_MAGNIFICATION_ERROR_EXP_2}": "Artpad kann nicht weiter ranzoomen!", + "{ARTPAD_MAGNIFICATION_ERROR_EXP}": "Artpad kann nicht weiter ranzoomen. Naja, es kann, aber es will nicht.", + "{SHUTDOWN}":"Herunterfahren", + "{CONNECTING_TO_MUD}":"Verbinde mit dem Multi-User Domain...", + "{READING_FS}":"Lese Dateisystem...", + "{INIT_KERNEL}":"Initialisiere Kernel...", + "{START_DESKTOP}":"Starte Desktop-Session...", + "{DONE}": "Fertig", + "{READING_CONFIG}":"Lese Konfiguration...", + "{ID_TAKEN}":"ID Existiert bereits! Benutze chat.join um diesen Chat zu betreten.", + "{CHAT_NOT_FOUND_OR_TOO_MANY_MEMBERS}":"Dieser Chat existiert entweder nicht oder er ist voll.", + "{CHAT_NOT_FOUND_OR_NOT_IN_CHAT}":"Du bist zurzeit nicht in diesem Chat.", + "{CHAT_PLEASE_PROVIDE_VALID_CHANNEL_DATA}":"Du hast keine gültige Chat-Metadata angegeben! Bitte benutze chat.create{id:\"deine_id\", name:\"Dein Chatname\", topic:\"Thema deines Channels\"}.", + "{UPGRADE_PROGRESS}":"Upgrade progress""Upgrade Fortschritt", + "{WIN_PROVIDEID}":"Bitte gib eine gültige Fenster ID von win.list an.", + "{WIN_CANTCLOSETERMINAL}":"Du kannst dieses Terminal nicht schließen.", + "{WELCOME_TO_SHIFTORIUM}":"Willkommen zum Shiftorium!", + "{SUCCESSFULLY_CREATED_CHAT}":"Chat erfolgreich erstellt. Benutze chat.join{id:\"chat_id_hier\"} um ihm beizutreten.", + "{CHAT_HAS_JOINED}":"hat den Chat betreten.", + "{HAS_LEFT_CHAT}":"hat den Chat verlassen.", + "{SHIFTORIUM_EXP}":"The Shiftorium is your one-stop-shop for ShiftOS system enhancements, upgrades and applications. + + You can buy upgrades in the Shiftorium using a currency called Codepoints, which you can earn by doing various tasks within ShiftOS, such as playing Pong, stealing them from other users, and finding ways to make your own. It's up to you how you get your Codepoints. + + You can then use them to buy new applications, features, enhancements and upgrades for ShiftOS that make the user experience a lot better. Be careful though, buying too many system enhancements without buying new ways of earning Codepoints first can leave you in the dust and unable to upgrade the system. + + Anyways, feel free to browse from our wonderful selection! You can see a list of available upgrades on the left, as well as a progress bar showing how much you've upgraded the system compared to how much you still can.", + "{PONG_WELCOME}":"Welcome to Pong.", + "{PONG_DESC}":"Pong is an arcade game where your goal is to get the ball past the opponent paddle while keeping it from getting past yours. + + In ShiftOS, Pong is modified - you only have one chance, the game is divided into 60 second levels, and you can earn Codepoints by surviving a level, and beating the opponent.", + "{NO_APP_TO_OPEN}":"No app found for this file!", + "{NO_APP_TO_OPEN_EXP}":"File Skimmer could not find an application that can open this file.", + "{CLIENT_DIAGNOSTICS}":"Client diagnostics", + "{GUID}":"GUID", + "{CLIENT_DATA}":"Client data", + "{CLOSE}":"Close", + "{LOAD_DEFAULT}":"Load default", + "{IMPORT}":"Import", + "{EXPORT}":"Export", + "{APPLY}":"Apply", + "{TEMPLATE}":"Template", + "{H_VEL}":"Horizontal velocity", + "{V_VEL}":"Vertical velocity", + "{LEVEL}":"Level", + "{UPGRADE_DEVELOPMENT}":"Development Upgrade", + "{UPGRADE_DEVELOPMENT_DESCRIPTION}":"Development Upgrade Don't Buy", + "{SECONDS_LEFT}":"seconds left", + "{CASH_OUT_WITH_CODEPOINTS}":"Cash out with your codepoints", + "{PONG_PLAY_ON_FOR_MORE}":"Play on for more!", + "{YOU_REACHED_LEVEL}":"You've reached level", + "{PONG_BEAT_AI_REWARD}":"Reward for beating AI (CP)", + "{PONG_BEAT_AI_REWARD_SECONDARY}":"Codepoints for beating AI:", + "{CODEPOINTS_FOR_BEATING_LEVEL}":"Codepoints for beating level", + "{YOU_WON}":"You won", + "{YOU_LOSE}":"You lose", + "{TRY_AGAIN}":"Try again", + "{CODEPOINTS_SHORT}":"CP", + "{TERMINAL_FORMATTING_DRIVE}":"Formatting drive... %percent %", + "{INSTALLING_SHIFTOS}":"Installing ShiftOS on %domain.", + "{YOU_MISSED_OUT_ON}":"You missed out on", + "{BUT_YOU_GAINED}":"But you gained", + "{PONG_PLAYON_DESC}":"Or do you want to try your luck on the next level to increase your reward?", + "{PONG_CASHOUT_DESC}":"Would you like the end the game now and cash out with your reward?", + "{INITIAL_H_VEL}":"Initial H Vel", + "{INITIAL_V_VEL}":"Initial V Vel", + "{INC_H_VEL}":"Increment H Vel", + "{INC_V_VEL}":"Increment V Vel", + "{MULTIPLAYER_ONLY}":"Program not compatible with single-user domain.", + "{MULTIPLAYER_ONLY_EXP}":"This program cannot run within a single-user domain. You must be within a multi-user domain to use this program.", + "{SHIFTER_SKIN_APPLIED}":"Shifter - Settings applied!", + "{YOU_HAVE_EARNED}":"You have earned", + "{CREATING_PATH}":"Creating directory: %path", + "{CREATING_FILE}":"Creating file: %path", + "{SHIFTORIUM_HELP_DESCRIPTION}": "Help Descriptions", + "{CREATING_USER}":"Creating user %username", + "{SEPERATOR}":" - ", + "{NAMESPACE}":"Namespace ", + "{COMMAND}": "| Command ", + "{SHIFTOS_HAS_BEEN_INSTALLED}":"ShiftOS has been installed on %domain.", + "{WARN}": "WARN: ", + "{ERROR}": "!ERROR! ", + "{OBSOLETE_CHEATS_FREECP}": "The %ns.%cmd command is obsolete and has been replaced with %newcommand", + "{REBOOTING_SYSTEM}":"Rebooting system in %i seconds...", + "{ERROR_ARGUMENT_REQUIRED}": "You must supply an %argument value", + "{ERROR_ARGUMENT_REQUIRED_NO_USAGE}": "You are missing some arguments.", + "{GENERATING_PATHS}":"Generating paths...", + "{ERROR_COMMAND_WRONG}": "Check your syntax and try again", + "{LOGIN_EXP}": "Login as the admin of the multi user domain.", + + "{USAGE}": "Usage: ", + + "{NAMESPACE_SOS_DESCRIPTION}":"The ShiftOS Namespace", + "{COMMAND_HELP_USAGE}":"%ns.%cmd{[topic:]}", + "{COMMAND_HELP_DESCRIPTION}":"Lists all commands", + "{COMMAND_SOS_SHUTDOWN_USAGE}":"%ns.%cmd", + "{COMMAND_SOS_SHUTDOWN_DESCRIPTION}":"Saves and shuts down ShiftOS", + "{COMMAND_SOS_STATUS_USAGE}":"%ns.%cmd", + "{COMMAND_SOS_STATUS_DESCRIPTION}":"Displays how many codepoints you have", + "{COMMAND_DEV_CRASH_USAGE}":"%ns.%cmd", + "{COMMAND_DEV_CRASH_DESCRIPTION}":"Shuts down ShiftOS forcefully", + "{COMMAND_DEV_UNLOCKEVERYTHING_USAGE}":"%ns.%cmd", + "{COMMAND_DEV_UNLOCKEVERYTHING_DESCRIPTION}":"Unlocks all shiftorium upgrades", + "{COMMAND_DEV_FREECP_USAGE}":"%ns.%cmd{[amount:1000]}", + "{COMMAND_DEV_FREECP_DESCRIPTION}":"Gives [ammount] codepoints", + "{COMMAND_TRM_CLEAR_USAGE}":"%ns.%cmd", + "{COMMAND_TRM_CLEAR_DESCRIPTION}":"Clears the terminal", + "{COMMAND_SHIFTORIUM_BUY_USAGE}":"%ns.%cmd{upgrade:}", + "{COMMAND_SHIFTORIUM_BUY_DESCRIPTION}":"Buys [upgrade]", + "{COMMAND_SHIFTORIUM_LIST_USAGE}":"%ns.%cmd", + "{COMMAND_SHIFTORIUM_LIST_DESCRIPTION}":"Lists the upgrades that you can get", + "{COMMAND_SHIFTORIUM_INFO_USAGE}":"%ns.%cmd{upgrade:}", + "{COMMAND_SHIFTORIUM_INFO_DESCRIPTION}":"Gives a description about an upgrade", + "{COMMAND_DEV_MULTARG_USAGE}":"%ns.%cmd{id:,name:,type:}", + "{COMMAND_DEV_MULTARG_DESCRIPTION}":"A command which requiers multiple arguments", + + "{ERR_COMMAND_NOT_FOUND}":"Command not found.", + "{MUD_ERROR}":"MUD error", + + "{PROLOGUE_NO_USER_DETECTED}":"No user detected. Please enter a username.", + "{PROLOGUE_BADUSER}":"Invalid username detected.", + "{PROLOGUE_NOSPACES}":"Usernames must not contain spaces.", + "{PROLOGUE_PLEASE_ENTER_USERNAME}":"Please enter a valid username. Blank usernames are not permitted.", + + "{SHIFTORIUM_NOTENOUGHCP}":"Not enough codepoints: ", + "{SHIFTORIUM_TRANSFERRED_FROM}":"Received Codepoints from", + "{SHIFTORIUM_TRANSFERRED_TO}":"Transferred Codepoints to", + + "{SE_SAVING}":"Saving game to disk", + "{SE_TIPOFADVICE}":"Tip of advice: ShiftOS will always save your game after big events or when you shut down the operating system. You can also invoke a save yourself using 'sos.save'.", + + "{STORY_WELCOME}":"Welcome to ShiftOS", + "{STORY_SENTIENCEUNKNOWN}":"Your sentience is currently unknown. Please strike the Enter key to prove you are alive.", + + "{SENTIENCE_BASIC}":"Sentience: Basic - User can respond to basic instructions.", + "{SENTIENCE_BASICPLUS}":"Sentience: Basic+ - User can invoke commands within the ecosystem.", + "{SENTIENCE_POSSIBLEHUMAN}":"Sentience: Possible human - user can perform actions based on a choice.", + "{SENTIENCE_POSSIBLEHUMANPLUS}":"Sentience: Possible human+ - user can infer, and can pass arguments.", + "{SENTIENCE_HUMAN}":"Sentience: Human. Thanks for your patience.", + "{SENTIENCE_INVALIDPASSWORD}":"The password you entered is invalid.", + + "{ARGS_PASSWORD}":"password", + + "{SHIFTOS_PLUS_MOTTO}":"ShiftOS, Shift it YOUR way.", + "{SHIFTOS_VERSION_INFO}":"ShiftOS Version: ", + "{USER_NAME}":"Username", + "{DISCOURSE_INTEGRATION}":"Discourse Integration", + "{SYSTEM_NAME}":"System Name", + "{USER_INFO}":"User Information", + "{SELECT_LANG}":"Select language", + "{WELCOME_TO_SHIFTOS}":"Welcome to ShiftOS Alpha!", + "{CREATE}":"Create", + "{INSTALL}":"Install", + "{ALIAS}":"Alias:", + "{OBSOLETE_SYS_SHUTDOWN}":"sys.shutdown is obsolete", + "{PY_EXCEPTION}":"There was an error running python code.", + "{LUA_ERROR}":"There was an error running lua code.", + + "{TERMINAL_NAME}":"Terminal", + "{ARTPAD_NAME}":"Artpad", + "{PONG_NAME}":"Pong", + "{WAV_PLAYER_NAME}":"WAV Player", + "{SHIFTORIUM_NAME}":"Shiftorium", + "{TEXTPAD_NAME}":"TextPad", +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Resources/strings_en.txt b/ShiftOS.WinForms/Resources/strings_en.txt new file mode 100644 index 0000000..267724a --- /dev/null +++ b/ShiftOS.WinForms/Resources/strings_en.txt @@ -0,0 +1,226 @@ +{ + "{SUBMIT}":"Submit", + +"{TERMINAL_TUTORIAL_1}":"Welcome to the ShiftOS terminal. This is where you will spend the bulk of your time within ShiftOS. + +A brief rundown of how to use the terminal is as follows. You can use the 'sos.help' command to show a list of all commands. Simply type it in and strike to view all commands. + +Commands can be sent arguments by specifying a key-value pair inside a {} block at the end of the command. For example: + +some.command{print:\"hello\"} +math.add{op1:1,op2:2} +set.value{key:\"somekey\", value:true} + +You have been given 50 Codepoints - use your knowledge to use them to buy the MUD Fundamentals Shiftorium Upgrade using the terminal. +To buy MUD Fundamentals, type shiftorium.buy{upgrade:\"mud_fundamentals\"} This is also true for any other thing you want to buy from the shiftorium, just replace mud_fundementals with any other upgrade id. +", + + + "{TERMINAL_TUTORIAL_2}":"You successfully passed the test. ShiftOS will now start installing it's base functionality.", + "{ABOUT}":"About", + "{HIGH_SCORES}":"High scores", + "{PONG_VIEW_HIGHSCORES}":"See the high scores", + "{PONG_HIGHSCORE_EXP}":"Want to see what other users have gotten?", + "{START_SYSTEM_SCAN}":"Start system-wide scan", + "{SCAN_HOME}":"Scan 0:/home", + "{SCAN_SYSTEM}":"Scan 0:/system", + "{RESULTS}":"Results", + "{VIRUSSCANNER_ABOUT}":"Welcome to the ShiftOS virus scanner. + +The ShiftOS virus scanner is a utility that allows you to scan any file on your system and see if it is a virus. If a virus is detected, you have the option to delete it after the scan by clicking 'Remove'. + +If a system file is deleted by the virus scanner, it will be replaced.", + "{PLAY}":"Play", + "{APPLICATIONS}":"Applications", + "{TERMINAL}":"Terminal", + "{PONG}":"Pong", + "{CODEPOINTS}":"Codepoints", + "{SHIFTORIUM}":"Shiftorium", + "{HACK}":"Hack", + "{SHIFTER}":"Shifter", + "{MUD_SHORT}":"MUD", + "{MUD}":"Multi-user domain", + "{DESKTOP}":"Desktop", + "{WINDOW}":"Window", + "{WINDOW_MANAGER}":"Window manager", + "{UPGRADE}":"Upgrade", + "{UPGRADES}":"Upgrades", + "{APPLICATION}":"Application", + "{SCRIPT}":"Script", + "{ERROR}":"Error", + "{SCRIPTS}":"Scripts", + "{NULL}":"null", + "{ID}":"ID Num", + "{SYSTEM_INITIATED}":"System initiated", + "{PASSWORD}":"Password", + "{CRACK}":"Crack", + "{ARTPAD_UNDO_ERROR}":"Artpad - Undo error", + "{ARTPAD_NEXT_STEP_WILL_KILL_CANVAS_JUST_FLIPPING_CLICK_NEW}":"You cannot undo the previous action as it would delete the canvas. If you'd like to clear the canvas, click New.", + "{ARTPAD_REDO_ERROR}":"Artpad - Redo error", + "{ARTPAD_NOTHING_TO_REDO}": "Artpad has nothing to redo! Remember that when you undo and then draw on the canvas, all redo history is wiped.", + "{ARTPAD_MAGNIFIER_ERROR}": "Artpad - Magnifier error", + "{ARTPAD_MAGNIFICATION_ERROR_EXP_2}": "Artpad cannot zoom out any further as the canvas would disappear!", + "{ARTPAD_MAGNIFICATION_ERROR_EXP}": "Artpad cannot zoom any further into the canvas. Well, it can, it just doesn't want to.", + "{SHUTDOWN}":"Shutdown", + "{CONNECTING_TO_MUD}":"Connecting to the multi-user domain...", + "{READING_FS}":"Reading filesystem...", + "{INIT_KERNEL}":"Initiating kernel...", + "{START_DESKTOP}":"Starting desktop session...", + "{DONE}": "done", + "{READING_CONFIG}":"Reading configuration...", + "{ID_TAKEN}":"ID has been taken! Use chat.join to join this chat.", + "{CHAT_NOT_FOUND_OR_TOO_MANY_MEMBERS}":"This chat either doesn't exist or has too many users in it.", + "{CHAT_NOT_FOUND_OR_NOT_IN_CHAT}":"You are not currently in this chat.", + "{CHAT_PLEASE_PROVIDE_VALID_CHANNEL_DATA}":"You did not specify valid chat metadata! Please do chat.create{id:\"your_id\", name:\"Your chat\", topic:\"Your chat's topic\"}.", + "{UPGRADE_PROGRESS}":"Upgrade progress", + "{WIN_PROVIDEID}":"Please provide a valid Window ID from win.list.", + "{WIN_CANTCLOSETERMINAL}":"You cannot close this terminal.", + "{WELCOME_TO_SHIFTORIUM}":"Welcome to the Shiftorium", + "{SUCCESSFULLY_CREATED_CHAT}":"Successfully created chat. Use chat.join{id:\"chat_id_here\"} to join it.", + "{CHAT_HAS_JOINED}":"has joined the chat.", + "{HAS_LEFT_CHAT}":"has left the chat.", + "{SHIFTORIUM_EXP}":"The Shiftorium is your one-stop-shop for ShiftOS system enhancements, upgrades and applications. + + You can buy upgrades in the Shiftorium using a currency called Codepoints, which you can earn by doing various tasks within ShiftOS, such as playing Pong, stealing them from other users, and finding ways to make your own. It's up to you how you get your Codepoints. + + You can then use them to buy new applications, features, enhancements and upgrades for ShiftOS that make the user experience a lot better. Be careful though, buying too many system enhancements without buying new ways of earning Codepoints first can leave you in the dust and unable to upgrade the system. + + Anyways, feel free to browse from our wonderful selection! You can see a list of available upgrades on the left, as well as a progress bar showing how much you've upgraded the system compared to how much you still can.", + "{PONG_WELCOME}":"Welcome to Pong.", + "{PONG_DESC}":"Pong is an arcade game where your goal is to get the ball past the opponent paddle while keeping it from getting past yours. + + In ShiftOS, Pong is modified - you only have one chance, the game is divided into 60 second levels, and you can earn Codepoints by surviving a level, and beating the opponent.", + "{NO_APP_TO_OPEN}":"No app found for this file!", + "{NO_APP_TO_OPEN_EXP}":"File Skimmer could not find an application that can open this file.", + "{CLIENT_DIAGNOSTICS}":"Client diagnostics", + "{GUID}":"GUID", + "{CLIENT_DATA}":"Client data", + "{CLOSE}":"Close", + "{LOAD_DEFAULT}":"Load default", + "{IMPORT}":"Import", + "{EXPORT}":"Export", + "{APPLY}":"Apply", + "{TEMPLATE}":"Template", + "{H_VEL}":"Horizontal velocity", + "{V_VEL}":"Vertical velocity", + "{LEVEL}":"Level", + "{UPGRADE_DEVELOPMENT}":"Development Upgrade", + "{UPGRADE_DEVELOPMENT_DESCRIPTION}":"Development Upgrade Don't Buy", + "{SECONDS_LEFT}":"seconds left", + "{CASH_OUT_WITH_CODEPOINTS}":"Cash out with your codepoints", + "{PONG_PLAY_ON_FOR_MORE}":"Play on for more!", + "{YOU_REACHED_LEVEL}":"You've reached level", + "{PONG_BEAT_AI_REWARD}":"Reward for beating AI (CP)", + "{PONG_BEAT_AI_REWARD_SECONDARY}":"Codepoints for beating AI:", + "{CODEPOINTS_FOR_BEATING_LEVEL}":"Codepoints for beating level", + "{YOU_WON}":"You won", + "{YOU_LOSE}":"You lose", + "{TRY_AGAIN}":"Try again", + "{CODEPOINTS_SHORT}":"CP", + "{TERMINAL_FORMATTING_DRIVE}":"Formatting drive... %percent %", + "{INSTALLING_SHIFTOS}":"Installing ShiftOS on %domain.", + "{YOU_MISSED_OUT_ON}":"You missed out on", + "{BUT_YOU_GAINED}":"But you gained", + "{PONG_PLAYON_DESC}":"Or do you want to try your luck on the next level to increase your reward?", + "{PONG_CASHOUT_DESC}":"Would you like the end the game now and cash out with your reward?", + "{INITIAL_H_VEL}":"Initial H Vel", + "{INITIAL_V_VEL}":"Initial V Vel", + "{INC_H_VEL}":"Increment H Vel", + "{INC_V_VEL}":"Increment V Vel", + "{MULTIPLAYER_ONLY}":"Program not compatible with single-user domain.", + "{MULTIPLAYER_ONLY_EXP}":"This program cannot run within a single-user domain. You must be within a multi-user domain to use this program.", + "{SHIFTER_SKIN_APPLIED}":"Shifter - Settings applied!", + "{YOU_HAVE_EARNED}":"You have earned", + "{CREATING_PATH}":"Creating directory: %path", + "{CREATING_FILE}":"Creating file: %path", + "{SHIFTORIUM_HELP_DESCRIPTION}": "Help Descriptions", + "{CREATING_USER}":"Creating user %username", + "{SEPERATOR}":" - ", + "{NAMESPACE}":"Namespace ", + "{COMMAND}": "| Command ", + "{SHIFTOS_HAS_BEEN_INSTALLED}":"ShiftOS has been installed on %domain.", + "{WARN}": "WARN: ", + "{ERROR}": "!ERROR! ", + "{OBSOLETE_CHEATS_FREECP}": "The %ns.%cmd command is obsolete and has been replaced with %newcommand", + "{REBOOTING_SYSTEM}":"Rebooting system in %i seconds...", + "{ERROR_ARGUMENT_REQUIRED}": "You must supply an %argument value", + "{ERROR_ARGUMENT_REQUIRED_NO_USAGE}": "You are missing some arguments.", + "{GENERATING_PATHS}":"Generating paths...", + "{ERROR_COMMAND_WRONG}": "Check your syntax and try again", + "{LOGIN_EXP}": "Login as the admin of the multi user domain.", + + "{USAGE}": "Usage: ", + + "{NAMESPACE_SOS_DESCRIPTION}":"The ShiftOS Namespace", + "{COMMAND_HELP_USAGE}":"%ns.%cmd{[topic:]}", + "{COMMAND_HELP_DESCRIPTION}":"Lists all commands", + "{COMMAND_SOS_SHUTDOWN_USAGE}":"%ns.%cmd", + "{COMMAND_SOS_SHUTDOWN_DESCRIPTION}":"Saves and shuts down ShiftOS", + "{COMMAND_SOS_STATUS_USAGE}":"%ns.%cmd", + "{COMMAND_SOS_STATUS_DESCRIPTION}":"Displays how many codepoints you have", + "{COMMAND_DEV_CRASH_USAGE}":"%ns.%cmd", + "{COMMAND_DEV_CRASH_DESCRIPTION}":"Shuts down ShiftOS forcefully", + "{COMMAND_DEV_UNLOCKEVERYTHING_USAGE}":"%ns.%cmd", + "{COMMAND_DEV_UNLOCKEVERYTHING_DESCRIPTION}":"Unlocks all shiftorium upgrades", + "{COMMAND_DEV_FREECP_USAGE}":"%ns.%cmd{[amount:1000]}", + "{COMMAND_DEV_FREECP_DESCRIPTION}":"Gives [ammount] codepoints", + "{COMMAND_TRM_CLEAR_USAGE}":"%ns.%cmd", + "{COMMAND_TRM_CLEAR_DESCRIPTION}":"Clears the terminal", + "{COMMAND_SHIFTORIUM_BUY_USAGE}":"%ns.%cmd{upgrade:}", + "{COMMAND_SHIFTORIUM_BUY_DESCRIPTION}":"Buys [upgrade]", + "{COMMAND_SHIFTORIUM_LIST_USAGE}":"%ns.%cmd", + "{COMMAND_SHIFTORIUM_LIST_DESCRIPTION}":"Lists the upgrades that you can get", + "{COMMAND_SHIFTORIUM_INFO_USAGE}":"%ns.%cmd{upgrade:}", + "{COMMAND_SHIFTORIUM_INFO_DESCRIPTION}":"Gives a description about an upgrade", + "{COMMAND_DEV_MULTARG_USAGE}":"%ns.%cmd{id:,name:,type:}", + "{COMMAND_DEV_MULTARG_DESCRIPTION}":"A command which requiers multiple arguments", + + "{ERR_COMMAND_NOT_FOUND}":"Command not found.", + "{MUD_ERROR}":"MUD error", + + "{PROLOGUE_NO_USER_DETECTED}":"No user detected. Please enter a username.", + "{PROLOGUE_BADUSER}":"Invalid username detected.", + "{PROLOGUE_NOSPACES}":"Usernames must not contain spaces.", + "{PROLOGUE_PLEASE_ENTER_USERNAME}":"Please enter a valid username. Blank usernames are not permitted.", + + "{SHIFTORIUM_NOTENOUGHCP}":"Not enough codepoints: ", + "{SHIFTORIUM_TRANSFERRED_FROM}":"Received Codepoints from", + "{SHIFTORIUM_TRANSFERRED_TO}":"Transferred Codepoints to", + + "{SE_SAVING}":"Saving game to disk", + "{SE_TIPOFADVICE}":"Tip of advice: ShiftOS will always save your game after big events or when you shut down the operating system. You can also invoke a save yourself using 'sos.save'.", + + "{STORY_WELCOME}":"Welcome to ShiftOS", + "{STORY_SENTIENCEUNKNOWN}":"Your sentience is currently unknown. Please strike the Enter key to prove you are alive.", + + "{SENTIENCE_BASIC}":"Sentience: Basic - User can respond to basic instructions.", + "{SENTIENCE_BASICPLUS}":"Sentience: Basic+ - User can invoke commands within the ecosystem.", + "{SENTIENCE_POSSIBLEHUMAN}":"Sentience: Possible human - user can perform actions based on a choice.", + "{SENTIENCE_POSSIBLEHUMANPLUS}":"Sentience: Possible human+ - user can infer, and can pass arguments.", + "{SENTIENCE_HUMAN}":"Sentience: Human. Thanks for your patience.", + "{SENTIENCE_INVALIDPASSWORD}":"The password you entered is invalid.", + + "{ARGS_PASSWORD}":"password", + + "{SHIFTOS_PLUS_MOTTO}":"ShiftOS, Shift it YOUR way.", + "{SHIFTOS_VERSION_INFO}":"ShiftOS Version: ", + "{USER_NAME}":"Username", + "{DISCOURSE_INTEGRATION}":"Discourse Integration", + "{SYSTEM_NAME}":"System Name", + "{USER_INFO}":"User Information", + "{SELECT_LANG}":"Select language", + "{WELCOME_TO_SHIFTOS}":"Welcome to ShiftOS Alpha!", + "{CREATE}":"Create", + "{INSTALL}":"Install", + "{ALIAS}":"Alias:", + "{OBSOLETE_SYS_SHUTDOWN}":"sys.shutdown is obsolete", + "{PY_EXCEPTION}":"There was an error running python code.", + "{LUA_ERROR}":"There was an error running lua code.", + + "{TERMINAL_NAME}":"Terminal", + "{ARTPAD_NAME}":"Artpad", + "{PONG_NAME}":"Pong", + "{WAV_PLAYER_NAME}":"WAV Player", + "{SHIFTORIUM_NAME}":"Shiftorium", + "{TEXTPAD_NAME}":"TextPad", +} \ No newline at end of file diff --git a/ShiftOS.WinForms/Resources/sys_shiftoriumstory.txt b/ShiftOS.WinForms/Resources/sys_shiftoriumstory.txt new file mode 100644 index 0000000..93a06ba --- /dev/null +++ b/ShiftOS.WinForms/Resources/sys_shiftoriumstory.txt @@ -0,0 +1,45 @@ +{ + Character: "sys", + Lines:[ + "Hello there, %user.", + "Welcome to ShiftOS.", + "This is an automated message to all new sentiences within the ShiftOS multi-user domain.", + "Before you can begin with ShiftOS, you'll need to know a few things about it.", + "One: Terminal command syntax.", + "Inside ShiftOS, the bulk of your time is going to be spent within the Terminal.", + "The Terminal is an application that starts up when you turn on your computer. It allows you to execute system commands, open programs and control your system.", + "To enter commands into your terminal, simply type in the user who created the command's name, a.k.a it's \"namespace\", followed by a period (.) followed by the command's name.", + "For example, sos.help.", + "If you would like to specify command parameters, you can do so by entering a set of curly braces {} after the command name.", + "An empty set of curly braces, or none at all, means no parameters. However, if you'd like to send a parameter, inside the curly braces, type the parameter name", + "followed by a colon (:) and then the value.", + "There are various value types you can use: + + - Booleans ({key:true, key2:false}) + - Integers ({number:123}) - Note that integers have a maximum value of 2.4 billion. + - Strings ({key:\"value\"}) + - Objects ({key:{key2:\"value\"}}) + - Arrays ({key:[\"element 1\", \"element 2\"]})", + "For example, I can do win.open{app:\"pong\"} to open the Pong application from the Terminal.", + "Next on the list - Codepoints and the Shiftorium.", + "Right now you only have two applications - the Terminal, and Pong.", + "This is not a usable operating system.", + "You can only have one application open.", + "You can't customize it.", + "You can't access your files.", + "Only the Terminal and Pong.", + "But fear not. You can upgrade ShiftOS just like you would a car or a home.", + "You can buy new applications, tweaks, features, and other upgrades.", + "But how?", + "First, you need Codepoints.", + "cmd:givecp 50", + "You have been given 50 Codepoints.", + "You can use Codepoints to buy upgrades inside the Shiftorium.", + "The first upgrade you want to buy is called MUD Fundamentals.", + "It unlocks certain capabilities within the multi-user domain such as the ability to run scripts and commands within the multi-user domain, as well as the ability to chat with other sentiences and upload your own programs.", + "It costs 50 Codepoints. You may buy it using the codepoints you have been given, or you can try and earn your own Codepoints using pong.", + "But be careful, it's best to buy things that can give you even more Codepoints...", + "because when you run out and can't make any more.... you're stuck with what you've got.", + "Disconnecting from sentience '%user' on system %domain.", + ] +} \ No newline at end of file diff --git a/ShiftOS.WinForms/ShiftOS.WinForms.csproj b/ShiftOS.WinForms/ShiftOS.WinForms.csproj new file mode 100644 index 0000000..b456796 --- /dev/null +++ b/ShiftOS.WinForms/ShiftOS.WinForms.csproj @@ -0,0 +1,464 @@ + + + + + Debug + AnyCPU + {2295D2E2-3A00-4E02-B66F-B961AC329FE6} + WinExe + Properties + ShiftOS.WinForms + ShiftOS.WinForms + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + True + + + + + + + + + + + + + + + + UserControl + + + Artpad.cs + + + UserControl + + + Chat.cs + + + UserControl + + + CoherenceOverlay.cs + + + UserControl + + + ColorPicker.cs + + + UserControl + + + Dialog.cs + + + UserControl + + + FileDialog.cs + + + UserControl + + + FileSkimmer.cs + + + UserControl + + + GraphicPicker.cs + + + UserControl + + + mp3Player.cs + + + UserControl + + + MUDAuthenticator.cs + + + UserControl + + + MUDControlCentre.cs + + + UserControl + + + MUDPasswordCracker.cs + + + UserControl + + + NameChanger.cs + + + UserControl + + + Pong.cs + + + UserControl + + + Shifter.cs + + + UserControl + + + ShiftoriumFrontend.cs + + + UserControl + + + Skin Loader.cs + + + UserControl + + + TextPad.cs + + + UserControl + + + VirusScanner.cs + + + UserControl + + + Terminal.cs + + + + UserControl + + + ColorControl.cs + + + Component + + + ShiftedProgressBar.cs + + + Component + + + Form + + + Oobe.cs + + + + + + + + Form + + + WindowBorder.cs + + + Form + + + WinformsDesktop.cs + + + + + + Artpad.cs + + + Chat.cs + + + ColorPicker.cs + + + FileDialog.cs + + + FileSkimmer.cs + + + GraphicPicker.cs + + + mp3Player.cs + + + MUDAuthenticator.cs + + + MUDControlCentre.cs + + + MUDPasswordCracker.cs + + + NameChanger.cs + + + Pong.cs + + + Shifter.cs + + + ShiftoriumFrontend.cs + + + Skin Loader.cs + + + TextPad.cs + + + VirusScanner.cs + + + Terminal.cs + + + Oobe.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + WindowBorder.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {a069089a-8962-4607-b2b2-4cf4a371066e} + ShiftOS.Objects + + + {7c979b07-0585-4033-a110-e5555b9d6651} + ShiftOS.Engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ShiftOS.WinForms/Tools/ColorPickerDataBackend.cs b/ShiftOS.WinForms/Tools/ColorPickerDataBackend.cs new file mode 100644 index 0000000..7e7723a --- /dev/null +++ b/ShiftOS.WinForms/Tools/ColorPickerDataBackend.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShiftOS.WinForms.Tools +{ + public static class ColorPickerDataBackend + { + private static Color[] _redmemory = new Color[20]; + private static Color[] _greenmemory = new Color[20]; + private static Color[] _bluememory = new Color[20]; + private static Color[] _orangememory = new Color[20]; + private static Color[] _pinkmemory = new Color[20]; + private static Color[] _yellowmemory = new Color[20]; + private static Color[] _purplememory = new Color[20]; + private static Color[] _graymemory = new Color[20]; + private static Color[] _anymemory = new Color[20]; + private static Color[] _brownmemory = new Color[20]; + + + public static Color[] anymemory + { + get { return _anymemory; } + } + + public static Color[] redmemory + { + get { return _redmemory; } + } + + public static Color[] greenmemory + { + get { return _greenmemory; } + } + + public static Color[] bluememory + { + get { return _bluememory; } + } + + public static Color[] brownmemory + { + get { return _brownmemory; } + } + + public static Color[] graymemory + { + get { return _graymemory; } + } + + public static Color lastcolourpick { get; set; } + + public static Color[] orangememory + { + get { return _orangememory; } + } + + public static Color[] pinkmemory + { + get { return _pinkmemory; } + } + + public static Color[] purplememory + { + get { return _purplememory; } + } + + public static Color[] yellowmemory + { + get { return _yellowmemory; } + } + + + } + + + +} diff --git a/ShiftOS.WinForms/Tools/ControlManager.cs b/ShiftOS.WinForms/Tools/ControlManager.cs new file mode 100644 index 0000000..5678fb3 --- /dev/null +++ b/ShiftOS.WinForms/Tools/ControlManager.cs @@ -0,0 +1,207 @@ +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 static ShiftOS.Engine.AppearanceManager; + + +namespace ShiftOS.WinForms.Tools +{ + public static class ControlManager + { + public static void Close(this UserControl ctrl) + { + for (int i = 0; i < AppearanceManager.OpenForms.Count; i++) + { + if (OpenForms[i].ParentWindow == ctrl) + { + (OpenForms[i] as Form).Close(); + return; + } + } + } + + + public static void SetupWindows() + { + if (SaveSystem.CurrentSave != null) + { + int screen_height_start = 0; + if (Shiftorium.UpgradeInstalled("wm_free_placement")) + { + } + else if (Shiftorium.UpgradeInstalled("wm_4_windows")) + { + int screen_width_half = Screen.PrimaryScreen.Bounds.Width / 2; + int screen_height_half = (Screen.PrimaryScreen.Bounds.Height - screen_height_start) / 2; + + for (int i = 0; i < OpenForms.Count; i++) + { + var frm = OpenForms[i] as WindowBorder; + + switch (i) + { + case 0: + frm.Location = new System.Drawing.Point(0, screen_height_start); + frm.Size = new System.Drawing.Size((OpenForms.Count > 1) ? screen_width_half : screen_width_half * 2, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2); + + break; + case 1: + frm.Location = new System.Drawing.Point(screen_width_half, screen_height_start); + frm.Size = new System.Drawing.Size(screen_width_half, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2); + break; + case 2: + frm.Location = new System.Drawing.Point(0, screen_height_half + screen_height_start); + frm.Size = new System.Drawing.Size((OpenForms.Count > 3) ? screen_width_half : screen_width_half * 2, screen_height_half); + break; + case 3: + frm.Location = new System.Drawing.Point(screen_width_half, screen_height_half + screen_height_start); + frm.Size = new System.Drawing.Size(screen_width_half, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2); + break; + } + } + + } + else if (Shiftorium.UpgradeInstalled("window_manager")) + { + int screen_width_half = Screen.PrimaryScreen.Bounds.Width / 2; + int screen_height = (Screen.PrimaryScreen.Bounds.Height) - screen_height_start; + + + + for (int i = 0; i < OpenForms.Count; i++) + { + + + var frm = OpenForms[i] as WindowBorder; + switch (i) + { + case 0: + frm.Location = new System.Drawing.Point(0, screen_height_start); + frm.Size = new System.Drawing.Size((OpenForms.Count > 1) ? screen_width_half : screen_width_half * 2, screen_height); + break; + case 1: + frm.Location = new System.Drawing.Point(screen_width_half, screen_height_start); + frm.Size = new System.Drawing.Size(screen_width_half, screen_height); + break; + } + OpenForms[i] = frm; + } + } + else + { + var frm = OpenForms[0] as WindowBorder; + frm.Location = new Point(0, 0); + frm.Size = frm.ParentForm.Size; + OpenForms[0] = frm; + + } + } + else + { + var frm = OpenForms[0] as WindowBorder; + frm.Location = new Point(0, 0); + frm.Size = Desktop.Size; + OpenForms[0] = frm; + + } + } + + + public static void SetupControl(Control ctrl) + { + + + if (!(ctrl is MenuStrip) && !(ctrl is ToolStrip) && !(ctrl is StatusStrip) && !(ctrl is ContextMenuStrip)) + { + string tag = ""; + + try + { + tag = ctrl.Tag.ToString(); + } + catch { } + + if (!tag.Contains("keepbg")) + { + if (ctrl.BackColor != Control.DefaultBackColor) + { + ctrl.BackColor = SkinEngine.LoadedSkin.ControlColor; + } + } + + Image dithered = null; + + + ctrl.ForeColor = SkinEngine.LoadedSkin.ControlTextColor; + + ctrl.Font = SkinEngine.LoadedSkin.MainFont; + + if (tag.Contains("header1")) + { + ctrl.Font = SkinEngine.LoadedSkin.HeaderFont; + } + + if (tag.Contains("header2")) + { + ctrl.Font = SkinEngine.LoadedSkin.Header2Font; + } + + if (tag.Contains("header3")) + { + ctrl.Font = SkinEngine.LoadedSkin.Header3Font; + } + + ctrl.Text = Localization.Parse(ctrl.Text); + ctrl.KeyDown += (o, a) => + { + if (a.Control && a.KeyCode == Keys.T) + { + a.SuppressKeyPress = true; + } + + }; + if (ctrl is Button) + { + (ctrl as Button).FlatStyle = FlatStyle.Flat; + } + else if (ctrl is WindowBorder) + { + (ctrl as WindowBorder).Setup(); + } + } + + MakeDoubleBuffered(ctrl); + } + + public static void MakeDoubleBuffered(Control c) + { + if (System.Windows.Forms.SystemInformation.TerminalServerSession) + return; + + System.Reflection.PropertyInfo aProp = + typeof(System.Windows.Forms.Control).GetProperty( + "DoubleBuffered", + System.Reflection.BindingFlags.NonPublic | + System.Reflection.BindingFlags.Instance); + + aProp.SetValue(c, true, null); + + } + + public static void SetupControls(Control frm) + { + SetupControl(frm); + + for (int i = 0; i < frm.Controls.Count; i++) + { + SetupControls(frm.Controls[i]); + } + } + + } +} diff --git a/ShiftOS.WinForms/Tools/DitheringEngine.cs b/ShiftOS.WinForms/Tools/DitheringEngine.cs new file mode 100644 index 0000000..2497e6d --- /dev/null +++ b/ShiftOS.WinForms/Tools/DitheringEngine.cs @@ -0,0 +1,378 @@ +#define FLOYDSTEINBERG + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; +using System.Threading; +using ShiftOS.Engine; +using System.Runtime.InteropServices; + +namespace ShiftOS.WinForms.Tools +{ + public static class DitheringEngine + { + public static Color GetColor(Color source) + { + if (Shiftorium.UpgradeInstalled("color_depth_24_bits")) + { + return Color.FromArgb(source.R, source.G, source.B); //get rid of the alpha channel. + } + else + { + if (Shiftorium.UpgradeInstalled("color_depth_16_bits")) + { + byte r = (byte)linear(source.R, 0, 0xFF, 0, 0x1F); + byte g = (byte)linear(source.G, 0, 0xFF, 0, 0x3F); + byte b = (byte)linear(source.B, 0, 0xFF, 0, 0x1F); + + return Color.FromArgb(r, g, b); + } + else + { + int gray = (source.R + source.G + source.B) / 3; + + if (Shiftorium.UpgradeInstalled("color_depth_8_bits")) + return Color.FromArgb(gray, gray, gray); + else + { + if (Shiftorium.UpgradeInstalled("color_depth_6_bits")) + { + int gray6 = (int)linear(gray, 0, 0xFF, 0, 0x3F) * 3; + + + + return Color.FromArgb(gray6, gray6, gray6); + } + else + { + if (Shiftorium.UpgradeInstalled("color_depth_4_bits")) + { + int gray4 = (int)linear(linear(gray, 0, 0xFF, 0, 0xF), 0, 0xF, 0, 0xFF) * 0xF; + return Color.FromArgb(gray4, gray4, gray4); + } + else + { + if (Shiftorium.UpgradeInstalled("color_depth_2_bits")) + { + int gray2 = (int)linear(linear(gray, 0, 0xFF, 0, 0x3), 0, 0x3, 0, 0xFF) * 63; + return Color.FromArgb(gray2, gray2, gray2); + } + else { + if (gray >= 127) + { + return Color.Black; + } + else + { + return Color.White; + } + } + } + } + } + } + } + } + + public static void DitherColor(Color source, int width, int height, Action result) + { + var bmp = new Bitmap(width + 1, height + 1); + var data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + byte[] rgb = new byte[Math.Abs(data.Stride) * data.Height]; + Marshal.Copy(data.Scan0, rgb, 0, rgb.Length); + for (int i = 0; i < rgb.Length - 3; i += 3) + { + rgb[i] = source.R; + rgb[i + 1] = source.G; + rgb[i + 2] = source.B; + } + Marshal.Copy(rgb, 0, data.Scan0, rgb.Length); + bmp.UnlockBits(data); + DitherImage(bmp, result); + + } + + static private double linear(double x, double x0, double x1, double y0, double y1) + { + if ((x1 - x0) == 0) + { + return (y0 + y1) / 2; + } + return y0 + (x - x0) * (y1 - y0) / (x1 - x0); + } + +#if NODITHER + public static void DitherImage(Image source, Action result) + { + Desktop.InvokeOnWorkerThread(new Action(() => + { + result?.Invoke(source); + })); + } +#endif + +#if BINARIZE + public static void DitherImage(Image source, Action result) + { + if (source == null) + { + result?.Invoke(source); + return; + } + + + var t = new Thread(new ThreadStart(() => + { + var bmp = new Bitmap(source.Width, source.Height); + var sourceBmp = (Bitmap)source; + int error = 0; + for (int y = 0; y < bmp.Height; y++) + { + for (int x = 0; x < bmp.Width; x++) + { + + Color c = sourceBmp.GetPixel(x, y); + int gray = ((c.R + c.G + c.B) / 3); + if (gray >= 127) + { + error = gray - 255; + bmp.SetPixel(x, y, Color.White); + } + else + { + error = gray; + bmp.SetPixel(x, y, Color.Black); + } + + + } + } + Desktop.InvokeOnWorkerThread(new Action(() => { result?.Invoke(bmp); })); + })); + t.IsBackground = true; + t.Start(); + + } +#endif + +#if DITHER1D + public static void DitherImage(Image source, Action result) + { + if (source == null) + { + result?.Invoke(source); + return; + } + + + var t = new Thread(new ThreadStart(() => + { + var bmp = new Bitmap(source.Width, source.Height); + var sourceBmp = (Bitmap)source; + int error = 0; + for (int y = 0; y < bmp.Height; y++) + { + for (int x = 0; x < bmp.Width; x++) + { + + Color c = sourceBmp.GetPixel(x, y); + int gray = ((c.R + c.G + c.B) / 3) + error; + if (gray >= 127) + { + error = gray - 255; + bmp.SetPixel(x, y, Color.White); + } + else + { + error = gray; + bmp.SetPixel(x, y, Color.Black); + } + + + } + } + Desktop.InvokeOnWorkerThread(new Action(() => { result?.Invoke(bmp); })); + })); + t.IsBackground = true; + t.Start(); + } +#endif + +#if FLOYDSTEINBERG + public static void DitherImage(Image source, Action result) + { + if (source == null) + { + result?.Invoke(source); + return; + } + + + var bmp = new Bitmap(source.Width, source.Height); + var sourceBmp = (Bitmap)source; + var sourceLck = sourceBmp.LockBits(new Rectangle(0, 0, sourceBmp.Width, sourceBmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + var destLck = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + int error_r = 0; + + + int sourceBytes = Math.Abs(sourceLck.Stride) * sourceLck.Height; + int destBytes = Math.Abs(destLck.Stride) * destLck.Height; + + IntPtr sourcePtr = sourceLck.Scan0; + IntPtr destPtr = destLck.Scan0; + + byte[] destArr = new byte[destBytes]; + byte[] sourceArr = new byte[sourceBytes]; + + byte[] grays = new byte[destBytes]; + + Marshal.Copy(sourcePtr, sourceArr, 0, sourceBytes); + Marshal.Copy(destPtr, destArr, 0, destBytes); + + int width = Math.Abs(destLck.Stride); + int height = destLck.Height; + + bool sixteenBits = Shiftorium.UpgradeInstalled("color_depth_16_bits"); + bool twoBits = Shiftorium.UpgradeInstalled("color_depth_2_bits"); + bool sixBits = Shiftorium.UpgradeInstalled("color_depth_6_bits"); + bool fourBits = Shiftorium.UpgradeInstalled("color_depth_4_bits"); + bool eightBits = Shiftorium.UpgradeInstalled("color_depth_8_bits"); + bool color_depth_floydsteinberg = Shiftorium.UpgradeInstalled("color_depth_floyd-steinberg_dithering"); + bool dithering = Shiftorium.UpgradeInstalled("color_depth_dithering"); + + for (int y = 0; y < (destLck.Height); y++) + { + for (int x = 0; x < (Math.Abs(destLck.Stride)); x += 3) + { + int i = getIndexFromXY(x, y, width); + byte red = sourceArr[i]; + byte green = sourceArr[i + 1]; + byte blue = sourceArr[i + 2]; + + Color oldc = Color.FromArgb(red, green, blue); + Color newc; + + if (sixteenBits) + { + newc = GetColor(oldc); + } + else + { + int gray = ((oldc.R + oldc.G + oldc.B) / 3); + + byte newgray = 0; + + if (dithering && !color_depth_floydsteinberg) + gray += error_r; + + + + if (eightBits) + { + newgray = (byte)gray; + error_r = 0; + } + else if(sixBits) + { + newgray = (byte)(linear(gray, 0, 0xFF, 0, 0x3F) * 3); + error_r = newgray - gray; + } + else if (fourBits) + { + newgray = (byte)(linear(gray, 0, 0xFF, 0, 0xF) * 0xF); + error_r = newgray - gray; + } + else if (twoBits) + { + if (gray >= 191) + newgray = 0xFF; + else if (gray >= 127) + newgray = Color.LightGray.R; + else if (gray >= 64) + newgray = Color.DarkGray.R; + else + newgray = 0x00; + error_r = newgray - gray; + } + else + { + if (gray >= 127) + newgray = 0xFF; + else + newgray = 0x00; + error_r = newgray - gray; + } + newc = Color.FromArgb(newgray, newgray, newgray); + } + + int nextIndex = getIndexFromXY(x + 3, y, width); + int nextRow = getIndexFromXY(x, y + 1, width); + int nextIndexOnNextRow = getIndexFromXY(x + 3, y + 1, width); + int prevIndexOnNextRow = getIndexFromXY(x - 3, y + 1, width); + + grays[i] = newc.R; + grays[i + 1] = newc.G; + grays[i + 2] = newc.B; + + if (dithering) + { + if (color_depth_floydsteinberg) + { + if (x + 3 < width) + { + sourceArr[nextIndex] += (byte)((error_r * 7) / 16); + sourceArr[nextIndex + 1] += (byte)((error_r * 7) / 16); + sourceArr[nextIndex + 2] += (byte)((error_r * 7) / 16); + } + if (y + 1 < height) + { + sourceArr[nextRow] += (byte)((error_r) / 16); + sourceArr[nextRow + 1] += (byte)((error_r) / 16); + sourceArr[nextRow + 2] += (byte)((error_r) / 16); + } + if (x + 3 < width && y + 1 < height) + { + sourceArr[nextIndexOnNextRow] += (byte)((error_r * 3) / 16); + sourceArr[nextIndexOnNextRow + 1] += (byte)((error_r * 3) / 16); + sourceArr[nextIndexOnNextRow + 2] += (byte)((error_r * 3) / 16); + + } + if (x - 3 > 0 && y + 1 < height) + { + sourceArr[prevIndexOnNextRow] += (byte)((error_r * 5) / 16); + sourceArr[prevIndexOnNextRow + 1] += (byte)((error_r * 5) / 16); + sourceArr[prevIndexOnNextRow + 2] += (byte)((error_r * 5) / 16); + + } + } + } + } + } + + for (int i = 0; i < destArr.Length - 3; i++) + { + destArr[i] = grays[i]; + + } + + Marshal.Copy(destArr, 0, destPtr, destBytes); + + + bmp.UnlockBits(destLck); + + + + Desktop.InvokeOnWorkerThread(new Action(() => { result?.Invoke(bmp); })); + + } +#endif + + private static int getIndexFromXY(int x, int y, int width) + { + return (width * y) + x; + } + } +} diff --git a/ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs b/ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs new file mode 100644 index 0000000..764ca7f --- /dev/null +++ b/ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs @@ -0,0 +1,494 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; +using static ShiftOS.Engine.SkinEngine; +using System.Windows.Forms; + +namespace ShiftOS.WinForms.Tools +{ + public class ShiftOSMenuRenderer : ToolStripProfessionalRenderer + { + public ShiftOSMenuRenderer() : base(new ShiftOSColorTable()) + { + + } + + public ShiftOSMenuRenderer(ProfessionalColorTable table) : base(table) + { + + } + + protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) + { + e.TextFont = LoadedSkin.MainFont; + if (e.Item.Selected == true) + { + e.TextColor = LoadedSkin.Menu_SelectedTextColor; + } + else + { + e.TextColor = LoadedSkin.Menu_TextColor; + } + base.OnRenderItemText(e); + } + } + + public class ShiftOSColorTable : ProfessionalColorTable + { + public override Color ButtonSelectedHighlight + { + get { return LoadedSkin.Menu_ButtonSelectedHighlight; } + } + public override Color ButtonSelectedHighlightBorder + { + get { return LoadedSkin.Menu_ButtonSelectedHighlight; } + } + public override Color ButtonPressedHighlight + { + get { return LoadedSkin.Menu_ButtonPressedHighlight; } + } + public override Color ButtonPressedHighlightBorder + { + get { return LoadedSkin.Menu_ButtonPressedHighlight; } + } + public override Color ButtonCheckedHighlight + { + get { return LoadedSkin.Menu_ButtonCheckedHighlight; } + } + public override Color ButtonCheckedHighlightBorder + { + get { return LoadedSkin.Menu_ButtonCheckedHighlightBorder; } + } + public override Color ButtonPressedBorder + { + get { return LoadedSkin.Menu_ButtonPressedBorder; } + } + public override Color ButtonSelectedBorder + { + get { return LoadedSkin.Menu_ButtonSelectedBorder; } + } + public override Color ButtonCheckedGradientBegin + { + get { return LoadedSkin.Menu_ButtonCheckedGradientBegin; } + } + public override Color ButtonCheckedGradientMiddle + { + get { return LoadedSkin.Menu_ButtonCheckedGradientMiddle; } + } + public override Color ButtonCheckedGradientEnd + { + get { return LoadedSkin.Menu_ButtonCheckedGradientEnd; } + } + public override Color ButtonSelectedGradientBegin + { + get { return LoadedSkin.Menu_ButtonSelectedGradientBegin; } + } + public override Color ButtonSelectedGradientMiddle + { + get { return LoadedSkin.Menu_ButtonSelectedGradientMiddle; } + } + public override Color ButtonSelectedGradientEnd + { + get { return LoadedSkin.Menu_ButtonSelectedGradientEnd; } + } + public override Color ButtonPressedGradientBegin + { + get { return LoadedSkin.Menu_ButtonPressedGradientBegin; } + } + public override Color ButtonPressedGradientMiddle + { + get { return LoadedSkin.Menu_ButtonPressedGradientMiddle; } + } + public override Color ButtonPressedGradientEnd + { + get { return LoadedSkin.Menu_ButtonPressedGradientEnd; } + } + public override Color CheckBackground + { + get { return LoadedSkin.Menu_CheckBackground; } + } + public override Color CheckSelectedBackground + { + get { return LoadedSkin.Menu_CheckSelectedBackground; } + } + public override Color CheckPressedBackground + { + get { return LoadedSkin.Menu_CheckPressedBackground; } + } + public override Color GripDark + { + get { return Color.Transparent; } + } + public override Color GripLight + { + get { return Color.Transparent; } + } + public override Color ImageMarginGradientBegin + { + get { return LoadedSkin.Menu_ImageMarginGradientBegin; } + } + public override Color ImageMarginGradientMiddle + { + get { return LoadedSkin.Menu_ImageMarginGradientMiddle; } + } + public override Color ImageMarginGradientEnd + { + get { return LoadedSkin.Menu_ImageMarginGradientEnd; } + } + public override Color ImageMarginRevealedGradientBegin + { + get { return LoadedSkin.Menu_ImageMarginGradientBegin; } + } + public override Color ImageMarginRevealedGradientMiddle + { + get { return LoadedSkin.Menu_ImageMarginGradientMiddle; } + } + public override Color ImageMarginRevealedGradientEnd + { + get { return LoadedSkin.Menu_ImageMarginGradientEnd; } + } + public override Color MenuStripGradientBegin + { + get { return LoadedSkin.Menu_MenuStripGradientBegin; } + } + public override Color MenuStripGradientEnd + { + get { return LoadedSkin.Menu_MenuStripGradientEnd; } + } + public override Color MenuItemSelected + { + get { return LoadedSkin.Menu_MenuItemSelected; } + } + public override Color MenuItemBorder + { + get { return LoadedSkin.Menu_MenuItemSelected; } + } + public override Color MenuBorder + { + get { return LoadedSkin.Menu_MenuBorder; } + } + public override Color MenuItemSelectedGradientBegin + { + get { return LoadedSkin.Menu_MenuItemSelectedGradientBegin; } + } + public override Color MenuItemSelectedGradientEnd + { + get { return LoadedSkin.Menu_MenuItemSelectedGradientEnd; } + } + public override Color MenuItemPressedGradientBegin + { + get { return LoadedSkin.Menu_MenuItemPressedGradientBegin; } + } + public override Color MenuItemPressedGradientMiddle + { + get { return LoadedSkin.Menu_MenuItemPressedGradientMiddle; } + } + public override Color MenuItemPressedGradientEnd + { + get { return LoadedSkin.Menu_MenuItemPressedGradientEnd; } + } + public override Color RaftingContainerGradientBegin + { + get { return LoadedSkin.Menu_RaftingContainerGradientBegin; } + } + public override Color RaftingContainerGradientEnd + { + get { return LoadedSkin.Menu_RaftingContainerGradientEnd; } + } + public override Color SeparatorDark + { + get { return LoadedSkin.Menu_SeparatorDark; } + } + public override Color SeparatorLight + { + get { return LoadedSkin.Menu_SeparatorLight; } + } + public override Color StatusStripGradientBegin + { + get { return LoadedSkin.Menu_StatusStripGradientBegin; } + } + public override Color StatusStripGradientEnd + { + get { return LoadedSkin.Menu_StatusStripGradientEnd; } + } + public override Color ToolStripBorder + { + get { return LoadedSkin.Menu_ToolStripBorder; } + } + public override Color ToolStripDropDownBackground + { + get { return LoadedSkin.Menu_ToolStripDropDownBackground; } + } + public override Color ToolStripGradientBegin + { + get { return LoadedSkin.Menu_ToolStripGradientBegin; } + } + public override Color ToolStripGradientMiddle + { + get { return LoadedSkin.Menu_ToolStripGradientMiddle; } + } + public override Color ToolStripGradientEnd + { + get { return LoadedSkin.Menu_ToolStripGradientEnd; } + } + public override Color ToolStripContentPanelGradientBegin + { + get { return LoadedSkin.Menu_ToolStripContentPanelGradientBegin; } + } + public override Color ToolStripContentPanelGradientEnd + { + get { return LoadedSkin.Menu_ToolStripContentPanelGradientEnd; } + } + public override Color ToolStripPanelGradientBegin + { + get { return LoadedSkin.Menu_ToolStripPanelGradientBegin; } + } + public override Color ToolStripPanelGradientEnd + { + get { return LoadedSkin.Menu_ToolStripPanelGradientEnd; } + } + public override Color OverflowButtonGradientBegin + { + get { return Color.Transparent; } + } + public override Color OverflowButtonGradientMiddle + { + get { return Color.Transparent; } + } + public override Color OverflowButtonGradientEnd + { + get { return Color.Transparent; } + } + } + + public class AppLauncherColorTable : ProfessionalColorTable + { + public override Color ButtonSelectedHighlight + { + get { return LoadedSkin.Menu_ButtonSelectedHighlight; } + } + public override Color ButtonSelectedHighlightBorder + { + get { return LoadedSkin.Menu_ButtonSelectedHighlight; } + } + public override Color ButtonPressedHighlight + { + get { return LoadedSkin.Menu_ButtonPressedHighlight; } + } + public override Color ButtonPressedHighlightBorder + { + get { return LoadedSkin.Menu_ButtonPressedHighlight; } + } + public override Color ButtonCheckedHighlight + { + get { return LoadedSkin.Menu_ButtonCheckedHighlight; } + } + public override Color ButtonCheckedHighlightBorder + { + get { return LoadedSkin.Menu_ButtonCheckedHighlightBorder; } + } + public override Color ButtonPressedBorder + { + get { return LoadedSkin.Menu_ButtonPressedBorder; } + } + public override Color ButtonSelectedBorder + { + get { return LoadedSkin.Menu_ButtonSelectedBorder; } + } + public override Color ButtonCheckedGradientBegin + { + get { return LoadedSkin.Menu_ButtonCheckedGradientBegin; } + } + public override Color ButtonCheckedGradientMiddle + { + get { return LoadedSkin.Menu_ButtonCheckedGradientMiddle; } + } + public override Color ButtonCheckedGradientEnd + { + get { return LoadedSkin.Menu_ButtonCheckedGradientEnd; } + } + public override Color ButtonSelectedGradientBegin + { + get { return LoadedSkin.Menu_ButtonSelectedGradientBegin; } + } + public override Color ButtonSelectedGradientMiddle + { + get { return LoadedSkin.Menu_ButtonSelectedGradientMiddle; } + } + public override Color ButtonSelectedGradientEnd + { + get { return LoadedSkin.Menu_ButtonSelectedGradientEnd; } + } + public override Color ButtonPressedGradientBegin + { + get { return LoadedSkin.Menu_ButtonPressedGradientBegin; } + } + public override Color ButtonPressedGradientMiddle + { + get { return LoadedSkin.Menu_ButtonPressedGradientMiddle; } + } + public override Color ButtonPressedGradientEnd + { + get { return LoadedSkin.Menu_ButtonPressedGradientEnd; } + } + public override Color CheckBackground + { + get { return LoadedSkin.Menu_CheckBackground; } + } + public override Color CheckSelectedBackground + { + get { return LoadedSkin.Menu_CheckSelectedBackground; } + } + public override Color CheckPressedBackground + { + get { return LoadedSkin.Menu_CheckPressedBackground; } + } + public override Color GripDark + { + get { return Color.Transparent; } + } + public override Color GripLight + { + get { return Color.Transparent; } + } + public override Color ImageMarginGradientBegin + { + get { return LoadedSkin.Menu_ImageMarginGradientBegin; } + } + public override Color ImageMarginGradientMiddle + { + get { return LoadedSkin.Menu_ImageMarginGradientMiddle; } + } + public override Color ImageMarginGradientEnd + { + get { return LoadedSkin.Menu_ImageMarginGradientEnd; } + } + public override Color ImageMarginRevealedGradientBegin + { + get { return LoadedSkin.Menu_ImageMarginGradientBegin; } + } + public override Color ImageMarginRevealedGradientMiddle + { + get { return LoadedSkin.Menu_ImageMarginGradientMiddle; } + } + public override Color ImageMarginRevealedGradientEnd + { + get { return LoadedSkin.Menu_ImageMarginGradientEnd; } + } + public override Color MenuStripGradientBegin + { + get { return LoadedSkin.Menu_MenuStripGradientBegin; } + } + public override Color MenuStripGradientEnd + { + get { return LoadedSkin.Menu_MenuStripGradientEnd; } + } + public override Color MenuItemSelected + { + get { return LoadedSkin.Menu_MenuItemSelected; } + } + public override Color MenuItemBorder + { + get { return LoadedSkin.Menu_MenuItemSelected; } + } + public override Color MenuBorder + { + get { return LoadedSkin.Menu_MenuBorder; } + } + public override Color MenuItemSelectedGradientBegin + { + get { return (GetImage("applauncher") != null) ? Color.Transparent : LoadedSkin.Menu_MenuItemSelectedGradientBegin; } + } + public override Color MenuItemSelectedGradientEnd + { + get { return (GetImage("applauncher") != null) ? Color.Transparent : LoadedSkin.Menu_MenuItemSelectedGradientEnd; } + } + public override Color MenuItemPressedGradientBegin + { + get { return (GetImage("applauncher") != null) ? Color.Transparent : LoadedSkin.Menu_MenuItemPressedGradientBegin; } + } + public override Color MenuItemPressedGradientMiddle + { + get { return (GetImage("applauncher") != null) ? Color.Transparent : LoadedSkin.Menu_MenuItemPressedGradientMiddle; } + } + public override Color MenuItemPressedGradientEnd + { + get { return (GetImage("applauncher") != null) ? Color.Transparent : LoadedSkin.Menu_MenuItemPressedGradientEnd; } + } + public override Color RaftingContainerGradientBegin + { + get { return LoadedSkin.Menu_RaftingContainerGradientBegin; } + } + public override Color RaftingContainerGradientEnd + { + get { return LoadedSkin.Menu_RaftingContainerGradientEnd; } + } + public override Color SeparatorDark + { + get { return LoadedSkin.Menu_SeparatorDark; } + } + public override Color SeparatorLight + { + get { return LoadedSkin.Menu_SeparatorLight; } + } + public override Color StatusStripGradientBegin + { + get { return LoadedSkin.Menu_StatusStripGradientBegin; } + } + public override Color StatusStripGradientEnd + { + get { return LoadedSkin.Menu_StatusStripGradientEnd; } + } + public override Color ToolStripBorder + { + get { return LoadedSkin.Menu_ToolStripBorder; } + } + public override Color ToolStripDropDownBackground + { + get { return LoadedSkin.Menu_ToolStripDropDownBackground; } + } + public override Color ToolStripGradientBegin + { + get { return LoadedSkin.Menu_ToolStripGradientBegin; } + } + public override Color ToolStripGradientMiddle + { + get { return LoadedSkin.Menu_ToolStripGradientMiddle; } + } + public override Color ToolStripGradientEnd + { + get { return LoadedSkin.Menu_ToolStripGradientEnd; } + } + public override Color ToolStripContentPanelGradientBegin + { + get { return LoadedSkin.Menu_ToolStripContentPanelGradientBegin; } + } + public override Color ToolStripContentPanelGradientEnd + { + get { return LoadedSkin.Menu_ToolStripContentPanelGradientEnd; } + } + public override Color ToolStripPanelGradientBegin + { + get { return LoadedSkin.Menu_ToolStripPanelGradientBegin; } + } + public override Color ToolStripPanelGradientEnd + { + get { return LoadedSkin.Menu_ToolStripPanelGradientEnd; } + } + public override Color OverflowButtonGradientBegin + { + get { return Color.Transparent; } + } + public override Color OverflowButtonGradientMiddle + { + get { return Color.Transparent; } + } + public override Color OverflowButtonGradientEnd + { + get { return Color.Transparent; } + } + } +} diff --git a/ShiftOS.WinForms/WFLanguageProvider.cs b/ShiftOS.WinForms/WFLanguageProvider.cs new file mode 100644 index 0000000..d334345 --- /dev/null +++ b/ShiftOS.WinForms/WFLanguageProvider.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; +using ShiftOS.Engine; +using ShiftOS.Objects.ShiftFS; + +namespace ShiftOS.WinForms +{ + public class WFLanguageProvider : ILanguageProvider + { + public string[] GetAllLanguages() + { + return JsonConvert.DeserializeObject(Properties.Resources.languages); + } + + public string GetCurrentTranscript() + { + switch (SaveSystem.CurrentSave.Language) + { + case "deutsch - in beta": + return Properties.Resources.strings_de; + default: + return getDefault(); + + } + } + + public List GetJSONTranscripts() + { + var strings = new List(); + strings.Add(Properties.Resources.strings_en); + strings.Add(Properties.Resources.strings_de); + return strings; + } + + public void WriteDefaultTranscript() + { + Utils.WriteAllText(Paths.GetPath("english.local"), getDefault()); + } + + private string getDefault() + { + return Properties.Resources.strings_en; + } + } +} diff --git a/ShiftOS.WinForms/WindowBorder.Designer.cs b/ShiftOS.WinForms/WindowBorder.Designer.cs new file mode 100644 index 0000000..74f9d25 --- /dev/null +++ b/ShiftOS.WinForms/WindowBorder.Designer.cs @@ -0,0 +1,223 @@ +using ShiftOS.Engine; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms +{ + partial class WindowBorder + { + ///

+ /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pnltitle = new System.Windows.Forms.Panel(); + this.pnltitleleft = new System.Windows.Forms.Panel(); + this.pnltitleright = new System.Windows.Forms.Panel(); + this.pnlminimize = new System.Windows.Forms.Panel(); + this.pnlmaximize = new System.Windows.Forms.Panel(); + this.pnlclose = new System.Windows.Forms.Panel(); + this.lbtitletext = new System.Windows.Forms.Label(); + this.pnlbottom = new System.Windows.Forms.Panel(); + this.pnlbottomr = new System.Windows.Forms.Panel(); + this.pnlbottoml = new System.Windows.Forms.Panel(); + this.pnlleft = new System.Windows.Forms.Panel(); + this.pnlright = new System.Windows.Forms.Panel(); + this.pnlcontents = new System.Windows.Forms.Panel(); + this.pnltitle.SuspendLayout(); + this.pnlbottom.SuspendLayout(); + this.SuspendLayout(); + // + // pnltitle + // + this.pnltitle.BackColor = System.Drawing.Color.Black; + this.pnltitle.Controls.Add(this.pnltitleleft); + this.pnltitle.Controls.Add(this.pnltitleright); + this.pnltitle.Controls.Add(this.pnlminimize); + this.pnltitle.Controls.Add(this.pnlmaximize); + this.pnltitle.Controls.Add(this.pnlclose); + this.pnltitle.Controls.Add(this.lbtitletext); + this.pnltitle.Dock = System.Windows.Forms.DockStyle.Top; + this.pnltitle.Location = new System.Drawing.Point(2, 0); + this.pnltitle.Name = "pnltitle"; + this.pnltitle.Size = new System.Drawing.Size(726, 30); + this.pnltitle.TabIndex = 0; + this.pnltitle.Paint += new System.Windows.Forms.PaintEventHandler(this.pnltitle_Paint); + this.pnltitle.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pnltitle_MouseMove); + // + // pnltitleleft + // + this.pnltitleleft.Dock = System.Windows.Forms.DockStyle.Left; + this.pnltitleleft.Location = new System.Drawing.Point(0, 0); + this.pnltitleleft.Name = "pnltitleleft"; + this.pnltitleleft.Size = new System.Drawing.Size(2, 30); + this.pnltitleleft.TabIndex = 4; + // + // pnltitleright + // + this.pnltitleright.Dock = System.Windows.Forms.DockStyle.Right; + this.pnltitleright.Location = new System.Drawing.Point(724, 0); + this.pnltitleright.Name = "pnltitleright"; + this.pnltitleright.Size = new System.Drawing.Size(2, 30); + this.pnltitleright.TabIndex = 5; + // + // pnlminimize + // + this.pnlminimize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pnlminimize.BackColor = System.Drawing.Color.Green; + this.pnlminimize.Location = new System.Drawing.Point(645, 3); + this.pnlminimize.Name = "pnlminimize"; + this.pnlminimize.Size = new System.Drawing.Size(24, 24); + this.pnlminimize.TabIndex = 3; + this.pnlminimize.Click += new System.EventHandler(this.pnlminimize_Click); + // + // pnlmaximize + // + this.pnlmaximize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pnlmaximize.BackColor = System.Drawing.Color.Yellow; + this.pnlmaximize.Location = new System.Drawing.Point(672, 3); + this.pnlmaximize.Name = "pnlmaximize"; + this.pnlmaximize.Size = new System.Drawing.Size(24, 24); + this.pnlmaximize.TabIndex = 2; + this.pnlmaximize.Click += new System.EventHandler(this.pnlmaximize_Click); + // + // pnlclose + // + this.pnlclose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pnlclose.BackColor = System.Drawing.Color.Red; + this.pnlclose.Location = new System.Drawing.Point(699, 3); + this.pnlclose.Name = "pnlclose"; + this.pnlclose.Size = new System.Drawing.Size(24, 24); + this.pnlclose.TabIndex = 1; + this.pnlclose.Click += new System.EventHandler(this.pnlclose_Click); + // + // lbtitletext + // + this.lbtitletext.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbtitletext.AutoSize = true; + this.lbtitletext.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lbtitletext.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold); + this.lbtitletext.ForeColor = System.Drawing.Color.White; + this.lbtitletext.Location = new System.Drawing.Point(4, 0); + this.lbtitletext.Name = "lbtitletext"; + this.lbtitletext.Size = new System.Drawing.Size(77, 14); + this.lbtitletext.TabIndex = 0; + this.lbtitletext.Text = "Title text"; + this.lbtitletext.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.lbtitletext.UseMnemonic = false; + this.lbtitletext.Click += new System.EventHandler(this.lbtitletext_Click); + this.lbtitletext.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lbtitletext_MouseMove); + // + // pnlbottom + // + this.pnlbottom.BackColor = System.Drawing.Color.Black; + this.pnlbottom.Controls.Add(this.pnlbottomr); + this.pnlbottom.Controls.Add(this.pnlbottoml); + this.pnlbottom.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pnlbottom.Location = new System.Drawing.Point(2, 491); + this.pnlbottom.Name = "pnlbottom"; + this.pnlbottom.Size = new System.Drawing.Size(726, 2); + this.pnlbottom.TabIndex = 1; + // + // pnlbottomr + // + this.pnlbottomr.Dock = System.Windows.Forms.DockStyle.Right; + this.pnlbottomr.Location = new System.Drawing.Point(724, 0); + this.pnlbottomr.Name = "pnlbottomr"; + this.pnlbottomr.Size = new System.Drawing.Size(2, 2); + this.pnlbottomr.TabIndex = 3; + // + // pnlbottoml + // + this.pnlbottoml.Dock = System.Windows.Forms.DockStyle.Left; + this.pnlbottoml.Location = new System.Drawing.Point(0, 0); + this.pnlbottoml.Name = "pnlbottoml"; + this.pnlbottoml.Size = new System.Drawing.Size(2, 2); + this.pnlbottoml.TabIndex = 2; + // + // pnlleft + // + this.pnlleft.BackColor = System.Drawing.Color.Black; + this.pnlleft.Dock = System.Windows.Forms.DockStyle.Left; + this.pnlleft.Location = new System.Drawing.Point(0, 0); + this.pnlleft.Name = "pnlleft"; + this.pnlleft.Size = new System.Drawing.Size(2, 493); + this.pnlleft.TabIndex = 2; + // + // pnlright + // + this.pnlright.BackColor = System.Drawing.Color.Black; + this.pnlright.Dock = System.Windows.Forms.DockStyle.Right; + this.pnlright.Location = new System.Drawing.Point(728, 0); + this.pnlright.Name = "pnlright"; + this.pnlright.Size = new System.Drawing.Size(2, 493); + this.pnlright.TabIndex = 3; + // + // pnlcontents + // + this.pnlcontents.BackColor = System.Drawing.Color.Black; + this.pnlcontents.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlcontents.ForeColor = System.Drawing.Color.White; + this.pnlcontents.Location = new System.Drawing.Point(2, 30); + this.pnlcontents.Name = "pnlcontents"; + this.pnlcontents.Size = new System.Drawing.Size(726, 461); + this.pnlcontents.TabIndex = 4; + // + // WindowBorder + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(730, 493); + this.Controls.Add(this.pnlcontents); + this.Controls.Add(this.pnltitle); + this.Controls.Add(this.pnlbottom); + this.Controls.Add(this.pnlright); + this.Controls.Add(this.pnlleft); + this.Name = "WindowBorder"; + this.Load += new System.EventHandler(this.WindowBorder_Load); + this.pnltitle.ResumeLayout(false); + this.pnltitle.PerformLayout(); + this.pnlbottom.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel pnltitle; + private System.Windows.Forms.Label lbtitletext; + private System.Windows.Forms.Panel pnlminimize; + private System.Windows.Forms.Panel pnlmaximize; + private System.Windows.Forms.Panel pnlclose; + private System.Windows.Forms.Panel pnlbottom; + private System.Windows.Forms.Panel pnlbottomr; + private System.Windows.Forms.Panel pnlbottoml; + private System.Windows.Forms.Panel pnlleft; + private System.Windows.Forms.Panel pnlright; + private System.Windows.Forms.Panel pnlcontents; + private System.Windows.Forms.Panel pnltitleright; + private System.Windows.Forms.Panel pnltitleleft; + } +} diff --git a/ShiftOS.WinForms/WindowBorder.cs b/ShiftOS.WinForms/WindowBorder.cs new file mode 100644 index 0000000..46a4c87 --- /dev/null +++ b/ShiftOS.WinForms/WindowBorder.cs @@ -0,0 +1,318 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +using static ShiftOS.Engine.SkinEngine; +using System.Runtime.InteropServices; +using ShiftOS.Engine; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms +{ + public partial class WindowBorder : Form, IWindowBorder + { + protected override void OnClosing(CancelEventArgs e) + { + if ((ParentWindow as IShiftOSWindow).OnUnload()) + { + if (!SaveSystem.ShuttingDown) + { + if(Engine.AppearanceManager.OpenForms.Contains(this)) + Engine.AppearanceManager.OpenForms.Remove(this); + Desktop.ResetPanelButtons(); + } + } + base.OnClosing(e); + } + private UserControl _parentWindow = null; + + public IShiftOSWindow ParentWindow + { + get + { + return (IShiftOSWindow)_parentWindow; + } + set + { + _parentWindow = (UserControl)value; + } + } + + public WindowBorder(UserControl win) + { + InitializeComponent(); + this._parentWindow = win; + Shiftorium.Installed += () => + { + try + { + this.ParentForm.Invoke(new Action(() => + { + Setup(); + })); + } + catch { } + }; + SkinEngine.SkinLoaded += () => + { + try + { + Setup(); + (ParentWindow as IShiftOSWindow).OnSkinLoad(); + ControlManager.SetupControl(this.pnlcontents); + } + catch + { + + } + }; + + this.Width = LoadedSkin.LeftBorderWidth + _parentWindow.Width + LoadedSkin.RightBorderWidth; + this.Height = LoadedSkin.TitlebarHeight + _parentWindow.Height + LoadedSkin.BottomBorderWidth; + + this.pnlcontents.Controls.Add(this._parentWindow); + this._parentWindow.Dock = DockStyle.Fill; + this._parentWindow.Show(); + ControlManager.SetupControls(this._parentWindow); + + + Desktop.ShowWindow(this); + + } + + public static void Universal_KeyDown(object o, KeyEventArgs a) + { + if (a.Control && a.KeyCode == Keys.T) + { + a.SuppressKeyPress = true; + + + if (SaveSystem.CurrentSave != null) + { + if (Shiftorium.UpgradeInstalled("window_manager")) + { + Engine.AppearanceManager.SetupWindow(new Applications.Terminal()); + } + } + } + } + + public void WindowBorder_Load(object sender, EventArgs e) + { + this.DoubleBuffered = true; + + this._parentWindow.TextChanged += (o, a) => + { + Setup(); + Desktop.ResetPanelButtons(); + + }; + + this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2; + this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2; + + if (!this.IsDialog) + { + Engine.AppearanceManager.OpenForms.Add(this); + } + + SaveSystem.GameReady += () => + { + if (Shiftorium.UpgradeInstalled("wm_free_placement")) + { + AppearanceManager.Invoke(new Action(() => + { + this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2; + this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2; + + })); + } + AppearanceManager.Invoke(new Action(() => + { + Setup(); + })); + }; + + ControlManager.SetupControls(this); + + Setup(); + + var sWin = (IShiftOSWindow)ParentWindow; + + sWin.OnLoad(); + } + + public void Setup() + { + this.lbtitletext.Text = Localization.Parse(this._parentWindow.Text); + + if (SaveSystem.CurrentSave != null) + { + this.pnltitle.Visible = Shiftorium.UpgradeInstalled("wm_titlebar"); + this.pnlclose.Visible = Shiftorium.UpgradeInstalled("close_button"); + this.pnlminimize.Visible = (IsDialog == false) && Shiftorium.UpgradeInstalled("minimize_button"); + this.pnlmaximize.Visible = (IsDialog == false) && Shiftorium.UpgradeInstalled("maximize_button"); + SetupSkin(); + } + else + { + this.pnltitle.Visible = false; + this.pnlclose.Visible = false; + this.pnlminimize.Visible = false; + this.pnlmaximize.Visible = false; + + } + } + + public override string Text + { + get + { + return lbtitletext?.Text; + } + + set + { + lbtitletext.Text = value; + } + } + + public void SetupSkin() + { + this.DoubleBuffered = true; + this.TransparencyKey = LoadedSkin.SystemKey; + pnltitle.Height = LoadedSkin.TitlebarHeight; + pnltitle.BackColor = LoadedSkin.TitleBackgroundColor; + pnltitle.BackgroundImage = GetImage("titlebar"); + pnltitleleft.Visible = LoadedSkin.ShowTitleCorners; + pnltitleright.Visible = LoadedSkin.ShowTitleCorners; + pnltitleleft.BackColor = LoadedSkin.TitleLeftCornerBackground; + pnltitleright.BackColor = LoadedSkin.TitleRightCornerBackground; + pnltitleleft.Width = LoadedSkin.TitleLeftCornerWidth; + pnltitleright.Width = LoadedSkin.TitleRightCornerWidth; + pnltitleleft.BackgroundImage = GetImage("titleleft"); + pnltitleleft.BackgroundImageLayout = GetImageLayout("titleleft"); + pnltitleright.BackgroundImage = GetImage("titleright"); + pnltitleright.BackgroundImageLayout = GetImageLayout("titleright"); + + + lbtitletext.BackColor = LoadedSkin.TitleBackgroundColor; + lbtitletext.ForeColor = LoadedSkin.TitleTextColor; + lbtitletext.Font = LoadedSkin.TitleFont; + + pnlleft.BackColor = LoadedSkin.BorderLeftBackground; + pnlleft.BackgroundImage = GetImage("leftborder"); + pnlleft.BackgroundImageLayout = GetImageLayout("leftborder"); + pnlleft.Width = LoadedSkin.LeftBorderWidth; + pnlright.BackColor = LoadedSkin.BorderRightBackground; + pnlright.BackgroundImage = GetImage("rightborder"); + pnlright.BackgroundImageLayout = GetImageLayout("rightborder"); + pnlright.Width = LoadedSkin.RightBorderWidth; + + pnlbottom.BackColor = LoadedSkin.BorderBottomBackground; + pnlbottom.BackgroundImage = GetImage("bottomborder"); + pnlbottom.BackgroundImageLayout = GetImageLayout("bottomborder"); + pnlbottom.Height = LoadedSkin.BottomBorderWidth; + + pnlbottomr.BackColor = LoadedSkin.BorderBottomRightBackground; + pnlbottomr.BackgroundImage = GetImage("bottomrborder"); + pnlbottomr.BackgroundImageLayout = GetImageLayout("bottomrborder"); + pnlbottoml.BackColor = LoadedSkin.BorderBottomLeftBackground; + pnlbottoml.BackgroundImage = GetImage("bottomlborder"); + pnlbottoml.BackgroundImageLayout = GetImageLayout("bottomlborder"); + + lbtitletext.ForeColor = LoadedSkin.TitleTextColor; + lbtitletext.Font = LoadedSkin.TitleFont; + pnlclose.BackColor = LoadedSkin.CloseButtonColor; + pnlclose.BackgroundImage = GetImage("closebutton"); + pnlclose.BackgroundImageLayout = GetImageLayout("closebutton"); + pnlminimize.BackColor = LoadedSkin.MinimizeButtonColor; + pnlminimize.BackgroundImage = GetImage("minimizebutton"); + pnlminimize.BackgroundImageLayout = GetImageLayout("minimizebutton"); + pnlmaximize.BackColor = LoadedSkin.MaximizeButtonColor; + pnlmaximize.BackgroundImage = GetImage("maximizebutton"); + pnlmaximize.BackgroundImageLayout = GetImageLayout("maximizebutton"); + + pnlclose.Size = LoadedSkin.CloseButtonSize; + pnlminimize.Size = LoadedSkin.MinimizeButtonSize; + pnlmaximize.Size = LoadedSkin.MaximizeButtonSize; + pnlclose.Location = FromRight(LoadedSkin.CloseButtonFromSide); + pnlminimize.Location = FromRight(LoadedSkin.MinimizeButtonFromSide); + pnlmaximize.Location = FromRight(LoadedSkin.MaximizeButtonFromSide); + pnlclose.Left -= pnlclose.Width; + pnlmaximize.Left -= pnlmaximize.Width; + pnlminimize.Left -= pnlminimize.Width; + + switch (LoadedSkin.TitleTextCentered) + { + case false: + lbtitletext.Location = LoadedSkin.TitleTextLeft; + break; + default: + lbtitletext.Left = (pnltitle.Width - lbtitletext.Width) / 2; + lbtitletext.Top = LoadedSkin.TitleTextLeft.Y; + break; + } + } + + public Point FromRight(Point input) + { + return new Point(pnltitle.Width - input.X, input.Y); + } + + private void lbtitletext_Click(object sender, EventArgs e) + { + + } + + private void pnlclose_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void pnlmaximize_Click(object sender, EventArgs e) + { + TerminalBackend.InvokeCommand($"win.max{{id:{this.ParentForm.GetHashCode()}}}"); + } + + private void pnlminimize_Click(object sender, EventArgs e) + { + TerminalBackend.InvokeCommand($"win.mini{{id:{this.ParentForm.GetHashCode()}}}"); + } + + + public const int WM_NCLBUTTONDOWN = 0xA1; + public const int HT_CAPTION = 0x2; + + public bool IsDialog = false; + + + [DllImportAttribute("user32.dll")] + public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); + [DllImportAttribute("user32.dll")] + public static extern bool ReleaseCapture(); + + private void pnltitle_MouseMove(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left && Shiftorium.UpgradeInstalled("draggable_windows")) + { + ReleaseCapture(); + SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); + } + } + + private void pnltitle_Paint(object sender, PaintEventArgs e) { + + } + + private void lbtitletext_MouseMove(object sender, MouseEventArgs e) { + pnltitle_MouseMove(sender, e); + } + } +} diff --git a/ShiftOS.WinForms/WindowBorder.resx b/ShiftOS.WinForms/WindowBorder.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ShiftOS.WinForms/WindowBorder.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.WinForms/WinformsDesktop.Designer.cs b/ShiftOS.WinForms/WinformsDesktop.Designer.cs new file mode 100644 index 0000000..50a4d7f --- /dev/null +++ b/ShiftOS.WinForms/WinformsDesktop.Designer.cs @@ -0,0 +1,138 @@ +namespace ShiftOS.WinForms +{ + partial class WinformsDesktop + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WinformsDesktop)); + this.desktoppanel = new System.Windows.Forms.Panel(); + this.panelbuttonholder = new System.Windows.Forms.FlowLayoutPanel(); + this.sysmenuholder = new System.Windows.Forms.Panel(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.apps = new System.Windows.Forms.ToolStripMenuItem(); + this.lbtime = new System.Windows.Forms.Label(); + this.desktoppanel.SuspendLayout(); + this.sysmenuholder.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // desktoppanel + // + this.desktoppanel.BackColor = System.Drawing.Color.Green; + this.desktoppanel.Controls.Add(this.lbtime); + this.desktoppanel.Controls.Add(this.panelbuttonholder); + this.desktoppanel.Controls.Add(this.sysmenuholder); + this.desktoppanel.Dock = System.Windows.Forms.DockStyle.Top; + this.desktoppanel.Location = new System.Drawing.Point(0, 0); + this.desktoppanel.Name = "desktoppanel"; + this.desktoppanel.Size = new System.Drawing.Size(1296, 24); + this.desktoppanel.TabIndex = 0; + // + // panelbuttonholder + // + this.panelbuttonholder.AutoSize = true; + this.panelbuttonholder.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.panelbuttonholder.Location = new System.Drawing.Point(107, -77); + this.panelbuttonholder.Name = "panelbuttonholder"; + this.panelbuttonholder.Size = new System.Drawing.Size(0, 0); + this.panelbuttonholder.TabIndex = 2; + // + // sysmenuholder + // + this.sysmenuholder.Controls.Add(this.menuStrip1); + this.sysmenuholder.Location = new System.Drawing.Point(12, 5); + this.sysmenuholder.Name = "sysmenuholder"; + this.sysmenuholder.Size = new System.Drawing.Size(68, 24); + this.sysmenuholder.TabIndex = 1; + // + // menuStrip1 + // + this.menuStrip1.Dock = System.Windows.Forms.DockStyle.Fill; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.apps}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Padding = new System.Windows.Forms.Padding(0); + this.menuStrip1.Size = new System.Drawing.Size(68, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // apps + // + this.apps.AutoSize = false; + this.apps.Name = "apps"; + this.apps.Padding = new System.Windows.Forms.Padding(0); + this.apps.Size = new System.Drawing.Size(58, 20); + this.apps.Text = "ShiftOS"; + // + // lbtime + // + this.lbtime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbtime.AutoSize = true; + this.lbtime.Location = new System.Drawing.Point(3, 0); + this.lbtime.Name = "lbtime"; + this.lbtime.Size = new System.Drawing.Size(49, 14); + this.lbtime.TabIndex = 0; + this.lbtime.Text = "label1"; + this.lbtime.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // Desktop + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(1296, 738); + this.Controls.Add(this.desktoppanel); + this.Font = new System.Drawing.Font("Consolas", 9F); + this.ForeColor = System.Drawing.Color.LightGreen; + this.MainMenuStrip = this.menuStrip1; + this.Name = "Desktop"; + this.Text = "Desktop"; + this.Load += new System.EventHandler(this.Desktop_Load); + this.desktoppanel.ResumeLayout(false); + this.desktoppanel.PerformLayout(); + this.sysmenuholder.ResumeLayout(false); + this.sysmenuholder.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel desktoppanel; + private System.Windows.Forms.Label lbtime; + private System.Windows.Forms.Panel sysmenuholder; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem apps; + private System.Windows.Forms.FlowLayoutPanel panelbuttonholder; + } + +} + diff --git a/ShiftOS.WinForms/WinformsDesktop.cs b/ShiftOS.WinForms/WinformsDesktop.cs new file mode 100644 index 0000000..f358c95 --- /dev/null +++ b/ShiftOS.WinForms/WinformsDesktop.cs @@ -0,0 +1,264 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine; +using static ShiftOS.Engine.SkinEngine; +using ShiftOS.WinForms.Tools; + +namespace ShiftOS.WinForms +{ + public partial class WinformsDesktop : Form, IDesktop + { + private static event Action windowAdded; + + public WinformsDesktop() + { + InitializeComponent(); + this.TopMost = false; + this.LocationChanged += (o, a) => + { + if (this.Left != 0) + this.Left = 0; + if (this.Top != 0) + this.Top = 0; + }; + + this.SizeChanged += (o, a) => + { + if (this.ClientRectangle != Screen.PrimaryScreen.Bounds) + { + this.WindowState = FormWindowState.Maximized; + } + }; + + SaveSystem.GameReady += () => this.Invoke(new Action(() => SetupDesktop())); + Shiftorium.Installed += () => this.Invoke(new Action(() => SetupDesktop())); + var time = new Timer(); + time.Interval = 100; + this.KeyDown += (o, a) => + { + if (a.Control && a.KeyCode == Keys.T) + { + Engine.AppearanceManager.SetupWindow(new Applications.Terminal()); + } + /*if (a.Control && a.KeyCode == Keys.Tab) + { + // CtrlTabMenu + CtrlTabMenu.Show(); + if (a.Shift) CtrlTabMenu.CycleBack(); + else CtrlTabMenu.CycleForwards(); + }*/ //nyi + }; + SkinEngine.SkinLoaded += () => + { + SetupDesktop(); + }; + time.Tick += (o, a) => + { + if (SaveSystem.CurrentSave != null) + { + lbtime.Text = Applications.Terminal.GetTime(); + lbtime.Left = desktoppanel.Width - lbtime.Width - LoadedSkin.DesktopPanelClockFromRight.X; + lbtime.Top = LoadedSkin.DesktopPanelClockFromRight.Y; + } + }; + time.Start(); + + this.DoubleBuffered = true; + } + + public void PopulatePanelButtons() + { + panelbuttonholder.Controls.Clear(); + if (Shiftorium.UpgradeInstalled("wm_panel_buttons")) + { + foreach (WindowBorder form in Engine.AppearanceManager.OpenForms) + { + if (form != null) + { + if (form.Visible == true) + { + var pnlbtn = new Panel(); + pnlbtn.Margin = new Padding(2, LoadedSkin.PanelButtonFromTop, 0, 0); + pnlbtn.BackgroundImage = GetImage("panelbutton"); + pnlbtn.BackgroundImageLayout = GetImageLayout("panelbutton"); + + var pnlbtntext = new Label(); + pnlbtntext.Text = form.Text; + pnlbtntext.AutoSize = true; + pnlbtntext.Location = LoadedSkin.PanelButtonFromLeft; + pnlbtntext.ForeColor = LoadedSkin.PanelButtonTextColor; + pnlbtntext.Font = LoadedSkin.PanelButtonFont; + + pnlbtn.BackColor = LoadedSkin.PanelButtonColor; + if (pnlbtn.BackgroundImage != null) + { + pnlbtntext.BackColor = Color.Transparent; + } + pnlbtn.Size = LoadedSkin.PanelButtonSize; + + pnlbtn.Controls.Add(pnlbtntext); + this.panelbuttonholder.Controls.Add(pnlbtn); + ControlManager.SetupControls(pnlbtn); + pnlbtn.Show(); + pnlbtntext.Show(); + } + } + } + } + } + + public void SetupDesktop() + { + ToolStripManager.Renderer = new ShiftOSMenuRenderer(); + + this.DoubleBuffered = true; + this.FormBorderStyle = FormBorderStyle.None; + this.WindowState = FormWindowState.Maximized; + desktoppanel.BackColor = Color.Green; + + //upgrades + + if (SaveSystem.CurrentSave != null) + { + desktoppanel.Visible = Shiftorium.UpgradeInstalled("desktop"); + lbtime.Visible = Shiftorium.UpgradeInstalled("desktop_clock_widget"); + + //skinning + lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor; + + panelbuttonholder.Top = 0; + panelbuttonholder.Left = LoadedSkin.PanelButtonHolderFromLeft; + panelbuttonholder.Height = desktoppanel.Height; + panelbuttonholder.BackColor = Color.Transparent; + panelbuttonholder.Margin = new Padding(0, 0, 0, 0); + + sysmenuholder.Visible = Shiftorium.UpgradeInstalled("app_launcher"); + + //The Color Picker can give us transparent colors - which Windows Forms fucking despises when dealing with form backgrounds. + //To compensate, we must recreate the desktop color and make the alpha channel '255'. + this.BackColor = Color.FromArgb(LoadedSkin.DesktopColor.R, LoadedSkin.DesktopColor.G, LoadedSkin.DesktopColor.B); + //Not doing this will cause an ArgumentException. + + DitheringEngine.DitherImage(SkinEngine.GetImage("desktopbackground"), new Action((img) => + { + this.BackgroundImage = img; + })); + this.BackgroundImageLayout = GetImageLayout("desktopbackground"); + desktoppanel.BackgroundImage = GetImage("desktoppanel"); + menuStrip1.BackgroundImage = GetImage("applauncher"); + lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor; + lbtime.Font = LoadedSkin.DesktopPanelClockFont; + if (desktoppanel.BackgroundImage == null) + { + lbtime.BackColor = LoadedSkin.DesktopPanelClockBackgroundColor; + } + else + { + lbtime.BackColor = Color.Transparent; + } + apps.Text = LoadedSkin.AppLauncherText; + sysmenuholder.Location = LoadedSkin.AppLauncherFromLeft; + sysmenuholder.Size = LoadedSkin.AppLauncherHolderSize; + apps.Size = sysmenuholder.Size; + menuStrip1.Renderer = new ShiftOSMenuRenderer(new AppLauncherColorTable()); + desktoppanel.BackColor = LoadedSkin.DesktopPanelColor; + desktoppanel.BackgroundImageLayout = GetImageLayout("desktoppanel"); + desktoppanel.Height = LoadedSkin.DesktopPanelHeight; + if (LoadedSkin.DesktopPanelPosition == 1) + { + desktoppanel.Dock = DockStyle.Bottom; + } + else + { + desktoppanel.Dock = DockStyle.Top; + } + } + + PopulatePanelButtons(); + } + + public void PopulateAppLauncher(LauncherItem[] items) + { + apps.DropDownItems.Clear(); + + foreach (var kv in items) + { + var item = new ToolStripMenuItem(); + item.Text = kv.DisplayData.Name; + item.Click += (o, a) => + { + Engine.AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow); + }; + apps.DropDownItems.Add(item); + } + + if (Shiftorium.UpgradeInstalled("al_shutdown")) + { + apps.DropDownItems.Add(new ToolStripSeparator()); + var item = new ToolStripMenuItem(); + item.Text = Localization.Parse("{SHUTDOWN}"); + item.Click += (o, a) => + { + TerminalBackend.InvokeCommand("sos.shutdown"); + }; + apps.DropDownItems.Add(item); + + } + } + + + + private void Desktop_Load(object sender, EventArgs e) + { + + SaveSystem.Begin(); + + SetupDesktop(); + } + + public void ShowWindow(IWindowBorder border) + { + var brdr = border as Form; + brdr.FormBorderStyle = FormBorderStyle.None; + brdr.Show(); + brdr.TopMost = true; + } + + public void KillWindow(IWindowBorder border) + { + throw new NotImplementedException(); + } + + public void MinimizeWindow(IWindowBorder brdr) + { + throw new NotImplementedException(); + } + + public void MaximizeWindow(IWindowBorder brdr) + { + throw new NotImplementedException(); + } + + public void RestoreWindow(IWindowBorder brdr) + { + throw new NotImplementedException(); + } + + public void InvokeOnWorkerThread(Action act) + { + this.Invoke(act); + } + + public Size GetSize() + { + return this.Size; + } + } +} 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 formstoclose = new List(); + + 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(); + } + } +} diff --git a/ShiftOS.WinForms/packages.config b/ShiftOS.WinForms/packages.config new file mode 100644 index 0000000..9d64bf3 --- /dev/null +++ b/ShiftOS.WinForms/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ShiftOS.Wpf/App.config b/ShiftOS.Wpf/App.config new file mode 100644 index 0000000..71a06ba --- /dev/null +++ b/ShiftOS.Wpf/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ShiftOS.Wpf/App.xaml b/ShiftOS.Wpf/App.xaml new file mode 100644 index 0000000..c958acd --- /dev/null +++ b/ShiftOS.Wpf/App.xaml @@ -0,0 +1,60 @@ + + + + + 24 + Bottom + + + + + + + + + + + + + + + + + + + + diff --git a/ShiftOS.Wpf/App.xaml.cs b/ShiftOS.Wpf/App.xaml.cs new file mode 100644 index 0000000..0bf4ecf --- /dev/null +++ b/ShiftOS.Wpf/App.xaml.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + private void Application_Exit(object sender, ExitEventArgs e) + { + global::ShiftOS.Wpf.Startup.DestroyShiftOSEngine(); + } + + private void Application_Startup(object sender, StartupEventArgs e) + { + SkinEngine.SkinLoaded += () => + { + Resources["desktoppanelbg"] = SkinEngine.LoadedSkin.DesktopPanelColor.CreateBrush(); + Resources["desktoppanelheight"] = (double)SkinEngine.LoadedSkin.DesktopPanelHeight; + switch (SkinEngine.LoadedSkin.DesktopPanelPosition) + { + case 0: + Resources["desktoppanelpos"] = VerticalAlignment.Top; + break; + case 1: + Resources["desktoppanelpos"] = VerticalAlignment.Bottom; + break; + } + + Resources["MenuBG"] = SkinEngine.LoadedSkin.Menu_MenuStripGradientBegin.CreateBrush(); + + Resources["MenuItem"] = SkinEngine.LoadedSkin.Menu_MenuStripGradientBegin.CreateBrush(); + Resources["MenuItemText"] = SkinEngine.LoadedSkin.Menu_TextColor.CreateBrush(); + + Resources["MenuItemPressed"] = SkinEngine.LoadedSkin.Menu_MenuItemPressedGradientBegin.CreateBrush(); + Resources["MenuItemPressedText"] = SkinEngine.LoadedSkin.Menu_SelectedTextColor.CreateBrush(); + + Resources["MenuItemHover"] = SkinEngine.LoadedSkin.Menu_MenuItemSelectedGradientBegin.CreateBrush(); + Resources["MenuItemHoverText"] = SkinEngine.LoadedSkin.Menu_SelectedTextColor.CreateBrush(); + + + Resources["MainBackColor"] = SkinEngine.LoadedSkin.ControlColor.CreateBrush(); + Resources["MainForeColor"] = SkinEngine.LoadedSkin.ControlTextColor.CreateBrush(); + Resources["TerminalBG"] = SkinEngine.LoadedSkin.TerminalBackColor.CreateBrush(); + Resources["TerminalFG"] = SkinEngine.LoadedSkin.TerminalForeColor.CreateBrush(); + + }; + } + } +} diff --git a/ShiftOS.Wpf/Applications/FileDialog.xaml b/ShiftOS.Wpf/Applications/FileDialog.xaml new file mode 100644 index 0000000..bdf3253 --- /dev/null +++ b/ShiftOS.Wpf/Applications/FileDialog.xaml @@ -0,0 +1,29 @@ + + + + + + + + Filename: + + + + + + + + + + + + + + diff --git a/ShiftOS.Wpf/Applications/FileDialog.xaml.cs b/ShiftOS.Wpf/Applications/FileDialog.xaml.cs new file mode 100644 index 0000000..820ceeb --- /dev/null +++ b/ShiftOS.Wpf/Applications/FileDialog.xaml.cs @@ -0,0 +1,285 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using ShiftOS.Objects.ShiftFS; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf.Applications +{ + /// + /// Interaction logic for FileDialog.xaml + /// + public partial class FileDialog : UserControl, IShiftOSWindow + { + public FileDialog(string[] filters, FileOpenerStyle style, Action callback) + { + InitializeComponent(); + Filters = filters; + OpenerStyle = style; + Callback = callback; + } + + public string[] Filters { get; set; } + public FileOpenerStyle OpenerStyle { get; set; } + public Action Callback { get; set; } + + private string currentFolder = "0:"; + + public void OnLoad() + { + Reset(); + foreach(var f in Filters) + { + filter.Items.Add(f); + } + filter.SelectedIndex = 0; + } + + public string GetParent(string path) + { + string[] pathlist = path.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries); + if (pathlist.Length > 1) + { + if (path.EndsWith("/")) + { + path = path.Remove(path.Length - 1, 1); + } + path = path.Remove(path.LastIndexOf('/'), path.Length - path.LastIndexOf('/')); + return path; + } + else + { + return "__system"; + } + } + + public void Reset() + { + if (currentFolder != "__system") + this.SetTitle("File Skimmer - " + currentFolder); + else + this.SetTitle("File Skimmer"); + + lbfiles.Children.Clear(); + if (currentFolder == "__system") + { + foreach (var dir in Utils.Mounts) + { + var sp = new StackPanel(); + sp.Width = 50; + sp.Margin = new Thickness(5); + var label = new TextBlock(); + label.Text = dir.Name; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage(Utils.Mounts.IndexOf(dir) + ":").ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if (a.ClickCount == 2) + { + ChangeDirectory(Utils.Mounts.IndexOf(dir) + ":"); + } + }; + + lbfiles.Children.Add(sp); + + } + } + else + { + var __up = CreateUpOneDirectory(); + lbfiles.Children.Add(__up); + + foreach (var dir in Utils.GetDirectories(currentFolder)) + { + var sp = new StackPanel(); + sp.Margin = new Thickness(5); + sp.Width = 50; + var label = new TextBlock(); + label.Text = Utils.GetDirectoryInfo(dir).Name; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage(dir).ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if (a.ClickCount == 2) + { + ChangeDirectory(dir); + } + }; + + lbfiles.Children.Add(sp); + + } + + foreach (var dir in Utils.GetFiles(currentFolder)) + { + if (dir.EndsWith(filter.SelectedItem.ToString())) + { + var sp = new StackPanel(); + sp.Margin = new Thickness(5); + sp.Width = 50; + var label = new TextBlock(); + label.Text = Utils.GetFileInfo(dir).Name; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage(dir).ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if (a.ClickCount == 2) + { + if(OpenerStyle == FileOpenerStyle.Open) + { + Callback?.Invoke(dir); + AppearanceManager.Close(this); + } + } + else + { + txtfilename.Text = Utils.GetFileInfo(dir).Name; + } + }; + + lbfiles.Children.Add(sp); + } + } + } + } + + public void ChangeDirectory(string path) + { + currentFolder = path; + Reset(); + } + + private StackPanel CreateUpOneDirectory() + { + var sp = new StackPanel(); + sp.Margin = new Thickness(5); + sp.Width = 50; + var label = new TextBlock(); + label.Text = "Up one directory"; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage("__upone").ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if (a.ClickCount == 2) + { + GoUp(); + } + }; + + return sp; + } + + public void GoUp() + { + if (currentFolder.EndsWith(":")) + { + currentFolder = "__system"; + Reset(); + } + else + { + currentFolder = GetParent(currentFolder); + Reset(); + } + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + + } + + + private void btnconfirm_Click(object sender, RoutedEventArgs e) + { + if (!string.IsNullOrWhiteSpace(txtfilename.Text)) + { + if (!txtfilename.Text.EndsWith(filter.SelectedItem.ToString())) + txtfilename.Text += filter.SelectedItem.ToString(); + + switch (OpenerStyle) + { + case FileOpenerStyle.Open: + if(Utils.FileExists(currentFolder + "/" + txtfilename.Text)) + { + Callback?.Invoke(currentFolder + "/" + txtfilename.Text); + AppearanceManager.Close(this); + } + else + { + Infobox.Show("File not found", $"The file {currentFolder}/{txtfilename.Text} was not found."); + } + break; + case FileOpenerStyle.Save: + Callback?.Invoke(currentFolder + "/" + txtfilename.Text); + AppearanceManager.Close(this); + break; + } + } + else + { + Infobox.Show("File Skimmer", "Please provide a filename."); + } + } + + private void filter_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + Reset(); + } + } +} diff --git a/ShiftOS.Wpf/Applications/FileSkimmer.xaml b/ShiftOS.Wpf/Applications/FileSkimmer.xaml new file mode 100644 index 0000000..ae4f435 --- /dev/null +++ b/ShiftOS.Wpf/Applications/FileSkimmer.xaml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/ShiftOS.Wpf/Applications/FileSkimmer.xaml.cs b/ShiftOS.Wpf/Applications/FileSkimmer.xaml.cs new file mode 100644 index 0000000..1abcfc1 --- /dev/null +++ b/ShiftOS.Wpf/Applications/FileSkimmer.xaml.cs @@ -0,0 +1,300 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using ShiftOS.Objects.ShiftFS; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf.Applications +{ + /// + /// Interaction logic for FileSkimmer.xaml + /// + [Launcher("File Skimmer", true, "al_file_skimmer")] + [RequiresUpgrade("file_skimmer")] + public partial class FileSkimmer : UserControl, IShiftOSWindow + { + public FileSkimmer() + { + InitializeComponent(); + } + + private string currentFolder = "0:"; + + static FileSkimmer() + { + FileSkimmerBackend.Init(new WpfFSFrontend()); + } + + public void OnLoad() + { + Reset(); + } + + public string GetParent(string path) + { + string[] pathlist = path.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries); + if (pathlist.Length > 1) + { + if (path.EndsWith("/")) + { + path = path.Remove(path.Length - 1, 1); + } + path = path.Remove(path.LastIndexOf('/'), path.Length - path.LastIndexOf('/')); + return path; + } + else + { + return "__system"; + } + } + + public void Reset() + { + if (currentFolder != "__system") + this.SetTitle("File Skimmer - " + currentFolder); + else + this.SetTitle("File Skimmer"); + + lbfiles.Children.Clear(); + if (currentFolder == "__system") + { + foreach(var dir in Utils.Mounts) + { + var sp = new StackPanel(); + sp.Width = 50; + sp.Margin = new Thickness(5); + var label = new TextBlock(); + label.Text = dir.Name; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage(Utils.Mounts.IndexOf(dir) + ":").ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if (a.ClickCount == 2) + { + ChangeDirectory(Utils.Mounts.IndexOf(dir) + ":"); + } + }; + + lbfiles.Children.Add(sp); + + } + } + else + { + var __up = CreateUpOneDirectory(); + lbfiles.Children.Add(__up); + + foreach(var dir in Utils.GetDirectories(currentFolder)) + { + var sp = new StackPanel(); + sp.Margin = new Thickness(5); + sp.Width = 50; + var label = new TextBlock(); + label.Text = Utils.GetDirectoryInfo(dir).Name; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage(dir).ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if (a.ClickCount == 2) + { + ChangeDirectory(dir); + } + }; + + lbfiles.Children.Add(sp); + + } + + foreach(var dir in Utils.GetFiles(currentFolder)) + { + var sp = new StackPanel(); + sp.Margin = new Thickness(5); + sp.Width = 50; + var label = new TextBlock(); + label.Text = Utils.GetFileInfo(dir).Name; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage(dir).ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if (a.ClickCount == 2) + { + FileSkimmerBackend.OpenFile(dir); + } + }; + + lbfiles.Children.Add(sp); + + } + } + } + + public void ChangeDirectory(string path) + { + currentFolder = path; + Reset(); + } + + private StackPanel CreateUpOneDirectory() + { + var sp = new StackPanel(); + sp.Margin = new Thickness(5); + sp.Width = 50; + var label = new TextBlock(); + label.Text = "Up one directory"; + label.TextWrapping = TextWrapping.Wrap; + label.TextAlignment = TextAlignment.Center; + + var img = new Image(); + img.Width = 42; + img.Height = 42; + img.Source = FileSkimmerBackend.GetImage("__upone").ToBitmapImage(); + + sp.Children.Add(img); + sp.Children.Add(label); + + sp.PreviewMouseLeftButtonDown += (o, a) => + { + if(a.ClickCount == 2) + { + GoUp(); + } + }; + + return sp; + } + + public void GoUp() + { + if (currentFolder.EndsWith(":")) + { + currentFolder = "__system"; + Reset(); + } + else + { + currentFolder = GetParent(currentFolder); + Reset(); + } + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + + } + } + + public class WpfFSFrontend : IFileSkimmer + { + public void GetPath(string[] filetypes, FileOpenerStyle style, Action callback) + { + AppearanceManager.SetupDialog(new FileDialog(filetypes, style, callback)); + } + + public void OpenDirectory(string path) + { + var fs = new FileSkimmer(); + fs.ChangeDirectory(path); + AppearanceManager.SetupWindow(fs); + } + + public void OpenFile(string path) + { + bool opened = true; + + string ext = path.Split('.')[path.Split('.').Length - 1]; + switch(ext) + { + case "txt": + if (Shiftorium.UpgradeInstalled("textpad_open")) + { + var txt = new TextPad(); + txt.LoadFile(path); + AppearanceManager.SetupWindow(txt); + } + else + { + opened = false; + } + break; + case "pic": + case "png": + case "jpg": + case "bmp": + + break; + case "wav": + case "mp3": + + break; + case "lua": + + break; + case "py": + + break; + case "skn": + + break; + case "mfs": + Utils.MountPersistent(path); + string mount = (Utils.Mounts.Count - 1).ToString() + ":"; + OpenDirectory(mount); + break; + default: + opened = false; + break; + } + if(opened == false) + { + Infobox.Show("File Skimmer - Can't open file", "File Skimmer can't find an application to open this file!"); + } + } + } +} diff --git a/ShiftOS.Wpf/Applications/Infobox.xaml b/ShiftOS.Wpf/Applications/Infobox.xaml new file mode 100644 index 0000000..e2ad454 --- /dev/null +++ b/ShiftOS.Wpf/Applications/Infobox.xaml @@ -0,0 +1,13 @@ + + + Message goes here. + + + diff --git a/ShiftOS.Wpf/Applications/Infobox.xaml.cs b/ShiftOS.Wpf/Applications/Infobox.xaml.cs new file mode 100644 index 0000000..b328439 --- /dev/null +++ b/ShiftOS.Wpf/Applications/Infobox.xaml.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf.Applications +{ + /// + /// Interaction logic for Infobox.xaml + /// + public partial class Infobox : UserControl, IShiftOSWindow + { + public Infobox(string title, string msg) + { + InitializeComponent(); + Title = title; + Message = msg; + } + + public static void Show(string title, string msg) + { + ShiftOS.Engine.Infobox.Show(title, msg); + } + + public string Title { get; set; } + public string Message { get; set; } + + public void OnLoad() + { + this.SetTitle(Title); + txtmessage.Text = Message; + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + private void btnokay_Click(object sender, RoutedEventArgs e) + { + AppearanceManager.Close(this); + } + } +} diff --git a/ShiftOS.Wpf/Applications/MainWindow.xaml b/ShiftOS.Wpf/Applications/MainWindow.xaml new file mode 100644 index 0000000..22b992f --- /dev/null +++ b/ShiftOS.Wpf/Applications/MainWindow.xaml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/ShiftOS.Wpf/Applications/MainWindow.xaml.cs b/ShiftOS.Wpf/Applications/MainWindow.xaml.cs new file mode 100644 index 0000000..478c652 --- /dev/null +++ b/ShiftOS.Wpf/Applications/MainWindow.xaml.cs @@ -0,0 +1,179 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using ShiftOS.Engine; +using backend = ShiftOS.Engine.TerminalBackend; + +namespace ShiftOS.Wpf +{ + /// + /// Interaction logic for MainWindow.xaml + /// + [Launcher("Terminal", false)] + public partial class Terminal : UserControl, IShiftOSWindow + { + public Terminal() + { + InitializeComponent(); + Startup.ConsoleOut = this.txtterm; + + if (SaveSystem.CurrentSave == null) + { + Startup.InitiateEngine(new WpfTerminalTextWriter()); + SaveSystem.GameReady += () => + { + try + { + Dispatcher.Invoke(new Action(() => + { + txtterm.Text = ""; + backend.PrefixEnabled = true; + backend.InStory = false; + if (SaveSystem.CurrentSave.StoryPosition != 8) + { + Story.RunFromInternalResource("sys_shiftoriumstory"); + SaveSystem.CurrentSave.StoryPosition = 8; + } + Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + txtterm.Background = SkinEngine.LoadedSkin.TerminalBackColor.CreateBrush(); + txtterm.Foreground = SkinEngine.LoadedSkin.TerminalForeColor.CreateBrush(); + txtterm.SetFont(SkinEngine.LoadedSkin.TerminalFont); + })); + } + catch { } + }; + } + else + { + Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + } + txtterm.Background = SkinEngine.LoadedSkin.TerminalBackColor.CreateBrush(); + txtterm.Foreground = SkinEngine.LoadedSkin.TerminalForeColor.CreateBrush(); + + txtterm.GotFocus += (o, a) => + { + Startup.ConsoleOut = txtterm; + }; + + txtterm.Focus(); + + } + + public void OnLoad() + { + this.SetTitle("Terminal"); + } + + public void OnSkinLoad() + { + txtterm.SetFont(SkinEngine.LoadedSkin.TerminalFont); + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + public void txtterm_KeyDown(object o, KeyEventArgs a) { + if (a.Key == Key.Enter) + { + try + { + a.Handled = true; + var text2 = txtterm.GetLineText(txtterm.LineCount - 1); + Console.WriteLine(""); + var text3 = ""; + var text4 = Regex.Replace(text2, @"\t|\n|\r", ""); + + if (backend.PrefixEnabled) + { + text3 = text4.Remove(0, $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ".Length); + } + backend.LastCommand = text3; + if (backend.InStory == false) + { + backend.InvokeCommand(text3); + } + if (backend.PrefixEnabled) + { + Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + } + else if (a.Key == Key.Back) + { + var tostring3 = txtterm.GetLineText(txtterm.LineCount - 1); + var tostringlen = tostring3.Length + 1; + var workaround = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "; + var derp = workaround.Length + 1; + if (tostringlen != derp) + { + AppearanceManager.CurrentPosition--; + } + else + { + a.Handled = true; + } + } + else if (a.Key == Key.Left) + { + var getstring = txtterm.GetLineText(txtterm.LineCount - 1); + var stringlen = getstring.Length + 1; + var header = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "; + var headerlen = header.Length + 1; + var selstart = txtterm.SelectionStart; + var remstrlen = txtterm.Text.Length - stringlen; + var finalnum = selstart - remstrlen; + + if (finalnum != headerlen) + { + AppearanceManager.CurrentPosition--; + } + else + { + a.Handled = true; + } + } + //( ͡° ͜ʖ ͡° ) You found the lennyface without looking at the commit message. Message Michael in the #shiftos channel on Discord saying "ladouceur" somewhere in your message if you see this. + else if (a.Key == Key.Up) + { + var tostring3 = txtterm.GetLineText(txtterm.LineCount - 1); + if (tostring3 == $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ") + Console.Write(backend.LastCommand); + a.Handled = true; + + } + else + { + + AppearanceManager.CurrentPosition++; + } + + } + + private void txtterm_GotFocus(object sender, RoutedEventArgs e) + { + Startup.ConsoleOut = txtterm; + } + } +} diff --git a/ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml b/ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml new file mode 100644 index 0000000..f2d0df1 --- /dev/null +++ b/ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml @@ -0,0 +1,24 @@ + + + + Upgrades + Codepoints: 0 + + + + + + + Cost: {Binding Cost} CP + + {Binding Description} + + + diff --git a/ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml.cs b/ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml.cs new file mode 100644 index 0000000..d8385e9 --- /dev/null +++ b/ShiftOS.Wpf/Applications/ShiftoriumFrontend.xaml.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Timers; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf.Applications +{ + /// + /// Interaction logic for ShiftoriumFrontend.xaml + /// + [Launcher("Shiftorium", true, "al_shiftorium")] + [RequiresUpgrade("shiftorium_gui")] + public partial class ShiftoriumFrontend : UserControl, IShiftOSWindow + { + public ShiftoriumFrontend() + { + InitializeComponent(); + this.DataContextChanged += (o, a) => + { + if (this.DataContext is ShiftoriumUpgrade) + { + var upg = this.DataContext as ShiftoriumUpgrade; + title.Text = upg.Name; + this.SetTitle("Shiftorium - " + upg.Name); + description.Text = upg.Description; + cost.Text = upg.Cost.ToString(); + } + }; + this.DataContext = new ShiftoriumUpgrade + { + Name = "Welcome to the Shiftorium", + Description = @"The Shiftorium is an application that lets you buy upgrades for ShiftOS using Codepoints. + +Upgrades can be anything from new apps, to games, to system enhancements, to eyecandy, to anything else. Just be careful! The best thing to do is to buy new ways of earning Codepoints otherwise you'll find yourself unable to earn Codepoints later on.", + Cost = 0, + Dependencies = null + }; + } + + public void Setup() + { + lbupgrades.Items.Clear(); + + foreach(var itm in Shiftorium.GetAvailable()) + { + lbupgrades.Items.Add(itm.Name); + } + } + + public void OnLoad() + { + this.SetTitle("Shiftorium"); + var t = new Timer(); + t.Interval = 500; + t.Elapsed += (o,a) => + { + try + { + currentcodepoints.Text = SaveSystem.CurrentSave.Codepoints.ToString(); + } + catch { t.Stop(); } + + }; + t.Start(); + + lbupgrades.SelectionChanged += (o, a) => + { + try + { + btnbuy.Visibility = Visibility.Visible; + this.DataContext = GetUpgradeFromName(lbupgrades.SelectedItem.ToString()); + } + catch + { + + } + }; + + btnbuy.Visibility = Visibility.Collapsed; + Setup(); + } + + public ShiftoriumUpgrade GetUpgradeFromName(string upg) + { + foreach(var upgrade in Shiftorium.GetDefaults()) + { + if (upgrade.Name == upg) + return upgrade; + } + return null; + } + + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + codepointDisplay.Upgrade("shiftorium_gui_cp_display"); + } + + private void lbupgrades_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + + } + + private void btnbuy_Click_1(object sender, RoutedEventArgs e) + { + var upg = this.DataContext as ShiftoriumUpgrade; + Shiftorium.Silent = true; + if(Shiftorium.Buy(upg.ID, upg.Cost) == true) + { + btnbuy.Visibility = Visibility.Collapsed; + Setup(); + } + else + { + Infobox.Show("Shiftorium", $"You do not have enough Codepoints to buy this upgrade. You need {upg.Cost - SaveSystem.CurrentSave.Codepoints} more."); + } + } + } +} diff --git a/ShiftOS.Wpf/Applications/SkinLoader.xaml b/ShiftOS.Wpf/Applications/SkinLoader.xaml new file mode 100644 index 0000000..48b0f6d --- /dev/null +++ b/ShiftOS.Wpf/Applications/SkinLoader.xaml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + Template + + + + + + + + diff --git a/ShiftOS.Wpf/Applications/TextPad.xaml.cs b/ShiftOS.Wpf/Applications/TextPad.xaml.cs new file mode 100644 index 0000000..66ea797 --- /dev/null +++ b/ShiftOS.Wpf/Applications/TextPad.xaml.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using ShiftOS.Objects.ShiftFS; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf.Applications +{ + /// + /// Interaction logic for TextPad.xaml + /// + [Launcher("TextPad", true, "al_textpad")] + [RequiresUpgrade("textpad")] + public partial class TextPad : UserControl, IShiftOSWindow + { + public TextPad() + { + InitializeComponent(); + } + + private void btnnew_Click(object sender, RoutedEventArgs e) + { + txtbody.Text = ""; + } + + private void btnsave_Click(object sender, RoutedEventArgs e) + { + string filters = ".txt"; + if (Shiftorium.UpgradeInstalled("textpad_lua_support")) + filters += ";.lua"; + if (Shiftorium.UpgradeInstalled("textpad_python_support")) + filters += ";.py"; + + FileSkimmerBackend.GetFile(filters.Split(';'), FileOpenerStyle.Save, new Action((file) => SaveFile(file))); + } + + private void btnopen_Click(object sender, RoutedEventArgs e) + { + string filters = ".txt"; + if (Shiftorium.UpgradeInstalled("textpad_lua_support")) + filters += ";.lua"; + if (Shiftorium.UpgradeInstalled("textpad_python_support")) + filters += ";.py"; + + FileSkimmerBackend.GetFile(filters.Split(';'), FileOpenerStyle.Open, new Action((file) => LoadFile(file))); + + } + + public void LoadFile(string path) + { + txtbody.Text = Utils.ReadAllText(path); + } + + public void SaveFile(string path) + { + Utils.WriteAllText(path, txtbody.Text); + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { +/* btnnew.Upgrade("textpad_new"); + btnopen.Upgrade("textpad_open"); + btnsave.Upgrade("textpad_save"); +*/ } + } +} diff --git a/ShiftOS.Wpf/Desktop.xaml b/ShiftOS.Wpf/Desktop.xaml new file mode 100644 index 0000000..119d9df --- /dev/null +++ b/ShiftOS.Wpf/Desktop.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/ShiftOS.Wpf/Desktop.xaml.cs b/ShiftOS.Wpf/Desktop.xaml.cs new file mode 100644 index 0000000..c2bdc27 --- /dev/null +++ b/ShiftOS.Wpf/Desktop.xaml.cs @@ -0,0 +1,201 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; +using ShiftOS.Engine; +using static ShiftOS.Engine.SkinEngine; +namespace ShiftOS.Wpf +{ + /// + /// Interaction logic for Desktop.xaml + /// + public partial class Desktop : Window + { + public Desktop() + { + InitializeComponent(); + SetupUpgradeable(); + Shiftorium.Installed += () => SetupUpgradeable(); + SaveSystem.GameReady += () => + { + Dispatcher.Invoke(() => + { + SetupDesktop(); + }); + }; + } + + public void SetupUpgradeable() + { + desktoppanel.Upgrade("desktop"); + apps.Upgrade("app_launcher"); + } + + public void SetupDesktop() + { + windowlayer.Background = LoadedSkin.DesktopColor.CreateBrush(); + try + { + windowlayer.Background = new ImageBrush(LoadedSkin.DesktopBackgroundImage.ToBitmapImage()); + } + catch + { + + } + + + desktoppanel.Background = LoadedSkin.DesktopPanelColor.CreateBrush(); + try + { + desktoppanel.Background = new ImageBrush(LoadedSkin.DesktopPanelBackground.ToBitmapImage()); + } + catch { } + + apps.Background = LoadedSkin.Menu_MenuStripGradientBegin.CreateBrush(); + apps.Content = LoadedSkin.AppLauncherText; + apps.Foreground = LoadedSkin.Menu_TextColor.CreateBrush(); + + PopulateAppLauncher(); + + SetupUpgradeable(); + } + + private static event Action onWindowShow; + private static event Action onWindowClose; + + public static void ShowWindow(WpfWindowBorder brdr) + { + + onWindowShow?.Invoke(brdr); + } + + private void Window_Loaded(object sender, RoutedEventArgs e) + { + SaveSystem.GameReady += () => Dispatcher.Invoke(() => PopulateAppLauncher()); + Shiftorium.Installed += () => Dispatcher.Invoke(() => PopulateAppLauncher()); + SkinEngine.SkinLoaded += () => Dispatcher.Invoke(() => PopulateAppLauncher()); + + + onWindowShow += (brdr) => + { + brdr.Measure(windowlayer.DesiredSize); + brdr.SetValue(System.Windows.Controls.Canvas.LeftProperty, (windowlayer.ActualWidth - brdr.Width) / 2); + brdr.SetValue(System.Windows.Controls.Canvas.TopProperty, (windowlayer.ActualHeight - brdr.ActualActualHeight) / 2); + windowlayer.Children.Add(brdr); + brdr.PreviewMouseDown += (o, a) => + { + brdr.BringToFront(windowlayer); + }; + }; + onWindowClose += (brdr) => + { + if (windowlayer.Children.Contains(brdr)) + { + windowlayer.Children.Remove(brdr); + brdr.ParentWindow.OnUnload(); + brdr = null; + } + }; + AppearanceManager.SetupWindow(new Terminal()); + } + + + public static void RemoveWindow(WpfWindowBorder brdr) + { + onWindowClose?.Invoke(brdr); + } + + public void PopulateAppLauncher() + { + appsmenu.Children.Clear(); + + double biggestWidth = 0; + + appsmenu.Background = LoadedSkin.Menu_ToolStripDropDownBackground.CreateBrush(); + + foreach (var kv in AppLauncherDaemon.Available()) + { + var item = new Button(); + if (kv.LaunchType.BaseType == typeof(System.Windows.Forms.UserControl)) + item.Content = kv.DisplayData.Name + " (Legacy)"; + else + item.Content = kv.DisplayData.Name; + item.Margin = new Thickness(2); + double measure = item.Content.ToString().Measure(LoadedSkin.MainFont); + if (measure > biggestWidth) + biggestWidth = measure; + item.Click += (o, a) => + { + AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow); + appsmenu.Visibility = Visibility.Hidden; + }; + item.HorizontalAlignment = HorizontalAlignment.Stretch; + appsmenu.Children.Add(item); + } + + if (Shiftorium.UpgradeInstalled("al_shutdown")) + { + var item = new Button(); + item.Content = ShiftOS.Engine.Localization.Parse("{SHUTDOWN}"); + item.Margin = new Thickness(2); + double measure = item.Content.ToString().Measure(LoadedSkin.MainFont); + if (measure > biggestWidth) + biggestWidth = measure; + + + item.Click += (o, a) => + { + TerminalBackend.InvokeCommand("sos.shutdown"); + }; + appsmenu.Children.Add(item); + + } + + appsmenu.Width = biggestWidth + 50; + + SkinAppLauncher(); + } + + public void SkinAppLauncher() + { + apps.Background = LoadedSkin.Menu_MenuStripGradientBegin.CreateBrush(); + apps.Foreground = LoadedSkin.Menu_TextColor.CreateBrush(); + apps.BorderThickness = new Thickness(0.0); + + appsmenu.Height = 0; + + foreach (Control app in appsmenu.Children) + { + app.Background = LoadedSkin.Menu_ToolStripDropDownBackground.CreateBrush(); + app.Foreground = LoadedSkin.Menu_TextColor.CreateBrush(); + app.BorderThickness = new Thickness(0.0); + app.HorizontalContentAlignment = HorizontalAlignment.Left; + app.SetMouseOverStyle("menuitem"); + appsmenu.Height += app.Height; + } + } + + private void apps_Click(object sender, RoutedEventArgs e) + { + if (appsmenu.Visibility == Visibility.Hidden) + { + appsmenu.Visibility = Visibility.Visible; + } + else + { + appsmenu.Visibility = Visibility.Hidden; + } + + } + } +} diff --git a/ShiftOS.Wpf/OOBE.xaml b/ShiftOS.Wpf/OOBE.xaml new file mode 100644 index 0000000..b081637 --- /dev/null +++ b/ShiftOS.Wpf/OOBE.xaml @@ -0,0 +1,58 @@ + + + + + Welcome to ShiftOS. + + You have been selected to be part of the testing and development of an experimental operating system named ShiftOS. + + + This wizard will guide you through the process of setting up ShiftOS. + + + First: Select your language. + + + + + + Next: System Information + + + Username: + + + + Password: + + + + System name: + + + + + + + + + + + + + + Header + + This is some text. + + + + + diff --git a/ShiftOS.Wpf/OOBE.xaml.cs b/ShiftOS.Wpf/OOBE.xaml.cs new file mode 100644 index 0000000..39a0093 --- /dev/null +++ b/ShiftOS.Wpf/OOBE.xaml.cs @@ -0,0 +1,276 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using ShiftOS.Objects; +using ShiftOS.Objects.ShiftFS; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf +{ + /// + /// Interaction logic for OOBE.xaml + /// + public partial class OOBE : UserControl, IOobe, IShiftOSWindow + { + public OOBE() + { + InitializeComponent(); + } + + private Save MySave = null; + + public void StartShowing(Save save) + { + MySave = save; + AppearanceManager.SetupWindow(this); + SetupLanguages(); + SaveSystem.GameReady += () => + { + Dispatcher.Invoke(() => + { + AppearanceManager.Close(this); + }); + }; + } + + public void SetupLanguages() + { + lblanguages.Items.Clear(); + + foreach(var lang in AppearanceManager.GetLanguages()) + { + lblanguages.Items.Add(lang); + } + } + + public void OnLoad() + { + } + + public void OnSkinLoad() + { + } + + public bool OnUnload() + { + return true; + } + + public void OnUpgrade() + { + } + + private void lblanguages_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + try + { + MySave.Language = lblanguages.SelectedItem.ToString(); + userInfo.Visibility = Visibility.Visible; + } + catch { } + } + + private void txtusername_TextChanged(object sender, TextChangedEventArgs e) + { + string usr = MySave.Username; + + MySave.Username = txtusername.Text; + + if(string.IsNullOrWhiteSpace(txtsysname.Text) || txtsysname.Text == usr + "-PC") + { + txtsysname.Text = MySave.Username + "-PC"; + } + nextLabel.Visibility = Visibility.Visible; + } + + public void moveforward_Click(object s, RoutedEventArgs a) + { + tabControl.SelectedItem = tabControl.Items[1]; + StartInstall(); + } + + public void StartInstall() + { + Startup.ConsoleOut = txtterm; + pgprogress.Value = 0; + + StartOOBESlideshow(); + + } + + public void StartOOBESlideshow() + { + var t = new System.Timers.Timer(10000); + + int currentslide = 0; + + t.Elapsed += (o, a) => + { + Dispatcher.Invoke(() => + { + switch (currentslide) + { + case 0: + oobehead.Text = "Introduction"; + oobedesc.Text = @"Welcome to ShiftOS. + +You have successfully registered to take part in the testing and development of ShiftOS. We are currently installing the system's core components. + +This may take a while. There is a progress indicator at the bottom of this window. You can also see a log of everything that's happening in the terminal on the right. + +While you wait, we'll take the time to tell you about what you'll be doing."; + break; + case 1: + oobehead.Text = "About the project"; + oobedesc.Text = @"You may wanna know what exactly we're working on here. Basically, we want to make ShiftOS one of the most powerful, customizable, user-friendly operating systems in the world. Not just ONE of the most, we want to make it THE most. + +We'll do whatever we can to do this - and having you onboard is just the beginning. At ShiftOS, we strive to make things user-friendly, and versatile. We want to put a barebones operating system on your computer and see what you do with it, what you make, so we can use that data to make ShiftOS awesome."; + break; + case 2: + oobehead.Text = "The Humble Beginnings"; + oobedesc.Text = @"It may look complicated but we're really just wasting your time installing a blank desktop with a terminal. Seriously, that's all ShiftOS is right now. It's not about that, though. + +It's about what you do in this blank desktop with just a terminal. We want to see what you make of it. It's a build-your-own-system type deal - one of the best in the world, in fact."; + break; + case 3: + oobehead.Text = "Stay connected."; + oobedesc.Text = @"With ShiftOS, you're always connected to something. Like literally. Even if you turn off your home router, unplug the computer or smash it you're still connected to ShiftOS's multi-user domain. There's just no escape. + +Uhhhhhhh whoops.... I meant to make that not sound fishy."; + + break; + case 4: + oobehead.Text = "Now it's too late to go back."; + oobedesc.Text = @"I guess you weren't paying attention to that terminal seeings as you're reading this. Now, it's too late for you to go back to your old system. You're enrolled as a tester for the ShiftOS project and all your files have been deleted. + +There's no turning back. And now that you can't leave.... I don't have to keep inticing you."; + break; + case 5: + oobehead.Text = "Thanks for not choosing ShiftOS!"; + oobedesc.Text = @"By now it's definitely too late. We really value our users to the point where they can never uninstall ShiftOS. ShiftOS will haunt you in your sleep and take over your entire network. It will spread to all your friends, your family, your coworkers and even other worlds. + +We hope you enjoy your.... eternal stay."; + break; + } + }); + + if (currentslide == 5) + currentslide = 0; + else + currentslide++; + }; + + t.Start(); + + var th = new System.Threading.Thread(new ThreadStart(() => + { + Console.WriteLine("Loading useless out-of-box-experience stuff..."); + Thread.Sleep(10000); + Console.WriteLine("Introducing ShiftOS to the user..."); + Thread.Sleep(1000); + Console.Write("Formatting drive 0:/ with ShiftFS 2.0..."); + Thread.Sleep(100); + Console.WriteLine(" done"); + Thread.Sleep(500); + Console.WriteLine("Pirating programming music..."); + Thread.Sleep(250); + Console.Write("Deafening the user... "); + for (int i = 0; i < 100; i++) + { + var th2 = new Thread(new ThreadStart(() => + { + Console.Beep(1024, 1000); + })); + th2.Start(); + + } + Console.WriteLine("failed, whatever"); + + Thread.Sleep(750); + Console.WriteLine("Writing directories to the system..."); + foreach(var path in Paths.GetAllWithoutKey()) + { + Thread.Sleep(50); + if(path.StartsWith("0") && Utils.DirectoryExists(path)) + Console.WriteLine(path); + } + Thread.Sleep(500); + Console.WriteLine("Procrastinating..."); + Thread.Sleep(2000); + Console.WriteLine("Making it look like we're doing things..."); + + var rand = new Random(); + + for (int i = 0; i < 100; i++) + { + try + { + Thread.Sleep(1000 / i); + Console.WriteLine(rand.Next(int.MaxValue - 1000000000, Int32.MaxValue)); + } + catch (DivideByZeroException e) + { + Console.WriteLine($"Attempting to divide by zero.... but getting {e.GetType().Name}s..."); + Thread.Sleep(1000); + } + } + Console.WriteLine("Still procrastinating..."); + + Thread.Sleep(5000); + Console.Write("Enabling all the upgrades for free..."); + foreach(var upg in Shiftorium.GetDefaults()) + { + Shiftorium.Silent = true; + Thread.Sleep(100); + Dispatcher.Invoke(() => + { + Shiftorium.Buy(upg.ID, 0); + }); + } + Shiftorium.Silent = false; + foreach(var upg in Shiftorium.GetDefaults()) + { + SaveSystem.CurrentSave.Upgrades[upg.ID] = false; + } + Console.WriteLine(" ...and disabling them because we can."); + Dispatcher.Invoke(() => Shiftorium.InvokeUpgradeInstalled()); + + Console.WriteLine("Showing more useless stuff..."); + + while(currentslide != 0) + { + + } + Console.WriteLine("Done installing."); + + SaveSystem.CurrentSave = this.MySave; + SaveSystem.CurrentSave.StoryPosition = 5; + SaveSystem.SaveGame(); + })); + th.IsBackground = true; + th.Start(); + } + + private void txtpassword_PasswordChanged(object sender, RoutedEventArgs e) + { + MySave.Password = txtpassword.Password; + } + + private void txtsysname_TextChanged(object sender, TextChangedEventArgs e) + { + MySave.SystemName = txtsysname.Text; + } + } +} diff --git a/ShiftOS.Wpf/Properties/AssemblyInfo.cs b/ShiftOS.Wpf/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..eda1602 --- /dev/null +++ b/ShiftOS.Wpf/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ShiftOS.Wpf")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ShiftOS.Wpf")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ShiftOS.Wpf/Properties/Resources.Designer.cs b/ShiftOS.Wpf/Properties/Resources.Designer.cs new file mode 100644 index 0000000..88ea4ff --- /dev/null +++ b/ShiftOS.Wpf/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.Wpf.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ShiftOS.Wpf.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/ShiftOS.Wpf/Properties/Resources.resx b/ShiftOS.Wpf/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/ShiftOS.Wpf/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ShiftOS.Wpf/Properties/Settings.Designer.cs b/ShiftOS.Wpf/Properties/Settings.Designer.cs new file mode 100644 index 0000000..879280f --- /dev/null +++ b/ShiftOS.Wpf/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.Wpf.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/ShiftOS.Wpf/Properties/Settings.settings b/ShiftOS.Wpf/Properties/Settings.settings new file mode 100644 index 0000000..033d7a5 --- /dev/null +++ b/ShiftOS.Wpf/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ShiftOS.Wpf/ShiftOS.Wpf.csproj b/ShiftOS.Wpf/ShiftOS.Wpf.csproj new file mode 100644 index 0000000..cf3b712 --- /dev/null +++ b/ShiftOS.Wpf/ShiftOS.Wpf.csproj @@ -0,0 +1,192 @@ + + + + + Debug + AnyCPU + {A589969D-227A-48AF-A176-81022CF01E62} + WinExe + Properties + ShiftOS.Wpf + ShiftOS.Wpf + v4.5.2 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + True + + + + + + + + + + + + + 4.0 + + + + + + + + + + MSBuild:Compile + Designer + + + FileDialog.xaml + + + FileSkimmer.xaml + + + Infobox.xaml + + + ShiftoriumFrontend.xaml + + + SkinLoader.xaml + + + TextPad.xaml + + + Desktop.xaml + + + OOBE.xaml + + + + + + WpfWindowBorder.xaml + + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + {A069089A-8962-4607-B2B2-4CF4A371066E} + ShiftOS.Objects + + + {7c979b07-0585-4033-a110-e5555b9d6651} + ShiftOS.Engine + + + + + \ No newline at end of file diff --git a/ShiftOS.Wpf/SkinFrontend.cs b/ShiftOS.Wpf/SkinFrontend.cs new file mode 100644 index 0000000..3e8cd73 --- /dev/null +++ b/ShiftOS.Wpf/SkinFrontend.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media; +using ShiftOS.Engine; +using static ShiftOS.Engine.SkinEngine; +namespace ShiftOS.Wpf +{ + public class SkinFrontend : FrameworkElement + { + public Brush GetDesktopBrush() + { + try + { + return new ImageBrush(LoadedSkin.DesktopBackgroundImage.ToBitmapImage()); + } + catch + { + if (LoadedSkin != null) + { + return LoadedSkin.DesktopColor.CreateBrush(); + } + else + { + return new Skin().DesktopColor.CreateBrush(); + } + } + } + } +} diff --git a/ShiftOS.Wpf/Startup.cs b/ShiftOS.Wpf/Startup.cs new file mode 100644 index 0000000..371f560 --- /dev/null +++ b/ShiftOS.Wpf/Startup.cs @@ -0,0 +1,327 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Threading; +using ShiftOS.Engine; +using static ShiftOS.Engine.SkinEngine; + +namespace ShiftOS.Wpf +{ + public static class ShiftOSSkin + { + public static Brush GetAppButtonHoverBrush(DependencyObject obj) + { + return (Brush)obj.GetValue(AppButtonHoverBrushProperty); + } + + public static void SetAppButtonHoverBrush(DependencyObject obj, Brush value) + { + obj.SetValue(AppButtonHoverBrushProperty, value); + } + + public static readonly DependencyProperty AppButtonHoverBrushProperty = + DependencyProperty.RegisterAttached( + "AppButtonHoverBrush", + typeof(Brush), + typeof(ShiftOSSkin), + new FrameworkPropertyMetadata(LoadedSkin.Menu_MenuItemSelected.CreateBrush())); + } + + public static class Startup + { + private static Visibility getVisibility(string upg) + { + if (Shiftorium.UpgradeInstalled(upg)) + { + return Visibility.Visible; + } + else + { + return Visibility.Collapsed; + + } + } + + + public static void Upgrade(this Control ctrl, string upg) + { + ctrl.Visibility = getVisibility(upg); + + } + + public static void Upgrade(this UIElement ctrl, string upg) + { + ctrl.Visibility = getVisibility(upg); + + } + + static public void BringToFront(this UserControl pToMove, Canvas pParent) + { + int currentIndex = Canvas.GetZIndex(pToMove); + int zIndex = 0; + int maxZ = 0; + UserControl child; + for (int i = 0; i < pParent.Children.Count; i++) + { + if (pParent.Children[i] is UserControl && + pParent.Children[i] != pToMove) + { + child = pParent.Children[i] as UserControl; + zIndex = Canvas.GetZIndex(child); + maxZ = Math.Max(maxZ, zIndex); + if (zIndex > currentIndex) + { + Canvas.SetZIndex(child, zIndex - 1); + } + } + } + Canvas.SetZIndex(pToMove, maxZ); + + } + + public static void SetTitle(this IShiftOSWindow win, string title) + { + foreach(var frm in AppearanceManager.OpenForms) + { + if(frm.ParentWindow == win) + { + frm.Text = title; + } + } + } + + public static void InitiateEngine(System.IO.TextWriter writer) + { + OutOfBoxExperience.Init(new OOBE()); + AppearanceManager.Initiate(new WpfWindowManager()); + Infobox.Init(new WpfInfoboxFrontend()); + FileSkimmerBackend.Init(new Applications.WpfFSFrontend()); + if (writer != null) + { + Console.SetOut(writer); + } + SaveSystem.Begin(false); + AppearanceManager.OnExit += () => + { + Environment.Exit(0); + }; + } + + public static void SetMouseOverStyle(this Control button, string style = "") + { + var bg = button.Background; + var fg = button.Foreground; + var border = button.BorderThickness; + var borderfg = button.BorderBrush; + + button.MouseEnter += (o, a) => + { + try + { + switch (style) + { + case "menuitem": + button.Background = LoadedSkin.Menu_MenuItemSelected.CreateBrush(); + button.Foreground = LoadedSkin.Menu_SelectedTextColor.CreateBrush(); + button.BorderBrush = LoadedSkin.Menu_MenuItemBorder.CreateBrush(); + break; + } + } + catch { } + }; + button.MouseLeave += (o, a) => + { + try + { + button.Background = bg; + button.Foreground = fg; + button.BorderThickness = border; + button.BorderBrush = borderfg; + } + catch + { + + } + }; + + + } + + public static void DestroyShiftOSEngine() + { + ServerManager.Disconnect(); + } + + public static TextBox ConsoleOut { get; set; } + + public static SolidColorBrush CreateBrush(this System.Drawing.Color color) + { + return new SolidColorBrush(Color.FromArgb(color.A, color.R, color.G, color.B)); + } + + public struct Font + { + public FontFamily FontFamily { get; set; } + public double FontSize { get; set; } + public FontStyle FontStyle { get; set; } + public FontWeight FontWeight { get; set; } + } + + private static Font createFont(System.Drawing.Font f) + { + var font = new Font(); + font.FontFamily = new FontFamily(f.Name); + font.FontSize = f.Size; + switch (f.Style) + { + case System.Drawing.FontStyle.Bold: + font.FontWeight = FontWeights.Bold; + break; + case System.Drawing.FontStyle.Italic: + font.FontStyle = FontStyles.Oblique; + break; + default: + case System.Drawing.FontStyle.Regular: + font.FontStyle = FontStyles.Normal; + break; + + + } + return font; + } + + public static void SetFont(this Control ctrl, System.Drawing.Font f) + { + var font = createFont(f); + ctrl.FontFamily = font.FontFamily; + ctrl.FontSize = PointsToPixels(font.FontSize); + ctrl.FontStyle = font.FontStyle; + ctrl.FontWeight = font.FontWeight; + } + + private static double PointsToPixels(double points) + { + return points * (96.0 / 72.0); + } + + public static void SetFont(this TextBlock ui, System.Drawing.Font f) + { + var font = createFont(f); + ui.FontFamily = font.FontFamily; + ui.FontSize = PointsToPixels(font.FontSize); + ui.FontStyle = font.FontStyle; + ui.FontWeight = font.FontWeight; + } + + public static BitmapImage ToBitmapImage(this System.Drawing.Image img) + { + using(var str = new MemoryStream()) + { + img.Save(str, System.Drawing.Imaging.ImageFormat.Png); + return ToBitmapImage(str.ToArray()); + } + } + + public static BitmapImage ToBitmapImage(this byte[] imgSource) + { + using(MemoryStream ms = new MemoryStream(imgSource)) + { + var img = new BitmapImage(); + img.BeginInit(); + img.StreamSource = ms; + img.CacheOption = BitmapCacheOption.OnLoad; + img.EndInit(); + return img; + } + } + } + + public class WpfTerminalTextWriter : TextWriter + { + public override Encoding Encoding + { + get + { + return Encoding.Unicode; + } + } + + public TextBox UnderlyingControl + { + get + { + return Startup.ConsoleOut; + } + } + + public void select() + { + try + { + UnderlyingControl.Select(UnderlyingControl.Text.Length, 0); + UnderlyingControl.ScrollToEnd(); + UnderlyingControl.Focus(); + AppearanceManager.CurrentPosition = 1; + AppearanceManager.LastLength = UnderlyingControl.Text.Length - 1; + } + catch { } + } + + public override void Write(char value) + { + try + { + UnderlyingControl.Dispatcher.Invoke(new Action(() => + { + UnderlyingControl.AppendText(value.ToString()); + select(); + })); + } + catch { } + } + + public override void WriteLine(string value) + { + try + { + UnderlyingControl.Dispatcher.Invoke(new Action(() => + { + UnderlyingControl.AppendText(ShiftOS.Engine.Localization.Parse(value) + Environment.NewLine); + select(); + })); + } + catch { } + } + + public void SetLastText() + { + if (SaveSystem.CurrentSave != null) + { + if (!Shiftorium.UpgradeInstalled("window_manager")) + AppearanceManager.LastTerminalText = UnderlyingControl.Text; + } + } + + public override void Write(string value) + { + try + { + UnderlyingControl.Dispatcher.Invoke(new Action(() => + { + UnderlyingControl.AppendText(ShiftOS.Engine.Localization.Parse(value)); + select(); + })); + } + catch { } + } + + + } +} diff --git a/ShiftOS.Wpf/WpfInfoboxFrontend.cs b/ShiftOS.Wpf/WpfInfoboxFrontend.cs new file mode 100644 index 0000000..c40c614 --- /dev/null +++ b/ShiftOS.Wpf/WpfInfoboxFrontend.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ShiftOS.Engine; + +namespace ShiftOS.Wpf +{ + class WpfInfoboxFrontend : IInfobox + { + public void Open(string title, string msg) + { + var inf = new Applications.Infobox(title, msg); + AppearanceManager.SetupDialog(inf); + } + } +} diff --git a/ShiftOS.Wpf/WpfWindowBorder.xaml b/ShiftOS.Wpf/WpfWindowBorder.xaml new file mode 100644 index 0000000..49de84d --- /dev/null +++ b/ShiftOS.Wpf/WpfWindowBorder.xaml @@ -0,0 +1,77 @@ + + + + + + This is a title. + +

iBiF_ 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 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadopen.png b/ShiftOS.WinForms/Resources/ArtPadopen.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc232bcde07c639fae2a70f429665f058c2ea46 GIT binary patch literal 48573 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 D{a`j+ literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadpaintbrush.png b/ShiftOS.WinForms/Resources/ArtPadpaintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..c26ac3b5db222e3994c78d7a55f2e8f043b10d87 GIT binary patch literal 49222 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 P2^`-&`xxJN98dZ;N{sXA literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadpencil.png b/ShiftOS.WinForms/Resources/ArtPadpencil.png new file mode 100644 index 0000000000000000000000000000000000000000..cf230e2afc48a0d9935ee702b1b8711b53477603 GIT binary patch literal 48154 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 a>ZvpR8>_g3&fk1DZ;}(z3}3|OANU8bxs6f) literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadpixelplacer.png b/ShiftOS.WinForms/Resources/ArtPadpixelplacer.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc338b7860cae932d14b39de55d99aec698317c GIT binary patch literal 49614 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 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadsave.png b/ShiftOS.WinForms/Resources/ArtPadsave.png new file mode 100644 index 0000000000000000000000000000000000000000..5a31d05273d4e40f18970d8527e1ad90c25ed6d7 GIT binary patch literal 50125 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 literal 0 HcmV?d00001 diff --git a/ShiftOS.WinForms/Resources/ArtPadsquarerubber.png b/ShiftOS.WinForms/Resources/ArtPadsquarerubber.png new file mode 100644 index 0000000000000000000000000000000000000000..16391ef0dc6703d2692c70e2e7dce38bbdc6285e GIT binary patch literal 47969 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 `+J zW0R2+1u&JFxTxzS#yG2xr1#yDf~@ytK3|EWD=8n3(dO`kL5@p}m425WB0bQw*VEWX zq@+q(JeI+->R#0|&3)F3KGrV`&2!n3O9}-<&^qpl zF-|^+gyvV8Zi+i2i!N!Y+k5ngn#IipgN0f!a&( zo9iz4hMK`yc;^W91=&!^K^=U2O)pU1(OxpUmqmNGw%6BK@5&8p<^!Kdo75F1Gz$$P zmrmPmArf@NS|&6!^-o5ezG!AX$aUwSJ4@$`wJ=(_(P$smDdOvO#ku{B%3hJ2q`Ycc z?8N3amjqrXC^MC%x$j5ZOIiQpq;milsg#!~S%m5S{S+#6Y12aiuE`p$>K2>K2T3;r z%61>UT#HgVa9kN@VbI@kx-aI9mfBbf^JiQ?1Tb0_7!B@s@kJW-HBIW| zxur~`F#+mY5A-Rr*|-UD)E$7l8F6ywO)}IVJ(*~-PokslSWTCrZx>MXs%t_H56p#Y zEeE<${JNWg<%$(vcsi!_AmNU+r9U+n99ZZm@cfuceLNF4{qco@Kp$Ah)$#TN+zZ*L zAjwQqAtv^w7xOAdEJ}HW3_Cor4xqpLP6TXiEV!`f<$To?^BKj~`5M=Y9``PD{xwz` zRmzOBOv_3^!Ef0SWmHRbRzKKt8~3207MDGxT8P_U-Rng{7!K)GlGjzz28D`cAOZ{@l_2jO!K`Kqc*A3nj)P^VI8i5~@eqnm0v?`Sog~`BHOEF~ryO_IF}m zC)RziY*V~-#;i*gBnsg=sad&~V0}fcaj$IcGw%y@ZDj2=OfJ}$5;37vm-qBGIkf^?Le$;~lvKT*l@x#u{DKWTUYsv?&pzV}Lsf z1lAmD+q4_R(8m&uKrFV)LKVpLD$_ac_MM;mUTedFr7BrXxn1KbRU}sLyN(y1jYj%# zigOI~`^oJ@oSR9TkhH84tTr)_shwbvrDqZkAiwU z6l+AoA-B_{)f)xE$@o4Ds&h37%@fo!mt!2QoLIWQd4IQ{4RfLf=5$x24;Hg6(!YGf z(eX9GmFf5OV2Q<3WFECIF3wKzbo^sFK`@gE6Kr;(1nv`CmItZGvq^GmeD6XTJ) zSlb9QnH8IwwN4cGN=Vyl>73mek)!qNtl?WouBgY7iBft+AKYv%K&SAiJ!FhHx3sHg znf8)@7UhNJ4Z-PU?=L0Z%+h~X$d#@ABsHSnW_QmoJT9}OtEkPtuX0xGM9gZZMaxZi z_B^&8*y3-1A}I|H!n-dvt~pMfz=#*o;~#50Wr%Itp9oK3!+U8twmTaY@8iuMwMDE1 z@Id5$zbf$ry%);@8gbhM$R)gfseVSMk``Wrc~+sg_xuQi>7gQ>TjRutw~~n4HD&k_ ztP+pj^r$0NFot&#Jhl3>Y$_^4055Al5IZ93QtN&EP?%Kt#o@lSo#&e^0G+l(umClQ zWqwW?H&>=vxZ`5gjkU`HC$GuRPPLxj;$)m3h(fl-TRsxon3+?Uol%eFuIvQ*eOT9W zZHv?U19W=rt0|cP+rJ*@xHOi?;)B2(mnGimBkydlNHpNI=P-io=$sZTmd5dUHQqw< z`!Z7Igg$a?En;B6qTSoG3Y_Dv+$Qz3FJaFjl8vRy**m#M5wt9l7Y-#bul9gl7WZ?pH3* zDE%5+=q>j?uMars@>J`$C*>XIC6r)cag3N93Iev>C+ z!0pMyUuwx?J&N~d0-qJIy#35jW@7YXq2JY}THwc*CqLsfp0xL%-a|cbB9mK7drT2L zITP3WQ{N!--YPw#Nqf>dF!h}>$CUl=piIAp7L9X78i{3-00$#3r_a86jD6G$?3=;i z{_b=vo*UJ$#{2Ip8@WRKdApRtU7{N&av$7e33vEOT7wEFEOVSrTW zX2Ke2E8`G#OI?Ved-cCD#+Sg$Ozi1;_A?|N%5OAIwh zy)!nK8o0D@i~Q-UcgU>T4W)TZ0gsQa7GbvaVARhc?bCF?oI~uDSrIDft=-bQYEET z=V0@naO#Sdxjmjjc$u(vl1uL~4{ykzYnD~Vk*~YOw>s1Qm z8qvH;8~w_5=TCd5*QaUnGtiVZv(`&_j{-^ty6>;`?ancvb4#s{t@@3{`!s_EhxAT> z%B|$|0>1lo^QM)tYW;sHT<4)wz7CH`94*pS-tu}Wx?zn(|DYOZ&jame{K7P{)b(8& zZcN0++c4Zv`H1$rIU8FS_H$oCy|3{HiX){eK`(ONT2#_(e4)}h&me_uMBc1JjilW6 zY3H;36b{nmVxkpV-PfeaXplIs$LDwJ*^GXADfI7{6(~wW)W0d&aOwzNY+n&RnIKjq zvu3(oWYI2wKWz_Qx77O01T#msWZYw>=Mdh|*+H@rtr^LzetG;W3(_66DC75l`k=aW zI)Yv{>bE}h&QW4|8w+(nFL+;4io6rj!acuZz&Ro$hP80>u{bn(JC_Flw@xUtI}_ME;V zBuTF9T5$7h?V}|}^@(jaQ)QvQ0;kI(`@Q-{KVecB9SY-~WJvTdP+qk6~D8zevUtQ!Vgb*Bl zh2@1MPn~~#DVOY+e?;5gOcS$MvTgC*0OFTp8n;K@Fz-nlTCM(qrFE0Jcbhkgh(9*# zfogGEqlU|Tl#*rcrkPqD)w`>%#k-GY#@XUhf6oBc2+!X)-KeVa&4+MW1};h#v9sT9 zqkn){eO765M0Q%Em}VRNwX}JJ03Cd-`l;4=c*#cwt~bod5z})6KC|Yb(_L%oJC4W? z*m#Pp|02##5oZPX{)wxQu*;fWm2R6a+0>K;(6pSs_d0+2i2%3fJ6_i}G(jl`18HW0 zj}G?IQ!)0RQ(^uQeV2phqh^#=n!+rUW9265vmHyx_^5>2(*cjI9#B68@d~U@16K$w z{zs~X?z}nvDI3)of7^#5@?@lA9*_dpv>-a z;2wj#FU8kui{=|{(lsUP#JTW#QX_hEB4gP~1zcqREG zT)s7U%!!1p(cv;IZVB&>&(ijM43)?>&h=#$d_2j?Y;x2cDaKn`ovkjNQWadi8eb!FUp)O$$vL-2rk3KeWwDH~Ol8bmYt;pNDWbXMb`+g28nJDnB&U%EivDde&+g(5t|6TcO-6IYC zg&oiMIX2)^AlBWB^_;}?~nL7n~{Kk7>p3N zL{-h^1?|x=i0buWrJw)cJ?#SMs^7`b6MG&>V|!?2)!6*n)s6H`sL6+jOe5Z61uhUl zvD$0f_<79x6D{?!#R9hsinx)_+aKWDIfHdhoMt7a(&1JZQHk>{Ls}rUwuG%f`muvt@$G#UZo&~7@@pSKz;e}Ma1_Sk;u zdFAyv$NK1usaTGmzW)~Ow>OR53Zc>dNI~OC#0r70*)IgvAx&g{ck@)j_bihS)JV^?rlWcr9glnk(hyIVa4-)pfJmWmOrkFj@g1M?M8(eL>Zcie*FB2YihC3LcrilEIUB6nU z-c|Iw*SY*cadEkLbe=R$3G)o zW22O*nIDvxez@H%+Z-28-u1jM%TVQ$^^vQRJuf$> z1VLuG8)oggP5m-a^oG`m!i@^OYVn?}Gd)b-7YPAu_aCfdFCSJDT~aCw&RyBoHmmKm zZcEEhfqiV_0;ZXE|M%7p&2VkmscW^O(z4$0v>LmU>e1D+vinmV?!;y5_Zn(xa8nNN z2oH?)Eg-PYTQz^|p4zMX%l@tN98p^W_dtes3NgP{x~XO5csy7mW3~Y&}a@8J*D7OPjJ=gPllZK2g1dzpFW?2@fT#tgL%Dv8gx^ zi?gy^qL_W)h{bTj0mCxw7u>;F&b-{#1Dj%R7rz)}A9?<;=Y*}7)FCG?y_p5{55k)5 zgopeA8LFSKD8*CQb~<$;_nGj4W++z6ay6Q#(OWy`2;-APl8?9tr%h6B>3T@JXK^28 z@oKEb>b1;xZ;|8CTB*zD4QfW+uSf-)kBzCO=lE`sW#pR_^R2OUH@AhOgaPSka~+Ox6LXa?t9UKOrLj- zd;UbB?Cm^puJKCazGIDbUMhB{zl*-okg;6oYf(=ylBzhcQMS+BOisU?hqH_0YQg2~pr_;_;+R{}^Drag(&5N=_hdmr3u3=wiW9}?- z$PV-fd6Y-UPr6!EFP*&^tH56tw}ot^KkcaW^v80wt`zRrX4~um=j-cjy35pD*UU!s z5EwF#8ge2}pg$&^yr|yxAY6SRPXBQG(RG<)hb|Q~n&!_<`qRaCN4c{p$))*#vMDR? zXY&}v+d|<6h0OQCym3E-R!vc$VbuoL-0StNL&xNMuv0vO{)3ux?eCwx-tHZfYN@Gl zxKl(lt7YOThc4b1jo2Uw9)s!w>BfO3@A<{4>wE7V?}`#Q4+qD_TAKRELHC~~V_LCS zl{0-R$0*P*fNYUp|;Cs7n&aNj4}mQ#P7MRF$Oe=qEw9-59$uc%A9i>NMH= zA+&SJNUjf(B#fgieZC;r;IW#G@)+eqB~o99-d}gaTeC=Mord5TtNZYEZE8(0&U$x{ z47V!AC1tICT67qCHr`Te*@dCJD&ym13|GhWj!cou3IjEN42I?OazdruN!|jjynxezpc0%TdFp9ezB+pBC;t$!T}!@?^|Y&-;ftTL|)3qu0n@y8kpRr%)s6 zo@wdYN@JcU;uUF_*%?1mW0e&vde8@vGaK1w85cgFU2;E9^}^E(Ptj%{USEqZ{T&SV zvN`?<8!s`l2f{y7U@N~C`M6_tp<>CdgBf*`fiGs1%BJoiMjEa>p1mtmClHDv`n5b~ zp5Q7bQ}e_A|C>rjMAEO%sPfp`a)c5RdKzRW7nY0NPbdP7qKo&Yc@cFv6#A!2K+)zL zI-cN1WI?=$Br+8P9WQ$Tg^;~5P@I7s+>UNVJVdq)VGtcd?41Z9egqS5sJWRenu8K2 zpb%Mj2#4ZNWuiD3=%>6WaeJ{F28Dc*u>3Gki^TyUE_Qn%Rx}0?VxSAxA;1mc5JQA6 z0;z9gWTXwzgCpQDxE>6lr-Lv;A@xvjIONL#HIo&$&vfUkYETC6O+X>dU`ryg$^^A%EEJWs7%ezN&d)#B{B&NGMz=HQ6YzGfB&qQy*5RtzGZMPoS8X#QrOS8h#a z5ZN?_9}{BbXaGToqr?w=V|@sYO!cO*nP}Kw${u`q=0p&wuQ1C1>G6hc}!st{I8uqR8Z|C=U)?%lK zO$z(!(m$sDb$9=j#y9T&O8U=9!9f7Q1#yA601*Hr2HgeX0z?3i7<3ni3lIT7V$fY6 zE03-(81>yok z0FW4T7l;cG0YGBVT_7$%1OSOacY(M75db6x-38(TL;#Q&bQg#V5CK49&|M%dKm-7Z zL3e?;01*Hr2HgeX0z?3i7<3ni3lIT7;=gs5?6Z&-(L9;E?@mn1ewjhd9!=_ime{Es$wLZsY#EaZEdSKXDeBwQR7XOyoj!n5*y~I vp+Ee5B}=MF^(WFlHVndbiO3A9`-J4{cgqPVUc|M>RC}2!xeb9UAx8KFfLAJF2R=XPwPR!TJk; z3HR=Ph34q}^1aUml?aTPL!VKA1Ch@lC%|IXBy%Y#Nz;ntt?_W^G4wszEoT6D^W@E! zJN3U3_|0}#vOgz~NPPUAila1Ib(WKxfjHA8f)zlKg<1G)hq#TEkm&Q~==*2<>!<(U z+9->d^TEJ4e%n|nD}DCOXU%O*G=Yx{8IVFV=1^yLZ=mNqd4BPllhB)-Di)7IN}4nf zmqZI3{Qfmu9b4=AD8=3VvD;3?g`I9jL|vufkuPxY)#h)TE$b` zVnfFj;J?F5k8w1Voec`1evkZwj`W~2epmV()l_WLzexS~2I2hzR$Q(lG_lXe$ZQ*) z?x2>&3rst+ME4&fKjWR(v6xe~whozK`G&0%9t|9Q?SeHmI>}c#`6DVrC(*T;p-6Ku=38)C zn746GC$Z4N%1F$uA83*bs+Us|;M{9fm=2Fp6ismy(bfT!CieWh_Wj|&rSY8|q_BIM zt(MtF8Z=2$LhR_5Y-y{DHrhna*q{nwV`lKIy9r!Q1QZ9nH2vo|)z=ny?+wfN0?blbShEESna!OcqbKubFj+ih&2_0%C`c** ze*}hRQO%XYkuJ6)jBdAee6fV!goh1&a5m2t@>1xWiN3s2WQ!8xO>)4Hh4$_r~3QC?Duh~KLwq%0{J7EU5T&DE?Rjc#0V1$;JIFZnp zDcCwBZUUiBqbJlbTEyEO8>Olzga{*|#p5g0J-PieEA;DZyt1YdSDa{~utm&Vpc&?< z(2kP@!-Odx13PD$jeHAyQs5JpL8bu&`p4&-fPEts%Mnta$iSLtBa6w4G*r&iY|1W)wABM<)> zFGpowfgae|k}uh8cbVc($Fdp5sUgRdv`R#;ZE83~nLtUMn0VG&r-$r=hcAWYOFX~S@)~)RS-M^eOn`zt_Ng7ZQ6;yHVZBaym$u&h| zyBFXEN`v7FG2jD5S)9{x$n(spLDt!vu<|Kw$&;}~hMJ-fC5@{C8I9|Ey>xy`Iu@9u zQ#Dw^RALF24@svZ68K`iBv2O8GcQy7@6F{sxHN7tGsVM(7$)Y6(}{f*d26Crg%K$+ zl*Dk5MsQ$JvUhf0gkArdLTBMf(z?6Qa<~8@VF-%n1TU$^+mluuMTCX-TD=gd;7Clo*P_y>mZ)6~l#DsR46DII~dSO038UBy49v1plrnnue9CoRsg`v>s5F`Ue-YH!{bO`fAVz=T;v>OzjlpgJn z^Ha@QA;$r4tlDN`wR?V6mOwVuN*&&w=prh;eIXMKVJx{_!eFNo=vtWcdbks;z*r3a@SyIILs`}{REBED8;-bhze1AC(JMRRE*ci;Xi9>wwS-XhB9V2&UBMTCN>@czY_ z73I$PPVTHnA3c(6uhfl`#nTol8A;X;#WOKG!R?c@Xm3cs*+3( zJZ)l)s^TjZK^c{3!TkUdTs{gY6CS$>u50kSwf-IdhrL(!dtk^^9NVjO-V!laF1%_p zNyR?UxYtrbw$wi17lLd@!?q(9=NH`d)dO=k%+;dt;0-p31ZS*LAHonyc@ z@y&ke9A0G)U_@fPFs~om0Nz_NxDqmkxLI$-LRo-ZnA!%f9=)hNn7-R}$o>hZ?}2*{ zA@la5bJ#4sN#*3MfcS*(I;a%Vxt~+Zxo!PL@3~aYX1> zGFKF1=B;3$L&bYnmHTR|`M60$d1|StL|2ym$ebwLOeSHi;^uP%KGbgR#o?p2s? z_(h9a+fI6IC+kb9@=}}fQ#`{ni-l7o`31vXlV^!fl4_XDu6VAvxK9@Ao6?YEO3s!N z(TVzePi=O#@Xr>-Q9?pB1W!=pU>AcP)Vj|h^$z;Auoah6%AZrrA5LbxK77)H_SWbd z3aAC{%<+>t%g*teye^gC27g8;%3kne%8L8ut^Q|5+lWocp4RgF$nydG5$cRm* zWTa$?JL_ika8a7ggdJsx+=cwEbedHbP3raFghxfzZ_3}iqj01nHxi>i0Ae_;Rq+>z zT0kNAYd!roy1|6wq@yIrxjUqK^T|Zge7zYf8lZm*ucOyJg48J_>^z>cL(?npcfVrYut~7Q>vti>9w3uF zl0xmPOpE#CNic{wsh?QuS4kua!Gtg|WG~l}q?F%^MO(ZNOPsfkhj8_f?|&C0v#jl( zg0{#5xWOOywInDuR+mMkRh_9`fw=JQs~N7sq3k0Hz`HYs2`~A*@FcJd&FPH&J*gV+d!ItLlFf_AkuF z6-x2V`Z^TG=^U3}rK`g@78bH%5%fruHOv>Ac8Ruvp-mE8@cPoRcDg>^HiO#2H)1Hx z**Z5IA&_fqFAfj$C_c+6Td~7*%p}kzjoL1q-^Tq_(``Cm2NFWH84!U?bGTt{4!{~f ze>MC;&Pu82l%=jzB|&C|gwie;sVnH!u?>!bj0e&d$tktROzQ%OEl(TVHf#yn4DM02 zwO4~b_Oo$6@p*5Z?IEkTfe@*=-ZI7h!YB;pb_crH)yj6ic|;|YBB)$u=4AqYJ!C~z z$xtWo)SSToyn^Kji^M{$q$KBy44?WtpeE#%XbIKjzZ}d$^z=QA^T`=So&liN#v~>T6rHH@H-yZ69N9aE|GMOw!4KZ= z1)m)RtC|Uws|mILo^Ja(PU0`}gM8gLtEMw+8cW(dTGE^}_&yNYCbZh%?N<@{ot~~e zW7$2&6+5Due6eR1t(L6>q|`QN-7&FEVO$m!sU($_0H(?cxA@ueYqKabdzvUp zN9}FH*A1O0lhq_y#6Kc!B*Z^3noKG(t1`d#4}_k$n<()yp`MZI9R(nwXLJe|cC+w^ zF-N&tNaEt4_O_Q;7L;k}c7#92nhMWj?U`<10Ibfyh>a{?E~!dr}W zm*ccZq^_=5KLT8gqE8_g^MXQY@GOHWEtTtSmtaOnDtbtU5<|#$7JgV-<#4iEj=rQn zC)ToSBpvm$>;x3oO%@}0jKj^Fs8gqqqwc9^iP;GmHuYjF`uz4I1tGWvKi(ikaY>Od) zRjI9?SF=%)DK6li<-Iz@)5jmq=LIH;_pH6p#9u=fM)NDq>&Fe^3JjGS_1~cbgK3`6 zi)VG^S<6snu@U3lq#2e`d-nWZC#SAdUaAbSwj#6$B4yj~M6wW8(~_#48x%gJ48?Mc zbc`RDWd8`b+cg;%gEl;^$P&f!69W?`(d3aN?fx9Qh`cDNrAZ62mt@xge15`^Xy_#_Eo_v-NS;w)mZSO2Q^NmOUJ!gIxix_vAB@@OVMm)c8w13EJflL`XI8krw;yw+dHm{H5U&bfO70=N0n|I}>umYx zOl3x)On!_R55#(XSrU{x zQZx((`Y*A<8WLi|jKowS&FCOQx1rS}KX{{pMkYPt&C9OiKkyrF-OT+`FEbUj?Ry<~ z0*U#-&OzX&_~0K-yVcOkXbWRT%O7!-#k*=Acso0lKai0f(6>RQS@rGK>6U|&sN8Cx z*B{FoLuH1*ZYFMc^Xm({e|g%qH^lm8rG`Ly|LmnNu3aUk`CZB|I*iVP)8$jsjS>0X z1R*iTMbsfx7;T0}Vm;HMgVTCo!qrY8@5#4^YAr){85$1GgEOdN{9j_4sAJy0aA>;E zAjbSh@rZnUaA7S};SUoGO@ph2@%D&%>PcNBGi>ULh zP%t_Z9pxNtyGMZ0na`8a2NZtRLlstodE>xr%kX$uGB|<*{Z@<-7s4Xn=V?@Soou2- zw=ODMxnvKxVNEgAI({a*5tJDP+6=|0N@1K$Dx3f1pt7Q~an`%97>g^%rhKR~pFwLF zXhpX{#%e&F%P&~HPq5N@99Va&?d)PXb0Xy(E%fo5J8>)Ws*`(9bGA!7)tx7g>zpyu zezDhOyv1I~V(sdt)XBdVxd5QE{$yVCc_~O4z#HlMQz5bt)kr^xyz%1+1%u1*d$ax# zxb{vGLghb!Q)$JGPcxmWevU}P_%yu`-vU_~&Kpz62U=rF=fkBiNyJ)M<+E4I!i@&KIP2@%Y1E zjLhbI2fDw(zS2);p*5_QdKtbgbDO_?yCS*w_UpMQ-;PmW|G;f{gR+=K^F^DVs9pT} zcDarGV${hd0Nm;I`FeEF;9THdQb6tb6c=n)p}?{tU_W%RBrz6iXvVc+OMO ztJq7jadUvx9-_th3*HcGqa!sDe2LfAucgXr7yl$UX+VTF4sY;bIY z+=$NOukT{H9h4(aw#Ep6YK;32Fl+iR)hSx3_i`&jY8BNrU?#uZq*DevQpxn~2CNZI z$?egypOLf25KWHa#t#!rqEW>=h>NDcyX*Z+jmJDC-h@ypdBirN=};2Q7r~ptJneFx^j2X5cG<3QcX$Ug37xT z!PJ1r(C{CM;@?c`+=a;=s21@#VjFo1*{{*$bLKJ3ghb4Ai43zLPNLc9Z*`SaxIFM~ zhR-{@7h|ta)WzOPdrd*TvCll_u%`A+mwFb^Y`JyXHJ@XedeS~RQJnHr;~OrpMVmXn zvxlCqTl7(%z90|ZEC1_#snk*^$8sP2@W820xnLd8j?ju?A|%EHgJ;esuCrJXVf2WHtisIG?;^6!WP zMj5ai6TjtBaHiIM!AoL`HWKlX4IP5Kp0IAgmM}KTAWe3$oWaDWHM{Xs1-v|1+=t0t zUqZR$io*3f*kzLhuq7-_?_h|1oa*Cb8sNX{;&#CPxf#iA2r`$tJvk_-Z13eB zpu^ph$v_M&97(g=Kx(8u6qfnn7HLYgJitNLh=mC#xk3!}g!_eFyeFWO$U~nLEH~_h zbiRd{usiwt!7G29*6$mzEjEW(2W#fkFL(LbPw?0h-|+2O?N4-ihW~J+^nJg1pC7{Y z&W~U2Y9lwe5iw5O1Y?kQ!mJ#A(HwKYy<9epdbu{^xJeEcF9_gOe)C2i@A|jcJr%=t zbTd7c3yH+pqVy^#?A2;4zT?Ba(QCoP>UqJkg}}!V61*W59-{<8$yU*>gS35MVzWhp zTzJ>8&!s(6%GLT(_mi%O$5Hb2a2?KNWfL?&XO3f&^7vf%s>e=|yTFY+?Sdng}x zIu+>Bd{tQ<*dgX_$P&QZuWsFY_?LbN?e4pXt|$Zi3HDVb^`9rmiSKumcH@T@tYuT> z^yXb@u@CZ(uZkf$(RrPv9zVoD_s=4)5MiXbA+3%6w z+Ob|lkH^zkxQtrpyla$C01W6c;&!@?JMJE-b(fzZjF^97Iu46@{CF(h7j>@W5@<}` z4Nl?qmw`9PJupuaoFs)LHIrmgL8W$93>lo5Gh z#6l1r*$p1dA9ukI-i27cSg@u_igis1Z*?Ob3b=Wl80JxHictN|J=z{|U!__pauvB% zj6P2@B>iWN=)JKB7+9h3amjf=kt_P1$+`a$!4kjG`>mGpdTvot(nrXM%Vl?zOrle? zux%o39>5~B6eWTC@nE6nQE^_i_|2s7xu)$BccSBQTx(EO$}i-C4FC(&JO9er`gpVx zCNI#TN-Y+6%`W~7+a)<$iaN5V9@8eu98ZJQJ}7sOEyeZ#^1Ze=4ogW@nXeyoz(3r1 zZQP&lVCR+Qa2(!7JQkradA=r}@M znOJ=E8vc{)!5~vU=tk{aSavXO$nU!_!tSfuGsrIX6Wh36I3K=zek{A~bw39TY;Sqt=n;LeyZYT9^Jv-BD9vm0zp zL49%rj|SOinCtUX?DgzE%cc2K5AK{;@19)D+jOEY_UMIglgAb3a@M(`@uK7#2U+G_ zPP5(VE}!~$sAB_Lf97JQ`kgIcoqM3V8@!!25Lo(7U&;&!avb)>t1XBHT(~~eK3asmw8)>=y%*zCMS_63E2ITV`i|#bEagEKG^9ve;+WhgO%0>F6L958+Y?008%zCbRvUj3l3HOQl zP0Wms>!hAO$fv8=WuSX}jr{A?>o!7$oBeXW)8qrZILF%?9<}|=2bcwc0>&>4nV;_V ziUL6;9jh#F1%i~Msq|EqvzN8*1n{!aA_;YZMAL0gzOhi(wBn7;Z)oGsK%I4a9)h)-?-0 zy_THG>Iaq%IPJMG9VxRVrrGL7zZz_74$hO=ReaR}wJ-4_nquCbenjKO-Uu%pctDEmkK{2T=kxJ$O7wx-QDPDPf@^`S!x z9?_{>SV$|luoCHqZ?f2Q++cI|!0PWsJ{yAEiZH(5feh=O8!n|K-nlQheuw@$`R9V1 z%b3sgZJhWpu~++*8*EL1tJ7ivT7&`BGxj&!M-1v1URWM8i)mq4xCwmLAIKZVf(w;4 z1?7uuEXx^ehn16jY;`X7{-Uc~c`xR$Zsw(g8ivrE*b!(F?F-N85%+}r;KXl>{v34+ zr1qLRb?u9UYaCxAEEf-H7iAhmL7+my_F-^teCqq=+T_q>s_8Xihyl3&#*MHbT`rwO zR5Y|3?cvwbpO~8Fj-ux~@av2&7WSTwxoMcq1LG~!<2g>_>ZQ-&DU*iRtgzUb2FxxE zmT@eC&{qq3$UhiiYqOBvhT|l2mdWZ^U7gzPjU5TDr)Z69BvEV}qFyMj((VWju4=AY zdH59m(Z1}<9ojvIDbMx$IoCUgtLim1v#Z2ws)%nM`fEr@n}p7riMC{B2daV1T=27lYS5H8&)#AHfkrXtMIwJhrr%k6*HMCM=X0E@;Gnp%sQKwHF0m zm5oDsO6{MTJN7%K>cuV9((%glaCPW%W06Q&TG z@UZER6`F0~+94vo4%nY+`of4XBI{AYV1AY$#3GFjTgpmCT=Bw@d=`L3Z#|4j{$(pm znkh4WS|-joTl8g3=|Y5azgbzLwSplQ@JCK5xp~V9ma47U#`M|lMo}R%NjL(61V623 zj9Zc^F?)(?5MU;SkuplBO>l`ErY!^zmq}M9H$C_KwZ6zM9=@&s%%>l`FZekbDXXnW zRnaaE?O;2f(RdIq zgZxeCizSza8j#Atz??(iLKk(B)s%sWyyteoC~HKLvtY+S?xiyf z6*xQUy_u&;JCasgh)19O@h6B78%+SNfEV`ED`7#2!8nzSNP8ygM(HfEr~qc6{s2z; zU>y5sEIlqSq`rw^e{+`tPAgIvbgVC;l!vZAqvefteZfLY73zXMBif&SIHFhfHq`z# zwzwM2sLgx%?CN*O&S{`AXkh>AiSkIw9R_<{m3shovH_F_k4GZSdA4CHK2^LJ+>$XF zbw(D~Wzq^SGpRrHMiJABdq=#>==`#*4TOk{jx>=y~uCXKjQu;rLCuOF<@Aa1-%s3&rC;a%sx)}fpj zy<5ctXcKD{FSBaV{s@hg;PRG78g<{yaM_1AX%6iNzW_Yhfu>+{32h$J1**lI`S2@j zCDcczMgkWSvSfEi!U?k6EqV`F9KUk4G>*-jGc`!0L$%u^kQ}qfz6imbY1+c%es{R% zwg1gJGKi`;fFUn(!XOZMYU{MLVJfbPC!Fxfv4j%RI}*@_!3Cm8oxj7Jb!gY%^^D=Q zJBUIXIz7r7Mu|kdVV>VM8To0;;7Z8sWn(=T3THTF!&EW6cWnRMhT*qgff5*T@$0?v z>caUROp|uEZFu`n6==Ymbi>~brYYHWM z6joXVDG`uu_-kgOp2UK0Me&z}5_CbLLSJR$qmHRN*Pl^Ai> zih=ml2!om7&gXq4k+1%&%D_@^cVIyCrzVU#rDaq}+Kswk$?MJ)g!sReH)@4Sn2w5|p&?ck|66RADk3@hIey#x}x z;%T$79A-#@WD5#5-5fXR;ZZo6PIvNOZ;yuR7U(}iTj-6iR%+!FHm`5F;h8n~2cTFE zZ4%6hdcBG9#>k~FrI3cp^J1R`67?evYvxyav=hmGW5Af`bJZG2(5M~9V$HqAC$2lC z!@Bs(4Z{aY&l`s3qR$G%Uf|9Cb|5Xb)S3|GVLYOi(8y+v58>u*bSz&7_xNU*hO{4y zBqPCiy90R&M|`Hqc$sT|Nn5F82-Bte%WjThE#l=PVR3P+K2*`_L7hhBEBVY|ExE1l za4o~AeB0Zg^u|aoVKRZ0DfdsqAG+6nQ(!PC(3b1n2X=HIO7@31^mCYGk;X9|j-$O6 zYNLBx{HAi?g{RWu$$yO2EQ}sTM!!Nh2;L9>Ma?}SWWv#au73DM(AA6)W+wPRG;Ers zB=DZ2o9CI{YPzAmX_?QWYefO%HBuxka59bOF-@3cB=>E>cr_+$!4$ld8~tIUaQ}xP zghj2g=Vu6*7&mt?%^L?)6r$4+0qIgln_&tfZ2cVMl?X??4<6$VZ5?Ba_z#h%2ao2Z z*7S`JqqL}70E0_mKCTsl-en|V)_jrqgoB|>D_MGlgggk6*7MuhRp57dY4;i@RF9lK z6a8mAd;{UonK|F@ji|BZN9SFT+gI^|?$C;6czL`PyyMl>BzGehlaO-<2h3D- zO|-)@1O6z#-~g9Pv-EYy)SHp4p?a&nyM}wHgX9XkYVk*ABHH$n+8n<$q=TJF`Zw1| zUx`LIIi_(~Cz$+w_ymbll@v=1R3j;I)67GXTfzo9aO5ta!2h2>FnS0tkM`mJ1rQ9Ddp(c) zwK?bCg29NiO1y+`HlJ!$)LRcwca1vYhU78@rJ}x=0DPmoQL9BVj z)OHpfQLxM*Tvn8*#bu{P%zr5!w;u%l&jLZw%uV>4aCM$}NUeoGrW;k52@>i75>e!^ za((59^NT!Amh(vu%y;BQc6Agpp%#4*QYP6_q}OSfifXt1(5-T+nq^g5uq%r~vyf8OZFeNI zAyrK&hNY3Ai%M{;`)CJ5>B+Y55T}D>n5k9S zbJF+JXJP#MyUo@mOqp$`EQuXHCXzd!2-Hy5qjaq`U1YQFCGa)FZIw@^W2i#*63r@R z-YuB$SpYxi_|)3(I_9ZdaGxD?=;e35v|bp|&CC8wX2VE-94J!L`{H?;L5xehNfs3g zlSi6!TeS*5&E`73RmA?=mA`mWkZb%XVTY@K zhyql%OUOY#1~J2qde_;%V&PPaz0*vjp1a3-KHoAw#`8bH&{MW^EH1CjweJf`Gp`YD zN!`Dso+@h3)zmAcw846e_RuvF-tNC zGA|N)b>+Kc=&OWZ6zIktDdg27!q$;!sYjZ}t-~qxS;X#YA5Q&kASI$c9ww}W$cUT# z6C<54!G#+xh8vLekvc+gNFC$*6~{&m=k1$)!({<6&VT*T=l>GYL>2Nr#?a8W`;VoWsbzJNOtPs4 z*MFwUCsy)Nw?h6!{{t&N{v&n|q_s}0H&uqfh-`fLf5fiqtLrD6Q~7Mb?Vj-`vD-); znEprl@~K07wf_;j7bJ{NIH&fH9>ymBBX)XU#QvY8ueyI4cNw}ECq9@(cG$zR43uS~ zMYk-jRKH{Q1!zSx*fe`5a~PD7G_@9mTbaVJnq4-n?4Z1;y?WFI(nuv#V^=&knJJ(( z4|k$pC1WwCE)f=KJR@Cdx(siX}KN#n}G9GV|Ep`5pBk(Gm zYPsL(Fg#-a%W389r_?5N5V;vkZ;4`B@p3Oh8_t{Hqo5J_7t=~Fg1im!nv%hJ0M52| z8lt6-l2G#>J5^~SNY6J}{KxRj)ARL$z5mK6az2~De9&6bdR^>h-SRSm4ta z!Y6ay+ujmO6__*_^OiUjoOk(*WCXi6<(j45c8+`>ACJtEz~v)1v1mfR)X zOFkr7c7|JRL)ssI<%zPgJW&0GC;iYBUZtgn$(P|TjT?t9*($+Dai5MHR|raF`@+`8 zhw3#4^%~3Pp_Fj5F-#Dn#|ZiWU)KGqOWRC$mRt9`N?p$Yd^GGljV98AUZ!U=Y=vM^ zZkvYdj+`r%cyyXDeS&lhi#pC-OgtCD*9=_l^Rq4C`8S28M@$>G4h7kiVcYf30u=Ae zXZ`@M>5J}?`h4fB_3{eBL;>M(EsNpe-L9MAXRVXUNUKFioU4F)SRQyNe3z^yIDigv z4t#N_hjVe-eWl^6+>Kq$r&gRcUc(l5<30O%?K{bQZJ?fUw=_C|;?CPlJn_Hg9 zYo%X!t@CTkgZ2$t>?`-3z3hofe<1+N3!r~pn+ZkR<twni{!V*R<2 zn4ahb*e!X@D}#KKZt;MEm;8~FP@Uu~cdWLetW7Fau1i&&Bvxq5GJv}GoaAcu6tk?{ z#Gqxhq%UV&6?;i(6&K%TrcB3V^y@);KsBcpWkah=Y7cK&bFgx7`H6F0Pf6FF+OrDP z#GF{)y#1e|_y_ep2Qj(A^&+3AZ4z!^M+_RhkK6~?V2RjH(Gb@}DKy$boz9X9w#S}q z@deh-K7U`6cd~UcKG9Mi?y$`{EUUgUrQQZK*dGH2W=c$QZd#`oigWI&yyHYRXi7Ft zchLTrRKC>YZOI`4)Ks3fOYOyS%|X}~7fwBje^c1v>P2raBqozI~bMW)6Ib(@GY2}O|O>u7QR2M8YvJih2OJv+?Behf;56wV0N1ITt33rgTWMztx*&~L#!wI941O&8^dFWC=<;Fdb ztalTW3}!=LJP4(0z5kqa!RHlgV<}kr;H$m+2%KHu8+g8}md9ph1&>Eh2ZhcAe-P~V zBZgg8B>=fmaDlD@DX=G@miF&h4kc3new#YeT;~yjYzOmu$jLonyLLgZ7HB*``G70^ zWS9A7B3ZEnvko#_gC48*>;xeBAc#z_EJ(5Z+f||jPgJ@45Q%V-W3=}elUTd}AO=raQH1$Ee3Fo$!4SGy_i9?6d>_+Hrz*dp#uM1g*Ef)s8L+-fi z*!}OMA0u+7R4Ez@LF0cL9esS7=4Xq$&_JCc;@T9ZYt@~Pv9duqV)0R*>|QFY+(thL~bWbo(%;%xPiESAHIfZkom3z@M1)t9BG-J(5;Rb&a-emQrM{P>-8x zD24-wMwV#{t7W;nN5ve`UbD#U-GEqHVq_q{%#Pm58q-1VbxH}H($+?!(IfXFc(kV$ zyoX$?~Zt7U>q^s4|n?F&+?S zFqZ9o@SRbck)2zj8MFO`FNfYz$a!M6L)F5*#_U?dVaKuAgyM;FuQL8cL7-c{K%Dmq zo8TKX1@&O@Hpp=pzhu5XSRjq+TeqcN7vJ=9g*S^xOJ9Cui5=y*LbchQl9lmb3a~Iw zNu9xZia@vaexxVMgtBSR_3k5za7g!-+e<6uIm8memVIK^9=n)zH={^4+i6)VOp?GQ zQ7FC2<%)*bF^hhd4DBdeEX>7k3XTpG+?DvWGE4?@W%G{Z>Phj^%3$FJ9?d_AL z&irXvWoEyraEcO{O^4baG?xz5EqZJ9e_v-?n7B9*rSk~2{!@xGdjdX$e`|d6)*v^8 zZ)@+s{PFa7+`k>;tY0VUp1ZWZjlb3hixVr`In}A)X;R|DbdlG;3H!#?&R?WktowPb zhWnM{{}i#KAvu>X4U4${p3H*j-mBBYbpDa$)X$@RB7uTx%Ua7=Xv}Ep3n{~T}jl#p*Eq#YT_Ah}} zxO04GXcju{jWSx?Yq#Z2_ROa)V(-!)GwHE0&!92=TssTgEBc#zC_x^6j^IOF9M_|) zoA>h_QaGJk*3_&p+9SF&tFzwy6gkrJPhF&fg6@OEhAuV zorjNOx+pm1yR4Ai589lE&A>3PHM`y+zsbkCwHd8=uAHJv)Iq-o68WivhvR z+q!x=MZ1T%@2;25XSubWrQgw)`IlkYvT$517~!aQrJROyXcAYDlZ@q}TR5XDL%zSV zuZFnpbuYd6Z(F(EJ$dht!T2Iu^+YIvnNoM8FGpj5L~n1gHCi^kn<4Okwr21$MK@Rv z99T#upJLJFINBdliS-Au zBcK*aO(r94;=P@g;5(2hF+F=?n2J?>-uqXs<~A1ZiD_H7v=PGjF-4Ln|Ia^@*wHbW zr{?gpvrV^O0^wkUW-+D99c!){A;s(y?2NG?E6nikjp>_A_(n{BaxNoH=_IO64hv$T z)M-cGYfEREK5MyKoLNs579zg|DLdga-it%MD1=)Nh~oz?mx_eWOn*4zgYL`W_Tng% z!UZ)izm=BgX%L)!RR;t6+4$KL<>$#yb4@?Bw*M_#&Ht+WX{MPS9lyo_BdR2hB|%6@ z5?vIBk|3%mZX1{Bc5@CbKB7^LyXMZEvv3kx^aH5?EbjTq2_wYdf1JBSm*2zbY{` zST8=`*X6|p$@lXQYrp5)w_`B=Yo6m#_DTID*DL-3}C$Mn|9UeRPCzW zQ=)6OmW8I?Lao7+C0JT*qInxvAKCH*J9I@`o?zB@JG>rAL;+2EJznY~bIXlzo#KieGYEP2qR)>YW75_pC%j+|ut zmn_{yFaTSLVl_*pA2)XN7aG?a&v@D=R&8u|RqnxKM`xDbrw+};voBNbyV_G8Zn9se zmak&HLp*XGT)GD6I+I^NLf&uCwBK**4W{}_Vr0nP+>Y1!(f6&6iLv3iBY8la6+M4q8dq9o=%d{j(QP^#S2x-nrdn!yn`0r4uzx=R52( z?W*_iA<2E}4zwFLle|B@)zC@UtUvV=XgY?V1C>*z@7Ou`38%bvC-VDj@d*H4)N^|# zx6-c3XuNh9ZwJ@VfzO-AkhkG$P;G;47_RR_N!?SY`*K;M z>9>mSSxZm-@2(&%DSjF-PToihl=;fT*KMZFd+(2F)Q#Wdb5$?X6$#ym>ev6;Z)RpTck;Tu z2z3Mp2nMeA+|ml^p59pLnemTb=T(dHXBF0$6MQ6ZEV(jxdoRaKV=w#h0!qcZ<%iDK z%z#dy<~@3VIsS6|l>{un`EA`7eaS2S8u)ChTj~?gbfJ0p2;b)ME9W%zW(w4N!+I2U z`~g%S@hkpNbG^JRE|tT@raU8hsWoDl#2Itd*iKv?gogP5YF=M>`);@Dk^M|I$4+S}X0f&;K8CVSoW*=xtjucl7{6_!<)S9>3&budNTE zKYH$Cm5)4r(F@9c1)x8^YAe0(L3{I5QGOVD2gDAJ0@=HI{`;o3rE5%fJ`KS!@I&Ia z9(d3d-b>y>bhWCiSnedQ+Wr)V$xGZh{nd7eWQE)`rLO3PZ0m}=L)!Zx$_54_lGF2RY1}5zgyVW4aQfL#hd-!D>1XBk25do*;t6?1ivLb>lZg3@Hbu`v5ij9 zs_4+4INfJT{JZRcCXlBDuKm7Pck(NA^_~<6tYR^1(rdzNWn{}__yYPRLoC@Zo{{Mo zuvS?;G@V?_-qO#TM`#O>tY42<`S^}%S$KghyTe*(Il4K~HEx{mX29n@@)9eMGGhIlMo5)_^-! zb}Jm&L2(WZIF`^nhMiZI+D>R_apRno+8uI%Q~C+Ox6tY@mC`P=N4`>cO=8z>Rc9*A zo|SGqw+mGFH6Co;LwuB#je7q094W8=`Hh>@Z(;lGw*6H=( z=zaZv9#>x5?qgBu+JkH+)P#G*R&b9Ai=+)O@FyrtAh~-&0m{M?bZJ(mUtJlCN=$K{+rDczwPY zx<0aHgCZWub`P@YQUB2T*pPhx{TAmt=|s1Ov18#dpI=6@PRV1`}Dj;Z&b=VIX2#P5}jakoe>zbAk)EyVD-Z! z*Myb{ka_XU`jpF=dV|X^r5hvCR^%Jbc|BFDa8X;OQMDx6%8_#FhX^mrf8fi_#Vg5^ zda<_ko=*$-ChDCq_jPJh z$_Z$beN1pPL+fb(t?Qrm?K@r(pHRUJs(G$yPO3tG4(}6D7#n;TS#sH^8nCXHO#@Gc zy)$U9GlbTR9X1z#c-@+Sdoo+tuH7uKxU|b(er8D!Do=~Y0A!gjYqQnXs<(E!ux7k-IKfru6b~$*E`m!P2Ff&MdqO$+$C}YxW7Ky z0|N^~0=Gq>mEdiUvT78oTWCL0^Wg3if-ew>fbab-SO5DqZ{Xd<-Ug7fCkS>U2B{aa z!nlGdD$K!t6l4~tU-zO3&LC=U%&s->y)(b1gHAT?@=dfas&_F=UUr+7jn~?obOlJd z+Jme7kB({g95%e#f4BtDZ*hg~RkMG1t05#3`EgQKgj zG?(LLE{oK1IL}%+*-ld1O|3#K=fK?$DlTkB#=kgj%BdYXA-lMiH+ms4kjZ6g({toJlez`iL_fnU%K4ytFvhDbVXXzW6+cD@+@^0QktwfLiR|NFva z>-QT8!V>Jhrh!ZP%Q3{@i8g6w({F<^^k#s&^@R-rIYyI94Ac9P?XfV{txL7!d^dOf zrcif@_Ei6laqoo$azbHb6&_NF4y;NG$!0SudReupa25Q^?}<{Cu}XIE-x;1#pN%O= zu*JU;C|GOmO`<5c(Z(#l=_NUI*?gJdQy2K&nyePK+W)&SBZRGR;efTNbxMqa?8oth z0_q-V(+@FGUtHMH;^;7Ro0Th8{rwcSU*nO^efnRy=Utz&LLXz*wc=y;sm%bV+9=xO zBuPNtA!<$kT{oW(_Qc+O3HPFN_^iWTsZ8v#LX7~^ET#&CI@1{Zsbz;g1%K4{3BU$AYLc7L4%qu{I61Z9NXs#Tw9T6u$LpCy}MR@4o(cHGq2SSZ!qj~9R`PVKt$ zp`QXyv#%zkzws3uT)hps6pkLYZMyKe7_*$1^#b{fk6g7y=uo|d?&^WvG9u1|Yfk4u z;I}1`nE7nkCFfFm#~JvpIagGV`?j|(M-(j(hS`-5`4`4Rl@o{eNnL}KIzzLVAfF{zY_v+$Mn+^rD?f4M3KFQO7o3@W3i6?-;;lLoyRh~bmmW?| z-S}j4d~9|Q0(K<4yDuLn^P7ez0cQ~fzqXq$BZ6|=JT6IQ- z7Hm~b720$dP8tM?U-PK>{i+U>7eYAP|Dz<(dcbw<0@9z$A#W8VxhtLvL`o!1r3R@L zPVRM*hfPJ@6`)c)NbY&<>G{=IR*zNJ*3DY_Q~j&*yxCth2IvX*DVC&-gJ@|{f!k;X zoiLh-dC_qAEKrWbrs~F`$3{FJd*X(dt+6fibZH)rWIobsCTS4tE^u>REDR{Xbl>*^ zGx)TL&uTkdO>ySXTp53LFU{<6-lJ6CghA#db&iui69-$wFlqxz&e>{@3jA&$0bQDR z1MJD{rul9P)Li<%VBW$VoD1J=h_^s|K_??^+i2<q9ZCJqnVL4di>j+;ww+Jd;{9VtMz$cX9UUKG znJFz>GvF9xcP6ltkB=VTDa+khNJk{W>2QN3;MYvPYkp3Tx7F$%n$Prs5v=;&x9$i} zu>#UOao?M?VS?Of0N99KvxA*CX1mdsU3`Q)Olq5EL79j;;Ks)gD01X<2XH^Eu6xiW zao1+JWOg|jo;JN6Ri^Nd$NGg;P9D zHjN^#x~7?m&B2m6MrM!nZEEVR@1fKbg(Q6c>I=I<`oR0k5Y4u<)*hoB8b}XlvG19; zRfxLr3kOqSl!c7s3UqIA)FZ=>{vCCVE11TpNn0;osvotiZxH|)eFQOuHFpuEI1uK(+Ws13I}R#}Vlc>~mD`CpHQmRrt`+A%*ZML0(h zn->lXzOpes%(hzNHz9M`>KoI=qQ+j+y5qWYw`B<@A_>1h<;#m(?_X6`4{x`VK9t*F^RR-y$fHe4K%!fJ5vbQ8V>_(gvn=3>ov&l5LBQi)BgH+8^E+yviZ6wy!yRbUD_1)K9NQ5tSKU;r z@2M?8nP%e!kSS2a7~+<9Z;o2bPMfLF=gr2H&wWg5PP*vRxu+fF!^1Y9nwIqU2=$^J zOpl4%lpn^n1rNfi-fY9Sng>LP8L46Z*FlTg$uY65&gIq*KNYam?^6Ni#s`GvRA zxsWEmQak0L1pkPY5Zx%#IMv-DK`rnqED`@POefA%_0W6Br(ESnEc?BUoQv#^KdXew zeVElwq8agqD{v~wG{t0Gvt4aEpT{jpu^lV1%t!KPd%#}i7Ph!T<@M!d;#9vbqR_pO zx7&GX-O&ZPn7CLz9N6I0;*!^b#=PzJ@wn!s_;>vHseAqhtB~VEE9(X%N%Fqnb8gHE zNB^`!59xKY#;z*z`cwQ_U!jJDPyN0F8O>Ue_AZ#ga(+5{_fgy58Qr=DtC8@;o5^ z8ls*?Il@~%S%tP<)!rr9h(^_dI?h`@o6Q_Aa_9pHQ5Ku^6}|AKJnMKOo^>23)q=lb(KHC`t|f^nztg?n^xGaH!R)kn zY{aBivXb7@_)H4RU{YmXxYhnVMVi1$$Rv^vcrmXWlVyHe3F-z}-9X!83u>w^wBRhQ ziw8f)x7MHOA~vkXZVa`lijE@r*I={|^AOA88Y^DR^)xt}^SQwd@K4CC%yo80GFqXw zTV(C~hY%1Fy%T}Ak#QiN_Y-m(Qe(sflz0fSMkW~rMkAs4*HDjo|5FVxD~00z-u_a5 zWl(@2C~AtYswu}==$Ac$%oV10**oQ9z2|uYX_N2u0p4vG4R?dYBA`(X$PbQyf3=$b z>g4{iC(fW-gaI>4u&dPmU}9wTO?T7q?1mlT2N#tazeq_hm+wC}?2O&wj+HM1gOFGd zlv#Y3P{HVXZ!eKaMd-=-_v5-=i-8`-o23KER(7Dh%UR8ZPr&tj^gRth%mU?FV~h$6 z<4&T=NpJt~VuaVrtn?1=m%G2+*k~xa332L*hQoa@ z=OnLw;vF;AehvD*GENG*Zj~3UK2~2TQWq0PRwF&~AN;cOPK)M(@=%xadK}_{g6|Vf z8|DL>Rnwv&%)%71+GL2@qG}hm3M0LO`|ydIgznpDot)k85Qt{ZHQb%~2HJgU3=XMb z2B&#`(KcuU`dodQ@aL4fER(2M)eHPR8tf)vR@8&ySJ|W5xq1#>T0)&1hGy064ktSx zP(8~bAKy#x{(%LS%{Bo2eyA;*1*zAaT7m8|{-k!VB;Rbp&pcH&zq}VLbo(HSJejbk zvWEZQ%VHcqSgn6F0_J(Jkq0MACv^xDXl^<<4t{OSaH2Opv2L<=Sv`h$P#5drWtQqW z-jNFSRHU4G5bdaXs00V>t$BrwAr6I5op|C&_H#5%HZ=6|X?4Mrys-DRNqhb#z%u{B zSr6KLc8!izR63CVir)Ury)7U^UkC6lb)R}68w+~H}g_Hlcz<-0o!7^+`mlRl?=q1ZRgr3 zXX=@N8VYhIqEF8x!*^RyxYJV}HRO;03c}xzkCGQS-a&mH(6dUCG4LYpC7$luX z*EPHSzS5VB}o< zx8=lv;DKe1^PSj!-SQZ+tWmQEJVjd?wCAL>Os9^McDjFhKfxPUVT@)A;ul|T z2Kd^i3Y=a+O+{>Qvjaq!>V2A+x>iKTbB^M?lCP~7a_>8|qM)J+-70KOdc#)~DSDM+MXWA$atGk`AFakhmivXvf6 zPY^)iHPJlwL+9Jl<;$g3B(e0D8F(sE(MnP=2m$zoqzJh|q841!;l?4LWPAzs7oaV)Gea;#b z(HlE1-lB8M(`iHAvI`dln-95ee+2&!2*|(XgR&%NMua$=(>pOcjTJ17AWL`)FF8ko zjTTsg6gQ?iJ|@rT%de``fkE&kSbwhTK-OWV`CLSMDNG1_F(X6{gn||PuDO?`HsVz% zi2;`dneEVKWm~&$DT$t|-hWoeziXw5suDxdOJ*i!^b^(AZADq*e`e)06Inn zS*`e=f*>m`@cRiUxEJ1AcTWR?Rzam|=Y3#bwn(7hWHR+@QZXBtZb>wW$llW8x)OW7-J`W7tPu>XY1m7g= z2oC{V6L@Y{eW}*Evk~{n4^3T+@POaFLjV2HY6340I5E6GLRzXHUTt_|UUAJMAO9lH zLfrQ*Wq(1009@M9@3Rk()y)V2t1JB8#~=I1$_9jh$vkr6@;dRlZUMRG0e6T!3~8xB zG+W-_cRrFFhTH_)gX8y+cE8WWzV;&0+m9i=vsy^eVi;HNupU=YFXGO|PjTZ4KO}pP zY^GNRSrvj5Q$kk3)NO)9Ec^}%*F(IbCT7f#qwF_V$@YM}W^an?UI%1~-~ACFM>Y_- ze?#wa-CG?pTGoqTM6yGakn2|v)&G9rfQ3*NTNX0@ufhD+-4qC>oaGp10RlRQg7Sv! zKRTN`dn7^q7uo;U^P|p!*xHU+7H-m%*ooo>8B&#Aky1RK8B_IN5mCe?CL|;zvgd?o z!oHjq6dc^mA?IQZJq{#w0zl8|IU${#+JC@7f(0ncO{pA1AcYSxB|p(zO@2LbK-q{2 z{(1S4dNb@f0cy*0%IShv{XT2yOAV3z=aYdR59hKjD4BU{(roi?d@VhW>Lf2Veex9DEJdE>K)`6c*WgK}}A7lwHGiUMf+2$NpSWXrE z)EI=Xvn(}aC(J}hM`k6}pK>!fR`Itbzjb0moE|x+_?)gNk|n$Us=rOl*+doBtc-Ab zhClP-8CzX;W0X>Q5YBy3ZNF7fD|Lula(iuXaJUgGXNiDCM4TY|!hPGXzW#70yaH+r zFZHjtkO~o3OkHTSJoC1I+B~gFC0|!G`y~T%=j^0 z%5ERfdVWlrwQer|>7$+JYRiEMKJZhE2ctw`|DX{PdVfe6HoT>_HZP+I+FCfdJSwlq z@KW7`1|%oJ1V&zS%6wBB{e(^KAWHtsAy2KZ%PCA`5&r><_NLq`Oy^f1Z$C`t$Ytvza#iXvwiLstTfU z`SD*DJFFyGbK>~y2ZA>q{J*yPLKXz_{5LTXyl?w#=YSg-bk5dy{FG*G3xVGjP;cK{&ZSkwNdI_!e0ufS|&_#TF%0p@8gx zTTo~#tcF(box*vxqS0B@6CZEZT%ZtuooZLgC+T_OQ)ku9;csiiP7_bY93%nP`=ct$ z_7MCg5{b|?{N>j^5r(mL{tDW@Ps0eVB3}`P)j4R~2PKC_or&pDq1-LHpM z6;MeABhsSxRyP-;Q#+m>$cWrGZ$FF1UMNKq)~Tsdroxl`>HWk0;}O0J_WmANwhIjs z>R0!q2pde3C|2r3W{<7GIroGv`*sH+=WtFkaOi_5(m~1(421Gstyc7Bq-LfG`yT1^ zMZFt)X!jsWE+L95Fpg}(!rLD$Okxvz8ia}AQA4gkutTlMLZke)<`nu(e=RR^sN#7$ z5BB&yf=xO3zGB}}KY`Xn?A@cIIfw;TtnaJ*a=95$>pDI`K{2uZ2RjfA-Eqay41tv6 zL^90Xx!&njSjCVjNMtG!;xD5JEcmJ^K{DiQO|a__DR+2NZ6)?xyaIkpYX18{lD&Dm zxFFAd2;vaKEmLUZ%5uH^s+St2BWCz(>dMW8E1Vz4d7NV0?L&tCQ2O1odv9R#%|7`O zr|-3ra{?^U#l7%dPbg5J`n-P=skBMu^*!$V@F*rb8QXfZoD}B-1TsG+&y0>UG9;rA zl@uRVm3mhqa)|~yS#d{L10ZWqIvWek=HzzR31`~4iW{pe{%53LbLC})-@#NHt|+$zIDv9s5mbbR=Zc6vu{k&}{0 z;%Z#^$Li@3)-S0wy|v*6RU&j4_g-iU`VQ=5f47T!%J}K>g>Oj8Wvw^RZ9~nl7+aDN zV+c1QGGS9jKKoft8EasHuk!$s&hc3WUKZ#LUL zeAAe>^@i?boi)XARk(G*(~$9y z2M9;R)djN}u6eZOV6h@!`|HH$F2*WWzE#EmBgRKqe_j2sRO zZi*Tl(^fxJ(ez;r$up~LCji4oyBRgoNuFyJSOPwbS{`@3duoW+#F z`|pS3No9r_qNx`w9D9Rrr%oHdxa0Xo5lLJg=7lzGZ%N4Hv3U2`{n2N6mdQNBC`Hp8 zREBVT zz$d{0)ZJ5r&De(TpigG)mrArCKMc(sk^Vj@GaxeHrAko0vd*s|(QbzE+c7O=$VM-@ zb}?p6E%U`ZW0sk7PK+X?)D_(oo82&qh6t(Sl_xlo4*jY7E$?@I+a9;Pa;ngqz*ac9 zNnJqxgOGrN@xfe6=e@t?BFR^O`mOL`%x7LCN}-ac$jfhDuDOlNH`m%rC7mvO8mzIm zKa4g_=LL5bmM?cc&~fBiG7)XPk!X26*f(ZvkS5-1nijFx`oT;vzhYw~(3ZMw;^+zA zVv%HMBrhF>MhC&Y8xkahNdio2!iLY|J+P~J^w@VQ-07n@FR_ABx|UmgBh}A#g>IU?om;3rRfk>T zZc^j5x>L2HG<=Pq^=dXqwB^mqo^fI?oI&d+i=xz0V^vy8Ih^PhOOQ|Xf&=GW4L=2w z>{Iqo%PsyWs=KOl;1b-|2vRGN&BE_j$3m3zN8kNf(dnByCKc^?HyqKE{|P?oEpFqV zw3D!paZY!R#NttSvpe ziAc;y_^1}R#f&WaI;V-%sU&h(vQLhWk!GL-r^}2P7yK46Ks{RHg+CcD+dsykmFP@h zwNn?_)Cjz!_3+5-J5>Qrh>z585kD^Z*J2G+@igPKP&>V?v8 zLOeEz8Wyz~3GZ>Q2c`w;N*%|AyHcty=U0lRve>Ja$f>!7WaiLRNJ35&OAz*^%d^H4 zQIq}Z@)f~y1zSg-hUhM-gjxTg0KpCovm5{pY74IX5#{U}`Lu0Q@y$kiNyJa@;y=n& zI9xE90|wPuM5C=(AL#u2o(zmJ-B9Gxd&Fv^h2})}^HsG#FFRd^e1z`<3!qYzxW%SV z=cqY~OreXvAm^};?%Dn(Db{84M*B~B{)Din^jS@A00PI|&zLFK(zVxkv4x}tkBiVe zM4hx~Dp?dUk@bcfe#?q(k!(KPgsf`*up97}SFFJm$1kSL^5p$KhGGMPXA;bBqv2E3 z5yEG!`{V(gIZm;ZDqO*l?a34o1N4aGVHlEgM+Q>6xi~W+Em2W$3+`$#$Qj28^vAe5 z6Sa<`WE`jtaj|XZ)wd739qxJ?$g{9$$44y95_nhcO<>LQ3!S)Z0ar~qG&WbIZ?fv; zGH2n@?<2sh`;y5|H<|ZeO&MKCFA$uLp|3Ig(YCk4;&JN+p$4-%!FI8`84((_D6wt? zG)G=cLM)L_sP1&cWYCJz9O?WOj(kB$Pn*Ju<5lyZ;}_WMfg090y4MR|Zydr?ne)^- zu0Bp=a236hSIca#e6EBp4YFH@X<|!+dvVZmY5&obmJ>-YshG8yKh`@r+k9QdcoVVtj19SJAxpYhGewO;CO%7 zuaIQ5N5B&u9`$XO5F6wq9}(tX!1ho{4N;|R=!uuCQ0a9TmWX$E$Kg*zzdJrGe|W)V z1IN#m?{gQkXlVWXE6y-TQG54KrnQ%<}*Rt9mCM z$U16505;m1PY))#3UXd7g<7bB=~XHi;d^hfeEV~nyAV4psla*dChqctiST~e>z9;( zhwT0f+4%;iFXyzvO5_ncR@Uc`_90K4v?+0ocZSHTq0$SQK5x~P+sKVLbp zHkt7Q9$65Xd7%TLmfAM*D|2@6TOIlVhYLN_&@h#RJVVg6+-D3m<;?!FC(wx^ot>vR zC0~GpQ23hIk6fDxB8W<`Ig80&-8#LDz4t!LjP=FvHEl_6`;~F)rOe)wpfqVOC8$CUr!Q4$Pq8b+g<^2j<6A{XPR5L&PJ&)1-Zx2W!(x0%f0`vm9!`Cz z56XQKoN4x9b;#TM%OAcaQ_y1I!;8|E`bqYEyGPSRDKAG+Q{T|MZBkPYE zKYXI1AI%5`sDNSv-FMe7F%%E}Pv39fXaq$q5VRT!W0WjO`#)0>DOw>oP;tMB-o4_+)1 z3%vX75$O}YYKl`SR|vJOzzos^GEB1l^U2OGJ9t_seap6k z$xt4e-w88X^t=uO_7K;$S||iqUS?CSZJ<+kbh}VPW2Jn4amQ(TXw>br6XlwbOoUC* z0kHV|WOxTt0s?!GPXwCE+hT&oC4B?jSj>AHS7yS^ivUkTlco`x>8~%!Cmj2$Z}_jm zOM&6OPI_-a(V>bbb>C$7U(Q|~^AH^prD3fQIe;`5;0b(o?`$bo*@uy#_dEA-FO@rT zwPK;a2G5E~1_wrNM$}P1+>d~x#u_`Llf~&T6O9N8+SGiOu3F3oS8rR24MUUqeB+F@ zJiT*KXH5;?ovfJ~v!IUAj2Px<$Y&)VAy4UeKIN{LJSnnG+JxpG`#t4`zDG$>p&#+X zo768;;c7* z1@Mowz>xUyuHP@Y7~^n#>(^#h#fEsb9`USm*&8VwF2! zT;X=+mhF_Y?Dl+RFN-bYC69Rku>xf=p`t8HDPq}FntYPo2>vbB``58|a~}my$z+64 z;l^KI&^DpCHectC9#>h3A9kF)KWHaN312*3X8UdLaW?3h5ZQ*c@midT!ZUymkWhkE z9jNw{)m4b_W6m5}$mz}jV9vbMZdZ=DS_MV+2r$7FncV)xIdQq@a&q`BPVdog-)o;;@< zA_Qu^5$JpD(#DVNR+;P>F$`#UMLS*@VzHRlSpJdPkYx6MUhv{+BuIszx~{2u1&!<| zrsaFLpkc~PpK#y@$|1ou2DH5deN>(evrv5hC(H!6rwSb3p`A0yFhKpizA4%TwzMdK z2dfxUY;nStOPRbtSBCi-6X(HO-I<7%0*ImT{vy0<6zBTsQ0ZYkWMW-2K*GURD5sB1 zb+4|^M_=>K^}*O1GMPT5&V_8@{B^T@-v0b5QH`&4Qb}3sY}E0Sau!3L8#Vq#22Gr) z-YQ0uZCDqNkLMlD&R1+(DNMBT>KVQ>D!6!8Li(fZ?DfI5`W?Nye{ZCDajC%jhDqmz?2@KfLdJm?;&6UGzvNXxhDwsJ zvs&=OnX8Qm*|2a;jJ;ka$u^_pF2?6FC`yyV-5UYkMOK?nKo06ZLE58^ZY;?#rq$ml?MlF$W_Y#hTy-dGW8o>~jA$71l1XsQ5PhvDI z<@j)~8|G4;qdIO*C*n>{NcIYa_;kMG1-c~T7Yc&tJY^Q)2wsP!DMK! zh$Ty^Fsa5`l*w{SZVAZ8h^QFV$C3O1DAt@{nK|d24T`>UnNqIWPqe(lQF{4pJ(5N4 zzAmcnu}sbnZzt$fAv+IdEGTzjU3e5{FTbRbpPmV@3KA)C-CR!?O!CCE(KTpl{Yh}3 zWp^H5faxoB*E}7IJHtzj7#jz?kVKN_T3V-Lpn{nMn?fEQx=rOnNZw^R#S^`#Jn&o} z2`H1zZqDnTkgZ0u_|Sd2#61?}O(Q`4bHG=8H{#M*!~m`J(F@TQ3^ctP#IwvT$N>65 zzmR-ccqDRY=_tyag#+VJV(1rFQfonDGQl1c0Nx}EwulVVlfFIS5o1UhrMW#d@RbIF zlsU5fu0xyxZ9`~taV)8Diy2JLfFR_`Q9G7SJEyrrmCeVGKD_+ZiQnL#Bl_$)+UYd$ zDkla|)Gf0(7BCk2Mb$pNcxI_so;_Zsx`Ze@-@Anty?v&8t0>W=cN;>F>MnSY=QE?k zciBMRNeY{FWjLn>t;Cbzptcus<^&zi?=ph!c-hO)k@K z(eD+s!_E|dG;UG^L44LlTDPyMJ3lA7kPJQwODdUu>Ru;zeQ}P!XB$@wJT{m#c*sc- zgxgbQyQA~W@Q^t0-`?9X>yJ`ASVtI(u3FWucR}e^gWEMka`$F=PBs#go1Wj$Ml%T| z32PRayINfjpF^VeZ(;@LL|i<+sV@6vKf6}O;FwwQ`c&#gD)MI)Q^wL)NGV1)r)Oc2 z>6;mTMO{9<>_v$qD!Gjc9vzaKKdvF9)$ctNtt==I;kMMY?l66JjJk9`@v+uJ6xF(e znQQtXybq6hr>jYd9%1sjJz~|L5hOAAuGC}r17CKC9-WoHc%sHz#S47d^zd33cZJkG z|H&|{7aM(kodzb*h9+Rsoau|SNIKE(RlHh-=}=rT)@jXA%E}G_JS}~Psji}LRX!vP zg$b8mA01fQcxZ0}@Kpta*m2Oz@^jPaXtRvN9hRyw)^7_OJ*Ofa>pZ^3i#jpzf_4O2 zKcZS0n_wAV;Ed<3?gsdpZ>YGm$7}u$an$fp7D_xmcocM67KdVL&OT3ThH(7IGS|lw z132$JigFTUeNhUGTbthO-xmm1NsU8_^N&VAE{s1u`38GLDw;4`4q#%f8lWrq zCj9-bcud~Xid9Y`H~UxmszqGsALENXUErIj-J+WW8&c;lX9(LzHOwiqLRx-!4|p^!4(D@8vWz+FJ58%g-hK=1qFfQwZP`}a@G zmGMf<9lg*GV0Spr)b{c|Nd#l=mvlu4k z=kFZ2oy+2i>*U&e_mg2E*crxLO6jW;qjES~Ug%S9_=Z`=%L$5XdzsDp*dfP;W!jSd z%!ERBnlWK+gn5zeNj>eO2`6Zb%G+9;7hJOGotU}{t2V=$ppoi|y@Q=gT4U^Og5wWu ztpLl_6*3;bri?u=)fK^^W?@5p6XBn?rmj(yKAK0Q@;zW&CM-xoObrjIwL7s^E_%PR z9qb%D{fa=blyr*t_u1Uqm;B_FVbtkNa+-v?Gh069u)f-X+l2>k7MC_oO2{=9Otw7R zhbw&Bbfet_7L7(}#u;rl^N2fCoUW<;lw3zc39=m@6G5 z-FEcngtTDt2ZCn@PRZRT9Y8y(e3w4FXDas^Sy|{$RN*fU$k-n9v+dGh}sHJf&P8 z^muI1;YJRzuVyNNA*m!* zS+L?)X)78vj_aK}q`kq_s!;Z9kF(glGvIeSgGOte?`#lhOl#&#QUYqOO|{({a+GyF z(X~%ZKe9nR(MzJf3^<21Wit^3V$p+I;1?%J8SP{^VYL>!c~LVt*A3^ZB=83~nY^Qu z;y}5%L^3v+E!G9;K!uE=*&nZ{CXj)%;c-=sf`JF!mCivk1Bt&XCDXX*_?n_~8!FK2 zg!5WXKkjA3sDQrn3##1yq8qe4vGqr%A62jQ)dAhXyi9j%i&Up=m!exD_Hn=(uI8H$lE!qr~x75!ido;o9+iK~47%{MmBbzd5BD?DV78HI$9@t0x4$mOjGtL3bCEq8FE>z}>s(GjL?;r> z_%m5B;Jg`TVc(buSw*(`oyZruvE=$;em1)9YNT@euxI{NNPnA}!2Rz7DK75k${ z;pbq_QA-b@j#W)~73OPrz9n$n5sk9R?lvrb8R3S=R`p;43+CwO`H*rjP0^4Vob*KT zv6R*1D2k+32Uvi@CKjrPANzwpYhoqEH3wAQ>u2|&&S4DMQ&^}cADgM$SuwiBBS1Zq ztLHIRW@kJtB-9UIT=(~(;2>xf56{(_0%Piifqq1oD@m!_i0SA~L-KPhXR=njs|W77;9r|uRnmBC7h%t{l=qyV z;iwG+lBUQtJ%eJmXohA~BI2@badNDgXoXLWQ%7$sFx$IDU;3{2LP3+{Y#4)$D%|;s4HZ-VIP!e37Zi#~+1jePm(L)S}_y zimn}MU>=dB$5J9mJB*a7@!ZkpkNt3_qWEp8z%>&qel&8&9I})9tKN~uxYS4_+ycfc zc)6{E7lNZIXwBa7>7r{Kg*lI`lrZXPf$a3cIsdJlxE$0OqY+ZXc7(>`=Azj{bUJmoQ=^wF933o$)H~E2vK#c>jpk4>mJ&Ofmtme(~#B5#q}jM31rym zNtTh*(id6G$e2R`YciGx9My&0g(WpR^xh-`{b}Fn3gWUq^AhF!&;16K$kkKDcMG@! zbCba#RK$E&WfKHg6Gq4znP;LQmOQBphD++N*pz*tb`xn55RcD$@7fTdb2i^%M{u45 zZ`c`W`7=k8cjaOZDUuX0)_JF92Q5pM0rY}hY3n?IUjYS3ho*IDC`kFI`>*D~UsDcJ zS#Qq*B~5+LJlX(o>~fU*yVnzGsNWOnALs4sFc0$e(8-cl9!5<|i1%;7KG>mh zzbTqkF=Mw#Z}qLsgvDP6(x4Cvn;qxGxe{qy@SDTKtFOZ&~j)f_kb^XrOXWJl+AaMqA&JWa$P?72av){nR{ z{%t`v`s9otsbH@d`+5t{eA&7C&1((LUj{62UnD3g`D-`GzZoDz#66^^udrIu<3fp^ zK-t||7tiO97a#U1lp8Cgp0t*r-$J-TtK?9zq1c8tk9+fm7zgc}cDByZ%iD{{?oN#O ze4iQyF8-$Vh2%$5wdYi}NArWxlK}Ombc_y*5$8ISO!OAE%z%}E8gSS8{1mntA$=HM zW|(;G`mpXv__3ew0Xx0y^FKKs8#%uoVmVqbfcE-tneifL`;F;9g;T(jog*7Bc7my{ z*0x+94ldHG4ZfAKyN>e{wfd87eU>~6+=!&#+b-9tgmP!89%B^6=BIV7L!}QU4Fx;d7n8v-UpO|4;p>=&=0&hi=uF?%C#8>1ZM8r0-XX+a zL5JR0^mYBga&~|=Wtc%hDVb+g)6ibV068`p0`VOB?cs;_TwOLu^qdU*fO8M1%{4HN}syr$3zagezRwO?p`O-+@&BlQq3AHinFs% z+)wsOL~Y-N?${UhBn*d@(vucfAr9)*6mQNvV;RkFvW`Di4Svv#lx zD|N0#Ldma_Lg>f)9~`P^-OslkyUZ(LzY>d_$uJf3B@%s=iMw>__8lJ-!6Ng1>j@%kt&)+8fKrOc_S{ zpmn5`kHpL+6%sVFIJ9TeCj3s0Zr>l}pU+L$Z`KOpk-Z0w)fzJIH)gO{Glz#}c7 zKojE5{}eyARdRiwpa+|CvTHTcN(pkzOb%TIb6`pse#2sWqf2N|aN|$?bJ*|9(tH!{g}Y zx7JfKF90TIR^=Dl9WZqD#0Io5>FygZ