public virtual void Show(IWin32Window owner, IServiceProvider provider) { if (VisualizerDialog == null) { VisualizerDialog = CreateVisualizerDialog(provider); VisualizerDialog.Load += delegate { var bounds = Bounds; if (!bounds.IsEmpty && (SystemInformation.VirtualScreen.Contains(bounds) || WindowState != FormWindowState.Normal)) { VisualizerDialog.LayoutBounds = bounds; VisualizerDialog.WindowState = WindowState; } }; VisualizerDialog.FormClosed += delegate { Bounds = VisualizerDialog.LayoutBounds; if (VisualizerDialog.WindowState == FormWindowState.Minimized) { WindowState = FormWindowState.Normal; } else { WindowState = VisualizerDialog.WindowState; } VisualizerDialog.Dispose(); }; VisualizerDialog.HandleDestroyed += (sender, e) => VisualizerDialog = null; InitializeComponents(VisualizerDialog, provider); if (VisualizerDialog.TopLevel) { if (owner != null) { VisualizerDialog.Show(owner); } else { VisualizerDialog.Show(); } } } VisualizerDialog.Activate(); }
public override void Start(bool withDebugging) { // Open the package ApkFile apkFile; var apkPath = ApkPath; try { apkFile = new ApkFile(apkPath); } catch (Exception ex) { MessageBox.Show(string.Format("Failed to open package because: {0}", ex.Message)); return; } // Show device selection var ide = Dot42Addin.Ide; int minSdkVersion; if (!apkFile.Manifest.TryGetMinSdkVersion(out minSdkVersion)) { minSdkVersion = -1; } var targetFramework = (minSdkVersion > 0) ? Frameworks.Instance.GetBySdkVersion(minSdkVersion) : null; var targetVersion = (targetFramework != null) ? targetFramework.Name : null; var runner = new ApkRunner(ide, ApkPath, apkFile.Manifest.PackageName, apkFile.Manifest.Activities.Select(x => x.Name).FirstOrDefault(), withDebugging, 0); using (var dialog = new DeviceSelectionDialog(ide, IsCompatible, targetVersion)) { if (dialog.ShowDialog() == DialogResult.OK) { // Run on the device now var device = dialog.SelectedDevice; ide.LastUsedUniqueId = device.UniqueId; using (var xDialog = new LauncherDialog(apkPath, withDebugging)) { var stateDialog = xDialog; stateDialog.Cancel += (s, x) => runner.Cancel(); stateDialog.Load += (s, x) => runner.Run(device, stateDialog.SetState); stateDialog.ShowDialog(); } } } }
/// <summary> /// Starts the debugger. /// </summary> internal void DebugLaunch(uint grfLaunch) { // Open the package PackageFile packageFile; var packagePath = PackagePath; try { packageFile = new PackageFile(packagePath); } catch (Exception ex) { MessageBox.Show(string.Format("Failed to open package because: {0}", ex.Message)); return; } // Show device selection var debuggable = (grfLaunch != (uint)__VSDBGLAUNCHFLAGS.DBGLAUNCH_NoDebug); var ide = Package.Ide; #if ANDROID int minSdkVersion; if (!packageFile.Manifest.TryGetMinSdkVersion(out minSdkVersion)) { minSdkVersion = -1; } var targetFramework = (minSdkVersion > 0) ? Frameworks.Instance.GetBySdkVersion(minSdkVersion) : null; var targetVersion = (targetFramework != null) ? targetFramework.Name : null; var runner = new ApkRunner(ide, packagePath, packageFile.Manifest.PackageName, packageFile.Manifest.Activities.Select(x => x.Name).FirstOrDefault(), debuggable, (int)grfLaunch); #elif BB var targetFramework = Frameworks.Instance.FirstOrDefault(); var targetVersion = (targetFramework != null) ? targetFramework.Name : null; var runner = new BarRunner(ide, packagePath, packageFile.Manifest.PackageName, "--default--", debuggable, (int)grfLaunch); #endif using (var dialog = new DeviceSelectionDialog(ide, runner.DeviceIsCompatible, targetVersion)) { var rc = dialog.ShowDialog(); switch (rc) { case DialogResult.OK: var device = dialog.SelectedDevice; Package.Ide.LastUsedUniqueId = device.UniqueId; using (var xDialog = new LauncherDialog(packagePath, debuggable)) { var stateDialog = xDialog; stateDialog.Cancel += (s, x) => runner.Cancel(); stateDialog.Load += (s, x) => runner.Run(device, stateDialog.SetState); stateDialog.ShowDialog(); } break; case DialogResult.Retry: // Change project target version try { ChangeAndroidTargetVersion(dialog.NewProjectTargetVersion); MessageBox.Show(string.Format("Changed target framework version to {0}, to match the Android version of your device.", dialog.NewProjectTargetVersion)); } catch (Exception ex) { MessageBox.Show(string.Format("Failed to change target framework version because: {0}", ex.Message)); } break; } } }