aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/WinformsDesktop.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS.WinForms/WinformsDesktop.cs')
-rw-r--r--ShiftOS.WinForms/WinformsDesktop.cs1066
1 files changed, 0 insertions, 1066 deletions
diff --git a/ShiftOS.WinForms/WinformsDesktop.cs b/ShiftOS.WinForms/WinformsDesktop.cs
deleted file mode 100644
index 6825f34..0000000
--- a/ShiftOS.WinForms/WinformsDesktop.cs
+++ /dev/null
@@ -1,1066 +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.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;
-using ShiftOS.WinForms.Applications;
-using Newtonsoft.Json;
-using ShiftOS.Engine.Scripting;
-using System.Threading;
-
-/// <summary>
-/// Winforms desktop.
-/// </summary>
-namespace ShiftOS.WinForms
-{
- /// <summary>
- /// Winforms desktop.
- /// </summary>
- public partial class WinformsDesktop : Form, IDesktop
- {
- public List<IDesktopWidget> Widgets = new List<IDesktopWidget>();
-
-
- private int millisecondsUntilScreensaver = 300000;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ShiftOS.WinForms.WinformsDesktop"/> class.
- /// </summary>
- public WinformsDesktop()
- {
- InitializeComponent();
- pnlwidgetlayer.Click += (o, a) =>
- {
- HideAppLauncher();
- };
- ControlManager.MakeDoubleBuffered(pnlwidgetlayer);
- this.Click += (o, a) =>
- {
- HideAppLauncher();
- };
- SetupControl(desktoppanel);
- Shiftorium.Installed += () =>
- {
- foreach(var widget in Widgets)
- {
- widget.OnUpgrade();
- }
-
- //Only if the DevX Legions story hasn't been experienced yet.
- if (!Shiftorium.UpgradeInstalled("devx_legions"))
- {
- //Check for shiftnet story experience
- if (Shiftorium.UpgradeInstalled("shiftnet"))
- {
- //Check for saturation of the "GUI" upgrade set
- if (Shiftorium.IsCategoryEmptied("GUI"))
- {
- //Start the MUD Control Centre story.
- Story.Start("devx_legions");
- }
- }
- }
-
- if (!Shiftorium.UpgradeInstalled("victortran_shiftnet"))
- {
- if (SaveSystem.CurrentSave.Codepoints >= 50000)
- {
- if (Shiftorium.IsCategoryEmptied("Applications"))
- {
- Story.Start("victortran_shiftnet");
- }
- }
- }
- };
- this.TopMost = false;
-
- NotificationDaemon.NotificationMade += (note) =>
- {
- //Soon this will pop a balloon note.
- this.Invoke(new Action(() =>
- {
- btnnotifications.Text = Localization.Parse("{NOTIFICATIONS} (" + NotificationDaemon.GetUnreadCount().ToString() + ")");
- }));
- };
-
- NotificationDaemon.NotificationRead += () =>
- {
- //Soon this will pop a balloon note.
- this.Invoke(new Action(() =>
- {
- btnnotifications.Text = Localization.Parse("{NOTIFICATIONS} (" + NotificationDaemon.GetUnreadCount().ToString() + ")");
- }));
- };
-
- 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 += () =>
- {
- if (this.Visible == true)
- this.Invoke(new Action(() => SetupDesktop()));
- this.Invoke(new Action(() =>
- {
- btnnotifications.Text = Localization.Parse("{NOTIFICATIONS} (" + NotificationDaemon.GetUnreadCount().ToString() + ")");
- }));
- };
- Shiftorium.Installed += () =>
- {
- if (this.Visible == true)
- this.Invoke(new Action(() => SetupDesktop()));
- };
- var time = new System.Windows.Forms.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
-
- ShiftOS.Engine.Scripting.LuaInterpreter.RaiseEvent("on_key_down", a);
- };
- SkinEngine.SkinLoaded += () =>
- {
- foreach (var widget in Widgets)
- {
- widget.OnSkinLoad();
- }
-
- SetupDesktop();
- };
- time.Tick += (o, a) =>
- {
- if (Shiftorium.IsInitiated == true)
- {
- if (SaveSystem.CurrentSave != null && TutorialManager.IsInTutorial == false)
- {
- lbtime.Text = Applications.Terminal.GetTime();
- lbtime.Left = desktoppanel.Width - lbtime.Width - LoadedSkin.DesktopPanelClockFromRight.X;
- lbtime.Top = LoadedSkin.DesktopPanelClockFromRight.Y;
- }
- }
-
- try
- {
- if (SaveSystem.CurrentSave != null)
- {
- if (SaveSystem.CurrentSave.LastMonthPaid != DateTime.Now.Month)
- {
- if (SaveSystem.CurrentSave.Codepoints >= DownloadManager.GetAllSubscriptions()[SaveSystem.CurrentSave.ShiftnetSubscription].CostPerMonth)
- {
- SaveSystem.CurrentSave.Codepoints -= DownloadManager.GetAllSubscriptions()[SaveSystem.CurrentSave.ShiftnetSubscription].CostPerMonth;
- SaveSystem.CurrentSave.LastMonthPaid = DateTime.Now.Month;
- }
- else
- {
- SaveSystem.CurrentSave.ShiftnetSubscription = 0;
- SaveSystem.CurrentSave.LastMonthPaid = DateTime.Now.Month;
- Infobox.Show("Shiftnet", "You do not have enough Codepoints to pay for your Shiftnet subscription this month. You have been downgraded to the free plan.");
- }
- }
- }
- }
- catch { }
-
-
- btnnotifications.Left = lbtime.Left - btnnotifications.Width - 2;
- btnnotifications.Top = (desktoppanel.Height - btnnotifications.Height) / 2;
- };
- time.Start();
-
- var ssThread = new Thread(() =>
- {
- while(this.Visible == true)
- {
- var mousePos = Cursor.Position;
- while(Cursor.Position == mousePos)
- {
- if(millisecondsUntilScreensaver <= 0)
- {
- ShowScreensaver();
- }
- millisecondsUntilScreensaver--;
- Thread.Sleep(1);
- }
- millisecondsUntilScreensaver = 300000;
- HideScreensaver();
- }
- });
- ssThread.IsBackground = true;
- ssThread.Start();
-
- this.DoubleBuffered = true;
- }
-
- public void HideScreensaver()
- {
- if (ResetDesktop == true)
- {
- this.Invoke(new Action(() =>
- {
- this.TopMost = false;
- pnlscreensaver.Hide();
- Cursor.Show();
- SetupDesktop();
- ResetDesktop = false;
-
- }));
- }
- }
-
- private bool ResetDesktop = false;
-
- private void ShowScreensaver()
- {
- }
-
-
- /// <summary>
- /// Populates the panel buttons.
- /// </summary>
- /// <returns>The panel buttons.</returns>
- public void PopulatePanelButtons()
- {
- if (DesktopFunctions.ShowDefaultElements == true)
- {
- panelbuttonholder.Controls.Clear();
- if (Shiftorium.IsInitiated == true)
- {
- if (Shiftorium.UpgradeInstalled("wm_panel_buttons"))
- {
- foreach (WindowBorder form in Engine.AppearanceManager.OpenForms)
- {
- if (form != null)
- {
- if (form.Visible == true)
- {
- EventHandler onClick = (o, a) =>
- {
- if (form == focused)
- {
- if (form.IsMinimized)
- {
- RestoreWindow(form);
- }
- else
- {
- MinimizeWindow(form);
- }
- }
- else
- {
- form.BringToFront();
- focused = form;
- }
- HideAppLauncher();
- };
-
- var pnlbtn = new Panel();
- pnlbtn.Margin = new Padding(2, LoadedSkin.PanelButtonFromTop, 0, 0);
- pnlbtn.BackColor = LoadedSkin.PanelButtonColor;
- pnlbtn.BackgroundImage = GetImage("panelbutton");
- pnlbtn.BackgroundImageLayout = GetImageLayout("panelbutton");
-
- var pnlbtntext = new Label();
- pnlbtntext.Text = NameChangerBackend.GetName(form.ParentWindow);
- pnlbtntext.AutoSize = true;
- pnlbtntext.Location = LoadedSkin.PanelButtonFromLeft;
- pnlbtntext.ForeColor = LoadedSkin.PanelButtonTextColor;
- pnlbtntext.BackColor = Color.Transparent;
-
- pnlbtn.BackColor = LoadedSkin.PanelButtonColor;
- if (pnlbtn.BackgroundImage != null)
- {
- pnlbtntext.BackColor = Color.Transparent;
- }
- pnlbtn.Size = LoadedSkin.PanelButtonSize;
- pnlbtn.Tag = "keepbg";
- pnlbtntext.Tag = "keepbg";
- pnlbtn.Controls.Add(pnlbtntext);
- this.panelbuttonholder.Controls.Add(pnlbtn);
- pnlbtn.Show();
- pnlbtntext.Show();
-
- if (Shiftorium.UpgradeInstalled("useful_panel_buttons"))
- {
- pnlbtn.Click += onClick;
- pnlbtntext.Click += onClick;
- }
- pnlbtntext.Font = LoadedSkin.PanelButtonFont;
-
- }
- }
- }
- }
- }
- }
-
- LuaInterpreter.RaiseEvent("on_panelbutton_populate", this);
- }
-
- /// <summary>
- /// Setups the desktop.
- /// </summary>
- /// <returns>The desktop.</returns>
- public void SetupDesktop()
- {
- if (DesktopFunctions.ShowDefaultElements == true)
- {
- ToolStripManager.Renderer = new ShiftOSMenuRenderer();
-
- this.DoubleBuffered = true;
- this.FormBorderStyle = FormBorderStyle.None;
- this.WindowState = FormWindowState.Maximized;
- desktoppanel.BackColor = Color.Green;
-
- //upgrades
-
- if (Shiftorium.IsInitiated == true)
- {
- desktoppanel.Visible = Shiftorium.UpgradeInstalled("desktop");
- lbtime.Visible = Shiftorium.UpgradeInstalled("desktop_clock_widget");
-
- btnnotifications.Visible = Shiftorium.UpgradeInstalled("panel_notifications");
-
- //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<Image>((img) =>
- {
- this.BackgroundImage = img;
- }));
- this.BackgroundImageLayout = GetImageLayout("desktopbackground");
- desktoppanel.BackColor = LoadedSkin.DesktopPanelColor;
-
- var pnlimg = GetImage("desktoppanel");
- if (pnlimg != null)
- {
- var bmp = new Bitmap(pnlimg);
- bmp.MakeTransparent(Color.FromArgb(1, 0, 1));
- pnlimg = bmp;
- }
-
- desktoppanel.BackgroundImage = pnlimg;
- if (desktoppanel.BackgroundImage != null)
- {
- desktoppanel.BackColor = Color.Transparent;
- }
- var appimg = GetImage("applauncher");
- if (appimg != null)
- {
- var bmp = new Bitmap(appimg);
- bmp.MakeTransparent(Color.FromArgb(1, 0, 1));
- appimg = bmp;
- }
- menuStrip1.BackgroundImage = appimg;
- 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.BackgroundImageLayout = GetImageLayout("desktoppanel");
- desktoppanel.Height = LoadedSkin.DesktopPanelHeight;
- if (LoadedSkin.DesktopPanelPosition == 1)
- {
- desktoppanel.Dock = DockStyle.Bottom;
- }
- else
- {
- desktoppanel.Dock = DockStyle.Top;
- }
- }
-
- pnlwidgetlayer.Show();
- pnlwidgetlayer.BringToFront();
-
- if (Shiftorium.UpgradeInstalled("desktop_widgets"))
- {
- Widgets.Clear();
- pnlwidgetlayer.Controls.Clear();
- foreach(var widget in WidgetManager.GetAllWidgetTypes())
- {
- UserControl w = (UserControl)Activator.CreateInstance(widget.Value, null);
-
- w.Location = WidgetManager.LoadDetails(w.GetType()).Location;
- pnlwidgetlayer.Controls.Add(w);
- MakeWidgetMovable(w);
- Widgets.Add(w as IDesktopWidget);
- }
- }
-
- int lastHeight = 5;
- foreach (var widget in Widgets)
- {
- if (WidgetManager.LoadDetails(widget.GetType()).IsVisible && Shiftorium.UpgradeInstalled("desktop_widgets"))
- {
- widget.OnSkinLoad();
-
- widget.OnUpgrade();
- widget.Setup();
- widget.Show();
- if (widget.Location.X == -1 && widget.Location.Y == -1)
- {
- widget.Location = new Point(5, lastHeight);
- lastHeight += widget.Size.Height + 5;
- }
- }
- else
- {
- widget.Hide();
- }
- }
- pnlwidgetlayer.Show();
- pnlwidgetlayer.BringToFront();
-
-
- }
- else
- {
- desktoppanel.Hide();
- }
-
- LuaInterpreter.RaiseEvent("on_desktop_skin", this);
-
- PopulatePanelButtons();
- }
-
- public void MakeWidgetMovable(Control w, Control startCtrl = null)
- {
- if (startCtrl == null)
- startCtrl = w;
-
- bool moving = false;
-
- w.MouseDown += (o, a) =>
- {
- HideAppLauncher();
- moving = true;
- };
-
- w.MouseMove += (o, a) =>
- {
- if (moving == true)
- {
- var mPos = Cursor.Position;
- int mY = mPos.Y - desktoppanel.Height;
- int mX = mPos.X;
-
- int ctrlHeight = startCtrl.Height / 2;
- int ctrlWidth = startCtrl.Width / 2;
-
- startCtrl.Location = new Point(
- mX - ctrlWidth,
- mY - ctrlHeight
- );
-
- }
- };
-
- w.MouseUp += (o, a) =>
- {
- moving = false;
- var details = WidgetManager.LoadDetails(startCtrl.GetType());
- details.Location = startCtrl.Location;
- WidgetManager.SaveDetails(startCtrl.GetType(), details);
- };
-
- foreach (Control c in w.Controls)
- MakeWidgetMovable(c, startCtrl);
-
- }
-
- public ToolStripMenuItem GetALCategoryWithName(string text)
- {
- foreach (ToolStripMenuItem menuitem in apps.DropDownItems)
- {
- if (menuitem.Text == text)
- return menuitem;
- }
-
- var itm = new ToolStripMenuItem();
- itm.Text = text;
- apps.DropDownItems.Add(itm);
- return itm;
- }
-
- public Dictionary<string, List<LauncherItem>> LauncherItemList = new Dictionary<string, List<LauncherItem>>();
-
- /// <summary>
- /// Populates the app launcher.
- /// </summary>
- /// <returns>The app launcher.</returns>
- /// <param name="items">Items.</param>
- public void PopulateAppLauncher(LauncherItem[] items)
- {
- if (Shiftorium.UpgradeInstalled("advanced_app_launcher"))
- {
- pnladvancedal.Visible = false;
- flapps.BackColor = LoadedSkin.Menu_ToolStripDropDownBackground;
- flcategories.BackColor = LoadedSkin.Menu_ToolStripDropDownBackground;
- pnlalsystemactions.BackColor = LoadedSkin.SystemPanelBackground;
- lbalstatus.BackColor = LoadedSkin.ALStatusPanelBackColor;
- //Fonts
- lbalstatus.Font = LoadedSkin.ALStatusPanelFont;
- lbalstatus.ForeColor = LoadedSkin.ALStatusPanelTextColor;
- btnshutdown.Font = LoadedSkin.ShutdownFont;
-
- //Upgrades
- btnshutdown.Visible = Shiftorium.UpgradeInstalled("al_shutdown");
-
- //Alignments and positions.
- lbalstatus.TextAlign = LoadedSkin.ALStatusPanelAlignment;
- if (LoadedSkin.ShutdownButtonStyle == 2)
- btnshutdown.Hide();
- else if (LoadedSkin.ShutdownButtonStyle == 1)
- {
- btnshutdown.Parent = pnlstatus;
- btnshutdown.BringToFront();
- }
- else
- btnshutdown.Parent = pnlalsystemactions;
- if (LoadedSkin.ShutdownOnLeft)
- {
- btnshutdown.Location = LoadedSkin.ShutdownButtonFromSide;
- }
- else
- {
- btnshutdown.Left = (btnshutdown.Parent.Width - btnshutdown.Width) - LoadedSkin.ShutdownButtonFromSide.X;
- btnshutdown.Top = LoadedSkin.ShutdownButtonFromSide.Y;
- }
-
- //Images
- lbalstatus.BackgroundImage = GetImage("al_bg_status");
- lbalstatus.BackgroundImageLayout = GetImageLayout("al_bg_status");
-
- pnlalsystemactions.BackgroundImage = GetImage("al_bg_system");
- pnlalsystemactions.BackgroundImageLayout = GetImageLayout("al_bg_system");
- if (pnlalsystemactions.BackgroundImage != null)
- btnshutdown.BackColor = Color.Transparent;
-
- btnshutdown.Font = LoadedSkin.ShutdownFont;
- btnshutdown.ForeColor = LoadedSkin.ShutdownForeColor;
-
- pnladvancedal.Size = LoadedSkin.AALSize;
-
- pnlalsystemactions.Height = LoadedSkin.ALSystemActionHeight;
- pnlstatus.Height = LoadedSkin.ALSystemStatusHeight;
-
- flcategories.Width = LoadedSkin.AALCategoryViewWidth;
- this.flapps.Width = LoadedSkin.AALItemViewWidth;
- }
-
-
- if (DesktopFunctions.ShowDefaultElements == true)
- {
- apps.DropDownItems.Clear();
-
- Dictionary<string, List<ToolStripMenuItem>> sortedItems = new Dictionary<string, List<ToolStripMenuItem>>();
-
- flcategories.Controls.Clear();
-
- LauncherItemList.Clear();
-
-
- foreach (var kv in items)
- {
- var item = new ToolStripMenuItem();
- item.Text = (kv.LaunchType == null) ? kv.DisplayData.Name : Applications.NameChangerBackend.GetNameRaw(kv.LaunchType);
- item.Image = (kv.LaunchType == null) ? null : SkinEngine.GetIcon(kv.LaunchType.Name);
- item.Click += (o, a) =>
- {
- if (kv is LuaLauncherItem)
- {
- var interpreter = new Engine.Scripting.LuaInterpreter();
- interpreter.ExecuteFile((kv as LuaLauncherItem).LaunchPath);
- }
- else
- {
- Engine.AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow);
- }
-
- };
- if (sortedItems.ContainsKey(kv.DisplayData.Category))
- {
- sortedItems[kv.DisplayData.Category].Add(item);
- LauncherItemList[kv.DisplayData.Category].Add(kv);
- }
- else
- {
- sortedItems.Add(kv.DisplayData.Category, new List<ToolStripMenuItem>());
- sortedItems[kv.DisplayData.Category].Add(item);
- LauncherItemList.Add(kv.DisplayData.Category, new List<LauncherItem> { kv });
- }
- }
-
- foreach (var kv in sortedItems)
- {
- if (Shiftorium.IsInitiated == true)
- {
- if (Shiftorium.UpgradeInstalled("app_launcher_categories"))
- {
- var cat = GetALCategoryWithName(kv.Key);
- foreach (var subItem in kv.Value)
- {
- cat.DropDownItems.Add(subItem);
- }
- if (Shiftorium.UpgradeInstalled("advanced_app_launcher"))
- {
- var catbtn = new Button();
- catbtn.Font = LoadedSkin.AdvALItemFont;
- catbtn.FlatStyle = FlatStyle.Flat;
- catbtn.FlatAppearance.BorderSize = 0;
- catbtn.FlatAppearance.MouseOverBackColor = LoadedSkin.Menu_MenuItemSelected;
- catbtn.FlatAppearance.MouseDownBackColor = LoadedSkin.Menu_MenuItemPressedGradientBegin;
- catbtn.BackColor = LoadedSkin.Menu_ToolStripDropDownBackground;
- catbtn.TextAlign = ContentAlignment.MiddleLeft;
- catbtn.ForeColor = LoadedSkin.Menu_TextColor;
- catbtn.MouseEnter += (o, a) =>
- {
- catbtn.ForeColor = LoadedSkin.Menu_SelectedTextColor;
- };
- catbtn.MouseLeave += (o, a) =>
- {
- catbtn.ForeColor = LoadedSkin.Menu_TextColor;
- };
- catbtn.Text = kv.Key;
- catbtn.Width = flcategories.Width;
- catbtn.Height = 24;
- flcategories.Controls.Add(catbtn);
- catbtn.Show();
- catbtn.Click += (o, a) => SetupAdvancedCategory(catbtn.Text);
- }
- }
-
- else
- {
- foreach (var subItem in kv.Value)
- {
- apps.DropDownItems.Add(subItem);
- }
- }
- }
- }
-
- if (Shiftorium.IsInitiated == true)
- {
- 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);
- if (Shiftorium.UpgradeInstalled("advanced_app_launcher"))
- {
- if (LoadedSkin.ShutdownButtonStyle == 2) {
- var catbtn = new Button();
- catbtn.Font = LoadedSkin.AdvALItemFont;
- catbtn.FlatStyle = FlatStyle.Flat;
- catbtn.FlatAppearance.BorderSize = 0;
- catbtn.FlatAppearance.MouseOverBackColor = LoadedSkin.Menu_MenuItemSelected;
- catbtn.FlatAppearance.MouseDownBackColor = LoadedSkin.Menu_MenuItemPressedGradientBegin;
- catbtn.BackColor = LoadedSkin.Menu_ToolStripDropDownBackground;
- catbtn.ForeColor = LoadedSkin.Menu_TextColor;
- catbtn.MouseEnter += (o, a) =>
- {
- catbtn.ForeColor = LoadedSkin.Menu_SelectedTextColor;
- };
- catbtn.MouseLeave += (o, a) =>
- {
- catbtn.ForeColor = LoadedSkin.Menu_TextColor;
- };
-
- catbtn.TextAlign = ContentAlignment.MiddleLeft;
- catbtn.Text = "Shutdown";
- catbtn.Width = flcategories.Width;
- catbtn.Height = 24;
- flcategories.Controls.Add(catbtn);
- catbtn.Show();
- catbtn.Click += (o, a) => TerminalBackend.InvokeCommand("sos.shutdown");
- }
- }
- }
- }
- }
- LuaInterpreter.RaiseEvent("on_al_populate", items);
- }
-
- public void SetupAdvancedCategory(string cat)
- {
- flapps.Controls.Clear();
-
- foreach(var app in LauncherItemList[cat])
- {
- var catbtn = new Button();
- catbtn.Font = LoadedSkin.AdvALItemFont;
- catbtn.FlatStyle = FlatStyle.Flat;
- catbtn.FlatAppearance.BorderSize = 0;
- catbtn.FlatAppearance.MouseOverBackColor = LoadedSkin.Menu_MenuItemSelected;
- catbtn.FlatAppearance.MouseDownBackColor = LoadedSkin.Menu_MenuItemPressedGradientBegin;
- catbtn.BackColor = LoadedSkin.Menu_ToolStripDropDownBackground;
- catbtn.ForeColor = LoadedSkin.Menu_TextColor;
- catbtn.MouseEnter += (o, a) =>
- {
- catbtn.ForeColor = LoadedSkin.Menu_SelectedTextColor;
- };
- catbtn.MouseLeave += (o, a) =>
- {
- catbtn.ForeColor = LoadedSkin.Menu_TextColor;
- };
- catbtn.TextAlign = ContentAlignment.MiddleLeft;
- catbtn.Text = (app is LuaLauncherItem) ? app.DisplayData.Name : NameChangerBackend.GetNameRaw(app.LaunchType);
- catbtn.Width = flapps.Width;
- catbtn.ImageAlign = ContentAlignment.MiddleRight;
- catbtn.Height = 24;
- catbtn.Image = (app.LaunchType == null) ? null : SkinEngine.GetIcon(app.LaunchType.Name);
-
- flapps.Controls.Add(catbtn);
- catbtn.Show();
- catbtn.Click += (o, a) =>
- {
- pnladvancedal.Hide();
- if(app is LuaLauncherItem)
- {
- var interp = new LuaInterpreter();
- interp.ExecuteFile((app as LuaLauncherItem).LaunchPath);
- }
- else
- {
- IShiftOSWindow win = Activator.CreateInstance(app.LaunchType) as IShiftOSWindow;
- AppearanceManager.SetupWindow(win);
- }
-
-
-
- };
-
- }
- }
-
- /// <summary>
- /// Desktops the load.
- /// </summary>
- /// <returns>The load.</returns>
- /// <param name="sender">Sender.</param>
- /// <param name="e">E.</param>
- private void Desktop_Load(object sender, EventArgs e)
- {
-
- SaveSystem.Begin();
-
- SetupDesktop();
-
- SaveSystem.GameReady += () =>
- {
- this.Invoke(new Action(() =>
- {
- LuaInterpreter.RaiseEvent("on_desktop_load", this);
- }));
- };
- }
-
- /// <summary>
- /// Shows the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="border">Border.</param>
- public void ShowWindow(IWindowBorder border)
- {
- var brdr = border as Form;
- focused = border;
- brdr.GotFocus += (o, a) =>
- {
- focused = border;
- };
- brdr.FormBorderStyle = FormBorderStyle.None;
- brdr.Show();
- brdr.TopMost = true;
- }
-
- /// <summary>
- /// Kills the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="border">Border.</param>
- public void KillWindow(IWindowBorder border)
- {
- border.Close();
- }
-
- private IWindowBorder focused = null;
-
- public string DesktopName
- {
- get
- {
- return "ShiftOS Desktop";
- }
- }
-
-
- /// <summary>
- /// Minimizes the window.
- /// </summary>
- /// <param name="brdr">Brdr.</param>
- public void MinimizeWindow(IWindowBorder brdr)
- {
- var loc = (brdr as WindowBorder).Location;
- var sz = (brdr as WindowBorder).Size;
- (brdr as WindowBorder).Tag = JsonConvert.SerializeObject(new
- {
- Size = sz,
- Location = loc
- });
- (brdr as WindowBorder).Location = new Point(this.GetSize().Width * 2, this.GetSize().Height * 2);
- }
-
- /// <summary>
- /// Maximizes the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="brdr">Brdr.</param>
- public void MaximizeWindow(IWindowBorder brdr)
- {
- int startY = (LoadedSkin.DesktopPanelPosition == 1) ? 0 : LoadedSkin.DesktopPanelHeight;
- int h = this.GetSize().Height - LoadedSkin.DesktopPanelHeight;
- var loc = (brdr as WindowBorder).Location;
- var sz = (brdr as WindowBorder).Size;
- (brdr as WindowBorder).Tag = JsonConvert.SerializeObject(new
- {
- Size = sz,
- Location = loc
- });
- (brdr as WindowBorder).Location = new Point(0, startY);
- (brdr as WindowBorder).Size = new Size(this.GetSize().Width, h);
-
- }
-
- /// <summary>
- /// Restores the window.
- /// </summary>
- /// <returns>The window.</returns>
- /// <param name="brdr">Brdr.</param>
- public void RestoreWindow(IWindowBorder brdr)
- {
- dynamic tag = JsonConvert.DeserializeObject<dynamic>((brdr as WindowBorder).Tag.ToString());
- (brdr as WindowBorder).Location = tag.Location;
- (brdr as WindowBorder).Size = tag.Size;
-
- }
-
- /// <summary>
- /// Invokes the on worker thread.
- /// </summary>
- /// <returns>The on worker thread.</returns>
- /// <param name="act">Act.</param>
- public void InvokeOnWorkerThread(Action act)
- {
- try
- {
- this.Invoke(new Action(() =>
- {
- act?.Invoke();
- }));
- }
- catch
- {
-
- }
- }
-
- public void OpenAppLauncher(Point loc)
- {
- apps.DropDown.Left = loc.X;
- apps.DropDown.Top = loc.Y;
- apps.ShowDropDown();
- }
-
- /// <summary>
- /// Gets the size.
- /// </summary>
- /// <returns>The size.</returns>
- public Size GetSize()
- {
- return this.Size;
- }
-
- private void btnnotifications_Click(object sender, EventArgs e)
- {
- AppearanceManager.SetupWindow(new Applications.Notifications());
- }
-
- private void desktoppanel_Paint(object sender, PaintEventArgs e)
- {
- e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
- }
-
- private void lbtime_Click(object sender, EventArgs e)
- {
- }
-
- public void SetupControl(Control ctrl)
- {
- foreach (Control c in ctrl.Controls)
- SetupControl(c);
- ctrl.Click += (o, a) => HideAppLauncher();
- }
-
- private void apps_Click(object sender, EventArgs e)
- {
- if (Shiftorium.UpgradeInstalled("advanced_app_launcher"))
- {
- lbalstatus.Text = $@"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}
-{SaveSystem.CurrentSave.Codepoints} Codepoints
-{Shiftorium.GetAvailable().Length} available, {SaveSystem.CurrentSave.CountUpgrades()} installed.";
-
- flapps.Controls.Clear();
- apps.DropDown.Hide();
- pnladvancedal.Location = new Point(0, (LoadedSkin.DesktopPanelPosition == 0) ? desktoppanel.Height : this.Height - pnladvancedal.Height - desktoppanel.Height);
- pnladvancedal.Visible = !pnladvancedal.Visible;
- pnladvancedal.BringToFront();
- }
-
- }
-
- private void btnshutdown_Click(object sender, EventArgs e)
- {
- TerminalBackend.InvokeCommand("sos.shutdown");
- }
-
- public void HideAppLauncher()
- {
- this.Invoke(new Action(() =>
- {
- pnladvancedal.Hide();
- }));
- }
- }
-
- [ShiftOS.Engine.Scripting.Exposed("desktop")]
- public class DesktopFunctions
- {
- public static bool ShowDefaultElements = true;
-
- public dynamic getWindow()
- {
- return Desktop.CurrentDesktop;
- }
-
- public void showDefaultElements(bool val)
- {
- ShowDefaultElements = val;
- SkinEngine.LoadSkin();
- }
-
- public dynamic getOpenWindows()
- {
- return AppearanceManager.OpenForms;
- }
-
- public string getALItemName(LauncherItem kv)
- {
- return (kv.LaunchType == null) ? kv.DisplayData.Name : Applications.NameChangerBackend.GetNameRaw(kv.LaunchType);
- }
-
- public void openAppLauncher(Point loc)
- {
- Desktop.OpenAppLauncher(loc);
- }
-
- public string getWindowTitle(IWindowBorder form)
- {
- return NameChangerBackend.GetName(form.ParentWindow);
- }
-
- public void openApp(LauncherItem kv)
- {
- if (kv is LuaLauncherItem)
- {
- var interpreter = new Engine.Scripting.LuaInterpreter();
- interpreter.ExecuteFile((kv as LuaLauncherItem).LaunchPath);
- }
- else
- {
- Engine.AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow);
- }
- }
- }
-} \ No newline at end of file