예제 #1
0
        private ACNode[] isEntrys; //todo find out whats difference
        //private string[] methodNames;
        public void LoadAutoCompletes()
        {
            if (ISAC_Open)
            {
                HideISAC();
            }
            SMDefinition def = ConfigList.Current.GetSMDef();

            funcNames = def.FunctionStrings;
            funcs     = def.Functions.ToArray();
            acEntrys  = def.ProduceACNodes();
            isEntrys  = def.ProduceISNodes();
            //AutoCompleteBox.Items.Clear();
            //MethodAutoCompleteBox.Items.Clear();
            AutoCompleteBox.ItemsSource       = acEntrys;
            MethodAutoCompleteBox.ItemsSource = isEntrys;

            /*for (int i = 0; i < acEntrys.Length; ++i)
             * {
             *  AutoCompleteBox.Items.Add(acEntrys[i].Name);
             * }
             * for (int i = 0; i < isEntrys.Length; ++i)
             * {
             *  MethodAutoCompleteBox.Items.Add(isEntrys[i].Name);
             * }*/
        }
예제 #2
0
 private void BackgroundParser_Worker()
 {
     while (true)
     {
         while (Program.Options.DynamicIsac)
         {
             Thread.Sleep(5000);
             var ee = GetAllEditorElements();
             if (ee != null)
             {
                 SMDefinition[] definitions = new SMDefinition[ee.Length];
                 for (int i = 0; i < ee.Length; ++i)
                 {
                     FileInfo fInfo = new FileInfo(ee[i].FullFilePath);
                     if (fInfo.Extension.Trim('.').ToLowerInvariant() == "inc")
                     {
                         var condenser = new Condenser(File.ReadAllText(fInfo.FullName), fInfo.Name);
                         definitions[i] = ((new Condenser(File.ReadAllText(fInfo.FullName), fInfo.Name)).Condense());
                     }
                 }
                 currentSMDef       = (Program.ConfigList.Current.GetSMDef()).ProduceTemporaryExpandedDefinition(definitions);
                 currentSMFunctions = currentSMDef.Functions.ToArray();
                 currentACNodes     = currentSMDef.ProduceACNodes();
                 currentISNodes     = currentSMDef.ProduceISNodes();
                 ++currentSMDefUID;
             }
         }
         Thread.Sleep(5000);
     }
 }
예제 #3
0
 private void BackgroundParser_Worker()
 {
     while (true)
     {
         while (Program.OptionsObject.Program_DynamicISAC)
         {
             Thread.Sleep(5000);
             var ee = GetAllEditorElements();
             if (ee != null)
             {
                 SMDefinition[] definitions = new SMDefinition[ee.Length];
                 for (int i = 0; i < ee.Length; ++i)
                 {
                     FileInfo fInfo = new FileInfo(ee[i].FullFilePath);
                     if (fInfo.Extension.Trim('.').ToLowerInvariant() == "inc")
                     {
                         definitions[i] = (new Condenser(File.ReadAllText(fInfo.FullName), fInfo.Name).Condense());
                     }
                 }
                 currentSMDef       = (Program.Configs[Program.SelectedConfig].GetSMDef()).ProduceTemporaryExpandedDefinition(definitions);
                 currentSMFunctions = currentSMDef.Functions.ToArray();
                 currentACNodes     = currentSMDef.ProduceACNodes();
                 currentISNodes     = currentSMDef.ProduceISNodes();
                 ++currentSMDefUID;
             }
         }
         Thread.Sleep(5000);
     }
     // ReSharper disable once FunctionNeverReturns
 }
예제 #4
0
        public SPDefinitionWindow()
        {
            InitializeComponent();
            Language_Translate();
            if (Program.OptionsObject.Program_AccentColor != "Red" || Program.OptionsObject.Program_Theme != "BaseDark")
            {
                ThemeManager.ChangeAppStyle(this, ThemeManager.GetAccent(Program.OptionsObject.Program_AccentColor), ThemeManager.GetAppTheme(Program.OptionsObject.Program_Theme));
            }
            errorSearchBoxBrush.Freeze();
            SMDefinition def = Program.Configs[Program.SelectedConfig].GetSMDef();

            if (def == null)
            {
                MessageBox.Show(Program.Translations.GetLanguage("ConfigWrongPars"), Program.Translations.GetLanguage("Error"), MessageBoxButton.OK, MessageBoxImage.Warning);
                this.Close();
                return;
            }
            List <SPDefEntry> defList = def.Functions.Cast <SPDefEntry>().ToList();

            defList.AddRange(def.Constants.Cast <SPDefEntry>());
            defList.AddRange(def.Enums.Cast <SPDefEntry>());
            defList.AddRange(def.Defines.Cast <SPDefEntry>());
            defList.AddRange(def.Structs.Cast <SPDefEntry>());
            defList.AddRange(def.Methodmaps.Cast <SPDefEntry>());
            defList.AddRange(def.Typedefs.Cast <SPDefEntry>());
            defList.AddRange(def.EnumStructs.Cast <SPDefEntry>());
            foreach (var mm in def.Methodmaps)
            {
                defList.AddRange(mm.Methods.Cast <SPDefEntry>());
                defList.AddRange(mm.Fields.Cast <SPDefEntry>());
            }
            foreach (var sm in def.EnumStructs)
            {
                defList.AddRange(sm.Methods.Cast <SPDefEntry>());
                defList.AddRange(sm.Fields.Cast <SPDefEntry>());
            }
            foreach (var e in defList.Where(e => string.IsNullOrWhiteSpace(e.Name)))
            {
                e.Name = $"--{Program.Translations.GetLanguage("NoName")}--";
            }
            defList.Sort((a, b) => string.CompareOrdinal(a.Name, b.Name));
            defArray = defList.ToArray();
            int defArrayLength = defArray.Length;

            items = new ListViewItem[defArrayLength];
            for (int i = 0; i < defArrayLength; ++i)
            {
                items[i] = new ListViewItem()
                {
                    Content = defArray[i].Name, Tag = defArray[i].Entry
                };
                SPBox.Items.Add(items[i]);
            }
            searchTimer.Elapsed += searchTimer_Elapsed;
        }
        private void BackgroundParser_Worker()
        {
            while (true)
            {
                while (Program.OptionsObject.Program_DynamicISAC)
                {
                    Thread.Sleep(3000);
                    var ee    = GetAllEditorElements();
                    var caret = -1;

                    if (ee != null)
                    {
                        var definitions = new SMDefinition[ee.Length];
                        List <SMFunction> currentFunctions = null;
                        for (var i = 0; i < ee.Length; ++i)
                        {
                            var fInfo = new FileInfo(ee[i].FullFilePath);
                            if (fInfo.Extension.Trim('.').ToLowerInvariant() == "inc")
                            {
                                definitions[i] =
                                    new Condenser(File.ReadAllText(fInfo.FullName), fInfo.Name).Condense();
                            }

                            if (fInfo.Extension.Trim('.').ToLowerInvariant() == "sp")
                            {
                                var i1 = i;
                                Dispatcher.Invoke(() =>
                                {
                                    if (ee[i1].IsLoaded)
                                    {
                                        caret           = ee[i1].editor.CaretOffset;
                                        definitions[i1] =
                                            new Condenser(File.ReadAllText(fInfo.FullName), fInfo.Name)
                                            .Condense();
                                        currentFunctions = definitions[i1].Functions;
                                    }
                                });
                            }
                        }

                        currentSMDef = Program.Configs[Program.SelectedConfig].GetSMDef()
                                       .ProduceTemporaryExpandedDefinition(definitions, caret, currentFunctions);
                        currentSMFunctions = currentSMDef.Functions.ToArray();
                        currentACNodes     = currentSMDef.ProduceACNodes();
                        currentISNodes     = currentSMDef.ProduceISNodes();
                        ++currentSMDefUID;
                    }
                }
            }

            // ReSharper disable once FunctionNeverReturns
        }
예제 #6
0
 public Condenser(string sourceCode, string fileName)
 {
     t        = Tokenizer.Tokenizer.TokenizeString(sourceCode, true).ToArray();
     position = 0;
     length   = t.Length;
     def      = new SMDefinition();
     source   = sourceCode;
     if (fileName.EndsWith(".inc", StringComparison.InvariantCultureIgnoreCase))
     {
         fileName = fileName.Substring(0, fileName.Length - 4);
     }
     FileName = fileName;
 }
예제 #7
0
 public void LoadSMDef()
 {
     if (this.SMDef != null)
     {
         return;
     }
     try
     {
         SMDefinition def = new SMDefinition();
         def.AppendFiles(SMDirectories);
         SMDef = def;
     }
     catch (Exception)
     {
         this.SMDef = new SMDefinition(); //this could be dangerous...
     }
 }
예제 #8
0
 public void InvalidateSMDef()
 {
     SMDef = null;
 }
예제 #9
0
 public void InvalidateSMDef()
 {
     this.SMDef = null;
 }
 public AeonEditorHighlighting(SMDefinition smDef)
 {
     this.smDef = smDef;
 }
        public void AddStateMachine(StateMachineModel model)
        {
            var addedTriggers = new List <string>();
            var addedStates   = new List <string>();

            var stateMachineDefinition = new SMDefinition
            {
                Name       = model.Name,
                Agenda     = model.Agenda,
                Version    = model.Version,
                Definition = model.Definition.ToString(Formatting.None),
            };

            _context.SMDefinition.Add(stateMachineDefinition);
            _context.SaveChanges();

            var initialStateName = (string)model.Definition["initial"];
            var allObjects       = model.Definition.DescendantsAndSelf().OfType <JObject>();

            var stateTokens      = allObjects.Where(x => x.ContainsKey("kind"));
            var transitionTokens = allObjects.Where(x => x.ContainsKey("target"));
            var stateTypeId      = _context.ElementType.FirstOrDefault(x => x.Name.Equals("state")).Id;
            var transitionTypeId = _context.ElementType.FirstOrDefault(x => x.Name.Equals("transition")).Id;

            foreach (var transition in transitionTokens)
            {
                if (!addedTriggers.Contains((string)transition["event"]))
                {
                    var newTrigger = new TransitionTrigger
                    {
                        Name = (string)transition["event"]
                    };

                    addedTriggers.Add(newTrigger.Name);

                    _context.TransitionTrigger.Add(newTrigger);
                }
            }

            foreach (var state in stateTokens)
            {
                if (!addedStates.Contains((string)state["id"]))
                {
                    var newState = new Element
                    {
                        SMDefinitionId = stateMachineDefinition.Id,
                        ElementTypeId  = stateTypeId,
                        Name           = (string)state["id"]
                    };

                    addedStates.Add(newState.Name);

                    _context.Element.Add(newState);
                }
            }

            _context.SaveChanges();

            foreach (var state in stateTokens)
            {
                var childTransitionTokens = state["states"] == null
                    ? state.DescendantsAndSelf().OfType <JObject>().Where(x => x.ContainsKey("target"))
                    : state.SelectToken("transitions").Children().OfType <JObject>().Where(x => x.ContainsKey("target"));

                foreach (var childTransition in childTransitionTokens)
                {
                    var newTransition = new Element
                    {
                        ElementTypeId       = transitionTypeId,
                        SMDefinitionId      = stateMachineDefinition.Id,
                        OldStateId          = _context.Element.FirstOrDefault(x => x.ElementTypeId == stateTypeId && x.Name.Equals((string)state["id"])).Id,
                        NewStateId          = _context.Element.FirstOrDefault(x => x.ElementTypeId == stateTypeId && x.Name.Equals((string)childTransition["target"])).Id,
                        TransitionTriggerId = _context.TransitionTrigger.FirstOrDefault(x => x.Name.Equals((string)childTransition["event"])).Id
                    };

                    _context.Element.Add(newTransition);
                }
            }

            stateMachineDefinition.InitialStateId = _context.Element.FirstOrDefault(x => x.ElementTypeId == stateTypeId && x.Name.Equals(initialStateName)).Id;

            _context.SaveChanges();
        }