public override void Send(SendOrPostCallback d, object state) { var evt = new ManualResetEvent(false); Exception exception = null; Idle.Add(() => { try { d(state); } catch (Exception ex) { exception = ex; } finally { evt.Set(); } return(false); }); evt.WaitOne(); if (exception != null) { throw exception; } }
public void AddPackets(PacketDumpProcessor pdp) { var sw = Stopwatch.StartNew(); const int batchSize = 100; var processedCount = 0; var x = AddPacketsInternal(pdp, batchSize).GetEnumerator(); Idle.Add(() => { if (!x.MoveNext() || !x.Current) { x.Dispose(); sw.Stop(); Console.WriteLine($"AddPackets: {sw.ElapsedMilliseconds}ms"); _buttonOpenFolder.Sensitive = true; _buttonOpenReplay.Sensitive = true; } else { processedCount += batchSize; SetStatus($"Added {processedCount}/{pdp.Packets.Count} packets", processedCount, pdp.Packets.Count); } return(x.Current); }); }
void initializeHandlerIfNecessary() { if (handler != null) { return; } handler = () => { if (dispatcherQueue.Count == 0) { return(true); } var item = dispatcherQueue [0]; dispatcherQueue.RemoveAt(0); item(); if (dispatcherQueue.Count == 0) { handler = null; return(false); } return(true); }; Idle.Add(handler); }
public void TestAdd() { // null function is not allowed Assert.That(() => Idle.Add(null), Throws.InstanceOf <ArgumentNullException> ()); // Idle.Add() can only attach sources to the global main context, // so we need to use a lock to ensure exclusive use of the main // context. lock (MainContextTests.MainContextLock) { var idleInvoked = false; using (var mainLoop = new MainLoop()) { var id = Idle.Add(() => { mainLoop.Quit(); idleInvoked = true; return(Source.Remove_); }); Assert.That(id, Is.Not.EqualTo(0)); var source = MainContext.Default.FindSourceById(id); Task.Run(() => { mainLoop.Run(); }).Wait(100); source.Destroy(); } Assert.That(idleInvoked, Is.True); } Utility.AssertNoGLibLog(); }
private void OnJoinedLobby(object sender, LobbyEventArgs e) { Idle.Add(delegate { _gameCodeEntryField.Text = e.LobbyCode; return(false); }); }
public override void Post(SendOrPostCallback d, object state) { Idle.Add(() => { d(state); return(false); }); }
protected void InitializeUserInterface() { Title = "Neural Network Classifier"; Confirm = new Dialog( "Are you sure?", this, DialogFlags.Modal, "Yes", ResponseType.Accept, "No", ResponseType.Cancel ) { Resizable = false, KeepAbove = true, TypeHint = WindowTypeHint.Dialog, WidthRequest = 250 }; Confirm.ActionArea.LayoutStyle = ButtonBoxStyle.Center; Confirm.WindowStateEvent += OnWindowStateEvent; TextSaver = new FileChooserDialog( "Save Text File", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept ); TextLoader = new FileChooserDialog( "Load Text File", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Load", ResponseType.Accept ); TextLoader.AddFilter(AddFilter("Text files (csv/txt)", "*.txt", "*.csv")); TextSaver.AddFilter(AddFilter("txt", "*.txt")); TextSaver.AddFilter(AddFilter("csv", "*.csv")); Delimiters.Add(new Delimiter("Tab \\t", '\t')); Delimiters.Add(new Delimiter("Comma ,", ',')); Delimiters.Add(new Delimiter("Space \\s", ' ')); Delimiters.Add(new Delimiter("Vertical Pipe |", '|')); Delimiters.Add(new Delimiter("Colon :", ':')); Delimiters.Add(new Delimiter("Semi-Colon ;", ';')); Delimiters.Add(new Delimiter("Forward Slash /", '/')); Delimiters.Add(new Delimiter("Backward Slash \\", '\\')); UpdateDelimiterBox(DelimiterBox, Delimiters); ToggleControls(Paused); Idle.Add(new IdleHandler(OnIdle)); }
private void LazyLoadItems(List items) { _data = new IdleData(); _data.Items = items; _data.NumItems = 0; _data.NumLoaded = 0; _data.ListStore = _store; _data.LoadState = Controls.State.Started; _data.LoadId = Idle.Add(new IdleHandler(LoadItems)); }
public void TestRemove() { lock (MainContextTests.MainContextLock) { var id = Idle.Add(() => Source.Remove_); Assume.That(MainContext.Default.FindSourceById(id), Is.Not.Null); Source.Remove(id); Assert.That(MainContext.Default.FindSourceById(id), Is.Null); } Utility.AssertNoGLibLog(); }
/// <summary> /// Starts up the background thread, if needed, and triggers a reload /// on the lines. /// </summary> public void Restart() { // Set the flag so we loop through at least one more time. needRestart = true; // If we aren't running, then start it up again. if (!isRunning) { isRunning = true; Idle.Add(OnIdleUpdate); } }
public static void Main(string [] args) { Program program = new Program("ImportCommandTest", "0.0", Modules.UI, args); try { File.Delete(db_path); } catch {} directory_path = args [0]; Idle.Add(new IdleHandler(OnIdleStartImport)); program.Run(); }
public MainWindow() : base(Gtk.WindowType.Toplevel) { Build(); InitControls(); InitToolbar(); Tic(); GtkSelection.Selection.EllipseMode = false; Idle.Add(new IdleHandler(OnIdle)); }
/// <summary> /// Starts the background update of the elements if it isn't already /// running. /// </summary> private void StartBackgroundUpdate() { using (new WriteLock(sync)) { // If the idle is already running, then we don't need to worry // about the idle. If it isn't, then set the flag and attach // the idle function to the Gtk# loop. if (!idleRunning) { idleRunning = true; Idle.Add(OnIdle); } } }
public void AppendColoredTextToConsole(string line, Color color, bool addNewLine = false) { if (!(_consoleTextView is null)) { Idle.Add(delegate { var iter = _consoleTextView.Buffer.EndIter; _consoleTextView.Buffer.InsertMarkup(ref iter, addNewLine ? $"<span foreground=\"#{color.R.ToString("X2")}{color.G.ToString("X2")}{color.B.ToString("X2")}\">{line}</span>{Environment.NewLine}" : $"<span foreground=\"#{color.R.ToString("X2")}{color.G.ToString("X2")}{color.B.ToString("X2")}\">{line}</span>"); _consoleTextView.Buffer.PlaceCursor(iter); return(false); }); } }
public override void Post(SendOrPostCallback callback, object state) { lock (lockObject) { if (!addedHandler) { Idle.Add(ProcessQueue); addedHandler = true; } queue.Enqueue(new QueueItem() { Callback = callback, State = state }); } }
private void GameStateChangedHandler(object sender, GameStateChangedEventArgs e) { while (deadMessageQueue.Count > 0) //Lets print out the state changes now that gamestate has changed. { var text = deadMessageQueue.Dequeue(); Settings.conInterface.WriteModuleTextColored("PlayerChange", Color.DarkKhaki, text); } Idle.Add(delegate { _currentStateLabel.Text = e.NewState.ToString(); return(false); }); Settings.conInterface.WriteModuleTextColored("GameMemReader", Color.Lime, $"State changed to {Color.Cyan.ToTextColorPango(e.NewState.ToString())}"); //Program.conInterface.WriteModuleTextColored("GameMemReader", Color.Green, "State changed to " + e.NewState); }
public void WriteLineToConsole(string line) { if (!(_consoleTextView is null)) { lock (locker) { Idle.Add(delegate { var iter = _consoleTextView.Buffer.EndIter; _consoleTextView.Buffer.Insert(ref iter, line + "\n"); _consoleTextView.Buffer.PlaceCursor(iter); return(false); }); } //autoscroll(); } }
public MainWindow() : base(Gtk.WindowType.Toplevel) { Build(); InitializeComponents(); InitializeDefaults(); DisableControls(); InitializeSelectionMode(); InitializeSelected(); EnableControls(); Idle.Add(new IdleHandler(OnIdleUpdate)); }
void DoSomethingVerySlow() { if (data.Cancelled) { return; } for (int i = 0; i < 100; i++) { System.Threading.Thread.Sleep(100); if (i % 10 != 0) { continue; } Idle.Add(new TestUpdate(i, data).HandleIdle); } }
private void LoadHome() { // We defer this to another main loop iteration, otherwise // our load placeholder document will never be rendered. Idle.Add(delegate { GoHome(); // Emit the Ready event once we are first allowed // to load the home page (ensures we've downloaded // the fixup javascript, etc.). if (!IsReady) { IsReady = true; var handler = Ready; handler?.Invoke(this, EventArgs.Empty); } return(false); }); }
public MainWindow() : base(Gtk.WindowType.Toplevel) { Build(); DisableControls(); LoadSettings(); InitializeCamera(); InitializePattern(); InitializeDetector(); InitializeSelectionMode(); InitializeSelection(); InitializeChooser(); EnableControls(); Idle.Add(new IdleHandler(OnIdleUpdate)); prevParent = cameraLayout; }
public override void Send(SendOrPostCallback d, object state) { if (System.Threading.Thread.CurrentThread.ManagedThreadId == FormsWindow.MainThreadID) { d(state); } else { var evt = new ManualResetEvent(false); Exception exception = null; Idle.Add(() => { try { d(state); } catch (Exception ex) { exception = ex; } finally { evt.Set(); } return(false); }); evt.WaitOne(); if (exception != null) { throw exception; } } }
protected void InitializeUserInterface() { Title = "Phase Explorer"; InputPixbuf = Common.InitializePixbuf(Parameters.SLModX, Parameters.SLModY); PhasePixbuf = Common.InitializePixbuf(Parameters.SLModX, Parameters.SLModY); ReconPixbuf = Common.InitializePixbuf(Parameters.SLModX, Parameters.SLModY); InputImage.Pixbuf = Common.InitializePixbuf(Parameters.WindowX, Parameters.WindowY); PhaseImage.Pixbuf = Common.InitializePixbuf(Parameters.WindowX, Parameters.WindowY); ReconImage.Pixbuf = Common.InitializePixbuf(Parameters.WindowX, Parameters.WindowY); ResetScrollBars(); RenderImage(InputImage, InputPixbuf, Parameters.InputX, Parameters.InputY); RenderImage(PhaseImage, PhasePixbuf, Parameters.PhaseX, Parameters.PhaseY); RenderImage(ReconImage, ReconPixbuf, Parameters.ReconX, Parameters.ReconY); Confirm = new Dialog( "Are you sure?", this, DialogFlags.Modal, "Yes", ResponseType.Accept, "No", ResponseType.Cancel ) { Resizable = false, KeepAbove = true, TypeHint = WindowTypeHint.Dialog, WidthRequest = 250 }; Confirm.ActionArea.LayoutStyle = ButtonBoxStyle.Center; Confirm.WindowStateEvent += OnWindowStateEvent; ImageSaver = new FileChooserDialog( "Save Filtered Image", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept ); ImageLoader = new FileChooserDialog( "Load Image", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Load", ResponseType.Accept ); ImageSaver.AddFilter(AddFilter("png", "*.png")); ImageSaver.AddFilter(AddFilter("jpg", "*.jpg", "*.jpeg")); ImageSaver.AddFilter(AddFilter("tif", "*.tif", "*.tiff")); ImageSaver.AddFilter(AddFilter("bmp", "*.bmp")); ImageSaver.AddFilter(AddFilter("ico", "*.ico")); ImageSaver.Filter = ImageSaver.Filters[0]; ImageLoader.AddFilter(AddFilter("Image files (png/jpg/jpeg/tif/tiff/bmp/gif/ico/xpm/icns/pgm)", "*.png", "*.jpg", "*.jpeg", "*.tif", "*.tiff", "*.bmp", "*.gif", "*.ico", "*.xpm", "*.icns", "*.pgm")); ImageLoader.Filter = ImageLoader.Filters[0]; DisableControls(); SetParameters(); EnableControls(); ToggleGerchbergSaxtonPhase(); ToggleLensPhase(); ToggleBlazedPhase(); InputWidth.Value = Parameters.SLModX; InputHeight.Value = Parameters.SLModY; Idle.Add(new IdleHandler(OnIdle)); }
protected void InitializeUserInterface() { InitializeWorldPixbuf(); WorldImage.Pixbuf = InitializePixbuf(WorldParameters.WindowX, WorldParameters.WindowY); WorldPixbuf.Fill(0); RenderWorldPixbuf(); ResetWorldScrollBars(); Confirm = new Dialog( "Are you sure?", this, DialogFlags.Modal, "Yes", ResponseType.Accept, "No", ResponseType.Cancel ) { Resizable = false, KeepAbove = true, TypeHint = WindowTypeHint.Dialog, WidthRequest = 250 }; Confirm.ActionArea.LayoutStyle = ButtonBoxStyle.Center; Confirm.WindowStateEvent += OnWindowStateEvent; var bg = MainNoteBook.Style.Background(MainNoteBook.State); MainToolbar.ModifyBg(StateType.Normal, bg); MainToolbar.BorderWidth = 0; Idle.Add(new IdleHandler(OnIdle)); var Defaults = ParameterSets.Default(); var source = Utility.GetString(Defaults, "Source"); var states = Utility.GetNumeric(Defaults, "States"); if (!String.IsNullOrEmpty(source)) { TurmiteProgram.Buffer.Text = Utility.SetText(source); } TurmiteStates.Value = Convert.ToInt32(states); CopyNeighborhood(World.VonNeumannNeighborhood()); WorldHeight.Value = Convert.ToInt32(WorldParameters.Height); WorldWidth.Value = Convert.ToInt32(WorldParameters.Width); TurmiteColor.Color = new Color(255, 0, 0); ParameterSets.InitializeTurmiteLibrary(); UpdateTurmiteLibrary(TurmiteLibrary, ParameterSets.TurmiteLibrary); TurmiteHeadX.Value = 0; TurmiteHeadY.Value = 0; ImageChooser = new FileChooserDialog( "Save colony snapshot", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept ); Cyclic.Active = false; if (Paused) { Pause(); } }
/// <summary> /// Initializes a new instance of the <see cref="MainWindow"/> class. /// </summary> /// <param name="builder">Builder.</param> /// <param name="handle">Handle.</param> private MainWindow(Builder builder, IntPtr handle) : base(handle) { builder.Autoconnect(this); this.DeleteEvent += OnDeleteEvent; this.Shown += OnMainWindowShown; this.WindowStateEvent += OnWindowStateChanged; this.UiThreadScheduler = TaskScheduler.FromCurrentSynchronizationContext(); this.FileLoadingCancellationSource = new CancellationTokenSource(); this.ViewportWidget = new GLWidget { CanFocus = true, SingleBuffer = false, ColorBPP = 24, DepthBPP = 24, AccumulatorBPP = 24, Samples = 4, GlVersionMajor = 3, GlVersionMinor = 3, GraphicsContextFlags = GraphicsContextFlags.Default, }; this.ViewportWidget.Events |= EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.EnterNotifyMask | EventMask.LeaveNotifyMask | EventMask.KeyPressMask | EventMask.KeyReleaseMask; this.ViewportWidget.Initialized += (sender, args) => { // Initialize all OpenGL rendering parameters this.RenderingEngine.Initialize(); Idle.Add(OnIdleRenderFrame); }; this.ViewportWidget.ButtonPressEvent += OnViewportButtonPressed; this.ViewportWidget.ButtonReleaseEvent += OnViewportButtonReleased; this.ViewportWidget.EnterNotifyEvent += OnViewportMouseEnter; this.ViewportWidget.LeaveNotifyEvent += OnViewportMouseLeave; this.ViewportWidget.ConfigureEvent += OnViewportConfigured; this.RenderingEngine = new ViewportRenderer(this.ViewportWidget); this.ViewportAlignment.Add(this.ViewportWidget); this.ViewportAlignment.ShowAll(); this.AboutButton.Clicked += OnAboutButtonClicked; this.PreferencesButton.Clicked += OnPreferencesButtonClicked; this.GameTabNotebook.ClearPages(); this.ExportQueueTreeView.ButtonPressEvent += OnExportQueueButtonPressed; this.ExportQueueTreeView.GetColumn(0).SetCellDataFunc ( this.ExportQueueTreeView.GetColumn(0).Cells[0], RenderExportQueueReferenceIcon ); this.ExportQueueTreeView.GetColumn(0).Expand = true; this.ExportQueueTreeView.GetColumn(0).SetCellDataFunc ( this.ExportQueueTreeView.GetColumn(0).Cells[1], RenderExportQueueReferenceName ); this.RemoveQueueItem.Activated += OnQueueRemoveContextItemActivated; this.FileFilterComboBox.Changed += OnFilterChanged; /* * Set up item control sections to default states */ EnableControlPage(ControlPage.None); /* * Bind item control events */ this.RenderAlphaCheckButton.Toggled += (sender, args) => { RenderableImage image = this.RenderingEngine.RenderTarget as RenderableImage; if (image == null) { return; } image.RenderAlphaChannel = this.RenderAlphaCheckButton.Active; }; this.RenderRedCheckButton.Toggled += (sender, args) => { RenderableImage image = this.RenderingEngine.RenderTarget as RenderableImage; if (image == null) { return; } image.RenderRedChannel = this.RenderRedCheckButton.Active; }; this.RenderGreenCheckButton.Toggled += (sender, args) => { RenderableImage image = this.RenderingEngine.RenderTarget as RenderableImage; if (image == null) { return; } image.RenderGreenChannel = this.RenderGreenCheckButton.Active; }; this.RenderBlueCheckButton.Toggled += (sender, args) => { RenderableImage image = this.RenderingEngine.RenderTarget as RenderableImage; if (image == null) { return; } image.RenderBlueChannel = this.RenderBlueCheckButton.Active; }; this.RenderBoundsCheckButton.Toggled += (sender, args) => { RenderableWorldModel wmo = this.RenderingEngine.RenderTarget as RenderableWorldModel; if (wmo != null) { wmo.ShouldRenderBounds = this.RenderBoundsCheckButton.Active; } RenderableGameModel mdx = this.RenderingEngine.RenderTarget as RenderableGameModel; if (mdx != null) { mdx.ShouldRenderBounds = this.RenderBoundsCheckButton.Active; } }; this.RenderWireframeCheckButton.Toggled += (sender, args) => { RenderableWorldModel wmo = this.RenderingEngine.RenderTarget as RenderableWorldModel; if (wmo != null) { wmo.ShouldRenderWireframe = this.RenderWireframeCheckButton.Active; } }; }
public void ThreadMethod() { DoSomethingVerySlow(); Idle.Add(data.HandleIdle); }
private static void Main(string[] args) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && Settings.PersistentSettings.debugConsole) { AllocConsole(); // needs to be the first call in the program to prevent weird bugs } if (!Directory.Exists(Settings.StorageLocation)) { // Create Settings directory if it doesn't exist, as we need to stick our pidfile there. Directory.CreateDirectory(Settings.StorageLocation); } URIStartResult uriRes = URIStartResult.CLOSE; uriRes = IPCadapter.getInstance().HandleURIStart(args); switch (uriRes) { case URIStartResult.CLOSE: Environment.Exit(0); break; case URIStartResult.PARSE: Console.WriteLine($"Starting with args : {args[0]}"); break; case URIStartResult.CONTINUE: break; default: throw new ArgumentOutOfRangeException(); } socket = new ClientSocket(); //Create the Form Console interface. var thread = new Thread(OpenGUI); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { thread.SetApartmentState(ApartmentState.STA); } thread.Start(); while (Settings.conInterface is null) { Thread.Sleep(250); } Task.Factory.StartNew(() => socket.Init()) .Wait(); // run socket in background. Important to wait for init to have actually finished before continuing Task.Factory.StartNew(() => IPCadapter.getInstance().RegisterMinion()).Wait(); // Add a GLib Idle handler to fix the issue here. Idle.Add(delegate { Task.Factory.StartNew(() => GameMemReader.getInstance().RunLoop()); // run loop in background if (uriRes == URIStartResult.PARSE) { IPCadapter.getInstance().SendToken(args[0]); } return(false); }); thread.Join(); }
protected void InitializeUserInterface() { Title = "Neural Network Classifier"; Confirm = new Dialog( "Are you sure?", this, DialogFlags.Modal, "Yes", ResponseType.Accept, "No", ResponseType.Cancel ) { Resizable = false, KeepAbove = true, TypeHint = WindowTypeHint.Dialog, WidthRequest = 250 }; Confirm.ActionArea.LayoutStyle = ButtonBoxStyle.Center; Confirm.WindowStateEvent += OnWindowStateEvent; TextSaver = new FileChooserDialog( "Save Text File", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept ); TextLoader = new FileChooserDialog( "Load Text File", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Load", ResponseType.Accept ); JsonLoader = new FileChooserDialog( "Load trained models", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Load", ResponseType.Accept ); JsonSaver = new FileChooserDialog( "Save trained models", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept ); ImageSaver = new FileChooserDialog( "Save Filtered Image", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept ); TextLoader.AddFilter(AddFilter("Text files (csv/txt)", "*.txt", "*.csv")); TextLoader.Filter = TextLoader.Filters[0]; TextSaver.AddFilter(AddFilter("txt", "*.txt")); TextSaver.AddFilter(AddFilter("csv", "*.csv")); TextSaver.Filter = TextSaver.Filters[0]; JsonLoader.AddFilter(AddFilter("json", "*.json")); JsonSaver.AddFilter(AddFilter("json", "*.json")); Delimiters.Add(new Delimiter("Tab \\t", '\t')); Delimiters.Add(new Delimiter("Comma ,", ',')); Delimiters.Add(new Delimiter("Space \\s", ' ')); Delimiters.Add(new Delimiter("Vertical Pipe |", '|')); Delimiters.Add(new Delimiter("Colon :", ':')); Delimiters.Add(new Delimiter("Semi-Colon ;", ';')); Delimiters.Add(new Delimiter("Forward Slash /", '/')); Delimiters.Add(new Delimiter("Backward Slash \\", '\\')); ImageSaver.AddFilter(AddFilter("png", "*.png")); ImageSaver.AddFilter(AddFilter("jpg", "*.jpg", "*.jpeg")); ImageSaver.AddFilter(AddFilter("tif", "*.tif", "*.tiff")); ImageSaver.AddFilter(AddFilter("bmp", "*.bmp")); ImageSaver.AddFilter(AddFilter("ico", "*.ico")); ImageSaver.Filter = ImageSaver.Filters[0]; UpdateDelimiterBox(DelimiterBox, Delimiters); UpdatePlotTypes(); PlotImage.Pixbuf = Common.Pixbuf(PlotImage.WidthRequest, PlotImage.HeightRequest); ToggleControls(Paused); Idle.Add(new IdleHandler(OnIdle)); }
public void WriteLineFormatted(string str, bool acceptnewlines = true) { if (!(_consoleTextView is null)) { Idle.Add(delegate { lock (locker) { if (!string.IsNullOrEmpty(str)) { if (!acceptnewlines) { str = str.Replace('\n', ' '); } var parts = str.Split(new[] { '§' }); if (parts[0].Length > 0) { AppendColoredTextToConsole(parts[0], Color.White); } for (var i = 1; i < parts.Length; i++) { var charColor = Color.White; if (parts[i].Length > 0) { switch (parts[i][0]) { case '0': charColor = Color.Gray; break; //Should be Black but Black is non-readable on a black background case '1': charColor = Color.RoyalBlue; break; case '2': charColor = Color.Green; break; case '3': charColor = Color.DarkCyan; break; case '4': charColor = Color.DarkRed; break; case '5': charColor = Color.MediumPurple; break; case '6': charColor = Color.DarkKhaki; break; case '7': charColor = Color.Gray; break; case '8': charColor = Color.DarkGray; break; case '9': charColor = Color.LightBlue; break; case 'a': charColor = Color.Lime; break; case 'b': charColor = Color.Cyan; break; case 'c': charColor = Color.Red; break; case 'd': charColor = Color.Magenta; break; case 'e': charColor = Color.Yellow; break; case 'f': charColor = Color.White; break; case 'o': charColor = Color.Orange; break; case 'n': charColor = Color.SaddleBrown; break; case 'r': charColor = Color.Gray; break; } if (parts[i].Length > 1) { AppendColoredTextToConsole(parts[i].Substring(1, parts[i].Length - 1), charColor); } } } } AppendColoredTextToConsole("", Color.White, true); return(false); } //autoscroll(); }); } }
/// <summary> /// Initializes a new instance of the <see cref="MainWindow"/> class. /// </summary> /// <param name="builder">Builder.</param> /// <param name="handle">Handle.</param> private MainWindow(Builder builder, IntPtr handle) : base(handle) { builder.Autoconnect(this); this.DeleteEvent += OnDeleteEvent; this.UIThreadScheduler = TaskScheduler.FromCurrentSynchronizationContext(); this.ViewportWidget = new GLWidget { CanFocus = true, SingleBuffer = false, ColorBPP = 24, DepthBPP = 24, AccumulatorBPP = 24, Samples = 4, GLVersionMajor = 3, GLVersionMinor = 3, GraphicsContextFlags = GraphicsContextFlags.Default }; this.ViewportWidget.Events |= EventMask.ButtonPressMask | EventMask.ButtonReleaseMask | EventMask.KeyPressMask | EventMask.KeyReleaseMask; this.ViewportWidget.Initialized += delegate { // Initialize all OpenGL rendering parameters this.RenderingEngine.Initialize(); Idle.Add(OnIdleRenderFrame); }; this.ViewportWidget.ButtonPressEvent += OnViewportButtonPressed; this.ViewportWidget.ButtonReleaseEvent += OnViewportButtonReleased; this.ViewportWidget.ConfigureEvent += OnViewportConfigured; this.RenderingEngine = new ViewportRenderer(this.ViewportWidget); this.ViewportAlignment.Add(this.ViewportWidget); this.ViewportAlignment.ShowAll(); // Add a staggered idle handler for adding enumerated items to the interface //Timeout.Add(1, OnIdle, Priority.DefaultIdle); Idle.Add(OnIdle, Priority.DefaultIdle); this.AboutButton.Clicked += OnAboutButtonClicked; this.PreferencesButton.Clicked += OnPreferencesButtonClicked; this.GameExplorerTreeView.RowExpanded += OnGameExplorerRowExpanded; this.GameExplorerTreeView.RowActivated += OnGameExplorerRowActivated; this.GameExplorerTreeView.Selection.Changed += OnGameExplorerSelectionChanged; this.GameExplorerTreeView.ButtonPressEvent += OnGameExplorerButtonPressed; this.GameExplorerTreeSorter.SetSortFunc(1, SortGameExplorerRow); this.GameExplorerTreeSorter.SetSortColumnId(1, SortType.Descending); this.ExportQueueTreeView.ButtonPressEvent += OnExportQueueButtonPressed; this.ExtractItem.Activated += OnExtractContextItemActivated; this.ExportItem.Activated += OnExportItemContextItemActivated; this.OpenItem.Activated += OnOpenContextItemActivated; this.CopyItem.Activated += OnCopyContextItemActivated; this.QueueItem.Activated += OnQueueContextItemActivated; this.RemoveQueueItem.Activated += OnQueueRemoveContextItemActivated; this.FiletreeBuilder = new ExplorerBuilder ( new ExplorerStore ( this.GameExplorerTreeStore, this.GameExplorerTreeFilter, this.GameExplorerTreeSorter ) ); this.FiletreeBuilder.PackageGroupAdded += OnPackageGroupAdded; this.FiletreeBuilder.PackageEnumerated += OnPackageEnumerated; this.FiletreeBuilder.Start(); /* * Set up item control sections to default states */ EnableControlPage(ControlPage.None); }