Skip to content

Commit

Permalink
User commands can now override built-in correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
tig committed Oct 22, 2019
1 parent f3c4ecb commit 923e5d2
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 32 deletions.
2 changes: 1 addition & 1 deletion Installer/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.7.72
2.0.7.77
52 changes: 21 additions & 31 deletions src/Commands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -221,12 +221,8 @@ private static CommandTable LoadBuiltInCommands() {
Assembly.GetExecutingAssembly()
.GetManifestResourceStream("MCEControl.Resources.Builtin.commands"));
cmds = (CommandTable)serializer.Deserialize(reader);
foreach (var cmd in cmds.Commands) {
if (cmds.hashTable.ContainsKey(cmd.Key.ToUpper(CultureInfo.InvariantCulture))) {
cmds.hashTable.Remove(cmd.Key.ToUpper(CultureInfo.InvariantCulture));
}
cmds.hashTable.Add(cmd.Key.ToUpper(CultureInfo.InvariantCulture), cmd);
}
foreach (var cmd in cmds.Commands)
cmds.Add(cmd);
reader.Dispose();
}
catch (Exception ex) {
Expand All @@ -237,26 +233,14 @@ private static CommandTable LoadBuiltInCommands() {
}

// Add the built-ins
foreach (Command cmd in McecCommand.Commands) {
if (cmds.hashTable.ContainsKey(cmd.Key.ToUpper(CultureInfo.InvariantCulture))) {
cmds.hashTable.Remove(cmd.Key.ToUpper(CultureInfo.InvariantCulture));
}
cmds.hashTable.Add(cmd.Key.ToUpper(CultureInfo.InvariantCulture), cmd);
}
foreach (Command cmd in McecCommand.Commands)
cmds.Add(cmd);

foreach (Command cmd in MouseCommands.Commands) {
if (cmds.hashTable.ContainsKey(cmd.Key.ToUpper(CultureInfo.InvariantCulture))) {
cmds.hashTable.Remove(cmd.Key.ToUpper(CultureInfo.InvariantCulture));
}
cmds.hashTable.Add(cmd.Key.ToUpper(CultureInfo.InvariantCulture), cmd);
}
foreach (Command cmd in MouseCommands.Commands)
cmds.Add(cmd);

foreach (Command cmd in ShutdownCommands.Commands) {
if (cmds.hashTable.ContainsKey(cmd.Key.ToUpper(CultureInfo.InvariantCulture))) {
cmds.hashTable.Remove(cmd.Key.ToUpper(CultureInfo.InvariantCulture));
}
cmds.hashTable.Add(cmd.Key.ToUpper(CultureInfo.InvariantCulture), cmd);
}
foreach (Command cmd in ShutdownCommands.Commands)
cmds.Add(cmd);

// Populate default VK_ codes
foreach (VirtualKeyCode vk in Enum.GetValues(typeof(VirtualKeyCode))) {
Expand Down Expand Up @@ -284,13 +268,8 @@ private void LoadUserCommands() {
XmlReader reader = new XmlTextReader(fs);
CommandTable userCmds = (CommandTable)serializer.Deserialize(reader);
Logger.Instance.Log4.Info($"Commands: Loading {userCmds.Commands.Length} user commands from {userCommandsFile}.");
foreach (var cmd in userCmds.Commands) {
if (hashTable.ContainsKey(cmd.Key.ToUpper(CultureInfo.InvariantCulture))) {
hashTable.Remove(cmd.Key.ToUpper(CultureInfo.InvariantCulture));
}
hashTable.Add(cmd.Key.ToUpper(CultureInfo.InvariantCulture), cmd);
Logger.Instance.Log4.Info($"Commands: User command added: {cmd.Key}");
}
foreach (var cmd in userCmds.Commands)
Add(cmd, true);
reader.Close();
}
catch (FileNotFoundException) {
Expand Down Expand Up @@ -328,6 +307,17 @@ private void LoadUserCommands() {
OnChangedEvent();
}

private void Add(Command cmd, bool log = false) {
if (!string.IsNullOrEmpty(cmd.Key)) {
if (this.hashTable.ContainsKey(cmd.Key.ToUpper(CultureInfo.InvariantCulture))) {
this.hashTable.Remove(cmd.Key.ToUpper(CultureInfo.InvariantCulture));
}
this.hashTable.Add(cmd.Key.ToUpper(CultureInfo.InvariantCulture), cmd);
if (log) Logger.Instance.Log4.Info($"Commands: Command added: {cmd.Key}");
}
else Logger.Instance.Log4.Info($"Commands: Error parsing command: {cmd.ToString()}");
}

//private static void GenerateXSD() {
// var schemas = new XmlSchemas();
// var exporter = new XmlSchemaExporter(schemas);
Expand Down

0 comments on commit 923e5d2

Please sign in to comment.