private static void runWindows(Control mainControl) { ConsoleAdapter canvas = new ConsoleAdapter(80, 25); canvas.Initialize( ); Renderer renderer = ConsoleApplication.Instance.Renderer; renderer.Canvas = canvas; // Fill the canvas by default renderer.RootElementRect = new Rect(new Point(0, 0), canvas.Size); renderer.RootElement = mainControl; ConsoleApplication.Instance.RootControl = mainControl; // mainControl.Invalidate(); renderer.UpdateLayout(); renderer.FinallyApplyChangesToCanvas(); Console.WriteLine("Applied to canvas"); EventManager eventManager = ConsoleApplication.Instance.EventManager; canvas.UserInputReceived += (sender, args) => { // mainControl.Invalidate(); // renderer.UpdateLayout(); // renderer.FinallyApplyChangesToCanvas(); eventManager.ParseInputEvent(args.InputRecord, mainControl); while (true) { //bool anyInvokeActions = isAnyInvokeActions(); bool anyRoutedEvent = !eventManager.IsQueueEmpty(); bool anyLayoutToRevalidate = renderer.AnyControlInvalidated; if (/*!anyInvokeActions &&*/ !anyRoutedEvent && !anyLayoutToRevalidate) { break; } eventManager.ProcessEvents(); //processInvokeActions(); renderer.UpdateLayout(); } renderer.FinallyApplyChangesToCanvas(); }; }
private static void runWindows(Control mainControl) { ConsoleAdapter canvas = new ConsoleAdapter( 80, 25 ); canvas.Initialize( ); Renderer renderer = ConsoleApplication.Instance.Renderer; renderer.Canvas = canvas; // Fill the canvas by default renderer.RootElementRect = new Rect( new Point( 0, 0 ), canvas.Size ); renderer.RootElement = mainControl; ConsoleApplication.Instance.RootControl = mainControl; // mainControl.Invalidate(); renderer.UpdateLayout(); renderer.FinallyApplyChangesToCanvas(); Console.WriteLine("Applied to canvas"); EventManager eventManager = ConsoleApplication.Instance.EventManager; canvas.UserInputReceived += ( sender, args ) => { // mainControl.Invalidate(); // renderer.UpdateLayout(); // renderer.FinallyApplyChangesToCanvas(); eventManager.ParseInputEvent( args.InputRecord, mainControl ); while (true) { //bool anyInvokeActions = isAnyInvokeActions(); bool anyRoutedEvent = !eventManager.IsQueueEmpty(); bool anyLayoutToRevalidate = renderer.AnyControlInvalidated; if (/*!anyInvokeActions &&*/ !anyRoutedEvent && !anyLayoutToRevalidate) break; eventManager.ProcessEvents(); //processInvokeActions(); renderer.UpdateLayout(); } renderer.FinallyApplyChangesToCanvas(); }; }