aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Frontend/Apps
diff options
context:
space:
mode:
authorRogueAI42 <[email protected]>2017-07-31 19:44:51 +1000
committerRogueAI42 <[email protected]>2017-07-31 19:44:51 +1000
commit23bd15d7cf7522fb05a5f2ea8e0a89d3a80efdc8 (patch)
treefa5dc08a89014d79565f30b22c94403845239cc3 /ShiftOS.Frontend/Apps
parentd953797369cd72a718b801e0036ce9ebb181f24f (diff)
parent6366721315d8a62febeb5c0c0340f15ab7d35963 (diff)
downloadshiftos_thereturn-23bd15d7cf7522fb05a5f2ea8e0a89d3a80efdc8.tar.gz
shiftos_thereturn-23bd15d7cf7522fb05a5f2ea8e0a89d3a80efdc8.tar.bz2
shiftos_thereturn-23bd15d7cf7522fb05a5f2ea8e0a89d3a80efdc8.zip
Merge remote-tracking branch 'upstream/monogame' into monogame
Diffstat (limited to 'ShiftOS.Frontend/Apps')
-rw-r--r--ShiftOS.Frontend/Apps/Terminal.cs55
1 files changed, 29 insertions, 26 deletions
diff --git a/ShiftOS.Frontend/Apps/Terminal.cs b/ShiftOS.Frontend/Apps/Terminal.cs
index 343bb5d..4af1196 100644
--- a/ShiftOS.Frontend/Apps/Terminal.cs
+++ b/ShiftOS.Frontend/Apps/Terminal.cs
@@ -164,34 +164,37 @@ namespace ShiftOS.Frontend.Apps
/// <returns>An absolute fucking mess. Seriously, can someone fix this method so it uhh WORKS PROPERLY?</returns>
public System.Drawing.Point GetPointAtIndex(Graphics gfx)
{
- int vertMeasure = 2;
+ var font = new Font(LoadedSkin.TerminalFont.Name, LoadedSkin.TerminalFont.Size * _zoomFactor, LoadedSkin.TerminalFont.Style);
+
+ int _textHeight = (int)gfx.SmartMeasureString("#", font).Height;
+ float vertMeasure = 2;
int horizMeasure = 2;
if (string.IsNullOrEmpty(Text))
- return new System.Drawing.Point(horizMeasure, vertMeasure);
+ return new System.Drawing.Point(horizMeasure, (int)vertMeasure);
int lineindex = 0;
int line = GetCurrentLine();
for (int l = 0; l < line; l++)
{
- if (string.IsNullOrEmpty(Lines[l]))
+ lineindex += Lines[l].Length;
+ if (string.IsNullOrWhiteSpace(Lines[l]))
{
- vertMeasure += LoadedSkin.TerminalFont.Height * _zoomFactor;
+ vertMeasure += _textHeight;
continue;
}
- lineindex += Lines[l].Length;
- var stringMeasure = gfx.SmartMeasureString(Lines[l] == "\r" ? " " : Lines[l], LoadedSkin.TerminalFont, Width - 4);
- vertMeasure += (int)stringMeasure.Height * _zoomFactor;
-
+ var stringMeasure = gfx.SmartMeasureString(Lines[l], font, Width - 4);
+ vertMeasure += (int)(stringMeasure.Height);
+
}
- var lnMeasure = gfx.SmartMeasureString(Text.Substring(lineindex, Index - lineindex), LoadedSkin.TerminalFont);
- int w = (int)Math.Floor(lnMeasure.Width) * _zoomFactor;
+ var lnMeasure = gfx.SmartMeasureString(Text.Substring(lineindex, Index - lineindex), font);
+ int w = (int)Math.Floor(lnMeasure.Width);
while (w > Width - 4)
{
w = w - (Width - 4);
- vertMeasure += (int)lnMeasure.Height * _zoomFactor;
+ vertMeasure += (int)lnMeasure.Height;
}
horizMeasure += w;
- return new System.Drawing.Point(horizMeasure, vertMeasure);
+ return new System.Drawing.Point(horizMeasure, (int)vertMeasure);
}
private PointF CaretPosition = new PointF(2, 2);
@@ -199,7 +202,7 @@ namespace ShiftOS.Frontend.Apps
protected override void OnKeyEvent(KeyEvent a)
{
- if(a.ControlDown && (a.Key == Keys.OemPlus || a.Key == Keys.Add))
+ if (a.ControlDown && (a.Key == Keys.OemPlus || a.Key == Keys.Add))
{
_zoomFactor *= 2;
RecalculateLayout();
@@ -209,7 +212,7 @@ namespace ShiftOS.Frontend.Apps
if (a.ControlDown && (a.Key == Keys.OemMinus || a.Key == Keys.Subtract))
{
- _zoomFactor = Math.Max(1, _zoomFactor/2);
+ _zoomFactor = Math.Max(1, _zoomFactor / 2);
RecalculateLayout();
Invalidate();
return;
@@ -221,7 +224,7 @@ namespace ShiftOS.Frontend.Apps
if (!PerformTerminalBehaviours)
{
Text = Text.Insert(Index, Environment.NewLine);
- Index+=2;
+ Index += 2;
RecalculateLayout();
Invalidate();
return;
@@ -239,12 +242,12 @@ namespace ShiftOS.Frontend.Apps
var text2 = text[text.Length - 1];
var text3 = "";
var text4 = Regex.Replace(text2, @"\t|\n|\r", "");
- WriteLine("");
+ WriteLine("");
- if (TerminalBackend.PrefixEnabled)
- {
- text3 = text4.Remove(0, $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ".Length);
- }
+ if (TerminalBackend.PrefixEnabled)
+ {
+ text3 = text4.Remove(0, TerminalBackend.ShellOverride.Length);
+ }
if (!string.IsNullOrWhiteSpace(text3))
{
TerminalBackend.LastCommand = text3;
@@ -288,7 +291,7 @@ namespace ShiftOS.Frontend.Apps
{
var tostring3 = Lines[Lines.Length - 1];
var tostringlen = tostring3.Length + 1;
- var workaround = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ";
+ var workaround = TerminalBackend.ShellOverride;
var derp = workaround.Length + 1;
if (tostringlen != derp)
{
@@ -310,9 +313,9 @@ namespace ShiftOS.Frontend.Apps
Debug.WriteLine("Drunky alert in terminal.");
}
}
- else if(a.Key == Keys.Right)
+ else if (a.Key == Keys.Right)
{
- if(Index < Text.Length)
+ if (Index < Text.Length)
{
Index++;
AppearanceManager.CurrentPosition++;
@@ -326,7 +329,7 @@ namespace ShiftOS.Frontend.Apps
{
var getstring = Lines[Lines.Length - 1];
var stringlen = getstring.Length + 1;
- var header = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ";
+ var header = TerminalBackend.ShellOverride;
var headerlen = header.Length + 1;
var selstart = Index;
var remstrlen = Text.Length - stringlen;
@@ -343,7 +346,7 @@ namespace ShiftOS.Frontend.Apps
else if (a.Key == Keys.Up && PerformTerminalBehaviours)
{
var tostring3 = Lines[Lines.Length - 1];
- if (tostring3 == $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ")
+ if (tostring3 == TerminalBackend.ShellOverride)
Console.Write(TerminalBackend.LastCommand);
ConsoleEx.OnFlush?.Invoke();
return;
@@ -360,7 +363,7 @@ namespace ShiftOS.Frontend.Apps
Text = Text.Insert(Index, a.KeyChar.ToString());
Index++;
AppearanceManager.CurrentPosition++;
-// RecalculateLayout();
+ // RecalculateLayout();
InvalidateTopLevel();
}
}