本文整理汇总了C#中VisualStudioApp.WaitForDialog方法的典型用法代码示例。如果您正苦于以下问题:C# VisualStudioApp.WaitForDialog方法的具体用法?C# VisualStudioApp.WaitForDialog怎么用?C# VisualStudioApp.WaitForDialog使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VisualStudioApp
的用法示例。
在下文中一共展示了VisualStudioApp.WaitForDialog方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SavePerfFile
private static string SavePerfFile(string saveDirectory, VisualStudioApp app, IntPtr? dialog = null) {
string destName;
using (var saveDialog = new SaveDialog(app, AutomationElement.FromHandle(dialog ?? app.WaitForDialog()))) {
var originalDestName = Path.Combine(saveDirectory, Path.GetFileName(saveDialog.FileName));
destName = originalDestName;
while (File.Exists(destName)) {
destName = string.Format("{0} {1}{2}",
Path.GetFileNameWithoutExtension(originalDestName),
Guid.NewGuid(),
Path.GetExtension(originalDestName)
);
}
saveDialog.FileName = destName;
saveDialog.Save();
}
return destName;
}
示例2: DeferredSaveWithDot
public void DeferredSaveWithDot() {
// http://pytools.codeplex.com/workitem/623
// enable deferred saving on projects
using (var app = new VisualStudioApp()) {
var props = app.Dte.get_Properties("Environment", "ProjectsAndSolution");
var prevValue = props.Item("SaveNewProjects").Value;
props.Item("SaveNewProjects").Value = false;
app.OnDispose(() => props.Item("SaveNewProjects").Value = prevValue);
// now run the test
var newProjDialog = app.FileNewProject();
newProjDialog.FocusLanguageNode("JavaScript");
var consoleApp = newProjDialog.ProjectTypes.FindItem("Blank Node.js Application");
consoleApp.Select();
newProjDialog.ProjectName = "Fob.Baz";
newProjDialog.ClickOK();
// wait for new solution to load...
for (int i = 0; i < 100 && app.Dte.Solution.Projects.Count == 0; i++) {
System.Threading.Thread.Sleep(1000);
}
TestUtils.DteExecuteCommandOnThreadPool("File.SaveAll");
var saveProjDialog = new SaveProjectDialog(app.WaitForDialog());
saveProjDialog.Save();
app.WaitForDialogDismissed();
var fullname = app.Dte.Solution.FullName;
app.Dte.Solution.Close(false);
Directory.Delete(Path.GetDirectoryName(fullname), true);
}
}
示例3: LaunchSession
private static INodeProfileSession LaunchSession(
VisualStudioApp app,
Func<INodeProfileSession> creator,
string saveDirectory
) {
INodeProfileSession session = null;
var task = Task.Factory.StartNew(() => {
session = creator();
// Must fault the task to abort the wait
throw new Exception();
});
var dialog = app.WaitForDialog(task);
if (dialog != IntPtr.Zero) {
SavePerfFile(saveDirectory, app, dialog);
try {
task.Wait(TimeSpan.FromSeconds(5.0));
Assert.Fail("Task did not fault");
} catch (AggregateException) {
}
}
Assert.IsNotNull(session, "Session was not correctly initialized");
return session;
}
示例4: Wait
public static OverwriteFileDialog Wait(VisualStudioApp app) {
var hwnd = app.WaitForDialog();
Assert.AreNotEqual(IntPtr.Zero, hwnd, "Did not find OverwriteFileDialog");
var element = AutomationElement.FromHandle(hwnd);
try {
Assert.IsNotNull(element.FindFirst(
TreeScope.Descendants,
new PropertyCondition(AutomationElement.AutomationIdProperty, "_allItems")
), "Not correct dialog - missing '_allItems'");
Assert.IsNotNull(element.FindFirst(
TreeScope.Descendants,
new PropertyCondition(AutomationElement.AutomationIdProperty, "_yes")
), "Not correct dialog - missing '_yes'");
var res = new OverwriteFileDialog(app, element);
element = null;
return res;
} finally {
if (element != null) {
AutomationWrapper.DumpElement(element);
}
}
}
示例5: RemoveItem
public void RemoveItem() {
using (var app = new VisualStudioApp()) {
// close any projects before switching source control...
app.Dte.Solution.Close();
app.SelectSourceControlProvider("Test Source Provider");
foreach (var projectType in ProjectTypes) {
var testDef = SourceControlProject(projectType);
using (var solution = testDef.Generate()) {
TestSccProvider.DocumentEvents.Clear();
var project = app.OpenProject(solution.Filename, onDialog: OnNoSccDialog);
var window = app.SolutionExplorerTreeView;
var fileName = "Program" + projectType.CodeExtension;
var program = window.WaitForChildOfProject(project, fileName);
program.Select();
Keyboard.Type(Key.Delete);
app.WaitForDialog();
VisualStudioApp.CheckMessageBox(MessageBoxButton.Ok, "will be deleted permanently");
app.WaitForDialogDismissed();
window.WaitForChildOfProjectRemoved(project, fileName);
var projectDir = Path.GetDirectoryName(project.FullName);
AssertDocumentEvents(projectDir,
OnQueryRemoveFiles(fileName),
OnAfterRemoveFiles(fileName)
);
}
}
}
}
示例6: WaitForDialog
public static AutomationDialog WaitForDialog(VisualStudioApp app) {
return new AutomationDialog(app, AutomationElement.FromHandle(app.WaitForDialog()));
}
示例7: DebugPythonCustomInterpreter
public void DebugPythonCustomInterpreter() {
// try once when the interpreter doesn't exist...
using (var app = new VisualStudioApp()) {
var project = app.OpenProject(TestData.GetPath(@"TestData\RelativeInterpreterPath.sln"), "Program.py");
app.Dte.ExecuteCommand("Debug.Start");
string expectedMissingInterpreterText = string.Format(
"The project cannot be launched because no Python interpreter is available at \"{0}\". Please check the " +
"Python Environments window and ensure the version of Python is installed and has all settings specified.",
TestData.GetPath(@"TestData\Interpreter.exe"));
var dialog = app.WaitForDialog();
VisualStudioApp.CheckMessageBox(MessageBoxButton.Ok, expectedMissingInterpreterText);
app.Dte.Solution.Close(false);
// copy an interpreter over and try again
File.Copy(PythonPaths.Python27.InterpreterPath, TestData.GetPath(@"TestData\Interpreter.exe"));
try {
OpenProjectAndBreak(app, TestData.GetPath(@"TestData\RelativeInterpreterPath.sln"), "Program.py", 1);
app.Dte.Debugger.Go(WaitForBreakOrEnd: true);
Assert.AreEqual(dbgDebugMode.dbgDesignMode, app.Dte.Debugger.CurrentMode);
} finally {
File.Delete(TestData.GetPath(@"TestData\Interpreter.exe"));
}
}
}
示例8: RenameItemsTest
public void RenameItemsTest() {
using (var app = new VisualStudioApp()) {
var project = app.OpenProject(@"TestData\NodejsProjectData\RenameItemsTestUI.sln");
using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) {
var window = app.OpenSolutionExplorer();
// find server.js, send copy & paste, verify copy of file is there
var projectNode = window.WaitForItem("Solution 'RenameItemsTestUI' (1 project)", "HelloWorld", "server.js");
// rename once, cancel renaming to existing file....
AutomationWrapper.Select(projectNode);
Keyboard.PressAndRelease(Key.F2);
System.Threading.Thread.Sleep(100);
Keyboard.Type("NewName.txt");
Keyboard.Type(Key.Delete); // delete extension left at end
Keyboard.Type(Key.Delete);
Keyboard.Type(Key.Delete);
System.Threading.Thread.Sleep(100);
Keyboard.PressAndRelease(Key.Enter);
IntPtr dialog = app.WaitForDialog();
VisualStudioApp.CheckMessageBox(MessageBoxButton.Cancel, "file name extension");
// rename again, don't cancel...
AutomationWrapper.Select(projectNode);
Keyboard.PressAndRelease(Key.F2);
System.Threading.Thread.Sleep(100);
Keyboard.Type("NewName.txt");
Keyboard.Type(Key.Delete); // delete extension left at end
Keyboard.Type(Key.Delete);
Keyboard.Type(Key.Delete);
System.Threading.Thread.Sleep(100);
Keyboard.PressAndRelease(Key.Enter);
dialog = app.WaitForDialog();
VisualStudioApp.CheckMessageBox(MessageBoxButton.Yes, "file name extension");
Assert.AreNotEqual(null, window.WaitForItem("Solution 'RenameItemsTestUI' (1 project)", "HelloWorld", "NewName.txt"));
var subJs = window.WaitForItem("Solution 'RenameItemsTestUI' (1 project)", "HelloWorld", "Sub1", "Sub2", "Foo.js");
Assert.IsNotNull(subJs);
var sub1 = window.FindItem("Solution 'RenameItemsTestUI' (1 project)", "HelloWorld", "Sub1");
AutomationWrapper.Select(sub1);
Keyboard.PressAndRelease(Key.F2);
System.Threading.Thread.Sleep(100);
Keyboard.Type("FolderName");
Keyboard.PressAndRelease(Key.Enter);
for (int i = 0; i < 20; i++) {
try {
if (project.GetIsFolderExpanded("FolderName")) {
break;
}
} catch (ArgumentException) {
}
System.Threading.Thread.Sleep(100);
}
Assert.IsTrue(project.GetIsFolderExpanded("FolderName"));
Assert.AreNotEqual(null, window.WaitForItem("Solution 'RenameItemsTestUI' (1 project)", "HelloWorld", "FolderName", "Sub2", "Foo.js"));
}
}
}
示例9: RenameProjectToExisting
public void RenameProjectToExisting() {
using (var app = new VisualStudioApp()) {
var project = app.OpenProject(@"TestData\NodejsProjectData\RenameProjectTestUI.sln");
using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) {
var window = app.OpenSolutionExplorer();
// find server.js, send copy & paste, verify copy of file is there
var projectNode = window.WaitForItem("Solution 'RenameProjectTestUI' (1 project)", "HelloWorld");
// rename once, cancel renaming to existing file....
AutomationWrapper.Select(projectNode);
Keyboard.PressAndRelease(Key.F2);
System.Threading.Thread.Sleep(100);
Keyboard.Type("HelloWorldExisting");
Keyboard.PressAndRelease(Key.Enter);
IntPtr dialog = app.WaitForDialog();
VisualStudioApp.CheckMessageBox("HelloWorldExisting.njsproj", "overwrite");
// rename again, don't cancel...
AutomationWrapper.Select(projectNode);
Keyboard.PressAndRelease(Key.F2);
System.Threading.Thread.Sleep(100);
Keyboard.Type("HelloWorldExisting");
Keyboard.PressAndRelease(Key.Enter);
dialog = app.WaitForDialog();
VisualStudioApp.CheckMessageBox(MessageBoxButton.Yes, "HelloWorldExisting.njsproj", "overwrite");
Assert.AreNotEqual(null, window.WaitForItem("Solution 'RenameProjectTestUI' (1 project)", "HelloWorldExisting"));
}
}
}
示例10: DeleteLockedFolder
public void DeleteLockedFolder() {
using (var app = new VisualStudioApp()) {
var project = app.OpenProject(@"TestData\NodejsProjectData\DeleteLockedFolder.sln");
using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) {
var window = app.OpenSolutionExplorer();
var folderNode = window.WaitForItem("Solution 'DeleteLockedFolder' (1 project)", "DeleteLockedFolder", "Folder");
AutomationWrapper.Select(folderNode);
var psi = new ProcessStartInfo(
Path.Combine(Environment.GetEnvironmentVariable("WINDIR"), "system32", "cmd.exe"));
psi.WorkingDirectory = Path.Combine(Environment.CurrentDirectory, @"TestData\NodejsProjectData\DeleteLockedFolder\Folder");
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
using (var process = System.Diagnostics.Process.Start(psi)) {
try {
//Ensure the other process started and has time to lock the file
System.Threading.Thread.Sleep(1000);
Keyboard.Type(Key.Delete);
app.WaitForDialog();
Keyboard.Type(Key.Enter);
System.Threading.Thread.Sleep(500);
VisualStudioApp.CheckMessageBox("The process cannot access the file 'Folder' because it is being used by another process.");
} finally {
process.Kill();
}
}
Assert.IsNotNull(window.FindItem("Solution 'DeleteLockedFolder' (1 project)", "DeleteLockedFolder", "Folder"));
}
}
}
示例11: DeleteFile
public void DeleteFile() {
using (var app = new VisualStudioApp()) {
var project = app.OpenProject(@"TestData\NodejsProjectData\DeleteFile.sln");
using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) {
var window = app.OpenSolutionExplorer();
// find server.js, send copy & paste, verify copy of file is there
var programPy = window.WaitForItem("Solution 'DeleteFile' (1 project)", "HelloWorld", "server.js");
Assert.IsTrue(File.Exists(@"TestData\NodejsProjectData\DeleteFile\server.js"));
AutomationWrapper.Select(programPy);
Keyboard.Type(Key.Delete);
app.WaitForDialog();
VisualStudioApp.CheckMessageBox(MessageBoxButton.Ok, "will be deleted permanently");
app.WaitForDialogDismissed();
window.WaitForItemRemoved("Solution 'DeleteFile' (1 project)", "HelloWorld", "server.js");
Assert.IsFalse(File.Exists(@"TestData\NodejsProjectData\DeleteFile\server.js"));
}
}
}