aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Program.cs
diff options
context:
space:
mode:
authorMichael VanOverbeek <[email protected]>2017-05-21 12:29:53 +0000
committerMichael VanOverbeek <[email protected]>2017-05-21 12:29:53 +0000
commit76b54853ba726179f9fddb30c6f838991b7aa71a (patch)
tree8713f45ce26958659e3f4e507d73ecabebabfe49 /ShiftOS.WinForms/Program.cs
parent31cc9148dd23737df16d8456a42d003cd31dd488 (diff)
downloadshiftos_thereturn-76b54853ba726179f9fddb30c6f838991b7aa71a.tar.gz
shiftos_thereturn-76b54853ba726179f9fddb30c6f838991b7aa71a.tar.bz2
shiftos_thereturn-76b54853ba726179f9fddb30c6f838991b7aa71a.zip
Merge a fuckton of shit.
Diffstat (limited to 'ShiftOS.WinForms/Program.cs')
-rw-r--r--ShiftOS.WinForms/Program.cs269
1 files changed, 0 insertions, 269 deletions
diff --git a/ShiftOS.WinForms/Program.cs b/ShiftOS.WinForms/Program.cs
deleted file mode 100644
index ad8fc83..0000000
--- a/ShiftOS.WinForms/Program.cs
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * MIT License
- *
- * 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
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-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;
-using System.Reflection;
-using System.IO;
-
-namespace ShiftOS.WinForms
-{
- public static class Program
- {
- /// <summary>
- /// The main entry point for the application.
- /// </summary>
- [STAThread]
- public static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- //if ANYONE puts code before those two winforms config lines they will be declared a drunky. - Michael
- LoginManager.Init(new GUILoginFrontend());
- CrashHandler.SetGameMetadata(Assembly.GetExecutingAssembly());
- SkinEngine.SetIconProber(new ShiftOSIconProvider());
- ShiftOS.Engine.AudioManager.Init(new ShiftOSAudioProvider());
- Localization.RegisterProvider(new WFLanguageProvider());
- AppearanceManager.OnExit += () =>
- {
- Environment.Exit(0);
- };
-
- TutorialManager.RegisterTutorial(new Oobe());
-
- TerminalBackend.TerminalRequested += () =>
- {
- AppearanceManager.SetupWindow(new Applications.Terminal());
- };
- Infobox.Init(new Dialog());
- FileSkimmerBackend.Init(new WinformsFSFrontend());
- var desk = new WinformsDesktop();
- Desktop.Init(desk);
- OutOfBoxExperience.Init(new Oobe());
- AppearanceManager.Initiate(new WinformsWindowManager());
- Application.Run(desk);
- }
- }
-
- internal class ShiftOSIconProvider : IIconProber
- {
- public Image GetIcon(DefaultIconAttribute attr)
- {
-
- var res = typeof(Properties.Resources);
- foreach(var prop in res.GetProperties(BindingFlags.NonPublic | BindingFlags.Static))
- {
- if(prop.PropertyType.BaseType == typeof(Image))
- {
- if(prop.Name == attr.ID)
- {
- return prop.GetValue(null) as Image;
- }
- }
- }
- return new Bitmap(16, 16);
- }
- }
-
- [ShiftoriumProvider]
- internal class WinformsShiftoriumProvider : IShiftoriumProvider
- {
- public List<ShiftoriumUpgrade> GetDefaults()
- {
- var defaultList = JsonConvert.DeserializeObject<List<ShiftoriumUpgrade>>(Properties.Resources.Shiftorium);
-
- foreach(var exe in Directory.GetFiles(Environment.CurrentDirectory))
- {
- if (exe.EndsWith(".exe") || exe.EndsWith(".dll"))
- {
- try
- {
- var asm = Assembly.LoadFile(exe);
- foreach (var type in asm.GetTypes())
- {
- var attrib = type.GetCustomAttributes(false).FirstOrDefault(x => x is AppscapeEntryAttribute) as AppscapeEntryAttribute;
- if (attrib != null)
- {
- var upgrade = new ShiftoriumUpgrade
- {
- Id = attrib.Name.ToLower().Replace(" ", "_"),
- Name = attrib.Name,
- Description = attrib.Description,
- Cost = attrib.Cost,
- Category = attrib.Category,
- Dependencies = (string.IsNullOrWhiteSpace(attrib.DependencyString)) ? "appscape_handled_nodisplay" : "appscape_handled_nodisplay;" + attrib.DependencyString
- };
- defaultList.Add(upgrade);
- }
-
- var sattrib = type.GetCustomAttributes(false).FirstOrDefault(x => x is StpContents) as StpContents;
- if (sattrib != null)
- {
- var upgrade = new ShiftoriumUpgrade
- {
- Id = sattrib.Upgrade,
- Name = sattrib.Name,
- Description = "This is a hidden dummy upgrade for the .stp file installation attribute \"" + sattrib.Name + "\".",
- Cost = 0,
- Category = "If this is shown, there's a bug in the Shiftorium Provider or the user is a supreme Shifter.",
- Dependencies = "dummy_nodisplay"
- };
- defaultList.Add(upgrade);
- }
-
- }
-
-
-
-
- }
- catch { }
- }
- }
- return defaultList;
- }
- }
-
- 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<string> 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.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<Skin>(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}");
- }
-
- }
-
- public Image GetImage(string path)
- {
- return Applications.FileSkimmer.GetImage(FileSkimmerBackend.GetFileType(path));
- }
-
- public string GetFileExtension(FileType fileType)
- {
- switch (fileType)
- {
- case FileType.Executable:
- return ".saa";
- case FileType.Filesystem:
- return ".mfs";
- case FileType.Image:
- return ".pic";
- case FileType.JSON:
- return ".json";
- case FileType.Lua:
- return ".lua";
- case FileType.Python:
- return ".py";
- case FileType.Skin:
- return ".skn";
- case FileType.TextFile:
- return ".txt";
- default:
- return ".bin";
-
- }
- }
- }
-}