openwindowstateevaluator.cs
来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 84 行
CS
84 行
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision: 1208 $</version>
// </file>
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.Core
{
/// <summary>
/// Tests if any open window has a specified window state.
/// </summary>
public class OpenWindowStateConditionEvaluator : IConditionEvaluator
{
WindowState windowState = WindowState.None;
WindowState nowindowState = WindowState.None;
bool IsStateOk(IWorkbenchWindow window)
{
if (window == null || window.ViewContent == null) {
return false;
}
// use IWorkbenchWindow instead of IViewContent because maybe window info is needed in the future (for example: sub view content info.)
bool isWindowStateOk = false;
if (windowState != WindowState.None) {
if ((windowState & WindowState.Dirty) > 0) {
isWindowStateOk |= window.ViewContent.IsDirty;
}
if ((windowState & WindowState.Untitled) > 0) {
isWindowStateOk |= window.ViewContent.IsUntitled;
}
if ((windowState & WindowState.ViewOnly) > 0) {
isWindowStateOk |= window.ViewContent.IsViewOnly;
}
} else {
isWindowStateOk = true;
}
if (nowindowState != WindowState.None) {
if ((nowindowState & WindowState.Dirty) > 0) {
isWindowStateOk &= !window.ViewContent.IsDirty;
}
if ((nowindowState & WindowState.Untitled) > 0) {
isWindowStateOk &= !window.ViewContent.IsUntitled;
}
if ((nowindowState & WindowState.ViewOnly) > 0) {
isWindowStateOk &= !window.ViewContent.IsViewOnly;
}
}
return isWindowStateOk;
}
public bool IsValid(object caller, Condition condition)
{
if (WorkbenchSingleton.Workbench == null) {
return false;
}
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent == null) {
return false;
}
windowState = condition.Properties.Get("openwindowstate", WindowState.None);
nowindowState = condition.Properties.Get("noopenwindowstate", WindowState.None);
foreach (IViewContent view in WorkbenchSingleton.Workbench.ViewContentCollection) {
if (IsStateOk(view.WorkbenchWindow)) {
return true;
}
}
return false;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?