internal static IProjectLauncher GetLauncher(IServiceProvider serviceProvider, IPythonProject project) { var launchProvider = serviceProvider.GetUIThread().Invoke <string>(() => project.GetProperty(PythonConstants.LaunchProvider)); IPythonLauncherProvider defaultLaunchProvider = null; foreach (var launcher in serviceProvider.GetComponentModel().GetExtensions <IPythonLauncherProvider>()) { if (launcher.Name == launchProvider) { return(serviceProvider.GetUIThread().Invoke <IProjectLauncher>(() => launcher.CreateLauncher(project))); } if (launcher.Name == DefaultLauncherProvider.DefaultLauncherName) { defaultLaunchProvider = launcher; } } // no launcher configured, use the default one. Debug.Assert(defaultLaunchProvider != null); return((defaultLaunchProvider != null) ? serviceProvider.GetUIThread().Invoke <IProjectLauncher>(() => defaultLaunchProvider.CreateLauncher(project)) : null); }
public LauncherInfo(PythonProjectNode project, IPythonLauncherProvider launcher) { Launcher = launcher; LauncherOptions = launcher.GetLauncherOptions(project); OptionsControl = LauncherOptions.Control; LauncherOptions.LoadSettings(); }
public override IProjectLauncher GetLauncher() { var compModel = PythonToolsPackage.ComponentModel; var launchers = compModel.GetExtensions <IPythonLauncherProvider>(); var launchProvider = GetProjectProperty(PythonConstants.LaunchProvider, false); IProjectLauncher res = null; IPythonLauncherProvider defaultLaunchProvider = null; foreach (var launcher in launchers) { if (launcher.Name == launchProvider) { res = launcher.CreateLauncher(this); break; } else if (res == null && launcher.Name == DefaultLauncherProvider.DefaultLauncherDescription) { defaultLaunchProvider = launcher; } } if (res == null) { // no launcher configured, use the default one. Debug.Assert(defaultLaunchProvider != null); res = defaultLaunchProvider.CreateLauncher(this); } return(res); }