public override bool ExecuteAction(ActionProgramRun ap) { List <string> ctrl = FromString(UserData); if (ctrl != null) { List <string> exp; if (ap.functions.ExpandStrings(ctrl, out exp) != ConditionFunctions.ExpandResult.Failed) { string cmdname = exp[0].ToLower(); string nextword = exp.Count >= 2 ? exp[1] : null; string thirdword = exp.Count >= 3 ? exp[2] : null; string fourthword = exp.Count >= 4 ? exp[3] : null; string fifthword = exp.Count >= 5 ? exp[4] : null; if (cmdname == null) { ap.ReportError("Missing command in Perform"); } else if (cmdname.Equals("3dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open3DMap(null); } else if (cmdname.Equals("2dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open2DMap(); } else if (cmdname.Equals("edsm")) { ActionController ac = (ap.actioncontroller as ActionController); EliteDangerousCore.EDSM.EDSMClass edsm = new EliteDangerousCore.EDSM.EDSMClass(); if (edsm.ValidCredentials) { EliteDangerousCore.EDSM.EDSMJournalSync.SendEDSMEvents(ap.actioncontroller.LogLine, ac.DiscoveryForm.history); } else { ap.ReportError("No valid EDSM Credentials"); } } else if (cmdname.Equals("refresh")) { (ap.actioncontroller as ActionController).DiscoveryForm.RefreshHistoryAsync(); } else if (cmdname.Equals("url")) { if (nextword != null && nextword.StartsWith("http:", StringComparison.InvariantCultureIgnoreCase) || nextword.StartsWith("https:", StringComparison.InvariantCultureIgnoreCase)) // security.. { System.Diagnostics.Process.Start(nextword); } else { ap.ReportError("Perform url must start with http"); } } else if (cmdname.Equals("configurevoice")) { (ap.actioncontroller as ActionController).ConfigureVoice(nextword ?? "Configure Voice Synthesis"); } else if (cmdname.Equals("manageaddons")) { (ap.actioncontroller as ActionController).ManageAddOns(); } else if (cmdname.Equals("editaddons")) { (ap.actioncontroller as ActionController).EditAddOns(); } else if (cmdname.Equals("editlastpack")) { (ap.actioncontroller as ActionController).EditLastPack(); } else if (cmdname.Equals("editpack")) { if (nextword != null) { if (!(ap.actioncontroller as ActionController).EditPack(nextword)) { ap.ReportError("Pack " + nextword + " not found"); } } else { ap.ReportError("EditPack requires a pack name"); } } else if (cmdname.Equals("editspeechtext")) { (ap.actioncontroller as ActionController).EditSpeechText(); } else if (cmdname.Equals("configurewave")) { (ap.actioncontroller as ActionController).ConfigureWave(nextword ?? "Configure Wave Output"); } else if (cmdname.Equals("enableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(true, true); } else if (cmdname.Equals("enableeliteinputnoaxis")) { (ap.actioncontroller as ActionController).EliteInput(true, false); } else if (cmdname.Equals("disableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(false, false); } else if (cmdname.Equals("enablevoicerecognition")) { if (nextword != null) { ap["VoiceRecognitionEnabled"] = ((ap.actioncontroller as ActionController).VoiceReconOn(nextword)).ToStringIntValue(); } else { ap.ReportError("EnableVoiceRecognition requires a culture"); } } else if (cmdname.Equals("disablevoicerecognition")) { (ap.actioncontroller as ActionController).VoiceReconOff(); } else if (cmdname.Equals("beginvoicerecognition")) { (ap.actioncontroller as ActionController).VoiceLoadEvents(); } else if (cmdname.Equals("voicerecognitionconfidencelevel")) { float?conf = nextword.InvariantParseFloatNull(); if (conf != null) { (ap.actioncontroller as ActionController).VoiceReconConfidence(conf.Value); } else { ap.ReportError("VoiceRecognitionConfidencelLevel requires a confidence value"); } } else if (cmdname.Equals("voicerecognitionparameters")) { int?babble = nextword.InvariantParseIntNull(); // babble at end int?initialsilence = thirdword.InvariantParseIntNull(); // silence at end int?endsilence = fourthword.InvariantParseIntNull(); // unambigious timeout int?endsilenceambigious = fifthword.InvariantParseIntNull(); // ambiguous timeout if (babble != null && initialsilence != null && endsilence != null && endsilenceambigious != null) { (ap.actioncontroller as ActionController).VoiceReconParameters(babble.Value, initialsilence.Value, endsilence.Value, endsilenceambigious.Value); } else { ap.ReportError("VoiceRecognitionParameters requires four values"); } } else if (cmdname.Equals("voicerecognitionphrases")) { ap["Phrases"] = (ap.actioncontroller as ActionController).VoicePhrases(Environment.NewLine); } else if (cmdname.Equals("listeliteinput")) { ap["EliteInput"] = (ap.actioncontroller as ActionController).EliteInputList(); ap["EliteInputCheck"] = (ap.actioncontroller as ActionController).EliteInputCheck(); } else if (cmdname.Equals("voicenames")) { ap["VoiceNames"] = (ap.actioncontroller as ActionController).SpeechSynthesizer.GetVoiceNames().QuoteStrings(); } else if (cmdname.Equals("bindings")) { ap["Bindings"] = (ap.actioncontroller as ActionController).FrontierBindings.ListBindings(); } else if (cmdname.Equals("bindingvalues")) { ap["BindingValues"] = (ap.actioncontroller as ActionController).FrontierBindings.ListValues(); } else if (cmdname.Equals("datadownload")) { string gitfolder = nextword; string filewildcard = thirdword; string directory = fourthword; string optclean = fifthword; if (gitfolder != null && filewildcard != null && directory != null) { if (System.IO.Directory.Exists(directory)) { BaseUtils.GitHubClass ghc = new BaseUtils.GitHubClass(EDDiscovery.Properties.Resources.URLGithubDataDownload); bool worked = ghc.Download(directory, gitfolder, filewildcard, optclean != null && optclean == "1"); ap["Downloaded"] = worked.ToStringIntValue(); } else { ap.ReportError("Download folder " + directory + " does not exist"); } } else { ap.ReportError("Missing parameters in Perform Datadownload"); } } else if (cmdname.Equals("generateevent")) { if (nextword != null) { ActionEvent f = ActionEventEDList.EventList(excludejournal: true).Find(x => x.TriggerName.Equals(nextword)); if (f != null) { Conditions.ConditionVariables c = new Conditions.ConditionVariables(); for (int w = 2; w < exp.Count; w++) { string vname = exp[w]; int asterisk = vname.IndexOf('*'); if (asterisk >= 0) // pass in name* no complaining if not there { string prefix = vname.Substring(0, asterisk); foreach (string jkey in ap.variables.NameEnumuerable) { if (jkey.StartsWith(prefix)) { c[jkey] = ap.variables[jkey]; } } } else { if (ap.variables.Exists(vname)) // pass in explicit name { c[vname] = ap.variables[vname]; } else { ap.ReportError("No such variable '" + vname + "'"); return(true); } } } if (f.TriggerName.StartsWith("UI") || f.TriggerName.Equals("onEliteUIEvent")) { c["EventClass_EventTimeUTC"] = DateTime.UtcNow.ToStringUS(); c["EventClass_EventTypeID"] = c["EventClass_EventTypeStr"] = f.TriggerName.Substring(2); c["EventClass_UIDisplayed"] = EDDConfig.Instance.ShowUIEvents ? "1" : "0"; (ap.actioncontroller as ActionController).ActionRun(Actions.ActionEventEDList.onUIEvent, c); } (ap.actioncontroller as ActionController).ActionRun(f, c, now: true); } else { try { EliteDangerousCore.JournalEntry je = EliteDangerousCore.JournalEntry.CreateJournalEntry(nextword); ap["GenerateEventName"] = je.EventTypeStr; if (je is EliteDangerousCore.JournalEvents.JournalUnknown) { ap.ReportError("Unknown journal event"); } else { EliteDangerousCore.HistoryEntry he = EliteDangerousCore.HistoryEntry.FromJournalEntry(je, null, out bool journalupdate); (ap.actioncontroller as ActionController).ActionRunOnEntry(he, Actions.ActionEventEDList.NewEntry(he), now: true); } } catch { ap.ReportError("Journal event not in correct JSON form"); } } } else { ap.ReportError("No journal event or event name after GenerateEvent"); } } else { ap.ReportError("Unknown command " + cmdname + " in Performaction"); } } else { ap.ReportError(exp[0]); } } else { ap.ReportError("Perform command line not in correct format"); } return(true); }
public override bool ExecuteAction(ActionProgramRun ap) { string res; if (ap.functions.ExpandString(UserData, out res) != Functions.ExpandResult.Failed) { HistoryList hl = (ap.actioncontroller as ActionController).HistoryList; StringParser sp = new StringParser(res); string prefix = "EC_"; string cmdname = sp.NextWordLCInvariant(" "); if (cmdname != null && cmdname.Equals("prefix")) { prefix = sp.NextWord(); if (prefix == null) { ap.ReportError("Missing name after Prefix in Event"); return(true); } cmdname = sp.NextWordLCInvariant(" "); } int jidindex = -1; if (cmdname != null && (cmdname.Equals("from") || cmdname.Equals("thpos"))) { long?jid; if (cmdname.Equals("thpos")) { HistoryEntry he = (ap.actioncontroller as ActionController).DiscoveryForm.PrimaryCursor.GetCurrentHistoryEntry; if (he == null) { ReportEntry(ap, null, 0, prefix); return(true); } jid = he.Journalid; } else { jid = sp.NextWord().InvariantParseLongNull(); if (!jid.HasValue) { ap.ReportError("Non integer JID after FROM in Event"); return(true); } } jidindex = hl.GetIndex(jid.Value); if (jidindex == -1) { ReportEntry(ap, null, 0, prefix); return(true); } cmdname = sp.NextWordLCInvariant(" "); } if (cmdname == null) { if (jidindex != -1) { ReportEntry(ap, hl.EntryOrder, jidindex, prefix); } else { ap.ReportError("No commands in Event"); } return(true); } bool fwd = cmdname.Equals("forward") || cmdname.Equals("first"); bool back = cmdname.Equals("backward") || cmdname.Equals("last"); if (fwd || back) { List <string> eventnames = sp.NextOptionallyBracketedList(); bool whereasfirst = eventnames.Count == 1 && eventnames[0].Equals("WHERE", StringComparison.InvariantCultureIgnoreCase); ConditionLists cond = new ConditionLists(); string nextword; if (whereasfirst || ((nextword = sp.NextWord()) != null && nextword.Equals("WHERE", StringComparison.InvariantCultureIgnoreCase))) { if (whereasfirst) // clear out event names if it was WHERE cond.. { eventnames.Clear(); } string resc = cond.Read(sp.LineLeft); // rest of it is the condition.. if (resc != null) { ap.ReportError(resc + " in Where of Event"); return(true); } } List <HistoryEntry> hltest; if (jidindex == -1) // if no JID given.. { hltest = hl.EntryOrder; // the whole list } else if (fwd) { hltest = hl.EntryOrder.GetRange(jidindex + 1, hl.Count - (jidindex + 1)); // cut down list, excluding this entry } else { hltest = hl.EntryOrder.GetRange(0, jidindex); } if (eventnames.Count > 0) { hltest = (from h in hltest where eventnames.Contains(h.journalEntry.EventTypeStr, StringComparer.OrdinalIgnoreCase) select h).ToList(); } if (cond.Count > 0) // if we have filters, apply, filter out, true only stays { hltest = UserControls.FilterHelpers.CheckFilterTrue(hltest, cond, new Variables()); // apply filter.. } if (fwd) { ReportEntry(ap, hltest, 0, prefix); } else { ReportEntry(ap, hltest, hltest.Count - 1, prefix); } return(true); } else { if (jidindex == -1) { ap.ReportError("Valid JID must be given for command " + cmdname + " in Event"); } else { HistoryEntry he = hl.EntryOrder[jidindex]; if (cmdname.Equals("action")) { int count = (ap.actioncontroller as ActionController).ActionRunOnEntry(he, Actions.ActionEventEDList.EventCmd(he), now: true); ap[prefix + "Count"] = count.ToString(System.Globalization.CultureInfo.InvariantCulture); } else if (cmdname.Equals("edsm")) { (ap.actioncontroller as ActionController).HistoryList.FillEDSM(he); long?id_edsm = he.System.EDSMID; if (id_edsm <= 0) { id_edsm = null; } EliteDangerousCore.EDSM.EDSMClass edsm = new EliteDangerousCore.EDSM.EDSMClass(); string url = edsm.GetUrlToEDSMSystem(he.System.Name, id_edsm); ap[prefix + "URL"] = url; if (url.Length > 0) // may pass back empty string if not known, this solves another exception { System.Diagnostics.Process.Start(url); } } else if (cmdname.Equals("ross")) { (ap.actioncontroller as ActionController).HistoryList.FillEDSM(he); string url = ""; if (he.System.EDDBID > 0) { url = Properties.Resources.URLRossSystem + he.System.EDDBID.ToString(); System.Diagnostics.Process.Start(url); } ap[prefix + "URL"] = url; } else if (cmdname.Equals("eddb")) { (ap.actioncontroller as ActionController).HistoryList.FillEDSM(he); string url = ""; if (he.System.EDDBID > 0) { url = Properties.Resources.URLEDDBSystem + he.System.EDDBID.ToString(); System.Diagnostics.Process.Start(url); } ap[prefix + "URL"] = url; } else if (cmdname.Equals("info")) { ActionVars.HistoryEventFurtherInfo(ap, hl, he, prefix); ActionVars.SystemVarsFurtherInfo(ap, hl, he.System, prefix); ActionVars.ShipModuleInformation(ap, he.ShipInformation, prefix); } else if (cmdname.Equals("missions")) { ActionVars.MissionInformation(ap, he.MissionList, prefix); } else if (cmdname.Equals("setstartmarker")) { he.journalEntry.SetStartFlag(); } else if (cmdname.Equals("setstopmarker")) { he.journalEntry.SetEndFlag(); } else if (cmdname.Equals("clearstartstopmarker")) { he.journalEntry.ClearStartEndFlag(); } else if (cmdname.Equals("note")) { string note = sp.NextQuotedWord(); if (note != null) { he.SetJournalSystemNoteText(note, true, EDCommander.Current.SyncToEdsm); (ap.actioncontroller as ActionController).DiscoveryForm.NoteChanged(this, he, true); } else { ap.ReportError("Missing note text in Event NOTE"); } } else { ap.ReportError("Unknown command " + cmdname + " in Event"); } } } } else { ap.ReportError(res); } return(true); }
public override bool ExecuteAction(ActionProgramRun ap) { string res; if (ap.functions.ExpandString(UserData, out res) != Conditions.ConditionFunctions.ExpandResult.Failed) { StringParser sp = new StringParser(res); string cmdname = sp.NextWord(" ", lowercase: true); if (cmdname == null) { ap.ReportError("Missing command in Perform"); } else if (cmdname.Equals("3dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open3DMap(null); } else if (cmdname.Equals("2dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open2DMap(); } else if (cmdname.Equals("edsm")) { EliteDangerousCore.EDSM.EDSMClass edsm = new EliteDangerousCore.EDSM.EDSMClass(); ActionController ac = (ap.actioncontroller as ActionController); ac.DiscoveryForm.EdsmSync.StartSync(edsm, ac.DiscoveryForm.history, EliteDangerousCore.EDCommander.Current.SyncToEdsm, EliteDangerousCore.EDCommander.Current.SyncFromEdsm, EDDiscovery.EDDConfig.Instance.DefaultMapColour); } else if (cmdname.Equals("refresh")) { (ap.actioncontroller as ActionController).DiscoveryForm.RefreshHistoryAsync(checkedsm: true); } else if (cmdname.Equals("url")) { string url = sp.LineLeft; if (url.StartsWith("http:", StringComparison.InvariantCultureIgnoreCase) || url.StartsWith("https:", StringComparison.InvariantCultureIgnoreCase)) // security.. { System.Diagnostics.Process.Start(url); } else { ap.ReportError("Perform url must start with http"); } } else if (cmdname.Equals("configurevoice")) { (ap.actioncontroller as ActionController).ConfigureVoice(sp.NextQuotedWord() ?? "Configure Voice Synthesis"); } else if (cmdname.Equals("manageaddons")) { (ap.actioncontroller as ActionController).ManageAddOns(); } else if (cmdname.Equals("editaddons")) { (ap.actioncontroller as ActionController).EditAddOns(); } else if (cmdname.Equals("editlastpack")) { (ap.actioncontroller as ActionController).EditLastPack(); } else if (cmdname.Equals("editpack")) { string pack = sp.NextQuotedWord(); if (pack != null) { if (!(ap.actioncontroller as ActionController).EditPack(pack)) { ap.ReportError("Pack " + pack + " not found"); } } else { ap.ReportError("EditPack requires a pack name"); } } else if (cmdname.Equals("editspeechtext")) { (ap.actioncontroller as ActionController).EditSpeechText(); } else if (cmdname.Equals("configurewave")) { (ap.actioncontroller as ActionController).ConfigureWave(sp.NextQuotedWord() ?? "Configure Wave Output"); } else if (cmdname.Equals("enableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(true, true); } else if (cmdname.Equals("enableeliteinputnoaxis")) { (ap.actioncontroller as ActionController).EliteInput(true, false); } else if (cmdname.Equals("disableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(false, false); } else if (cmdname.Equals("enablevoicerecognition")) { string culture = sp.NextQuotedWord(); if (culture != null) { (ap.actioncontroller as ActionController).VoiceReconOn(culture); } else { ap.ReportError("EnableVoiceRecognition requires a culture"); } } else if (cmdname.Equals("disablevoicerecognition")) { (ap.actioncontroller as ActionController).VoiceReconOff(); } else if (cmdname.Equals("beginvoicerecognition")) { (ap.actioncontroller as ActionController).VoiceLoadEvents(); } else if (cmdname.Equals("voicerecognitionconfidencelevel")) { float?conf = sp.NextWord().InvariantParseFloatNull(); if (conf != null) { (ap.actioncontroller as ActionController).VoiceReconConfidence(conf.Value); } else { ap.ReportError("VoiceRecognitionConfidencelLevel requires a confidence value"); } } else if (cmdname.Equals("voicerecognitionparameters")) { int?babble = sp.NextWordComma().InvariantParseIntNull(); // babble at end int?initialsilence = sp.NextWordComma().InvariantParseIntNull(); // silence at end int?endsilence = sp.NextWordComma().InvariantParseIntNull(); // unambigious timeout int?endsilenceambigious = sp.NextWordComma().InvariantParseIntNull(); // ambiguous timeout if (babble != null && initialsilence != null && endsilence != null && endsilenceambigious != null) { (ap.actioncontroller as ActionController).VoiceReconParameters(babble.Value, initialsilence.Value, endsilence.Value, endsilenceambigious.Value); } else { ap.ReportError("VoiceRecognitionParameters requires four values"); } } else if (cmdname.Equals("voicerecognitionphrases")) { ap["Phrases"] = (ap.actioncontroller as ActionController).VoicePhrases(Environment.NewLine); } else if (cmdname.Equals("listeliteinput")) { ap["EliteInput"] = (ap.actioncontroller as ActionController).EliteInputList(); ap["EliteInputCheck"] = (ap.actioncontroller as ActionController).EliteInputCheck(); } else if (cmdname.Equals("voicenames")) { ap["VoiceNames"] = (ap.actioncontroller as ActionController).SpeechSynthesizer.GetVoiceNames().QuoteStrings(); } else if (cmdname.Equals("bindings")) { ap["Bindings"] = (ap.actioncontroller as ActionController).FrontierBindings.ListBindings(); } else if (cmdname.Equals("bindingvalues")) { ap["BindingValues"] = (ap.actioncontroller as ActionController).FrontierBindings.ListValues(); } else { ap.ReportError("Unknown command " + cmdname + " in Performaction"); } } else { ap.ReportError(res); } return(true); }
public override bool ExecuteAction(ActionProgramRun ap) { string res; if (ap.functions.ExpandString(UserData, out res) != Conditions.ConditionFunctions.ExpandResult.Failed) { StringParser sp = new StringParser(res); string cmdname = sp.NextWord(" ", lowercase: true); if (cmdname == null) { ap.ReportError("Missing command in Perform"); } else if (cmdname.Equals("3dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open3DMap(null); } else if (cmdname.Equals("2dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open2DMap(); } else if (cmdname.Equals("edsm")) { EliteDangerousCore.EDSM.EDSMClass edsm = new EliteDangerousCore.EDSM.EDSMClass(); ActionController ac = (ap.actioncontroller as ActionController); ac.DiscoveryForm.EdsmSync.StartSync(edsm, ac.DiscoveryForm.history, EliteDangerousCore.EDCommander.Current.SyncToEdsm, EliteDangerousCore.EDCommander.Current.SyncFromEdsm, EDDiscovery.EDDConfig.Instance.DefaultMapColour); } else if (cmdname.Equals("refresh")) { (ap.actioncontroller as ActionController).DiscoveryForm.RefreshHistoryAsync(checkedsm: true); } else if (cmdname.Equals("url")) { string url = sp.LineLeft; if (url.StartsWith("http:", StringComparison.InvariantCultureIgnoreCase) || url.StartsWith("https:", StringComparison.InvariantCultureIgnoreCase)) // security.. { System.Diagnostics.Process.Start(url); } else { ap.ReportError("Perform url must start with http"); } } else if (cmdname.Equals("configurevoice")) { (ap.actioncontroller as ActionController).ConfigureVoice(sp.NextQuotedWord() ?? "Configure Voice Synthesis"); } else if (cmdname.Equals("manageaddons")) { (ap.actioncontroller as ActionController).ManageAddOns(); } else if (cmdname.Equals("editaddons")) { (ap.actioncontroller as ActionController).EditAddOns(); } else if (cmdname.Equals("editlastpack")) { (ap.actioncontroller as ActionController).EditLastPack(); } else if (cmdname.Equals("editspeechtext")) { (ap.actioncontroller as ActionController).EditSpeechText(); } else if (cmdname.Equals("configurewave")) { (ap.actioncontroller as ActionController).ConfigureWave(sp.NextQuotedWord() ?? "Configure Wave Output"); } else if (cmdname.Equals("enableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(true, true); } else if (cmdname.Equals("enableeliteinputnoaxis")) { (ap.actioncontroller as ActionController).EliteInput(true, false); } else if (cmdname.Equals("disableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(false, false); } else if (cmdname.Equals("enablevoicerecognition")) { (ap.actioncontroller as ActionController).VoiceRecon(true, sp.NextQuotedWord() ?? "en-gb"); } else if (cmdname.Equals("disablevoicerecognition")) { (ap.actioncontroller as ActionController).VoiceRecon(false); } else if (cmdname.Equals("listeliteinput")) { ap["EliteInput"] = (ap.actioncontroller as ActionController).EliteInputList(); ap["EliteInputCheck"] = (ap.actioncontroller as ActionController).EliteInputCheck(); } else if (cmdname.Equals("voicenames")) { ap["VoiceNames"] = (ap.actioncontroller as ActionController).SpeechSynthesizer.GetVoiceNames().QuoteStrings(); } else { ap.ReportError("Unknown command " + cmdname + " in Performaction"); } } else { ap.ReportError(res); } return(true); }
public override bool ExecuteAction(ActionProgramRun ap) { string res; if (ap.functions.ExpandString(UserData, out res) != Conditions.ConditionFunctions.ExpandResult.Failed) { StringParser sp = new StringParser(res); string cmdname = sp.NextWord(" ", lowercase: true); if (cmdname == null) { ap.ReportError("Missing command in Perform"); } else if (cmdname.Equals("3dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open3DMap(null); } else if (cmdname.Equals("2dmap")) { (ap.actioncontroller as ActionController).DiscoveryForm.Open2DMap(); } else if (cmdname.Equals("edsm")) { ActionController ac = (ap.actioncontroller as ActionController); EliteDangerousCore.EDSM.EDSMClass edsm = new EliteDangerousCore.EDSM.EDSMClass(); if (edsm.ValidCredentials) { EliteDangerousCore.EDSM.EDSMJournalSync.SendEDSMEvents(ap.actioncontroller.LogLine, ac.DiscoveryForm.history); } else { ap.ReportError("No valid EDSM Credentials"); } } else if (cmdname.Equals("refresh")) { (ap.actioncontroller as ActionController).DiscoveryForm.RefreshHistoryAsync(); } else if (cmdname.Equals("url")) { string url = sp.LineLeft; if (url.StartsWith("http:", StringComparison.InvariantCultureIgnoreCase) || url.StartsWith("https:", StringComparison.InvariantCultureIgnoreCase)) // security.. { System.Diagnostics.Process.Start(url); } else { ap.ReportError("Perform url must start with http"); } } else if (cmdname.Equals("configurevoice")) { (ap.actioncontroller as ActionController).ConfigureVoice(sp.NextQuotedWord() ?? "Configure Voice Synthesis"); } else if (cmdname.Equals("manageaddons")) { (ap.actioncontroller as ActionController).ManageAddOns(); } else if (cmdname.Equals("editaddons")) { (ap.actioncontroller as ActionController).EditAddOns(); } else if (cmdname.Equals("editlastpack")) { (ap.actioncontroller as ActionController).EditLastPack(); } else if (cmdname.Equals("editpack")) { string pack = sp.NextQuotedWord(); if (pack != null) { if (!(ap.actioncontroller as ActionController).EditPack(pack)) { ap.ReportError("Pack " + pack + " not found"); } } else { ap.ReportError("EditPack requires a pack name"); } } else if (cmdname.Equals("editspeechtext")) { (ap.actioncontroller as ActionController).EditSpeechText(); } else if (cmdname.Equals("configurewave")) { (ap.actioncontroller as ActionController).ConfigureWave(sp.NextQuotedWord() ?? "Configure Wave Output"); } else if (cmdname.Equals("enableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(true, true); } else if (cmdname.Equals("enableeliteinputnoaxis")) { (ap.actioncontroller as ActionController).EliteInput(true, false); } else if (cmdname.Equals("disableeliteinput")) { (ap.actioncontroller as ActionController).EliteInput(false, false); } else if (cmdname.Equals("enablevoicerecognition")) { string culture = sp.NextQuotedWord(); if (culture != null) { ap["VoiceRecognitionEnabled"] = ((ap.actioncontroller as ActionController).VoiceReconOn(culture)).ToStringIntValue(); } else { ap.ReportError("EnableVoiceRecognition requires a culture"); } } else if (cmdname.Equals("disablevoicerecognition")) { (ap.actioncontroller as ActionController).VoiceReconOff(); } else if (cmdname.Equals("beginvoicerecognition")) { (ap.actioncontroller as ActionController).VoiceLoadEvents(); } else if (cmdname.Equals("voicerecognitionconfidencelevel")) { float?conf = sp.NextWord().InvariantParseFloatNull(); if (conf != null) { (ap.actioncontroller as ActionController).VoiceReconConfidence(conf.Value); } else { ap.ReportError("VoiceRecognitionConfidencelLevel requires a confidence value"); } } else if (cmdname.Equals("voicerecognitionparameters")) { int?babble = sp.NextWordComma().InvariantParseIntNull(); // babble at end int?initialsilence = sp.NextWordComma().InvariantParseIntNull(); // silence at end int?endsilence = sp.NextWordComma().InvariantParseIntNull(); // unambigious timeout int?endsilenceambigious = sp.NextWordComma().InvariantParseIntNull(); // ambiguous timeout if (babble != null && initialsilence != null && endsilence != null && endsilenceambigious != null) { (ap.actioncontroller as ActionController).VoiceReconParameters(babble.Value, initialsilence.Value, endsilence.Value, endsilenceambigious.Value); } else { ap.ReportError("VoiceRecognitionParameters requires four values"); } } else if (cmdname.Equals("voicerecognitionphrases")) { ap["Phrases"] = (ap.actioncontroller as ActionController).VoicePhrases(Environment.NewLine); } else if (cmdname.Equals("listeliteinput")) { ap["EliteInput"] = (ap.actioncontroller as ActionController).EliteInputList(); ap["EliteInputCheck"] = (ap.actioncontroller as ActionController).EliteInputCheck(); } else if (cmdname.Equals("voicenames")) { ap["VoiceNames"] = (ap.actioncontroller as ActionController).SpeechSynthesizer.GetVoiceNames().QuoteStrings(); } else if (cmdname.Equals("bindings")) { ap["Bindings"] = (ap.actioncontroller as ActionController).FrontierBindings.ListBindings(); } else if (cmdname.Equals("bindingvalues")) { ap["BindingValues"] = (ap.actioncontroller as ActionController).FrontierBindings.ListValues(); } else if (cmdname.Equals("datadownload")) { string gitfolder = sp.NextQuotedWord(); string filewildcard = sp.NextQuotedWord(); string directory = sp.NextQuotedWord(); string optclean = sp.NextWord(); if (gitfolder != null && filewildcard != null && directory != null) { if (System.IO.Directory.Exists(directory)) { BaseUtils.GitHubClass ghc = new BaseUtils.GitHubClass(EDDiscovery.Properties.Resources.URLGithubDataDownload); bool worked = ghc.Download(directory, gitfolder, filewildcard, optclean != null && optclean == "1"); ap["Downloaded"] = worked.ToStringIntValue(); } else { ap.ReportError("Download folder " + directory + " does not exist"); } } else { ap.ReportError("Missing parameters in Perform Datadownload"); } } else { ap.ReportError("Unknown command " + cmdname + " in Performaction"); } } else { ap.ReportError(res); } return(true); }
public override bool ExecuteAction(ActionProgramRun ap) { List <string> ctrl = FromString(UserData); if (ctrl != null) { List <string> exp; if (ap.Functions.ExpandStrings(ctrl, out exp) != Functions.ExpandResult.Failed) { string cmdname = exp[0].ToLowerInvariant(); string nextword = exp.Count >= 2 ? exp[1] : null; string thirdword = exp.Count >= 3 ? exp[2] : null; string fourthword = exp.Count >= 4 ? exp[3] : null; string fifthword = exp.Count >= 5 ? exp[4] : null; var ac = ap.ActionController as ActionController; if (cmdname == null) { ap.ReportError("Missing command in Perform"); } else if (cmdname.Equals("3dmap")) { ac.DiscoveryForm.Open3DMap(); } else if (cmdname.Equals("2dmap")) { ac.DiscoveryForm.PopOuts.PopOut(PanelInformation.PanelIDs.Map2D); } else if (cmdname.Equals("edsm")) { EliteDangerousCore.EDSM.EDSMClass edsm = new EliteDangerousCore.EDSM.EDSMClass(); if (edsm.ValidCredentials) { ac.DiscoveryForm.EDSMSend(); } else { ap.ReportError("No valid EDSM Credentials"); } } else if (cmdname.Equals("refresh")) { ac.DiscoveryForm.RefreshHistoryAsync(); } else if (cmdname.Equals("configurevoice")) { ac.ConfigureVoice(nextword ?? null); } else if (cmdname.Equals("configurewave")) { ac.ConfigureWave(nextword ?? null); } else if (cmdname.Equals("voicenames")) { ap["VoiceNames"] = ac.SpeechSynthesizer.GetVoiceNames().QuoteStrings(); } else if (cmdname.Equals("manageaddons")) { ac.ManageAddOns(); } else if (cmdname.Equals("editaddons")) { ac.EditAddOns(); } else if (cmdname.Equals("editlastpack")) { ac.EditLastPack(); } else if (cmdname.Equals("editpack")) { if (nextword != null) { if (!ac.EditPack(nextword)) { ap.ReportError("Pack " + nextword + " not found"); } } else { ap.ReportError("EditPack requires a pack name"); } } else if (cmdname.Equals("editspeechtext")) { ac.EditSpeechText(); } else if (cmdname.Equals("enableeliteinput")) { ac.EliteInput(true, true); } else if (cmdname.Equals("enableeliteinputnoaxis")) { ac.EliteInput(true, false); } else if (cmdname.Equals("disableeliteinput")) { ac.EliteInput(false, false); } else if (cmdname.Equals("listeliteinput")) { ap["EliteInput"] = ac.EliteInputList(); ap["EliteInputCheck"] = ac.EliteInputCheck(); ap["EliteInputButtons"] = ac.EliteInputButtons(); } else if (cmdname.Equals("bindings")) { ap["Bindings"] = ac.FrontierBindings.ListBindings(); } else if (cmdname.Equals("bindingvalues")) { ap["BindingValues"] = ac.FrontierBindings.ListValues(); } else if (cmdname.Equals("url")) { if (nextword != null && nextword.StartsWith("http:", StringComparison.InvariantCultureIgnoreCase) || nextword.StartsWith("https:", StringComparison.InvariantCultureIgnoreCase)) // security.. { BaseUtils.BrowserInfo.LaunchBrowser(nextword); } else { ap.ReportError("Perform url must start with http"); } } else if (cmdname.Equals("datadownload")) { string gitfolder = nextword; string filewildcard = thirdword; string directory = fourthword; string optclean = fifthword; if (gitfolder != null && filewildcard != null && directory != null) { if (System.IO.Directory.Exists(directory)) { BaseUtils.GitHubClass ghc = new BaseUtils.GitHubClass(EDDiscovery.Properties.Resources.URLGithubDataDownload); bool worked = ghc.Download(directory, gitfolder, filewildcard, optclean != null && optclean == "1"); ap["Downloaded"] = worked.ToStringIntValue(); } else { ap.ReportError("Download folder " + directory + " does not exist"); } } else { ap.ReportError("Missing parameters in Perform Datadownload"); } } else if (cmdname.Equals("enablevoicerecognition")) { if (nextword != null) { ap["VoiceRecognitionEnabled"] = (ac.VoiceReconOn(nextword)).ToStringIntValue(); } else { ap.ReportError("EnableVoiceRecognition requires a culture"); } } else if (cmdname.Equals("disablevoicerecognition")) { ac.VoiceReconOff(); } else if (cmdname.Equals("beginvoicerecognition")) { ac.VoiceLoadEvents(); } else if (cmdname.Equals("voicerecognitionconfidencelevel")) { float?conf = nextword.InvariantParseFloatNull(); if (conf != null) { ac.VoiceReconConfidence(conf.Value); } else { ap.ReportError("VoiceRecognitionConfidencelLevel requires a confidence value"); } } else if (cmdname.Equals("voicerecognitionparameters")) { int?babble = nextword.InvariantParseIntNull(); // babble at end int?initialsilence = thirdword.InvariantParseIntNull(); // silence at end int?endsilence = fourthword.InvariantParseIntNull(); // unambigious timeout int?endsilenceambigious = fifthword.InvariantParseIntNull(); // ambiguous timeout if (babble != null && initialsilence != null && endsilence != null && endsilenceambigious != null) { ac.VoiceReconParameters(babble.Value, initialsilence.Value, endsilence.Value, endsilenceambigious.Value); } else { ap.ReportError("VoiceRecognitionParameters requires four values"); } } else if (cmdname.Equals("voicerecognitionphrases")) { ap["Phrases"] = ac.VoicePhrases(Environment.NewLine); } else if (cmdname.Equals("voicerecognitionevent")) { if (nextword.Equals("toggle", StringComparison.InvariantCultureIgnoreCase)) { ac.EnableVoiceReconEvent = !ac.EnableVoiceReconEvent; } else if (nextword.Equals("status", StringComparison.InvariantCultureIgnoreCase)) { } else if (int.TryParse(nextword, out int res)) { ac.EnableVoiceReconEvent = res != 0; } else { ap.ReportError("VoiceRecognitionEvent parameter invalid"); } ap["VoiceRecognitionEvent"] = ac.EnableVoiceReconEvent.ToStringIntValue(); System.Diagnostics.Debug.WriteLine("Voice recon " + ap["VoiceRecognitionEvent"]); } else if (cmdname.Equals("loadkeys")) { ac.ActionConfigureKeys(); } else if (cmdname.Equals("actionfile")) { ActionFile f = ac.Get(nextword); if (f != null) { ap["Events_Count"] = f.InUseEventList.Count.ToStringInvariant(); int i = 1; foreach (var x in f.InUseEventList.Enumerable) { ap["Events[" + i++ + "]"] = x.ToString(true); // list hooked events ap["Events_" + x.EventName] = x.ToString(true); // list hooked events } ap["Journal_Count"] = Enum.GetNames(typeof(EliteDangerousCore.JournalTypeEnum)).Length.ToStringInvariant(); i = 1; foreach (string jname in Enum.GetNames(typeof(EliteDangerousCore.JournalTypeEnum))) { List <Condition> cl = f.InUseEventList.GetConditionListByEventName(jname); if (cl != null) { int v = 0; foreach (var c in cl) { ap["JEvents[" + i++ + "]"] = c.ToString(true); ap["JEvents_" + c.EventName + "_" + v++] = c.ToString(true); } } else { ap["JEvents[" + i++ + "]"] = jname + ", None"; ap["JEvents_" + jname] = "None"; } } ap["UI_Count"] = Enum.GetNames(typeof(EliteDangerousCore.UITypeEnum)).Length.ToStringInvariant(); i = 1; foreach (string iname in Enum.GetNames(typeof(EliteDangerousCore.UITypeEnum))) { List <Condition> cl = f.InUseEventList.GetConditionListByEventName("UI" + iname); if (cl != null) { int v = 0; foreach (var c in cl) { ap["UIEvents[" + i++ + "]"] = c.ToString(true); ap["UIEvents_" + c.EventName + "_" + v++] = c.ToString(true); } } else { ap["UIEvents[" + i++ + "]"] = iname + ", None"; ap["UIEvents_" + iname] = "None"; } } ap["Install_Count"] = f.InstallationVariables.Count.ToStringInvariant(); i = 1; foreach (var x in f.InstallationVariables.NameEnumuerable) { ap["Install[" + i++ + "]"] = x + "," + f.InstallationVariables[x]; // list hooked events } ap["FileVar_Count"] = f.FileVariables.Count.ToStringInvariant(); i = 1; foreach (var x in f.FileVariables.NameEnumuerable) { ap["FileVar[" + i++ + "]"] = x + "," + f.FileVariables[x]; // list hooked events } ap["Enabled"] = f.Enabled.ToStringIntValue(); } else { ap.ReportError("Action file " + nextword + " is not loaded"); } } else if (cmdname.Equals("generateevent")) { if (nextword != null) { ActionEvent f = ActionEventEDList.EventList(excludejournal: true).Find(x => x.TriggerName.Equals(nextword)); if (f != null) { BaseUtils.Variables c = new BaseUtils.Variables(); for (int w = 2; w < exp.Count; w++) { string vname = exp[w]; int asterisk = vname.IndexOf('*'); if (asterisk >= 0) // pass in name* no complaining if not there { string prefix = vname.Substring(0, asterisk); foreach (string jkey in ap.variables.NameEnumuerable) { if (jkey.StartsWith(prefix)) { c[jkey] = ap.variables[jkey]; } } } else { if (ap.variables.Exists(vname)) // pass in explicit name { c[vname] = ap.variables[vname]; } else { ap.ReportError("No such variable '" + vname + "'"); return(true); } } } if (f.TriggerName.StartsWith("UI") || f.TriggerName.Equals("onEliteUIEvent")) { c["EventClass_EventTimeUTC"] = DateTime.UtcNow.ToStringUSInvariant(); c["EventClass_EventTypeID"] = c["EventClass_EventTypeStr"] = f.TriggerName.Substring(2); c["EventClass_UIDisplayed"] = "0"; ac.ActionRun(Actions.ActionEventEDList.onUIEvent, c); } ac.ActionRun(f, c, now: true); } else { try { EliteDangerousCore.JournalEntry je = EliteDangerousCore.JournalEntry.CreateJournalEntry(nextword); ap["GenerateEventName"] = je.EventTypeStr; if (je is EliteDangerousCore.JournalEvents.JournalUnknown) { ap.ReportError("Unknown journal event"); } else { EliteDangerousCore.HistoryEntry he = EliteDangerousCore.HistoryEntry.FromJournalEntry(je, null); ac.ActionRunOnEntry(he, Actions.ActionEventEDList.NewEntry(he), now: true); } } catch { ap.ReportError("Journal event not in correct JSON form"); } } } else { ap.ReportError("No journal event or event name after GenerateEvent"); } } else { ap.ReportError("Unknown command " + cmdname + " in Performaction"); } } else { ap.ReportError(exp[0]); } } else { ap.ReportError("Perform command line not in correct format"); } return(true); }