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.cs361
1 files changed, 210 insertions, 151 deletions
diff --git a/ShiftOS.WinForms/WinformsDesktop.cs b/ShiftOS.WinForms/WinformsDesktop.cs
index 83de1fb..7409040 100644
--- a/ShiftOS.WinForms/WinformsDesktop.cs
+++ b/ShiftOS.WinForms/WinformsDesktop.cs
@@ -131,71 +131,73 @@ namespace ShiftOS.WinForms
/// <returns>The panel buttons.</returns>
public void PopulatePanelButtons()
{
-
- panelbuttonholder.Controls.Clear();
- if (Shiftorium.IsInitiated == true)
+ if (DesktopFunctions.ShowDefaultElements == true)
{
- if (Shiftorium.UpgradeInstalled("wm_panel_buttons"))
+ panelbuttonholder.Controls.Clear();
+ if (Shiftorium.IsInitiated == true)
{
- foreach (WindowBorder form in Engine.AppearanceManager.OpenForms)
+ if (Shiftorium.UpgradeInstalled("wm_panel_buttons"))
{
- if (form != null)
+ foreach (WindowBorder form in Engine.AppearanceManager.OpenForms)
{
- if (form.Visible == true)
+ if (form != null)
{
- EventHandler onClick = (o, a) =>
+ if (form.Visible == true)
{
- if (form == focused)
+ EventHandler onClick = (o, a) =>
{
- if (form.IsMinimized)
+ if (form == focused)
{
- RestoreWindow(form);
+ if (form.IsMinimized)
+ {
+ RestoreWindow(form);
+ }
+ else
+ {
+ MinimizeWindow(form);
+ }
}
else
{
- MinimizeWindow(form);
+ form.BringToFront();
+ focused = form;
}
+ };
+
+ 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;
}
- else
+ 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"))
{
- form.BringToFront();
- focused = form;
+ pnlbtn.Click += onClick;
+ pnlbtntext.Click += onClick;
}
- };
-
- 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;
+ pnlbtntext.Font = LoadedSkin.PanelButtonFont;
+ }
}
}
}
@@ -211,70 +213,77 @@ namespace ShiftOS.WinForms
/// <returns>The desktop.</returns>
public void SetupDesktop()
{
- ToolStripManager.Renderer = new ShiftOSMenuRenderer();
+ if (DesktopFunctions.ShowDefaultElements == true)
+ {
+ ToolStripManager.Renderer = new ShiftOSMenuRenderer();
- this.DoubleBuffered = true;
- this.FormBorderStyle = FormBorderStyle.None;
- this.WindowState = FormWindowState.Maximized;
- desktoppanel.BackColor = Color.Green;
+ this.DoubleBuffered = true;
+ this.FormBorderStyle = FormBorderStyle.None;
+ this.WindowState = FormWindowState.Maximized;
+ desktoppanel.BackColor = Color.Green;
- //upgrades
+ //upgrades
- if (Shiftorium.IsInitiated == true)
- {
- desktoppanel.Visible = Shiftorium.UpgradeInstalled("desktop");
- lbtime.Visible = Shiftorium.UpgradeInstalled("desktop_clock_widget");
+ if (Shiftorium.IsInitiated == true)
+ {
+ desktoppanel.Visible = Shiftorium.UpgradeInstalled("desktop");
+ lbtime.Visible = Shiftorium.UpgradeInstalled("desktop_clock_widget");
- //skinning
- lbtime.ForeColor = LoadedSkin.DesktopPanelClockColor;
+ //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);
+ 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");
+ 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.
+ //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.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;
+ DitheringEngine.DitherImage(SkinEngine.GetImage("desktopbackground"), new Action<Image>((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;
+ }
}
}
+ else
+ {
+ desktoppanel.Hide();
+ }
LuaInterpreter.RaiseEvent("on_desktop_skin", this);
@@ -302,80 +311,82 @@ namespace ShiftOS.WinForms
/// <param name="items">Items.</param>
public void PopulateAppLauncher(LauncherItem[] items)
{
- apps.DropDownItems.Clear();
+ if (DesktopFunctions.ShowDefaultElements == true)
+ {
+ apps.DropDownItems.Clear();
- Dictionary<string, List<ToolStripMenuItem>> sortedItems = new Dictionary<string, List<ToolStripMenuItem>>();
+ Dictionary<string, List<ToolStripMenuItem>> sortedItems = new Dictionary<string, List<ToolStripMenuItem>>();
- 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) =>
+ foreach (var kv in items)
{
- if (kv is LuaLauncherItem)
+ 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))
{
- var interpreter = new Engine.Scripting.LuaInterpreter();
- interpreter.ExecuteFile((kv as LuaLauncherItem).LaunchPath);
+ sortedItems[kv.DisplayData.Category].Add(item);
}
- else
+ else
{
- Engine.AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow);
+ sortedItems.Add(kv.DisplayData.Category, new List<ToolStripMenuItem>());
+ sortedItems[kv.DisplayData.Category].Add(item);
}
-
- };
- if (sortedItems.ContainsKey(kv.DisplayData.Category))
- {
- sortedItems[kv.DisplayData.Category].Add(item);
- }
- else
- {
- sortedItems.Add(kv.DisplayData.Category, new List<ToolStripMenuItem>());
- sortedItems[kv.DisplayData.Category].Add(item);
}
- }
- foreach(var kv in sortedItems)
- {
- if (Shiftorium.IsInitiated == true)
+ foreach (var kv in sortedItems)
{
- if (Shiftorium.UpgradeInstalled("app_launcher_categories"))
+ if (Shiftorium.IsInitiated == true)
{
- var cat = GetALCategoryWithName(kv.Key);
- foreach (var subItem in kv.Value)
+ if (Shiftorium.UpgradeInstalled("app_launcher_categories"))
{
- cat.DropDownItems.Add(subItem);
+ var cat = GetALCategoryWithName(kv.Key);
+ foreach (var subItem in kv.Value)
+ {
+ cat.DropDownItems.Add(subItem);
+ }
}
- }
- else
- {
- foreach (var subItem in kv.Value)
+ else
{
- apps.DropDownItems.Add(subItem);
+ foreach (var subItem in kv.Value)
+ {
+ apps.DropDownItems.Add(subItem);
+ }
}
}
}
- }
- if (Shiftorium.IsInitiated == true)
- {
- if (Shiftorium.UpgradeInstalled("al_shutdown"))
+ if (Shiftorium.IsInitiated == true)
{
- apps.DropDownItems.Add(new ToolStripSeparator());
- var item = new ToolStripMenuItem();
- item.Text = Localization.Parse("{SHUTDOWN}");
- item.Click += (o, a) =>
+ if (Shiftorium.UpgradeInstalled("al_shutdown"))
{
- TerminalBackend.InvokeCommand("sos.shutdown");
- };
- apps.DropDownItems.Add(item);
+ 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);
+ }
}
}
-
LuaInterpreter.RaiseEvent("on_al_populate", items);
}
@@ -501,6 +512,13 @@ namespace ShiftOS.WinForms
this.Invoke(act);
}
+ public void OpenAppLauncher(Point loc)
+ {
+ apps.DropDown.Left = loc.X;
+ apps.DropDown.Top = loc.Y;
+ apps.ShowDropDown();
+ }
+
/// <summary>
/// Gets the size.
/// </summary>
@@ -514,9 +532,50 @@ namespace ShiftOS.WinForms
[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);
+ }
+ }
}
}