void CodeToolWindow_WindowShow(object sender, EventArgs e) { if (shutting_down) { return; } if (OnAir == false && CodeRush.TextViews.Active != null) { EnvDTE.Window wnd = null; try { wnd = this.Window; // CodeRush.ToolWindows.Show(typeof(CodeToolWindow)); if (wnd != null && wnd.IsFloating) { //wnd.Visible = true; //wnd.IsFloating = true; EnvDTE.Window prop_wnd = CodeRush.ApplicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindProperties); if (prop_wnd == null) { return; } wnd.Width = 60; wnd.Top = prop_wnd.Top; // ea.TextView.ScreenBounds.Top; wnd.Height = prop_wnd.Height; // ea.TextView.ScreenBounds.Height; wnd.Left = prop_wnd.Left; // +code_wnd.Width + 1; // ea.TextView.ScreenBounds.Right - wnd.Width; //wnd.IsFloating = false; if (false) //(prop_wnd != null && prop_wnd.Linkable && prop_wnd.LinkedWindowFrame != null && prop_wnd.LinkedWindowFrame.LinkedWindows != null) { //var frame = wnd.DTE.Windows.CreateLinkedWindowFrame(wnd, prop_wnd, EnvDTE.vsLinkedWindowType.vsLinkedWindowTypeVertical); prop_wnd.LinkedWindowFrame.LinkedWindows.Add(wnd); } else { int width = prop_wnd.Width + 60; int height = prop_wnd.Height; prop_wnd.LinkedWindowFrame.LinkedWindows.Remove(prop_wnd); //prop_wnd.IsFloating = true; EnvDTE80.Window2 Frame = (EnvDTE80.Window2)CodeRush.ApplicationObject.Windows.CreateLinkedWindowFrame(wnd, prop_wnd, EnvDTE.vsLinkedWindowType.vsLinkedWindowTypeVertical); Frame.Caption = "Properties && Code"; Frame.SetKind(EnvDTE.vsWindowType.vsWindowTypeToolWindow); Frame.Width = width; Frame.Height = height; EnvDTE.Window main_wnd = ((EnvDTE80.DTE2)CodeRush.ApplicationObject).MainWindow; //EnvDTE.Window main_wnd = CodeRush.ApplicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindDocumentOutline); //main_wnd.LinkedWindowFrame.LinkedWindows.Add(Frame); main_wnd.LinkedWindows.Add(Frame); } OnAir = true; } } catch { } } }
public void ResolveConflictsPerTF(string rootPath) { try { _attachedFrames.Clear(); string pathToTools = Environment.GetEnvironmentVariable("VS160COMNTOOLS"); if (String.IsNullOrEmpty(pathToTools)) { pathToTools = Environment.GetEnvironmentVariable("VS140COMNTOOLS"); } if (String.IsNullOrEmpty(pathToTools)) { pathToTools = Environment.GetEnvironmentVariable("VS150COMNTOOLS"); } if (String.IsNullOrEmpty(pathToTools)) { pathToTools = Environment.GetEnvironmentVariable("VS130COMNTOOLS"); } if (String.IsNullOrEmpty(pathToTools)) { pathToTools = Environment.GetEnvironmentVariable("VS100COMNTOOLS"); } if (String.IsNullOrEmpty(pathToTools)) { throw new Exception("VS1X0COMNTOOLS not found"); } string pathToTF = Path.GetFullPath(Path.Combine(pathToTools, "..\\IDE\\TF.exe")); ProcessStartInfo psi = new ProcessStartInfo(); psi.WorkingDirectory = rootPath; psi.Arguments = "resolve /recursive /prompt"; psi.FileName = pathToTF; psi.CreateNoWindow = true; psi.UseShellExecute = false; Process p = Process.Start(psi); bool hasSet = false; while (!p.WaitForExit(10)) { SetMergeDiffWindowsToFloatOnly(); bool setForeground = true; foreach (EnvDTE.Window w1 in Dte.Windows) { EnvDTE80.Window2 window = w1 as EnvDTE80.Window2; if (window.Caption.StartsWith("Merge - ") || window.Caption.StartsWith("Diff - ")) { if (!hasSet || window.WindowState != EnvDTE.vsWindowState.vsWindowStateMaximize) { hasSet = true; window.IsFloating = true; window.WindowState = EnvDTE.vsWindowState.vsWindowStateMaximize; } setForeground = false; } } if (setForeground) { var foregroundWindow = GetForegroundWindow(); var mainWindowHandle = Process.GetCurrentProcess().MainWindowHandle; uint foregroundProcess = 0; uint mainWindowProcess = 0; GetWindowThreadProcessId(foregroundWindow, out foregroundProcess); GetWindowThreadProcessId(mainWindowHandle, out mainWindowProcess); if (foregroundProcess == mainWindowProcess) { SetForegroundWindow(p.MainWindowHandle); } } Application.DoEvents(); } foreach (var frame in _attachedFrames.Keys) { frame.SetProperty((int)__VSFPROPID.VSFPROPID_ViewHelper, null); } _attachedFrames.Clear(); } catch (Exception ex) { SimpleLogger.Log(ex, true); } }
public bool ShowDifferencesPerTF(string rootPath, string sourcePath, string targetPath) { try { _attachedFrames.Clear(); string pathToTools = Environment.GetEnvironmentVariable("VS120COMNTOOLS"); string pathToTF = Path.GetFullPath(Path.Combine(pathToTools, "..\\IDE\\TF.exe")); ProcessStartInfo psi = new ProcessStartInfo(); psi.WorkingDirectory = rootPath; psi.Arguments = String.Format("diff \"{0}\" \"{1}\"", sourcePath, targetPath); psi.FileName = pathToTF; psi.CreateNoWindow = true; psi.UseShellExecute = false; Process p = Process.Start(psi); bool hasSet = false; while (!p.WaitForExit(10)) { SetMergeDiffWindowsToFloatOnly(); bool setForeground = true; foreach (EnvDTE.Window w1 in Dte.Windows) { EnvDTE80.Window2 window = w1 as EnvDTE80.Window2; if (window.Caption.StartsWith("Merge - ") || window.Caption.StartsWith("Diff - ")) { if (!hasSet || window.WindowState != EnvDTE.vsWindowState.vsWindowStateMaximize) { hasSet = true; window.IsFloating = true; window.WindowState = EnvDTE.vsWindowState.vsWindowStateMaximize; } setForeground = false; } } if (setForeground) { var foregroundWindow = GetForegroundWindow(); var mainWindowHandle = Process.GetCurrentProcess().MainWindowHandle; uint foregroundProcess = 0; uint mainWindowProcess = 0; GetWindowThreadProcessId(foregroundWindow, out foregroundProcess); GetWindowThreadProcessId(mainWindowHandle, out mainWindowProcess); if (foregroundProcess == mainWindowProcess) { SetForegroundWindow(p.MainWindowHandle); } } Application.DoEvents(); } foreach (var frame in _attachedFrames.Keys) { frame.SetProperty((int)__VSFPROPID.VSFPROPID_ViewHelper, null); } _attachedFrames.Clear(); if (p.ExitCode == 100) { return(false); } } catch (Exception ex) { SimpleLogger.Log(ex, true); } return(true); }