aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Controls
diff options
context:
space:
mode:
authorwilliam341 <[email protected]>2017-05-28 12:37:00 -0700
committerGitHub <[email protected]>2017-05-28 12:37:00 -0700
commit771c20cfb3a703e0f1550fdcf9eb07b78298c944 (patch)
tree59cb532e15ebff313fdba2be264d78ec0033f407 /ShiftOS.WinForms/Controls
parent496b0cbf8659c99203f48210fd39c572400ae623 (diff)
parentc7ba7d733c756d196f98dd4533289a1ef4db715f (diff)
downloadshiftos_thereturn-771c20cfb3a703e0f1550fdcf9eb07b78298c944.tar.gz
shiftos_thereturn-771c20cfb3a703e0f1550fdcf9eb07b78298c944.tar.bz2
shiftos_thereturn-771c20cfb3a703e0f1550fdcf9eb07b78298c944.zip
Merge pull request #1 from shiftos-game/master
welp, no longer a dev.
Diffstat (limited to 'ShiftOS.WinForms/Controls')
-rw-r--r--ShiftOS.WinForms/Controls/ShiftedProgressBar.cs91
-rw-r--r--ShiftOS.WinForms/Controls/TerminalBox.cs203
2 files changed, 274 insertions, 20 deletions
diff --git a/ShiftOS.WinForms/Controls/ShiftedProgressBar.cs b/ShiftOS.WinForms/Controls/ShiftedProgressBar.cs
index e5a2c33..ceaff02 100644
--- a/ShiftOS.WinForms/Controls/ShiftedProgressBar.cs
+++ b/ShiftOS.WinForms/Controls/ShiftedProgressBar.cs
@@ -31,6 +31,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using ShiftOS.Engine;
namespace ShiftOS.WinForms.Controls
{
@@ -46,7 +47,7 @@ namespace ShiftOS.WinForms.Controls
t.Interval = 100;
t.Tick += (o, a) =>
{
- if(this._style == ProgressBarStyle.Marquee)
+ if(this.Style == ProgressBarStyle.Marquee)
{
if(_marqueePos >= this.Width)
{
@@ -89,46 +90,100 @@ namespace ShiftOS.WinForms.Controls
}
}
- public ProgressBarStyle _style = ProgressBarStyle.Continuous;
-
public ProgressBarStyle Style
{
- get { return _style; }
- set { _style = value; this.Refresh(); }
+ get
+ {
+ return SkinEngine.LoadedSkin.ProgressBarStyle;
+ }
}
- private int _blocksize = 5;
-
public int BlockSize
{
- get { return _blocksize; }
- set
+ get
{
- _blocksize = value;
- this.Refresh();
+ return SkinEngine.LoadedSkin.ProgressBarBlockSize;
+ }
+ }
+
+ public Color RealBackColor
+ {
+ get
+ {
+ return SkinEngine.LoadedSkin.ProgressBarBackgroundColor;
+ }
+ }
+
+ public Image RealBackgroundImage
+ {
+ get
+ {
+ return SkinEngine.GetImage("progressbarbg");
+ }
+ }
+
+ public Image ProgressImage
+ {
+ get
+ {
+ return SkinEngine.GetImage("progress");
+ }
+ }
+
+ public Color ProgressColor
+ {
+ get
+ {
+ return SkinEngine.LoadedSkin.ProgressColor;
}
}
protected override void OnPaint(PaintEventArgs pe)
{
- pe.Graphics.Clear(Color.Black);
- switch (_style)
+ pe.Graphics.Clear(this.RealBackColor);
+ if(RealBackgroundImage != null)
+ {
+ pe.Graphics.FillRectangle(new TextureBrush(RealBackgroundImage), new Rectangle(0, 0, this.Width, this.Height));
+ }
+ switch (Style)
{
case ProgressBarStyle.Continuous:
double width = linear(this.Value, 0, this.Maximum, 0, this.Width);
- pe.Graphics.FillRectangle(new SolidBrush(Color.Green), new RectangleF(0, 0, (float)width, this.Height));
+ if (ProgressImage != null)
+ {
+ pe.Graphics.FillRectangle(new TextureBrush(ProgressImage), new RectangleF(0, 0, (float)width, this.Height));
+ }
+ else
+ {
+ pe.Graphics.FillRectangle(new SolidBrush(ProgressColor), new RectangleF(0, 0, (float)width, this.Height));
+ }
break;
case ProgressBarStyle.Blocks:
- int block_count = this.Width / (this._blocksize + 2);
+ int block_count = this.Width / (this.BlockSize + 2);
int blocks = (int)linear(this.Value, 0, this.Maximum, 0, block_count);
for(int i = 0; i < blocks - 1; i++)
{
- int position = i * (_blocksize + 2);
- pe.Graphics.FillRectangle(new SolidBrush(Color.Green), new Rectangle(position, 0, _blocksize, this.Height));
+ int position = i * (BlockSize + 2);
+ if (ProgressImage != null)
+ {
+ pe.Graphics.FillRectangle(new TextureBrush(ProgressImage), new Rectangle(position, 0, BlockSize, this.Height));
+
+ }
+ else
+ {
+ pe.Graphics.FillRectangle(new SolidBrush(ProgressColor), new Rectangle(position, 0, BlockSize, this.Height));
+ }
}
break;
case ProgressBarStyle.Marquee:
- pe.Graphics.FillRectangle(new SolidBrush(Color.Green), new Rectangle(_marqueePos, 0, this.Width / 4, this.Height));
+ if (ProgressImage != null)
+ {
+ pe.Graphics.FillRectangle(new TextureBrush(ProgressImage), new Rectangle(_marqueePos, 0, this.Width / 4, this.Height));
+ }
+ else
+ {
+ pe.Graphics.FillRectangle(new SolidBrush(ProgressColor), new Rectangle(_marqueePos, 0, this.Width / 4, this.Height));
+ }
break;
}
}
diff --git a/ShiftOS.WinForms/Controls/TerminalBox.cs b/ShiftOS.WinForms/Controls/TerminalBox.cs
index ffc3f86..c188321 100644
--- a/ShiftOS.WinForms/Controls/TerminalBox.cs
+++ b/ShiftOS.WinForms/Controls/TerminalBox.cs
@@ -24,11 +24,14 @@
using System;
using System.Collections.Generic;
+using System.Drawing;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShiftOS.Engine;
+using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Controls
{
@@ -44,6 +47,14 @@ namespace ShiftOS.WinForms.Controls
catch { }
}
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing == true)
+ if(AppearanceManager.ConsoleOut == this)
+ AppearanceManager.ConsoleOut = null;
+ base.Dispose(disposing);
+ }
+
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
@@ -52,12 +63,200 @@ namespace ShiftOS.WinForms.Controls
public void Write(string text)
{
- this.Text += Localization.Parse(text);
+ this.HideSelection = true;
+ this.SelectionColor = ControlManager.ConvertColor(ConsoleEx.ForegroundColor);
+ this.SelectionBackColor = ControlManager.ConvertColor(ConsoleEx.BackgroundColor);
+ this.SelectionFont = ConstructFont();
+ this.AppendText(Localization.Parse(text));
+ this.HideSelection = false;
+ }
+
+ private Font ConstructFont()
+ {
+ FontStyle fs = FontStyle.Regular;
+ if (ConsoleEx.Bold)
+ fs = fs | FontStyle.Bold;
+ if (ConsoleEx.Italic)
+ fs = fs | FontStyle.Italic;
+ if (ConsoleEx.Underline)
+ fs = fs | FontStyle.Underline;
+
+ return new Font(this.Font, fs);
}
public void WriteLine(string text)
{
- this.Text += Localization.Parse(text) + Environment.NewLine;
+ Engine.AudioManager.PlayStream(Properties.Resources.writesound);
+ this.HideSelection = true;
+ this.SelectionColor = ControlManager.ConvertColor(ConsoleEx.ForegroundColor);
+ this.SelectionBackColor = ControlManager.ConvertColor(ConsoleEx.BackgroundColor);
+ this.SelectionFont = ConstructFont();
+ this.Select(this.TextLength, 0);
+ this.AppendText(Localization.Parse(text) + Environment.NewLine);
+ this.HideSelection = false;
+ }
+
+ bool quickCopying = false;
+
+ bool busy = false;
+
+ protected override void OnMouseDown(MouseEventArgs e)
+ {
+ //if right-clicking, then we initiate a quick-copy.
+ if (e.Button == MouseButtons.Right)
+ quickCopying = true;
+
+ //Override the mouse event so that it's a left-click at all times.
+ base.OnMouseDown(new MouseEventArgs(MouseButtons.Left, e.Clicks, e.X, e.Y, e.Delta));
+ }
+
+ protected override void OnMouseUp(MouseEventArgs mevent)
+ {
+ if(quickCopying == true)
+ {
+ if (!string.IsNullOrWhiteSpace(this.SelectedText))
+ {
+ this.Copy();
+ }
+ }
+ base.OnMouseUp(mevent);
+ }
+
+ protected override void OnKeyDown(KeyEventArgs e)
+ {
+ base.OnKeyDown(e);
+ if (!TerminalBackend.InStory)
+ {
+ switch (e.KeyCode) {
+ case Keys.Add:
+ case Keys.Alt:
+ case Keys.Apps:
+ case Keys.Attn:
+ case Keys.BrowserBack:
+ case Keys.BrowserFavorites:
+ case Keys.BrowserForward:
+ case Keys.BrowserHome:
+ case Keys.BrowserRefresh:
+ case Keys.BrowserSearch:
+ case Keys.BrowserStop:
+ case Keys.Cancel:
+ case Keys.Capital:
+ case Keys.Clear:
+ case Keys.Control:
+ case Keys.ControlKey:
+ case Keys.Crsel:
+ case Keys.Decimal:
+ case Keys.Divide:
+ case Keys.Down:
+ case Keys.End:
+ case Keys.Enter:
+ case Keys.EraseEof:
+ case Keys.Escape:
+ case Keys.Execute:
+ case Keys.Exsel:
+ case Keys.F1:
+ case Keys.F10:
+ case Keys.F11:
+ case Keys.F12:
+ case Keys.F13:
+ case Keys.F14:
+ case Keys.F15:
+ case Keys.F16:
+ case Keys.F17:
+ case Keys.F18:
+ case Keys.F19:
+ case Keys.F2:
+ case Keys.F20:
+ case Keys.F21:
+ case Keys.F22:
+ case Keys.F23:
+ case Keys.F24:
+ case Keys.F3:
+ case Keys.F4:
+ case Keys.F5:
+ case Keys.F6:
+ case Keys.F7:
+ case Keys.F8:
+ case Keys.F9:
+ case Keys.FinalMode:
+ case Keys.HanguelMode:
+ case Keys.HanjaMode:
+ case Keys.Help:
+ case Keys.Home:
+ case Keys.IMEAccept:
+ case Keys.IMEConvert:
+ case Keys.IMEModeChange:
+ case Keys.IMENonconvert:
+ case Keys.Insert:
+ case Keys.JunjaMode:
+ case Keys.KeyCode:
+ case Keys.LaunchApplication1:
+ case Keys.LaunchApplication2:
+ case Keys.LaunchMail:
+ case Keys.LButton:
+ case Keys.LControlKey:
+ case Keys.Left:
+ case Keys.LineFeed:
+ case Keys.LMenu:
+ case Keys.LShiftKey:
+ case Keys.LWin:
+ case Keys.MButton:
+ case Keys.MediaNextTrack:
+ case Keys.MediaPlayPause:
+ case Keys.MediaPreviousTrack:
+ case Keys.MediaStop:
+ case Keys.Menu:
+ case Keys.Modifiers:
+ case Keys.Multiply:
+ case Keys.Next:
+ case Keys.NoName:
+ case Keys.None:
+ case Keys.NumLock:
+ case Keys.Pa1:
+ case Keys.Packet:
+ case Keys.PageUp:
+ case Keys.Pause:
+ case Keys.Play:
+ case Keys.Print:
+ case Keys.PrintScreen:
+ case Keys.ProcessKey:
+ case Keys.RButton:
+ case Keys.RControlKey:
+ case Keys.Right:
+ case Keys.RMenu:
+ case Keys.RShiftKey:
+ case Keys.RWin:
+ case Keys.Scroll:
+ case Keys.Select:
+ case Keys.SelectMedia:
+ case Keys.Separator:
+ case Keys.Shift:
+ case Keys.ShiftKey:
+ case Keys.Sleep:
+ case Keys.Subtract:
+ case Keys.Tab:
+ case Keys.Up:
+ case Keys.VolumeDown:
+ case Keys.VolumeMute:
+ case Keys.VolumeUp:
+ case Keys.XButton1:
+ case Keys.XButton2:
+ case Keys.Zoom:
+
+ break;
+ default:
+ //Engine.AudioManager.PlayStream(Properties.Resources.typesound); // infernal beeping noise only enable for the trailers
+ break;
+ }
+ }
+ }
+
+ public string ThreadId = "";
+
+ public TerminalBox() : base()
+ {
+ ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
+ this.Tag = "keepbg keepfg keepfont";
}
}
}