ShiftOS-C-/source/WindowsFormsApplication1/Apps/TextPad.cs

240 lines
8.6 KiB
C#
Raw Permalink Normal View History

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ShiftOS
{
public partial class TextPad : Form
{
private bool codepointscooldown = false;
private int codepointsearned = 0;
private bool needtosave = false;
public TextPad()
{
InitializeComponent();
}
private void TextPad_Load(object sender, EventArgs e)
{
txtuserinput.Size = new Size(txtuserinput.Size.Width, txtuserinput.Size.Height + pnloptions.Height);
setupoptions();
}
// ERROR: Handles clauses are not supported in C#
private void pnlbreak_MouseEnter(object sender, EventArgs e)
{
if (pnloptions.Visible == false)
{
pnlbreak.BackgroundImage = Properties.Resources.downarrow;
pnloptions.Show();
txtuserinput.Size = new Size(txtuserinput.Size.Width, txtuserinput.Size.Height - pnloptions.Height);
}
else {
pnlbreak.BackgroundImage = Properties.Resources.uparrow;
pnloptions.Hide();
txtuserinput.Size = new Size(txtuserinput.Size.Width, txtuserinput.Size.Height + pnloptions.Height);
}
}
// ERROR: Handles clauses are not supported in C#
private void btnnew_Click(object sender, EventArgs e)
{
if (needtosave == true)
{
API.CreateInfoboxSession("Textpad - Save?", "It appears that your text document currently contains unsaved changes." + Environment.NewLine + Environment.NewLine + "Are you sure you want to start a new document without saving the changes?", infobox.InfoboxMode.YesNo);
API.InfoboxSession.FormClosing += (object s, FormClosingEventArgs a) =>
{
string result = API.GetInfoboxResult();
switch(result)
{
case "Yes":
codepointsearned = 0;
this.txtuserinput.Text = "";
break;
case "No":
SaveFile();
break;
}
};
}
else {
makenewdoc();
}
}
private void SaveFile()
{
if (API.Upgrades["trmfiles"] == true)
{
API.CreateFileSkimmerSession(".txt;.trm", File_Skimmer.FileSkimmerMode.Save);
}
else
{
API.CreateFileSkimmerSession(".txt", File_Skimmer.FileSkimmerMode.Save);
}
API.FileSkimmerSession.FormClosing += (object se, FormClosingEventArgs ea) =>
{
string res = API.GetFSResult();
if (res != "fail")
{
File.WriteAllText(res, txtuserinput.Text);
}
};
}
private void SaveFile(string text)
{
if (API.Upgrades["trmfiles"] == true)
{
API.CreateFileSkimmerSession(".txt;.trm", File_Skimmer.FileSkimmerMode.Save);
}
else
{
API.CreateFileSkimmerSession(".txt", File_Skimmer.FileSkimmerMode.Save);
}
API.FileSkimmerSession.FormClosing += (object se, FormClosingEventArgs ea) =>
{
string res = API.GetFSResult();
if (res != "fail")
{
File.WriteAllText(res, text);
}
};
}
public void makenewdoc()
{
txtuserinput.Text = "";
needtosave = false;
codepointsearned = 0;
}
// ERROR: Handles clauses are not supported in C#
private void btnsave_Click(object sender, EventArgs e)
{
SaveFile();
}
// ERROR: Handles clauses are not supported in C#
private void btnopen_Click(object sender, EventArgs e)
{
API.CreateFileSkimmerSession(".txt", File_Skimmer.FileSkimmerMode.Open);
API.FileSkimmerSession.FormClosing += (object s, FormClosingEventArgs a) =>
{
if (needtosave == true)
{
API.CreateInfoboxSession("Textpad - Save?", "It appears that your text document currently contains unsaved changes." + Environment.NewLine + Environment.NewLine + "Are you sure you want to start a new document without saving the changes?", infobox.InfoboxMode.YesNo);
API.InfoboxSession.FormClosing += (object se, FormClosingEventArgs ea) =>
{
string result = API.GetInfoboxResult();
switch (result)
{
case "Yes":
codepointsearned = 0;
string res = API.GetFSResult();
if (res != "fail")
{
string fContents = File.ReadAllText(res);
txtuserinput.Text = fContents;
}
break;
case "No":
string fcontents = txtuserinput.Text;
SaveFile(fcontents);
string res2 = API.GetFSResult();
if (res2 != "fail")
{
string fContents = File.ReadAllText(res2);
txtuserinput.Text = fContents;
}
break;
}
};
}
else {
string res = API.GetFSResult();
if (res != "fail")
{
try {
string fContents = File.ReadAllText(res);
txtuserinput.Text = fContents;
}
catch(Exception ex)
{
txtuserinput.Text = ex.Message;
}
}
}
};
}
public void setupoptions()
{
if (API.Upgrades["textpadnew"] == true)
btnnew.Show();
else
btnnew.Hide();
if (API.Upgrades["textpadopen"] == true)
btnopen.Show();
else
btnopen.Hide();
if (API.Upgrades["textpadsave"] == true)
btnsave.Show();
else
btnsave.Hide();
if (API.Upgrades["textpadnew"] == false && API.Upgrades["textpadsave"] == false && API.Upgrades["textpadopen"] == false)
pnlbreak.Hide();
}
// ERROR: Handles clauses are not supported in C#
private void txtuserinput_TextChanged(object sender, EventArgs e)
{
needtosave = true;
if (codepointscooldown == true)
{
}
else {
codepointsearned = codepointsearned + 1;
codepointscooldown = true;
tmrcodepointcooldown.Start();
}
if (Viruses.InfectedWith("keyboardfucker"))
{
var rnd = new Random();
if (rnd.Next(0, 20) == 10)
{
txtuserinput.Text += Viruses.KeyboardInceptor.Intercept();
}
}
}
// ERROR: Handles clauses are not supported in C#
private void tmrcodepointcooldown_Tick(object sender, EventArgs e)
{
codepointscooldown = false;
tmrcodepointcooldown.Stop();
}
// ERROR: Handles clauses are not supported in C#
private void tmrshowearnedcodepoints_Tick(object sender, EventArgs e)
{
API.CreateInfoboxSession("TextPad", "You have earned " + codepointsearned.ToString() + " Codepoints from typing up and saving that document!", infobox.InfoboxMode.Info);
API.AddCodepoints(codepointsearned);
tmrshowearnedcodepoints.Stop();
}
}
}