internal void ReleasePad(DefaultMonitorPad pad) { lock (outputMonitors) { outputMonitors.Add (pad); } }
public OutputProgressMonitor(DefaultMonitorPad pad, string title, string icon) { pad.AsyncOperation = this.AsyncOperation; outputPad = pad; outputPad.BeginProgress (title); }
public IProgressMonitor GetOutputProgressMonitor(string title, string icon, bool bringToFront, bool allowMonitorReuse) { if (allowMonitorReuse) { DefaultMonitorPad pad = null; lock (outputMonitors) { // Look for an available pad for (int n=0; n<outputMonitors.Count; n++) { DefaultMonitorPad mpad = (DefaultMonitorPad) outputMonitors [n]; if (mpad.Title == title) { pad = mpad; outputMonitors.RemoveAt (n); break; } } } if (pad != null) { if (bringToFront) Runtime.Gui.Workbench.BringToFront (pad); return new OutputProgressMonitor (pad, title, icon); } } DefaultMonitorPad monitorPad = new DefaultMonitorPad (title, icon); monitorPad.Id = "OutputPad" + (monitorId++); Runtime.Gui.Workbench.ShowPad (monitorPad); if (bringToFront) Runtime.Gui.Workbench.BringToFront (monitorPad); return new OutputProgressMonitor (monitorPad, title, icon); }
protected override void OnCompleted() { if (outputPad == null) throw GetDisposedException (); outputPad.WriteText ("\n"); foreach (string msg in SuccessMessages) outputPad.WriteText (msg + "\n"); foreach (string msg in Warnings) outputPad.WriteText (msg + "\n"); foreach (string msg in Errors) outputPad.WriteText (msg + "\n"); outputPad.EndProgress (); base.OnCompleted (); Runtime.TaskService.ReleasePad (outputPad); outputPad = null; }