예제 #1
0
 /// <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;
 }
예제 #2
0
        /// <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;
 }
예제 #8
0
 /// <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)
 {
 }