Exemple #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);
        }
Exemple #2
0
        private void SaveScript(object parameter)
        {
            ConceptNodeViewModel concept = Shell.SelectedTabViewModel as ConceptNodeViewModel;

            if (concept == null)
            {
                MessageBox.Show("Script is not selected!", ONE_C_SHARP, MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }
            if (!(concept.SyntaxNode is ScriptConcept script))
            {
                return;
            }

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

            knownTypes.Add(typeof(ScriptConcept).FullName, typeof(ScriptConcept));
            knownTypes.Add(typeof(LanguageConcept).FullName, typeof(LanguageConcept));
            foreach (LanguageConcept language in script.Languages)
            {
                if (language.Assembly == null)
                {
                    continue;
                }
                foreach (Type type in language.Assembly.GetTypes()
                         .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(SyntaxNode))))
                {
                    knownTypes.Add(type.FullName, type);
                }
            }
            if (knownTypes.Count == 0)
            {
                return;
            }

            string filePath = ScriptFilePath;
            string json     = _serializer.ToJson(script);

            using (StreamWriter writer = File.CreateText(filePath))
            {
                writer.Write(json);
            }

            MessageBox.Show("Script has been saved successfully!", ONE_C_SHARP, MessageBoxButton.OK, MessageBoxImage.Information);
        }