Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }