public ConsoleColoredString Validate() { if (Filename != null && !File.Exists(Filename)) { return("The specified file does not exist."); } if (Language != null) { LanguagePreselect = Mainform.Languages.FirstOrDefault(pl => pl.LanguageName.Equals(Language, StringComparison.InvariantCultureIgnoreCase)); if (LanguagePreselect == null) { return("The specified programming language does not exist. Currently support programming languages are: " + Mainform.Languages.Select(pl => pl.LanguageName).JoinString(", ")); } } return(null); }
private void init() { ctMenu.Renderer = new NativeToolStripRenderer(); if (EsotericIDEProgram.Settings.SourceFont != null) txtSource.Font = EsotericIDEProgram.Settings.SourceFont.Font; if (EsotericIDEProgram.Settings.OutputFont != null) txtOutput.Font = EsotericIDEProgram.Settings.OutputFont.Font; miWordwrap.Checked = txtSource.WordWrap = EsotericIDEProgram.Settings.WordWrap; tabWatch.Controls.Add(notRunningLabel); updateUi(); _splitterDistanceBugWorkaround = false; Activated += (_, __) => { if (_splitterDistanceBugWorkaround) return; _splitterDistanceBugWorkaround = true; if (EsotericIDEProgram.Settings.SplitterPercent != 0) ctSplit.SplitterDistance = (int) (ctSplit.Height * EsotericIDEProgram.Settings.SplitterPercent); }; _languages = Assembly.GetExecutingAssembly().GetTypes() .Where(t => typeof(ProgrammingLanguage).IsAssignableFrom(t) && !t.IsAbstract) .Select(t => (ProgrammingLanguage) Activator.CreateInstance(t)) .OrderBy(t => t.LanguageName) .ToArray(); LanguageSettings settings; foreach (var lang in _languages) if (EsotericIDEProgram.Settings.LanguageSettings.TryGetValue(lang.LanguageName, out settings) && settings != null) lang.Settings = settings; cmbLanguage.Items.AddRange(_languages); ToolStripMenuItem[] currentLanguageSpecificMenus = null; cmbLanguage.SelectedIndexChanged += (_, __) => { if (_currentLanguage != null) EsotericIDEProgram.Settings.LanguageSettings[_currentLanguage.LanguageName] = _currentLanguage.Settings; _currentLanguage = (ProgrammingLanguage) cmbLanguage.SelectedItem; EsotericIDEProgram.Settings.LastLanguageName = _currentLanguage.LanguageName; if (currentLanguageSpecificMenus != null) foreach (var menuItem in currentLanguageSpecificMenus) ctMenu.Items.Remove(menuItem); currentLanguageSpecificMenus = _currentLanguage.CreateMenus(this); ctMenu.Items.AddRange(currentLanguageSpecificMenus); }; var ll = _languages.IndexOf(lang => lang.LanguageName == EsotericIDEProgram.Settings.LastLanguageName); cmbLanguage.SelectedIndex = ll == -1 ? 0 : ll; }