private void _CmdUser_TriggerBuild() { try { var prolog = new PrologEngine(persistentCommandHistory: false); prolog.ConsultFromString(CodeDocument.Text); prolog.GetFirstSolution(CodeDocumentQuery.Text); MyConsole.WriteLine("----------------------"); foreach (var sol in prolog.GetEnumerator()) { var errorInfo = MyPrologUtils.TryToGetErrorFromPrologSolution(sol); if (errorInfo != null) { CurErrorMessage = errorInfo.Message; var errorLine = CodeDocumentQuery.GetLineByNumber(1); CurErrorWordHighlightQuery = new WordHighlight(errorLine.Offset, errorLine.Length); break; } var stringified = sol.VarValuesIterator.Select(val => $"{val.Name}:{val.Value}").StringJoin(", "); MyConsole.WriteLine(stringified); } } catch (Exception ex) { var errorInfo = MyPrologUtils.TryToGetErrorFromException(ex); if (errorInfo.Line != null) { var errorLine = CodeDocument.GetLineByNumber(errorInfo.Line.Value); CurErrorWordHighlight = new WordHighlight(errorLine.Offset, errorLine.Length); } CurErrorMessage = errorInfo.Message; } }
public MainViewModel( FileDialogsServiceWin32 fileDialogsService, MyAppStateService appStateService ) { this.appStateService = appStateService; this.fileDialogsService = fileDialogsService; // .... set up view SyntaxHighlighting = MyPrologUtils.LoadSyntaxHighlightingFromResource(Constants.Resources.AvalonSyntaxProlog2); CodeDocument.Text = Constants.Samples.SampleProlog; CodeDocumentQuery.Text = Constants.Samples.SampleQuery; // .... assign commands CmdWindow_Loaded = new RelayCommand(_CmdWindow_Loaded); CmdWindow_Closing = new RelayCommand(_CmdWindow_Closing); CmdWindow_Activated = new RelayCommand(_CmdWindow_Activated); CmdUser_TriggerBuild = new RelayCommand(_CmdUser_TriggerBuild); CmdAvalon_CaretPositionChanged = new RelayCommand <Caret>(_CmdAvalon_CaretPositionChanged); CmdConsole_CopyAll = new RelayCommand(_CmdConsole_CopyAll); CmdConsole_ClearAll = new RelayCommand(_CmdConsole_ClearAll); CmdUser_OnDragDropProlog = new RelayCommand <string>(_CmdUser_OnDragDropProlog); CmdUser_Open = new RelayCommand(_CmdUser_Open); CmdUser_RevealInExplorer = new RelayCommand(_CmdUser_RevealInExplorer); CmdUser_Save = new RelayCommand(_CmdUser_Save); CmdUser_SaveAs = new RelayCommand(_CmdUser_SaveAs); this.PropertyChanged += THIS_PropertyChanged; CodeDocument.UndoStack.PropertyChanged += CodeDocument_UndoStack_PropertyChanged; // .... restore from previous state var appState = appStateService.LoadOrCreateNew(); if (appState.LastQueryText != null) { CodeDocumentQuery.Text = appState.LastQueryText; } IsResultsPanelTextWrappingEnabled = appState.IsResultsPanelTextWrappingEnabled; Config_ReplaceTabsWithSpaces = appState.MainPanelReplaceTabsWithSpaces; // .... load file in question var argFilename = (string)Application.Current.Resources[Constants.Resources.Arg1Key]; if (argFilename != null && File.Exists(argFilename)) { LoadFile(argFilename); } else if (appState.LastFilename != null && File.Exists(appState.LastFilename)) { LoadFile(appState.LastFilename); } CodeDocument.UndoStack.ClearAll(); CodeDocumentQuery.UndoStack.ClearAll(); }