/// <summary> /// Initializes a new instance of the CheckForDevicesTaskData class. /// </summary> /// <param name="lastKnownPort">Last known device port.</param> /// <param name="ltoFlashViewModel">ViewModel for propagating data.</param> /// <param name="currentDevices">A list of current devices, used to exclude from port searching.</param> /// <param name="autoConnect">If <c>true</c> automatically connect to a discovered device.</param> public CheckForDevicesTaskData(string lastKnownPort, LtoFlashViewModel ltoFlashViewModel, IEnumerable <string> currentDevices, bool autoConnect) : base(null) { LastKnownPort = lastKnownPort; CurrentDevices = currentDevices; LtoFlashViewModel = ltoFlashViewModel; AutoConnect = autoConnect; }
/// <summary> /// GTK-specific implementation. /// </summary> partial void OSFinishedUpdatingItemStates() { // HACK: Ensure visual redraws to notice updated icons. Perhaps the Renderer should // somehow be instructed that the value has changed? var visual = LtoFlashViewModel.GetVisuals().First().Item2.NativeVisual; var menuLayoutVisual = visual.FindChild <Gtk.TreeView>(); menuLayoutVisual.QueueDraw(); }
private static bool OnSimulatorStarted(LtoFlashViewModel ltoFlashViewModel) { var launched = false; var simulatorProcess = System.Diagnostics.Process.GetProcesses().FirstOrDefault(p => p.ProcessName == SimulatorAppName); if (simulatorProcess == null) { var simAppPath = System.AppDomain.CurrentDomain.BaseDirectory + SimulatorAppName; if (System.IO.File.Exists(simAppPath + PathUtils.ProgramSuffix)) { ltoFlashViewModel.Simulator = INTV.Shared.Utility.RunExternalProgram.Launch(simAppPath, CreatePipeName(SimulatorConnectionName, "Input") + " " + CreatePipeName(SimulatorConnectionName, "Output"), string.Empty, true, false); launched = ltoFlashViewModel.Simulator != null; ltoFlashViewModel.Simulator.EnableRaisingEvents = true; ltoFlashViewModel.Simulator.Exited += (s, e) => HandleSimulatorExited(ltoFlashViewModel); SingleInstanceApplication.Current.Exit += (s, e) => HandleApplicationExitForSimulator(ltoFlashViewModel, true); } } return(launched); }
private static void HandleApplicationExitForSimulator(LtoFlashViewModel ltoFlashViewModel, bool appExit) { var devicesToDisconnect = ltoFlashViewModel.Devices.Where(d => d.Connections.Any(c => c.Type == Core.Model.Device.ConnectionType.NamedPipe)); foreach (var device in devicesToDisconnect) { device.Device.Disconnect(appExit); } var simulator = ltoFlashViewModel.Simulator; ltoFlashViewModel.Simulator = null; if (simulator != null) { if (!simulator.HasExited) { simulator.Kill(); } simulator.Dispose(); } }
private static void HandleSimulatorExited(LtoFlashViewModel ltoFlashViewModel) { HandleApplicationExitForSimulator(ltoFlashViewModel, false); }
/// <summary> /// Initialized a new collection of device connections. /// </summary> /// <param name="ltoFlashViewModel">The master ViewModel for LTO Flash!</param> /// <returns>An enumerable (ordered) of the devices that might be an LTO Flash!</returns> public static IEnumerable <DeviceConnectionViewModel> GetAvailableConnections(LtoFlashViewModel ltoFlashViewModel) { var ports = new List <DeviceConnectionViewModel>(); var available = ltoFlashViewModel.AvailableDevicePorts.OrderBy(p => p); if (available.Any()) { ports.AddRange(available.Select(p => new DeviceConnectionViewModel(ltoFlashViewModel, p))); } else { ports.Add(NoneAvailable); } return(ports); }
/// <summary> /// Initializes a new instance of DeviceConnectionViewModel. /// </summary> /// <param name="ltoFlashViewModel">The master ViewModel.</param> /// <param name="name">Name of the port.</param> public DeviceConnectionViewModel(LtoFlashViewModel ltoFlashViewModel, string name) { LtoFlash = ltoFlashViewModel; Name = name; Icon = DeviceViewModel.ConnectedDevices; }
/// <summary> /// Initializes a new instance of the CheckForDevicesTaskData class. /// </summary> /// <param name="lastKnownPort">Last known device port.</param> /// <param name="ltoFlashViewModel">ViewModel for propagating data.</param> public CheckForDevicesTaskData(string lastKnownPort, LtoFlashViewModel ltoFlashViewModel) : this(lastKnownPort, ltoFlashViewModel, Enumerable.Empty <string>(), true) { }