mirror of
https://github.com/ShiftOS-Rewind/ShiftOS.git
synced 2025-01-22 11:21:45 -05:00
added desktop and some small additions and changes to shiftwm
This commit is contained in:
parent
dc7533184a
commit
a25baf0820
23 changed files with 909 additions and 458 deletions
3
.vs/ProjectSettings.json
Normal file
3
.vs/ProjectSettings.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"CurrentProjectSetting": null
|
||||
}
|
Binary file not shown.
6
.vs/VSWorkspaceState.json
Normal file
6
.vs/VSWorkspaceState.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
BIN
.vs/slnx.sqlite
Normal file
BIN
.vs/slnx.sqlite
Normal file
Binary file not shown.
|
@ -20,6 +20,7 @@
|
|||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
|
@ -30,6 +31,9 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Magick.NET-Q16-AnyCPU, Version=7.0.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Magick.NET-Q16-AnyCPU.7.0.7.300\lib\net40\Magick.NET-Q16-AnyCPU.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
|
@ -48,6 +52,7 @@
|
|||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Tools.cs" />
|
||||
<Compile Include="WindowManager\InfoboxTemplate.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
|
@ -75,6 +80,7 @@
|
|||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Resources\nullIcon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
32
ShiftOS.Engine/Tools.cs
Normal file
32
ShiftOS.Engine/Tools.cs
Normal file
|
@ -0,0 +1,32 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using ImageMagick;
|
||||
|
||||
namespace ShiftOS.Engine
|
||||
{
|
||||
/// <summary>
|
||||
/// Random class full of unassorted [but also uncategorizable] tools.
|
||||
/// </summary>
|
||||
public static class Tools
|
||||
{
|
||||
public static Random Rnd = new Random();
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
||||
public extern static bool DestroyIcon(IntPtr handle);
|
||||
|
||||
public static Icon ToIcon(this Bitmap bm)
|
||||
{
|
||||
Icon tempicon = Icon.FromHandle(bm.GetHicon());
|
||||
|
||||
Icon newIcon = tempicon.Clone() as Icon;
|
||||
|
||||
//for some reason this exists
|
||||
DestroyIcon(tempicon.Handle);
|
||||
|
||||
return newIcon;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,11 +1,5 @@
|
|||
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 System.Media;
|
||||
using System.IO;
|
||||
|
@ -14,38 +8,39 @@ namespace ShiftOS.Engine.WindowManager
|
|||
{
|
||||
public partial class InfoboxTemplate : UserControl
|
||||
{
|
||||
Stream str;
|
||||
public int buttonChoice;
|
||||
public int buttonSelected;
|
||||
public InfoboxTemplate(buttonType type)
|
||||
Stream _str;
|
||||
private int _buttonChoice;
|
||||
private int _buttonSelected;
|
||||
public InfoboxTemplate(ButtonType type)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case buttonType.OK:
|
||||
case ButtonType.Ok:
|
||||
btnOpt1.Text = "OK";
|
||||
btnOpt2.Hide();
|
||||
btnOpt1.Location = new Point(109, 134);
|
||||
buttonChoice = 1;
|
||||
_buttonChoice = 1;
|
||||
break;
|
||||
case buttonType.OKCancel:
|
||||
case ButtonType.OkCancel:
|
||||
btnOpt1.Text = "OK";
|
||||
btnOpt2.Text = "Cancel";
|
||||
buttonChoice = 2;
|
||||
_buttonChoice = 2;
|
||||
break;
|
||||
case buttonType.YesNo:
|
||||
case ButtonType.YesNo:
|
||||
btnOpt1.Text = "Yes";
|
||||
btnOpt2.Text = "No";
|
||||
buttonChoice = 3;
|
||||
_buttonChoice = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
public enum buttonType
|
||||
|
||||
public enum ButtonType
|
||||
{
|
||||
YesNo,
|
||||
OKCancel,
|
||||
OK
|
||||
OkCancel,
|
||||
Ok
|
||||
}
|
||||
|
||||
private void btnOpt1_Click(object sender, EventArgs e)
|
||||
|
@ -53,12 +48,12 @@ namespace ShiftOS.Engine.WindowManager
|
|||
switch (btnOpt1.Text)
|
||||
{
|
||||
case "OK":
|
||||
buttonSelected = 1;
|
||||
ParentForm.Close();
|
||||
_buttonSelected = 1;
|
||||
ParentForm?.Close();
|
||||
break;
|
||||
case "Yes":
|
||||
buttonSelected = 2;
|
||||
ParentForm.Close();
|
||||
_buttonSelected = 2;
|
||||
ParentForm?.Close();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -68,25 +63,24 @@ namespace ShiftOS.Engine.WindowManager
|
|||
switch (btnOpt2.Text)
|
||||
{
|
||||
case "No":
|
||||
buttonSelected = 3;
|
||||
_buttonSelected = 3;
|
||||
break;
|
||||
case "Cancel":
|
||||
buttonSelected = 4;
|
||||
_buttonSelected = 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void Play()
|
||||
{
|
||||
str = Properties.Resources.infobox;
|
||||
SoundPlayer sp = new SoundPlayer(str);
|
||||
_str = Properties.Resources.infobox;
|
||||
SoundPlayer sp = new SoundPlayer(_str);
|
||||
sp.Play();
|
||||
sp.Stream.Position = 0;
|
||||
}
|
||||
|
||||
private void InfoboxTemplate_Load(object sender, EventArgs e)
|
||||
{
|
||||
Play();
|
||||
}
|
||||
=> Play();
|
||||
|
||||
private void changeSize_Tick(object sender, EventArgs e)
|
||||
{
|
||||
|
|
|
@ -1,17 +1,31 @@
|
|||
using System.Drawing;
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using static ShiftOS.Engine.WindowManager.InfoboxTemplate;
|
||||
|
||||
namespace ShiftOS.Engine.WindowManager
|
||||
{
|
||||
public class ShiftWM
|
||||
public static class ShiftWM
|
||||
{
|
||||
public ShiftWindow Init(UserControl content, string title, Image icon, bool ShowAsInfobox = false, bool resize = true)
|
||||
public static ObservableCollection<ShiftWindow> Windows { get; } = new ObservableCollection<ShiftWindow>();
|
||||
|
||||
public static ShiftWindow GetShiftWindow(this UserControl control)
|
||||
{
|
||||
return Windows.First(p => (uint) control.Tag == p.Id);
|
||||
}
|
||||
|
||||
public static ShiftWindow Init(UserControl content, string title, Icon icon, bool showAsInfobox = false, bool resize = true)
|
||||
{
|
||||
// Setup Window
|
||||
ShiftWindow app = new ShiftWindow();
|
||||
app.Text = title;
|
||||
app.Title.Text = title;
|
||||
ShiftWindow app = new ShiftWindow
|
||||
{
|
||||
Text = title,
|
||||
Title = {Text = title}
|
||||
};
|
||||
|
||||
app.Width = content.Width + app.left.Width + app.right.Width;
|
||||
app.Height = content.Height + app.bottom.Height + app.top.Height;
|
||||
|
||||
|
@ -22,20 +36,46 @@ namespace ShiftOS.Engine.WindowManager
|
|||
app.programIcon.Image = Properties.Resources.nullIcon;
|
||||
app.Title.Location = new Point(2, 7);
|
||||
}
|
||||
else app.programIcon.Image = icon;
|
||||
|
||||
else
|
||||
{
|
||||
app.programIcon.Image = icon.ToBitmap();
|
||||
app.Icon = icon;
|
||||
}
|
||||
|
||||
// Setup UC
|
||||
content.Parent = app.programContent;
|
||||
content.BringToFront();
|
||||
content.Dock = DockStyle.Fill;
|
||||
app.Show();
|
||||
|
||||
content.Tag = app.SetId();
|
||||
|
||||
Debug.WriteLine($"usercontrol: {content.Tag} window: {app.Id}");
|
||||
|
||||
app.Closed += (sender, args) =>
|
||||
{
|
||||
Windows.Remove((ShiftWindow) sender);
|
||||
};
|
||||
|
||||
Windows.Add(app);
|
||||
|
||||
if (content is IShiftWindowExtensions extensions)
|
||||
{
|
||||
extensions.OnLoaded(app);
|
||||
}
|
||||
|
||||
return app;
|
||||
}
|
||||
public InfoboxTemplate StartInfoboxSession(string title, string body, buttonType type)
|
||||
|
||||
public static InfoboxTemplate StartInfoboxSession(string title, string body, ButtonType type)
|
||||
{
|
||||
InfoboxTemplate info = new InfoboxTemplate(type);
|
||||
info.label1.Text = body;
|
||||
Init(info, title, Properties.Resources.iconInfoBox_fw, true, false);
|
||||
InfoboxTemplate info = new InfoboxTemplate(type)
|
||||
{
|
||||
label1 = { Text = body }
|
||||
};
|
||||
|
||||
Init(info, title, Properties.Resources.iconInfoBox_fw.ToIcon(), true, false);
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
|
76
ShiftOS.Engine/WindowManager/ShiftWindow.Designer.cs
generated
76
ShiftOS.Engine/WindowManager/ShiftWindow.Designer.cs
generated
|
@ -65,34 +65,38 @@
|
|||
this.program.Controls.Add(this.left);
|
||||
this.program.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.program.Location = new System.Drawing.Point(0, 0);
|
||||
this.program.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.program.Name = "program";
|
||||
this.program.Size = new System.Drawing.Size(284, 261);
|
||||
this.program.Size = new System.Drawing.Size(426, 402);
|
||||
this.program.TabIndex = 11;
|
||||
//
|
||||
// programContent
|
||||
//
|
||||
this.programContent.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.programContent.Location = new System.Drawing.Point(4, 30);
|
||||
this.programContent.Location = new System.Drawing.Point(6, 46);
|
||||
this.programContent.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.programContent.Name = "programContent";
|
||||
this.programContent.Size = new System.Drawing.Size(276, 227);
|
||||
this.programContent.Size = new System.Drawing.Size(414, 350);
|
||||
this.programContent.TabIndex = 11;
|
||||
//
|
||||
// bottomleftcorner
|
||||
//
|
||||
this.bottomleftcorner.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.bottomleftcorner.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.bottomleftcorner.Location = new System.Drawing.Point(0, 257);
|
||||
this.bottomleftcorner.Location = new System.Drawing.Point(0, 395);
|
||||
this.bottomleftcorner.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.bottomleftcorner.Name = "bottomleftcorner";
|
||||
this.bottomleftcorner.Size = new System.Drawing.Size(5, 4);
|
||||
this.bottomleftcorner.Size = new System.Drawing.Size(8, 6);
|
||||
this.bottomleftcorner.TabIndex = 10;
|
||||
//
|
||||
// toprightcorner
|
||||
//
|
||||
this.toprightcorner.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.toprightcorner.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.toprightcorner.Location = new System.Drawing.Point(278, 0);
|
||||
this.toprightcorner.Location = new System.Drawing.Point(417, 0);
|
||||
this.toprightcorner.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.toprightcorner.Name = "toprightcorner";
|
||||
this.toprightcorner.Size = new System.Drawing.Size(6, 30);
|
||||
this.toprightcorner.Size = new System.Drawing.Size(9, 46);
|
||||
this.toprightcorner.TabIndex = 9;
|
||||
//
|
||||
// bottomrightcorner
|
||||
|
@ -100,9 +104,10 @@
|
|||
this.bottomrightcorner.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.bottomrightcorner.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.bottomrightcorner.Cursor = System.Windows.Forms.Cursors.SizeNWSE;
|
||||
this.bottomrightcorner.Location = new System.Drawing.Point(280, 257);
|
||||
this.bottomrightcorner.Location = new System.Drawing.Point(420, 395);
|
||||
this.bottomrightcorner.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.bottomrightcorner.Name = "bottomrightcorner";
|
||||
this.bottomrightcorner.Size = new System.Drawing.Size(4, 4);
|
||||
this.bottomrightcorner.Size = new System.Drawing.Size(6, 6);
|
||||
this.bottomrightcorner.TabIndex = 4;
|
||||
//
|
||||
// topleftcorner
|
||||
|
@ -110,8 +115,9 @@
|
|||
this.topleftcorner.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.topleftcorner.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.topleftcorner.Location = new System.Drawing.Point(0, 0);
|
||||
this.topleftcorner.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.topleftcorner.Name = "topleftcorner";
|
||||
this.topleftcorner.Size = new System.Drawing.Size(7, 30);
|
||||
this.topleftcorner.Size = new System.Drawing.Size(10, 46);
|
||||
this.topleftcorner.TabIndex = 8;
|
||||
//
|
||||
// bottom
|
||||
|
@ -119,9 +125,10 @@
|
|||
this.bottom.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.bottom.Cursor = System.Windows.Forms.Cursors.SizeNS;
|
||||
this.bottom.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.bottom.Location = new System.Drawing.Point(4, 257);
|
||||
this.bottom.Location = new System.Drawing.Point(6, 396);
|
||||
this.bottom.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.bottom.Name = "bottom";
|
||||
this.bottom.Size = new System.Drawing.Size(276, 4);
|
||||
this.bottom.Size = new System.Drawing.Size(414, 6);
|
||||
this.bottom.TabIndex = 3;
|
||||
//
|
||||
// top
|
||||
|
@ -134,9 +141,10 @@
|
|||
this.top.Controls.Add(this.closebutton);
|
||||
this.top.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.top.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.top.Location = new System.Drawing.Point(4, 0);
|
||||
this.top.Location = new System.Drawing.Point(6, 0);
|
||||
this.top.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.top.Name = "top";
|
||||
this.top.Size = new System.Drawing.Size(276, 30);
|
||||
this.top.Size = new System.Drawing.Size(414, 46);
|
||||
this.top.TabIndex = 0;
|
||||
this.top.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Programtopbar_drag);
|
||||
//
|
||||
|
@ -145,9 +153,11 @@
|
|||
this.programIcon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.programIcon.ErrorImage = null;
|
||||
this.programIcon.InitialImage = null;
|
||||
this.programIcon.Location = new System.Drawing.Point(6, 7);
|
||||
this.programIcon.Location = new System.Drawing.Point(9, 11);
|
||||
this.programIcon.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.programIcon.Name = "programIcon";
|
||||
this.programIcon.Size = new System.Drawing.Size(16, 16);
|
||||
this.programIcon.Size = new System.Drawing.Size(24, 25);
|
||||
this.programIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.programIcon.TabIndex = 7;
|
||||
this.programIcon.TabStop = false;
|
||||
//
|
||||
|
@ -155,9 +165,10 @@
|
|||
//
|
||||
this.maximizebutton.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.maximizebutton.BackColor = System.Drawing.Color.Black;
|
||||
this.maximizebutton.Location = new System.Drawing.Point(230, 4);
|
||||
this.maximizebutton.Location = new System.Drawing.Point(345, 6);
|
||||
this.maximizebutton.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.maximizebutton.Name = "maximizebutton";
|
||||
this.maximizebutton.Size = new System.Drawing.Size(21, 21);
|
||||
this.maximizebutton.Size = new System.Drawing.Size(32, 32);
|
||||
this.maximizebutton.TabIndex = 6;
|
||||
this.maximizebutton.TabStop = false;
|
||||
this.maximizebutton.MouseDown += new System.Windows.Forms.MouseEventHandler(this.maximizebutton_MouseDown);
|
||||
|
@ -169,9 +180,10 @@
|
|||
//
|
||||
this.minimizebutton.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.minimizebutton.BackColor = System.Drawing.Color.Black;
|
||||
this.minimizebutton.Location = new System.Drawing.Point(207, 4);
|
||||
this.minimizebutton.Location = new System.Drawing.Point(310, 6);
|
||||
this.minimizebutton.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.minimizebutton.Name = "minimizebutton";
|
||||
this.minimizebutton.Size = new System.Drawing.Size(21, 21);
|
||||
this.minimizebutton.Size = new System.Drawing.Size(32, 32);
|
||||
this.minimizebutton.TabIndex = 5;
|
||||
this.minimizebutton.TabStop = false;
|
||||
this.minimizebutton.MouseDown += new System.Windows.Forms.MouseEventHandler(this.minimizebutton_MouseDown);
|
||||
|
@ -185,9 +197,10 @@
|
|||
this.Title.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Title.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Title.ForeColor = System.Drawing.Color.White;
|
||||
this.Title.Location = new System.Drawing.Point(25, 8);
|
||||
this.Title.Location = new System.Drawing.Point(38, 12);
|
||||
this.Title.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.Title.Name = "Title";
|
||||
this.Title.Size = new System.Drawing.Size(98, 13);
|
||||
this.Title.Size = new System.Drawing.Size(149, 21);
|
||||
this.Title.TabIndex = 3;
|
||||
this.Title.Text = "Application Title";
|
||||
this.Title.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Programtopbar_drag);
|
||||
|
@ -196,9 +209,10 @@
|
|||
//
|
||||
this.closebutton.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.closebutton.BackColor = System.Drawing.Color.Black;
|
||||
this.closebutton.Location = new System.Drawing.Point(253, 4);
|
||||
this.closebutton.Location = new System.Drawing.Point(380, 6);
|
||||
this.closebutton.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.closebutton.Name = "closebutton";
|
||||
this.closebutton.Size = new System.Drawing.Size(21, 21);
|
||||
this.closebutton.Size = new System.Drawing.Size(32, 32);
|
||||
this.closebutton.TabIndex = 4;
|
||||
this.closebutton.TabStop = false;
|
||||
this.closebutton.Click += new System.EventHandler(this.closebutton_Click);
|
||||
|
@ -212,9 +226,10 @@
|
|||
this.right.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.right.Cursor = System.Windows.Forms.Cursors.SizeWE;
|
||||
this.right.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.right.Location = new System.Drawing.Point(280, 0);
|
||||
this.right.Location = new System.Drawing.Point(420, 0);
|
||||
this.right.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.right.Name = "right";
|
||||
this.right.Size = new System.Drawing.Size(4, 261);
|
||||
this.right.Size = new System.Drawing.Size(6, 402);
|
||||
this.right.TabIndex = 2;
|
||||
//
|
||||
// left
|
||||
|
@ -222,18 +237,21 @@
|
|||
this.left.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.left.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.left.Location = new System.Drawing.Point(0, 0);
|
||||
this.left.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.left.Name = "left";
|
||||
this.left.Size = new System.Drawing.Size(4, 261);
|
||||
this.left.Size = new System.Drawing.Size(6, 402);
|
||||
this.left.TabIndex = 1;
|
||||
//
|
||||
// ShiftWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(284, 261);
|
||||
this.ClientSize = new System.Drawing.Size(426, 402);
|
||||
this.Controls.Add(this.program);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.Name = "ShiftWindow";
|
||||
this.Text = "c";
|
||||
this.program.ResumeLayout(false);
|
||||
this.top.ResumeLayout(false);
|
||||
this.top.PerformLayout();
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
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 System.Runtime.InteropServices;
|
||||
|
||||
|
@ -13,91 +8,86 @@ namespace ShiftOS.Engine.WindowManager
|
|||
{
|
||||
public partial class ShiftWindow : Form
|
||||
{
|
||||
public uint Id { get; private set; }
|
||||
|
||||
public UserControl ChildControl { get; set; }
|
||||
|
||||
public ShiftWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public const int WM_NCLBUTTONDOWN = 0xA1;
|
||||
public const int HT_CAPTION = 0x2;
|
||||
|
||||
public uint SetId()
|
||||
{
|
||||
do
|
||||
{
|
||||
Id = (uint)Tools.Rnd.Next(100000, 999999);
|
||||
}
|
||||
while (ShiftWM.Windows.FirstOrDefault(w => w.Id == Id) != null);
|
||||
|
||||
return Id;
|
||||
}
|
||||
|
||||
private const int WM_NCLBUTTONDOWN = 0xA1;
|
||||
private const int HT_CAPTION = 0x2;
|
||||
|
||||
[DllImportAttribute("user32.dll")]
|
||||
public static extern int SendMessage(IntPtr hWnd,
|
||||
private static extern int SendMessage(IntPtr hWnd,
|
||||
int Msg, int wParam, int lParam);
|
||||
|
||||
[DllImportAttribute("user32.dll")]
|
||||
public static extern bool ReleaseCapture();
|
||||
private static extern bool ReleaseCapture();
|
||||
|
||||
private void Programtopbar_drag(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
if (e.Button != MouseButtons.Left) return;
|
||||
|
||||
ReleaseCapture();
|
||||
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void closebutton_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
=> this.Close();
|
||||
|
||||
private void closebutton_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
closebutton.BackColor = Color.Gray;
|
||||
}
|
||||
=> closebutton.BackColor = Color.Gray;
|
||||
|
||||
private void closebutton_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
closebutton.BackColor = Color.Black;
|
||||
}
|
||||
=> closebutton.BackColor = Color.Black;
|
||||
|
||||
private void maximizebutton_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
maximizebutton.BackColor = Color.Gray;
|
||||
}
|
||||
=> maximizebutton.BackColor = Color.Gray;
|
||||
|
||||
private void maximizebutton_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
maximizebutton.BackColor = Color.Black;
|
||||
}
|
||||
=> maximizebutton.BackColor = Color.Black;
|
||||
|
||||
private void minimizebutton_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
minimizebutton.BackColor = Color.Gray;
|
||||
}
|
||||
=> minimizebutton.BackColor = Color.Gray;
|
||||
|
||||
private void minimizebutton_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
minimizebutton.BackColor = Color.Black;
|
||||
}
|
||||
=> minimizebutton.BackColor = Color.Black;
|
||||
|
||||
private void closebutton_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
closebutton.BackColor = Color.Black;
|
||||
}
|
||||
=> closebutton.BackColor = Color.Black;
|
||||
|
||||
private void maximizebutton_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
maximizebutton.BackColor = Color.Black;
|
||||
}
|
||||
=> maximizebutton.BackColor = Color.Black;
|
||||
|
||||
private void minimizebutton_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
minimizebutton.BackColor = Color.Black;
|
||||
}
|
||||
=> minimizebutton.BackColor = Color.Black;
|
||||
|
||||
private void minimizebutton_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
minimizebutton.BackColor = Color.Gray;
|
||||
}
|
||||
=> minimizebutton.BackColor = Color.Gray;
|
||||
|
||||
private void maximizebutton_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
maximizebutton.BackColor = Color.Gray;
|
||||
}
|
||||
=> maximizebutton.BackColor = Color.Gray;
|
||||
|
||||
private void closebutton_MouseUp(object sender, MouseEventArgs e)
|
||||
=> closebutton.BackColor = Color.Gray;
|
||||
}
|
||||
|
||||
public interface IShiftWindowExtensions
|
||||
{
|
||||
closebutton.BackColor = Color.Gray;
|
||||
}
|
||||
void OnLoaded(ShiftWindow window);
|
||||
}
|
||||
}
|
||||
|
|
4
ShiftOS.Engine/packages.config
Normal file
4
ShiftOS.Engine/packages.config
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Magick.NET-Q16-AnyCPU" version="7.0.7.300" targetFramework="net45" />
|
||||
</packages>
|
|
@ -1,8 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using ShiftOS.Main.ShiftOS;
|
||||
|
||||
namespace ShiftOS.Main
|
||||
{
|
||||
|
@ -16,7 +15,10 @@ namespace ShiftOS.Main
|
|||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new TestForm());
|
||||
|
||||
Parallel.Invoke(
|
||||
() => Application.Run(new TestForm()),
|
||||
() => Application.Run(new Desktop()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,6 +76,12 @@
|
|||
<Compile Include="ShiftOS\Apps\TestForm.Designer.cs">
|
||||
<DependentUpon>TestForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ShiftOS\Desktop.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ShiftOS\Desktop.Designer.cs">
|
||||
<DependentUpon>Desktop.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="HijackScreen.resx">
|
||||
<DependentUpon>HijackScreen.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
@ -101,6 +107,9 @@
|
|||
<EmbeddedResource Include="ShiftOS\Apps\TestForm.resx">
|
||||
<DependentUpon>TestForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ShiftOS\Desktop.resx">
|
||||
<DependentUpon>Desktop.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
|
|
23
ShiftOS.Main/ShiftOS/Apps/ShiftDemo.Designer.cs
generated
23
ShiftOS.Main/ShiftOS/Apps/ShiftDemo.Designer.cs
generated
|
@ -29,24 +29,38 @@
|
|||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.icon = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.icon)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(18, 16);
|
||||
this.label1.Location = new System.Drawing.Point(27, 25);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(35, 13);
|
||||
this.label1.Size = new System.Drawing.Size(51, 20);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "label1";
|
||||
//
|
||||
// icon
|
||||
//
|
||||
this.icon.Location = new System.Drawing.Point(31, 61);
|
||||
this.icon.Name = "icon";
|
||||
this.icon.Size = new System.Drawing.Size(300, 300);
|
||||
this.icon.TabIndex = 1;
|
||||
this.icon.TabStop = false;
|
||||
//
|
||||
// ShiftDemo
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.icon);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.Name = "ShiftDemo";
|
||||
this.Size = new System.Drawing.Size(300, 300);
|
||||
this.Size = new System.Drawing.Size(450, 462);
|
||||
((System.ComponentModel.ISupportInitialize)(this.icon)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
@ -55,5 +69,6 @@
|
|||
#endregion
|
||||
|
||||
public System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.PictureBox icon;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,14 +7,20 @@ using System.Linq;
|
|||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using ShiftOS.Engine.WindowManager;
|
||||
|
||||
namespace ShiftOS.Main
|
||||
{
|
||||
public partial class ShiftDemo : UserControl
|
||||
public partial class ShiftDemo : UserControl, IShiftWindowExtensions
|
||||
{
|
||||
public ShiftDemo()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void OnLoaded(ShiftWindow window)
|
||||
{
|
||||
icon.Image = this.GetShiftWindow().Icon.ToBitmap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
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.WindowManager;
|
||||
|
||||
|
@ -13,11 +7,10 @@ namespace ShiftOS.Main.ShiftOS.Apps
|
|||
{
|
||||
public partial class SelectColor : UserControl
|
||||
{
|
||||
ShiftWM shiftWM = new ShiftWM();
|
||||
Color finalColor;
|
||||
int colorType1;
|
||||
int colorType2;
|
||||
int colorType3;
|
||||
Color _finalColor;
|
||||
int _colorType1;
|
||||
int _colorType2;
|
||||
int _colorType3;
|
||||
public SelectColor()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -28,31 +21,31 @@ namespace ShiftOS.Main.ShiftOS.Apps
|
|||
{
|
||||
try
|
||||
{
|
||||
colorType1 = Convert.ToInt32(textBox1.Text);
|
||||
colorType2 = Convert.ToInt32(textBox2.Text);
|
||||
colorType3 = Convert.ToInt32(textBox3.Text);
|
||||
_colorType1 = Convert.ToInt32(textBox1.Text);
|
||||
_colorType2 = Convert.ToInt32(textBox2.Text);
|
||||
_colorType3 = Convert.ToInt32(textBox3.Text);
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch(FormatException ex)
|
||||
{
|
||||
shiftWM.StartInfoboxSession("Error!", "Failed to parse integer. Error:\n" + ex, InfoboxTemplate.buttonType.OK);
|
||||
ShiftWM.StartInfoboxSession("Error!", "Failed to parse integer. Error:\n" + ex, InfoboxTemplate.ButtonType.Ok);
|
||||
}
|
||||
|
||||
if (colorType1 > 255 || colorType2 > 255 || colorType3 > 255)
|
||||
if (_colorType1 > 255 || _colorType2 > 255 || _colorType3 > 255)
|
||||
{
|
||||
shiftWM.StartInfoboxSession("Error!", "A value cannot be greater than 255!", InfoboxTemplate.buttonType.OK);
|
||||
ShiftWM.StartInfoboxSession("Error!", "A value cannot be greater than 255!", InfoboxTemplate.ButtonType.Ok);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
ShiftWindow sw = new ShiftWindow();
|
||||
finalColor = Color.FromArgb(colorType1, colorType2, colorType3);
|
||||
this.BackColor = finalColor;
|
||||
shiftWM.StartInfoboxSession("Success!", "Changed color to:\n" + colorType1.ToString() + ", " + colorType2.ToString() + ", " + colorType3.ToString() + ".", InfoboxTemplate.buttonType.OK);
|
||||
_finalColor = Color.FromArgb(_colorType1, _colorType2, _colorType3);
|
||||
BackColor = _finalColor;
|
||||
ShiftWM.StartInfoboxSession("Success!", "Changed color to:\n" + _colorType1.ToString() + ", " + _colorType2.ToString() + ", " + _colorType3.ToString() + ".", InfoboxTemplate.ButtonType.Ok);
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
shiftWM.StartInfoboxSession("Error!", "An error occured while setting the color.", InfoboxTemplate.buttonType.OK);
|
||||
ShiftWM.StartInfoboxSession("Error!", "An error occured while setting the color.", InfoboxTemplate.ButtonType.Ok);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
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 ShiftOS.Engine.WindowManager;
|
||||
|
||||
namespace ShiftOS.Main.ShiftOS.Apps
|
||||
|
@ -14,7 +8,6 @@ namespace ShiftOS.Main.ShiftOS.Apps
|
|||
public partial class Shifter : UserControl
|
||||
{
|
||||
public int colorType; //This is a check to see what option was chosen.
|
||||
ShiftWM wm = new ShiftWM();
|
||||
public Shifter()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -23,7 +16,7 @@ namespace ShiftOS.Main.ShiftOS.Apps
|
|||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
colorType = 1;
|
||||
wm.Init(new SelectColor(), "Select a color", Properties.Resources.iconColourPicker_fw);
|
||||
ShiftWM.Init(new SelectColor(), "Select a color", Properties.Resources.iconColourPicker_fw.ToIcon());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
56
ShiftOS.Main/ShiftOS/Apps/TestForm.Designer.cs
generated
56
ShiftOS.Main/ShiftOS/Apps/TestForm.Designer.cs
generated
|
@ -28,33 +28,40 @@
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.systemIconsBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.systemIconsBindingSource)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(12, 13);
|
||||
this.textBox1.Location = new System.Drawing.Point(18, 20);
|
||||
this.textBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(260, 20);
|
||||
this.textBox1.Size = new System.Drawing.Size(388, 26);
|
||||
this.textBox1.TabIndex = 0;
|
||||
this.textBox1.Text = "Title";
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.Location = new System.Drawing.Point(12, 39);
|
||||
this.textBox2.Location = new System.Drawing.Point(18, 60);
|
||||
this.textBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.Size = new System.Drawing.Size(260, 20);
|
||||
this.textBox2.Size = new System.Drawing.Size(388, 26);
|
||||
this.textBox2.TabIndex = 1;
|
||||
this.textBox2.Text = "Contents";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(12, 65);
|
||||
this.button1.Location = new System.Drawing.Point(13, 149);
|
||||
this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(128, 23);
|
||||
this.button1.Size = new System.Drawing.Size(192, 35);
|
||||
this.button1.TabIndex = 2;
|
||||
this.button1.Text = "Create Window";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
|
@ -62,25 +69,52 @@
|
|||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(146, 65);
|
||||
this.button2.Location = new System.Drawing.Point(217, 149);
|
||||
this.button2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(126, 23);
|
||||
this.button2.Size = new System.Drawing.Size(189, 35);
|
||||
this.button2.TabIndex = 4;
|
||||
this.button2.Text = "Test Shifter";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
this.comboBox1.FormattingEnabled = true;
|
||||
this.comboBox1.Items.AddRange(new object[] {
|
||||
"Application",
|
||||
"Asterisk",
|
||||
"Error",
|
||||
"Exclamation",
|
||||
"Hand",
|
||||
"Information",
|
||||
"Question",
|
||||
"Shield",
|
||||
"Warning",
|
||||
"WinLogo"});
|
||||
this.comboBox1.Location = new System.Drawing.Point(18, 104);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(388, 28);
|
||||
this.comboBox1.TabIndex = 5;
|
||||
//
|
||||
// systemIconsBindingSource
|
||||
//
|
||||
this.systemIconsBindingSource.DataSource = typeof(System.Drawing.SystemIcons);
|
||||
//
|
||||
// TestForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(284, 100);
|
||||
this.ClientSize = new System.Drawing.Size(426, 198);
|
||||
this.Controls.Add(this.comboBox1);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.textBox2);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.Name = "TestForm";
|
||||
this.Text = "TestForm";
|
||||
((System.ComponentModel.ISupportInitialize)(this.systemIconsBindingSource)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
@ -92,5 +126,7 @@
|
|||
private System.Windows.Forms.TextBox textBox2;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.BindingSource systemIconsBindingSource;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using ShiftOS.Engine;
|
||||
using ShiftOS.Engine.WindowManager;
|
||||
using ShiftOS.Main.ShiftOS.Apps;
|
||||
|
||||
|
@ -7,8 +10,6 @@ namespace ShiftOS.Main
|
|||
{
|
||||
public partial class TestForm : Form
|
||||
{
|
||||
public ShiftWM shiftWM = new ShiftWM();
|
||||
|
||||
public TestForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -16,14 +17,16 @@ namespace ShiftOS.Main
|
|||
|
||||
private void Button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShiftDemo demo = new ShiftDemo();
|
||||
demo.label1.Text = textBox2.Text;
|
||||
shiftWM.Init(demo, textBox1.Text, null);
|
||||
shiftWM.StartInfoboxSession(textBox1.Text, textBox2.Text, InfoboxTemplate.buttonType.OK);
|
||||
ShiftDemo demo = new ShiftDemo {label1 = {Text = textBox2.Text}};
|
||||
|
||||
var item = typeof(SystemIcons).GetProperties()
|
||||
.First(p => p.Name == comboBox1.SelectedItem as string);
|
||||
|
||||
ShiftWM.Init(demo, textBox1.Text, (item.GetMethod.Invoke(null, new object[0]) as Icon));
|
||||
ShiftWM.StartInfoboxSession(textBox1.Text, textBox2.Text, InfoboxTemplate.ButtonType.Ok);
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
shiftWM.Init(new Shifter(), "Shifter", Properties.Resources.iconShifter); }
|
||||
=> ShiftWM.Init(new Shifter(), "Shifter", Properties.Resources.iconShifter.ToIcon());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,4 +117,7 @@
|
|||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="systemIconsBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
111
ShiftOS.Main/ShiftOS/Desktop.Designer.cs
generated
Normal file
111
ShiftOS.Main/ShiftOS/Desktop.Designer.cs
generated
Normal file
|
@ -0,0 +1,111 @@
|
|||
namespace ShiftOS.Main.ShiftOS
|
||||
{
|
||||
partial class Desktop
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.listView1 = new System.Windows.Forms.ListView();
|
||||
this.taskbar = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.taskbarClock = new System.Windows.Forms.ToolStripLabel();
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.taskbar.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// listView1
|
||||
//
|
||||
this.listView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.listView1.Location = new System.Drawing.Point(0, 0);
|
||||
this.listView1.Name = "listView1";
|
||||
this.listView1.Size = new System.Drawing.Size(1962, 1236);
|
||||
this.listView1.TabIndex = 0;
|
||||
this.listView1.UseCompatibleStateImageBehavior = false;
|
||||
//
|
||||
// taskbar
|
||||
//
|
||||
this.taskbar.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.taskbar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||
this.taskbar.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.taskbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripDropDownButton1,
|
||||
this.taskbarClock});
|
||||
this.taskbar.Location = new System.Drawing.Point(0, 1204);
|
||||
this.taskbar.Name = "taskbar";
|
||||
this.taskbar.Size = new System.Drawing.Size(1962, 32);
|
||||
this.taskbar.TabIndex = 1;
|
||||
this.taskbar.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripDropDownButton1
|
||||
//
|
||||
this.toolStripDropDownButton1.Image = global::ShiftOS.Main.Properties.Resources.iconWebBrowser;
|
||||
this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripDropDownButton1.Name = "toolStripDropDownButton1";
|
||||
this.toolStripDropDownButton1.Size = new System.Drawing.Size(131, 29);
|
||||
this.toolStripDropDownButton1.Tag = ((uint)(0u));
|
||||
this.toolStripDropDownButton1.Text = "Programs";
|
||||
//
|
||||
// taskbarClock
|
||||
//
|
||||
this.taskbarClock.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
|
||||
this.taskbarClock.Image = global::ShiftOS.Main.Properties.Resources.iconClock;
|
||||
this.taskbarClock.Name = "taskbarClock";
|
||||
this.taskbarClock.Size = new System.Drawing.Size(70, 29);
|
||||
this.taskbarClock.Tag = ((uint)(0u));
|
||||
this.taskbarClock.Text = "0:00";
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Interval = 1000;
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// Desktop
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1962, 1236);
|
||||
this.Controls.Add(this.taskbar);
|
||||
this.Controls.Add(this.listView1);
|
||||
this.Name = "Desktop";
|
||||
this.Text = "Desktop";
|
||||
this.taskbar.ResumeLayout(false);
|
||||
this.taskbar.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListView listView1;
|
||||
private System.Windows.Forms.ToolStrip taskbar;
|
||||
private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1;
|
||||
private System.Windows.Forms.ToolStripLabel taskbarClock;
|
||||
private System.Windows.Forms.Timer timer1;
|
||||
}
|
||||
}
|
61
ShiftOS.Main/ShiftOS/Desktop.cs
Normal file
61
ShiftOS.Main/ShiftOS/Desktop.cs
Normal file
|
@ -0,0 +1,61 @@
|
|||
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.WindowManager;
|
||||
|
||||
namespace ShiftOS.Main.ShiftOS
|
||||
{
|
||||
public partial class Desktop : Form
|
||||
{
|
||||
public Desktop()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
timer1.Start();
|
||||
|
||||
this.Closed += (sender, args) =>
|
||||
{
|
||||
Application.Exit();
|
||||
};
|
||||
|
||||
#region Disgusting taskbar code
|
||||
|
||||
ShiftWM.Windows.CollectionChanged += (sender, args) =>
|
||||
{
|
||||
args.NewItems?.OfType<ShiftWindow>().ToList().ForEach(window =>
|
||||
{
|
||||
taskbar.Invoke(new Action(() =>
|
||||
{
|
||||
taskbar.Items.Add(new ToolStripButton
|
||||
{
|
||||
Text = window.Title.Text,
|
||||
Image = window.Icon.ToBitmap(),
|
||||
Tag = window.Id
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
args.OldItems?.OfType<ShiftWindow>().ToList().ForEach(window =>
|
||||
{
|
||||
taskbar.Invoke(new Action(() =>
|
||||
{
|
||||
var tbRemovalList = taskbar.Items.OfType<ToolStripItem>().Where(i => (uint) i.Tag == window.Id);
|
||||
|
||||
tbRemovalList.ToList().ForEach(p => taskbar.Items.Remove(p));
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e) =>
|
||||
taskbarClock.Text = $"{DateTime.Now:t}";
|
||||
}
|
||||
}
|
126
ShiftOS.Main/ShiftOS/Desktop.resx
Normal file
126
ShiftOS.Main/ShiftOS/Desktop.resx
Normal file
|
@ -0,0 +1,126 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="taskbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>159, 17</value>
|
||||
</metadata>
|
||||
</root>
|
Loading…
Reference in a new issue