コード例 #1
0
        private void fmExploreGrammar_FormClosing(object sender, FormClosingEventArgs e)
        {
            Settings.Default.SourceSample  = txtSource.Text;
            Settings.Default.LanguageIndex = cboGrammars.SelectedIndex;
            Settings.Default.SearchPattern = txtSearch.Text;
            Settings.Default.EnableTrace   = chkParserTrace.Checked;
            Settings.Default.DisableHili   = chkDisableHili.Checked;
            var grammars = GrammarItemList.FromCombo(cboGrammars);

            Settings.Default.Grammars = grammars.ToXml();
            Settings.Default.Save();
        }//method
コード例 #2
0
ファイル: fmGrammarExplorer.cs プロジェクト: gregberns/Irony
 private void fmExploreGrammar_Load(object sender, EventArgs e)
 {
     ClearLanguageInfo();
     try {
         txtSource.Text = Settings.Default.SourceSample;
         txtSearch.Text = Settings.Default.SearchPattern;
         GrammarItemList grammars = GrammarItemList.FromXml(Settings.Default.Grammars);
         grammars.ShowIn(cboGrammars);
         chkParserTrace.Checked    = Settings.Default.EnableTrace;
         chkDisableHili.Checked    = Settings.Default.DisableHili;
         cboGrammars.SelectedIndex = Settings.Default.LanguageIndex; //this will build parser and start colorizer
     } catch { }
     _loaded = true;
 }
コード例 #3
0
ファイル: GrammarItemList.cs プロジェクト: jmptrader/Irony-2
        public static GrammarItemList FromXml(string xml)
        {
            GrammarItemList list = new GrammarItemList();
            XmlDocument     xdoc = new XmlDocument();

            xdoc.LoadXml(xml);
            XmlNodeList xlist = xdoc.SelectNodes("//Grammar");

            foreach (XmlElement xitem in xlist)
            {
                GrammarItem item = new GrammarItem(xitem);
                list.Add(item);
            }
            return(list);
        }
コード例 #4
0
    bool _treeClickDisabled; //to temporarily disable tree click when we locate the node programmatically

    #region Form load/unload events
    private void fmExploreGrammar_Load(object sender, EventArgs e) {
      ClearLanguageInfo();
      try {
        txtSource.Text = Settings.Default.SourceSample;
        txtSearch.Text = Settings.Default.SearchPattern;
        GrammarItemList grammars = GrammarItemList.FromXml(Settings.Default.Grammars);
        grammars.ShowIn(cboGrammars);
        chkParserTrace.Checked = Settings.Default.EnableTrace;
        chkDisableHili.Checked = Settings.Default.DisableHili;
        chkAutoRefresh.Checked = Settings.Default.AutoRefresh;
        cboGrammars.SelectedIndex = Settings.Default.LanguageIndex; //this will build parser and start colorizer
        if (Application.RenderWithVisualStyles)
          splitRight.BackColor = SystemColors.ControlLightLight;
      } catch { }
      _loaded = true;
    }
コード例 #5
0
 private void miAdd_Click(object sender, EventArgs e) {
   if (dlgSelectAssembly.ShowDialog() != DialogResult.OK) return;
   string location = dlgSelectAssembly.FileName;
   if (string.IsNullOrEmpty(location)) return;
   var oldGrammars = new GrammarItemList();
   foreach(var item in cboGrammars.Items)
     oldGrammars.Add((GrammarItem) item);
   var grammars = fmSelectGrammars.SelectGrammars(location, oldGrammars);
   if (grammars == null) return;
   foreach (GrammarItem item in grammars)
     cboGrammars.Items.Add(item);
   miRefresh.Enabled = false;
   // auto-select the first grammar if no grammar currently selected
   if (cboGrammars.SelectedIndex < 0 && grammars.Count > 0)
     cboGrammars.SelectedIndex = 0;
 }
コード例 #6
0
ファイル: fmSelectGrammars.cs プロジェクト: gregberns/Irony
        public static GrammarItemList SelectGrammars(string assemblyPath, GrammarItemList loadedGrammars)
        {
            var fromGrammars = LoadGrammars(assemblyPath);

            if (fromGrammars == null)
            {
                return(null);
            }
            //fill the listbox and show the form
            fmSelectGrammars form = new fmSelectGrammars();
            var listbox           = form.lstGrammars;

            listbox.Sorted = false;
            foreach (GrammarItem item in fromGrammars)
            {
                listbox.Items.Add(item);
                if (!ContainsGrammar(loadedGrammars, item))
                {
                    listbox.SetItemChecked(listbox.Items.Count - 1, true);
                }
            }
            listbox.Sorted = true;

            if (form.ShowDialog() != DialogResult.OK)
            {
                return(null);
            }
            GrammarItemList result = new GrammarItemList();

            for (int i = 0; i < listbox.Items.Count; i++)
            {
                if (listbox.GetItemChecked(i))
                {
                    var item = listbox.Items[i] as GrammarItem;
                    item._loading = false;
                    result.Add(item);
                }
            }
            return(result);
        }
コード例 #7
0
        private static GrammarItemList LoadGrammars(string assemblyPath)
        {
            Assembly asm = null;

            try {
                asm = GrammarLoader.LoadAssembly(assemblyPath);
            } catch (Exception ex) {
                MessageBox.Show("Failed to load assembly: " + ex.Message);
                return(null);
            }
            Type[] types;
            try
            {
                types = asm.GetTypes();
            }
            catch (ReflectionTypeLoadException le)
            {
                types = le.Types;
            }
            var grammars = new GrammarItemList();

            foreach (Type t in types)
            {
                if (t == null || t.IsAbstract)
                {
                    continue;
                }
                if (!t.IsSubclassOf(typeof(Grammar)))
                {
                    continue;
                }
                grammars.Add(new GrammarItem(t, assemblyPath));
            }
            if (grammars.Count == 0)
            {
                MessageBox.Show("No classes derived from Irony.Grammar were found in the assembly.");
                return(null);
            }
            return(grammars);
        }