aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ShiftOS.Objects/ShiftFS.cs12
-rw-r--r--ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs31
-rw-r--r--ShiftOS.WinForms/Applications/FileSkimmer.cs41
-rw-r--r--ShiftOS.WinForms/Resources/Shiftorium.txt28
-rw-r--r--ShiftOS.WinForms/ShiftOS.WinForms.csproj1
-rw-r--r--ShiftOS.WinForms/SkinCommands.cs24
-rw-r--r--ShiftOS_TheReturn/Paths.cs41
7 files changed, 174 insertions, 4 deletions
diff --git a/ShiftOS.Objects/ShiftFS.cs b/ShiftOS.Objects/ShiftFS.cs
index 2c6b28b..d35e5b7 100644
--- a/ShiftOS.Objects/ShiftFS.cs
+++ b/ShiftOS.Objects/ShiftFS.cs
@@ -173,6 +173,11 @@ namespace ShiftOS.Objects.ShiftFS
t.Start();
}
+ public static event Action<string> DirectoryCreated;
+ public static event Action<string> DirectoryDeleted;
+ public static event Action<string> FileWritten;
+ public static event Action<string> FileDeleted;
+
public static void CreateDirectory(string path)
{
@@ -190,6 +195,7 @@ namespace ShiftOS.Objects.ShiftFS
Name = pathlist[pathlist.Length - 1],
permissions = CurrentUser,
});
+ DirectoryCreated?.Invoke(path);
}
else
{
@@ -231,7 +237,7 @@ namespace ShiftOS.Objects.ShiftFS
var f = dir.FindFileByName(pathlist[pathlist.Length - 1]);
f.Data = Encoding.UTF8.GetBytes(contents);
}
-
+ FileWritten?.Invoke(path);
}
@@ -248,10 +254,12 @@ namespace ShiftOS.Objects.ShiftFS
if (FileExists(path))
{
dir.RemoveFile(pathlist[pathlist.Length - 1]);
+ FileDeleted?.Invoke(path);
}
else
{
dir.RemoveDirectory(pathlist[pathlist.Length - 1]);
+ DirectoryDeleted?.Invoke(path);
}
}
@@ -276,7 +284,7 @@ namespace ShiftOS.Objects.ShiftFS
var f = dir.FindFileByName(pathlist[pathlist.Length - 1]);
f.Data = contents;
}
-
+ FileWritten?.Invoke(path);
}
diff --git a/ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs b/ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs
index b75f801..63b61cc 100644
--- a/ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs
+++ b/ShiftOS.WinForms/Applications/FileSkimmer.Designer.cs
@@ -58,6 +58,9 @@ namespace ShiftOS.WinForms.Applications
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.newFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.connectToRemoteServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.moveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.panel1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
@@ -70,6 +73,8 @@ namespace ShiftOS.WinForms.Applications
this.lvitems.Size = new System.Drawing.Size(634, 332);
this.lvitems.TabIndex = 0;
this.lvitems.UseCompatibleStateImageBehavior = false;
+ this.lvitems.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.lvitems_ItemSelectionChanged);
+ this.lvitems.SelectedIndexChanged += new System.EventHandler(this.lvitems_SelectedIndexChanged);
this.lvitems.DoubleClick += new System.EventHandler(this.lvitems_DoubleClick);
//
// panel1
@@ -95,7 +100,10 @@ namespace ShiftOS.WinForms.Applications
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newFolderToolStripMenuItem,
- this.deleteToolStripMenuItem});
+ this.deleteToolStripMenuItem,
+ this.connectToRemoteServerToolStripMenuItem,
+ this.copyToolStripMenuItem,
+ this.moveToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(634, 24);
@@ -115,6 +123,24 @@ namespace ShiftOS.WinForms.Applications
this.deleteToolStripMenuItem.Size = new System.Drawing.Size(52, 20);
this.deleteToolStripMenuItem.Text = "Delete";
//
+ // connectToRemoteServerToolStripMenuItem
+ //
+ this.connectToRemoteServerToolStripMenuItem.Name = "connectToRemoteServerToolStripMenuItem";
+ this.connectToRemoteServerToolStripMenuItem.Size = new System.Drawing.Size(153, 20);
+ this.connectToRemoteServerToolStripMenuItem.Text = "Connect to remote server";
+ //
+ // copyToolStripMenuItem
+ //
+ this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
+ this.copyToolStripMenuItem.Size = new System.Drawing.Size(47, 20);
+ this.copyToolStripMenuItem.Text = "Copy";
+ //
+ // moveToolStripMenuItem
+ //
+ this.moveToolStripMenuItem.Name = "moveToolStripMenuItem";
+ this.moveToolStripMenuItem.Size = new System.Drawing.Size(49, 20);
+ this.moveToolStripMenuItem.Text = "Move";
+ //
// FileSkimmer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -140,5 +166,8 @@ namespace ShiftOS.WinForms.Applications
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem newFolderToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem connectToRemoteServerToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem moveToolStripMenuItem;
}
} \ No newline at end of file
diff --git a/ShiftOS.WinForms/Applications/FileSkimmer.cs b/ShiftOS.WinForms/Applications/FileSkimmer.cs
index b9040ae..689c718 100644
--- a/ShiftOS.WinForms/Applications/FileSkimmer.cs
+++ b/ShiftOS.WinForms/Applications/FileSkimmer.cs
@@ -259,6 +259,9 @@ namespace ShiftOS.WinForms.Applications
public void OnUpgrade()
{
+ moveToolStripMenuItem.Visible = false;
+ copyToolStripMenuItem.Visible = false;
+
}
private void newFolderToolStripMenuItem_Click(object sender, EventArgs e)
@@ -283,6 +286,44 @@ namespace ShiftOS.WinForms.Applications
}
});
}
+
+ private void lvitems_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ try
+ {
+ if (currentdir != "__system")
+ {
+ var itm = lvitems.SelectedItems[0];
+ if (itm.Tag.ToString() != "__..")
+ {
+ if (DirectoryExists(currentdir + "/" + itm.Tag.ToString()))
+ {
+ moveToolStripMenuItem.Visible = Shiftorium.UpgradeInstalled("fs_move_folder");
+ copyToolStripMenuItem.Visible = Shiftorium.UpgradeInstalled("fs_copy_folder");
+ }
+ else if (FileExists(currentdir + "/" + itm.Tag.ToString()))
+ {
+ moveToolStripMenuItem.Visible = Shiftorium.UpgradeInstalled("fs_move");
+ copyToolStripMenuItem.Visible = Shiftorium.UpgradeInstalled("fs_copy");
+ }
+ }
+ }
+ }
+ catch
+ {
+ moveToolStripMenuItem.Visible = false;
+ copyToolStripMenuItem.Visible = false;
+ }
+ }
+
+ private void lvitems_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
+ {
+ if(lvitems.SelectedItems.Count == 0)
+ {
+ moveToolStripMenuItem.Visible = false;
+ copyToolStripMenuItem.Visible = false;
+ }
+ }
}
diff --git a/ShiftOS.WinForms/Resources/Shiftorium.txt b/ShiftOS.WinForms/Resources/Shiftorium.txt
index c70f849..2cd9680 100644
--- a/ShiftOS.WinForms/Resources/Shiftorium.txt
+++ b/ShiftOS.WinForms/Resources/Shiftorium.txt
@@ -78,6 +78,34 @@
Description: "You can add numbers together, but it must be tiring to add the same number over and over. This multiplication button will make it easier for you!"
},
{
+ Name: "FS Copy",
+ Cost: 75,
+ Dependencies: "file_skimmer",
+ Description: "It is cool to be able to browse your files, but what if you need a new copy of a file? This upgrade adds a button to the File Skimmer that allows you to copy single files to new locations.",
+ Category: "Enhancements"
+ },
+ {
+ Name: "FS Move",
+ Cost: 75,
+ Dependencies: "file_skimmer",
+ Description: "Want to move files from one place to another? This upgrade adds a button to the File Skimmer that does just that!",
+ Category: "Enhancements"
+ },
+ {
+ Name: "FS Copy Folder",
+ Cost: 100,
+ Dependencies: "fs_copy",
+ Description: "You can copy single files, but what if you have a lot of files in a folder that you need to get copied over? This upgrade adds the ability to copy a folder to a new location in the File Skimmer.",
+ Category: "Enhancements"
+ },
+ {
+ Name: "FS Move Folder",
+ Cost: 100,
+ Dependencies: "fs_move",
+ Description: "Being able to move single files is great, but it takes time to move all the files in a folder to a new location. This upgrade will cut down on that time!",
+ Category: "Enhancements"
+ },
+ {
Name: "Calc Divide Button",
Cost: 800,
Dependencies: "calc_multiply_button",
diff --git a/ShiftOS.WinForms/ShiftOS.WinForms.csproj b/ShiftOS.WinForms/ShiftOS.WinForms.csproj
index b9e6910..9dc3593 100644
--- a/ShiftOS.WinForms/ShiftOS.WinForms.csproj
+++ b/ShiftOS.WinForms/ShiftOS.WinForms.csproj
@@ -295,6 +295,7 @@
<Compile Include="ScriptingTestFunctions.cs" />
<Compile Include="ShiftOSAudioProvider.cs" />
<Compile Include="ShiftOSConfigFile.cs" />
+ <Compile Include="SkinCommands.cs" />
<Compile Include="Stories\LegionStory.cs" />
<Compile Include="Tools\ColorPickerDataBackend.cs" />
<Compile Include="Tools\ControlManager.cs" />
diff --git a/ShiftOS.WinForms/SkinCommands.cs b/ShiftOS.WinForms/SkinCommands.cs
new file mode 100644
index 0000000..1f32d96
--- /dev/null
+++ b/ShiftOS.WinForms/SkinCommands.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using ShiftOS.Engine;
+using ShiftOS.Objects.ShiftFS;
+
+namespace ShiftOS.WinForms
+{
+ [Namespace("skins")]
+ public static class SkinCommands
+ {
+ [Command("reset")]
+ [RequiresUpgrade("shifter")]
+ public static bool ResetSkin()
+ {
+ Utils.WriteAllText(Paths.GetPath("skin.json"), JsonConvert.SerializeObject(new Skin()));
+ SkinEngine.LoadSkin();
+ return true;
+ }
+ }
+}
diff --git a/ShiftOS_TheReturn/Paths.cs b/ShiftOS_TheReturn/Paths.cs
index 2fc55fd..a7d32e7 100644
--- a/ShiftOS_TheReturn/Paths.cs
+++ b/ShiftOS_TheReturn/Paths.cs
@@ -40,7 +40,6 @@ namespace ShiftOS.Engine
public static void Init()
{
Locations = new Dictionary<string, string>();
- Locations.Add("classic", "C:\\ShiftOS");
Locations.Add("root", "0:");
AddPath("root", "system");
@@ -133,6 +132,46 @@ namespace ShiftOS.Engine
mount.Name = "Shared";
Utils.Mount(JsonConvert.SerializeObject(mount));
ScanForDirectories(SharedFolder, 1);
+ Utils.DirectoryCreated += (dir) =>
+ {
+ if (dir.StartsWith("1:/"))
+ {
+ string real = dir.Replace("/", "\\").Replace("1:", SharedFolder);
+ if (!System.IO.Directory.Exists(real))
+ System.IO.Directory.CreateDirectory(real);
+ }
+ };
+
+ Utils.DirectoryDeleted += (dir) =>
+ {
+ if (dir.StartsWith("1:/"))
+ {
+ string real = dir.Replace("/", "\\").Replace("1:", SharedFolder);
+ if (System.IO.Directory.Exists(real))
+ System.IO.Directory.Delete(real, true);
+ }
+ };
+
+ Utils.FileWritten += (dir) =>
+ {
+ if (dir.StartsWith("1:/"))
+ {
+ string real = dir.Replace("/", "\\").Replace("1:", SharedFolder);
+ System.IO.File.WriteAllBytes(real, ReadAllBytes(dir));
+ }
+ };
+
+ Utils.FileDeleted += (dir) =>
+ {
+ if (dir.StartsWith("1:/"))
+ {
+ string real = dir.Replace("/", "\\").Replace("1:", SharedFolder);
+ if (System.IO.File.Exists(real))
+ System.IO.File.Delete(real);
+ }
+ };
+
+
}