Example #1
0
        private void OpenScript(object parameter)
        {
            OpenFileDialog dialog = new OpenFileDialog()
            {
                Multiselect      = false,
                InitialDirectory = ModuleCatalogPath,
                Filter           = "Script files (.json)|*.json"
            };
            var result = dialog.ShowDialog();

            if (result != true)
            {
                return;
            }
            string filePath = dialog.FileName;

            string json = File.ReadAllText(filePath);

            if (string.IsNullOrWhiteSpace(json))
            {
                return;
            }

            SyntaxTreeJsonSerializer _serializer = new SyntaxTreeJsonSerializer();
            var knownTypes = _serializer.Binder.KnownTypes;

            foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()
                     .Where(a => a.FullName.StartsWith("OneCSharp") && a.GetName().Name.EndsWith("Model")))
            {
                foreach (Type type in assembly.GetTypes()
                         .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(SyntaxNode))))
                {
                    knownTypes.Add(type.FullName, type);
                }
            }
            if (knownTypes.Count == 0)
            {
                return;
            }

            SyntaxNode syntaxNode = _serializer.FromJson(json);

            CodeEditor editor = new CodeEditor()
            {
                DataContext = SyntaxTreeController.Current.CreateSyntaxNode(null, syntaxNode)
            };

            Shell.AddTabItem("SCRIPT FROM FILE", editor);
        }