Browse Source

Fixed SD2-503: WindowActive condition fails

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@619 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
953c951b3f
  1. 5
      src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/Boo.InterpreterAddIn.booproj
  2. 46
      src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/CodeCompletionData.boo
  3. 100
      src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/InteractiveInterpreterControl.boo
  4. 38
      src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/InterpreterPad.boo
  5. 9
      src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
  6. 15
      src/Main/Base/Project/Src/Internal/ConditionEvaluators/WindowActiveEvaluator.cs

5
src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/Boo.InterpreterAddIn.booproj

@ -28,6 +28,11 @@ @@ -28,6 +28,11 @@
<HintPath>..\..\RequiredLibraries\Boo.Lang.Interpreter.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Boo.Lang.Compiler">
<HintPath>..\..\RequiredLibraries\Boo.Lang.Compiler.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="CodeCompletionData.boo" />

46
src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/CodeCompletionData.boo

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
namespace Boo.InterpreterAddIn
import System
import ICSharpCode.Core
import ICSharpCode.TextEditor
import ICSharpCode.TextEditor.Document
import ICSharpCode.TextEditor.Actions
@ -52,12 +53,10 @@ internal class AbstractCompletionData(ICompletionData, IComparable): @@ -52,12 +53,10 @@ internal class AbstractCompletionData(ICompletionData, IComparable):
internal class CodeCompletionData(AbstractCompletionData):
_imageProvider as ICompletionWindowImageProvider
_entities as List = []
def constructor(imageProvider, name):
def constructor(name):
super(name)
_imageProvider = imageProvider
Description:
get:
@ -72,40 +71,35 @@ internal class CodeCompletionData(AbstractCompletionData): @@ -72,40 +71,35 @@ internal class CodeCompletionData(AbstractCompletionData):
if EntityType.Type == entityType:
type as IType = entity
if type.IsInterface:
return _imageProvider.InterfaceIndex
return ClassBrowserIconService.InterfaceIndex
elif type.IsEnum:
return _imageProvider.EnumIndex
return ClassBrowserIconService.EnumIndex
elif type.IsValueType:
return _imageProvider.StructIndex
return ClassBrowserIconService.StructIndex
elif type isa ICallableType:
return _imageProvider.CallableIndex
return ClassBrowserIconService.DelegateIndex
else:
return _imageProvider.ClassIndex
return ClassBrowserIconService.ClassIndex
elif EntityType.Method == entityType:
return _imageProvider.MethodIndex
return ClassBrowserIconService.MethodIndex
elif EntityType.Field == entityType:
if (entity as IField).IsLiteral:
return _imageProvider.LiteralIndex
return ClassBrowserIconService.ConstIndex
else:
return _imageProvider.FieldIndex
return ClassBrowserIconService.FieldIndex
elif EntityType.Property == entityType:
return _imageProvider.PropertyIndex
return ClassBrowserIconService.PropertyIndex
elif EntityType.Event == entityType:
return _imageProvider.EventIndex
return _imageProvider.NamespaceIndex
return ClassBrowserIconService.EventIndex
return ClassBrowserIconService.NamespaceIndex
def AddEntity(entity as IEntity):
_entities.Add(entity)
abstract internal class AbstractCompletionDataProvider(ICompletionDataProvider):
_imageProvider as ICompletionWindowImageProvider
def constructor([required] imageProvider):
_imageProvider = imageProvider
ImageList as System.Windows.Forms.ImageList:
get:
return _imageProvider.ImageList
return ClassBrowserIconService.ImageList
PreSelection as string:
get:
@ -142,8 +136,7 @@ internal class GlobalsCompletionDataProvider(AbstractCompletionDataProvider): @@ -142,8 +136,7 @@ internal class GlobalsCompletionDataProvider(AbstractCompletionDataProvider):
_imageIndex = imageIndex
_description = description
def constructor(imageProvider, interpreter):
super(imageProvider)
def constructor(interpreter):
_interpreter = interpreter
override def GenerateCompletionData(fileName as string, textArea as TextArea, charTyped as System.Char) as (ICompletionData):
@ -157,9 +150,9 @@ internal class GlobalsCompletionDataProvider(AbstractCompletionDataProvider): @@ -157,9 +150,9 @@ internal class GlobalsCompletionDataProvider(AbstractCompletionDataProvider):
description = "${key} as ${InteractiveInterpreter.GetBooTypeName(value.GetType())}"
else:
description = "null"
item = GlobalCompletionData(key, _imageProvider.FieldIndex, description)
item = GlobalCompletionData(key, ClassBrowserIconService.FieldIndex, description)
else:
item = GlobalCompletionData(key, _imageProvider.MethodIndex, InteractiveInterpreter.DescribeMethod(delegate.Method))
item = GlobalCompletionData(key, ClassBrowserIconService.MethodIndex, InteractiveInterpreter.DescribeMethod(delegate.Method))
data[index] = item
return data
@ -168,8 +161,7 @@ internal class CodeCompletionDataProvider(AbstractCompletionDataProvider): @@ -168,8 +161,7 @@ internal class CodeCompletionDataProvider(AbstractCompletionDataProvider):
_codeCompletion as (IEntity)
def constructor(imageProvider, [required] codeCompletion):
super(imageProvider)
def constructor([required] codeCompletion):
_codeCompletion = codeCompletion
override def GenerateCompletionData(fileName as string, textArea as TextArea, charTyped as System.Char) as (ICompletionData):
@ -181,7 +173,7 @@ internal class CodeCompletionDataProvider(AbstractCompletionDataProvider): @@ -181,7 +173,7 @@ internal class CodeCompletionDataProvider(AbstractCompletionDataProvider):
name = item.Name
if "." in name:
name = /\./.Split(name)[-1]
data = CodeCompletionData(_imageProvider, name)
data = CodeCompletionData(name)
values[item.Name] = data
data.AddEntity(item)
return array(ICompletionData, values.Values)

100
src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/InteractiveInterpreterControl.boo

@ -20,79 +20,12 @@ import ICSharpCode.TextEditor.Actions @@ -20,79 +20,12 @@ import ICSharpCode.TextEditor.Actions
import ICSharpCode.TextEditor.Gui.CompletionWindow
import Boo.Lang.Compiler.TypeSystem
interface ICompletionWindowImageProvider:
ImageList as ImageList:
get
NamespaceIndex as int:
get
ClassIndex as int:
get
InterfaceIndex as int:
get
EnumIndex as int:
get
StructIndex as int:
get
CallableIndex as int:
get
MethodIndex as int:
get
FieldIndex as int:
get
LiteralIndex as int:
get
PropertyIndex as int:
get
EventIndex as int:
get
class InteractiveInterpreterControl(TextEditorControl):
enum InputState:
SingleLine = 0
Block = 1
class NullCompletionWindowImageProvider(ICompletionWindowImageProvider):
public static final Instance = NullCompletionWindowImageProvider()
[getter(ImageList)]
_imageList = System.Windows.Forms.ImageList()
NamespaceIndex as int:
get:
return 0
ClassIndex as int:
get:
return 0
InterfaceIndex as int:
get:
return 0
EnumIndex as int:
get:
return 0
StructIndex as int:
get:
return 0
CallableIndex as int:
get:
return 0
MethodIndex as int:
get:
return 0
FieldIndex as int:
get:
return 0
LiteralIndex as int:
get:
return 0
PropertyIndex as int:
get:
return 0
EventIndex as int:
get:
return 0
class LineHistory:
_lines = []
@ -115,7 +48,7 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -115,7 +48,7 @@ class InteractiveInterpreterControl(TextEditorControl):
return null if 0 == len(_lines)
return _lines[_current]
def Up():
def Up():
MoveTo(_current - 1)
def Down():
@ -137,9 +70,6 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -137,9 +70,6 @@ class InteractiveInterpreterControl(TextEditorControl):
_codeCompletionWindow as CodeCompletionWindow
[property(CompletionWindowImageProvider, value is not null)]
_imageProvider as ICompletionWindowImageProvider = NullCompletionWindowImageProvider()
_lineHistory as LineHistory
// HACK: when the completion window is shown through CTRL+SPACE
@ -168,7 +98,7 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -168,7 +98,7 @@ class InteractiveInterpreterControl(TextEditorControl):
CurrentLineText:
get:
segment = GetLastLineSegment()
return self.Document.GetText(segment)[4:]
return self.Document.GetText(segment)[4:]
override def OnLoad(args as EventArgs):
super(args)
@ -176,7 +106,7 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -176,7 +106,7 @@ class InteractiveInterpreterControl(TextEditorControl):
def Eval(code as string):
try:
_interpreter.RunCommand(code)
_interpreter.RunCommand(code)
ensure:
_state = InputState.SingleLine
@ -204,7 +134,7 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -204,7 +134,7 @@ class InteractiveInterpreterControl(TextEditorControl):
Eval(_block.ToString())
else:
_block.WriteLine(code)
def print(msg):
AppendText("${msg}\r\n")
@ -240,10 +170,10 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -240,10 +170,10 @@ class InteractiveInterpreterControl(TextEditorControl):
return _codeCompletionWindow is not null and not _codeCompletionWindow.IsDisposed
private def DotComplete(ch as System.Char):
ShowCompletionWindow(
CodeCompletionDataProvider(_imageProvider, GetSuggestions()),
ch)
suggestions = GetSuggestions()
if suggestions is not null:
ShowCompletionWindow(CodeCompletionDataProvider(suggestions), ch)
private def ShowCompletionWindow(completionDataProvider, ch as System.Char):
_codeCompletionWindow = CodeCompletionWindow.ShowCompletionWindow(
self.ParentForm,
@ -254,18 +184,16 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -254,18 +184,16 @@ class InteractiveInterpreterControl(TextEditorControl):
if _codeCompletionWindow is not null:
_codeCompletionWindow.Closed += def():
_blockKeys = false
private def CtrlSpaceComplete():
_blockKeys = true
ShowCompletionWindow(
GlobalsCompletionDataProvider(_imageProvider, self._interpreter),
Char.MinValue)
private def GetSuggestions():
ShowCompletionWindow(GlobalsCompletionDataProvider(self._interpreter), char('\0'))
private def GetSuggestions():
code = CurrentLineText.Insert(self.CaretColumn-4, ".__codecomplete__")
code = code.Insert(0, _block.ToString()) if InputState.Block == _state
return _interpreter.SuggestCodeCompletion(code)
private def HandleDialogKey(key as Keys):
return false if InCodeCompletion
@ -290,7 +218,7 @@ class InteractiveInterpreterControl(TextEditorControl): @@ -290,7 +218,7 @@ class InteractiveInterpreterControl(TextEditorControl):
CtrlSpaceComplete()
return true
if key in Keys.Home, Keys.Shift|Keys.Home, Keys.Control|Keys.Home:
if key in Keys.Home, Keys.Shift|Keys.Home, Keys.Control|Keys.Home:
MoveCaretToOffset(GetLastLineSegment().Offset + 4)
return true

38
src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/InterpreterPad.boo

@ -12,11 +12,45 @@ import System.Windows.Forms @@ -12,11 +12,45 @@ import System.Windows.Forms
import ICSharpCode.Core
import ICSharpCode.SharpDevelop.Gui
class InterpreterPad(AbstractPadContent):
class InterpreterPad(AbstractPadContent, IClipboardHandler):
"""Description of InterpreterPad"""
ctl = InteractiveInterpreterControl()
Control as Control:
get:
return ctl
EnableCut:
get:
return ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.EnableCut
EnableCopy:
get:
return ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.EnableCopy
EnablePaste:
get:
return ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.EnablePaste
EnableDelete:
get:
return ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.EnableDelete
EnableSelectAll:
get:
return ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.EnableSelectAll
def Cut():
ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.Cut(null, null)
def Copy():
ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.Copy(null, null)
def Paste():
ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.Paste(null, null)
def Delete():
ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.Delete(null, null)
def SelectAll():
ctl.ActiveTextAreaControl.TextArea.ClipboardHandler.SelectAll(null, null)

9
src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs

@ -305,7 +305,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -305,7 +305,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public bool EnableCopy {
get {
return true;
return textEditorControl.ActiveTextAreaControl.TextArea.ClipboardHandler.EnableCopy;
}
}
@ -323,7 +323,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -323,7 +323,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public bool EnableSelectAll {
get {
return true;
return textEditorControl.ActiveTextAreaControl.TextArea.ClipboardHandler.EnableSelectAll;
}
}
@ -333,7 +333,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -333,7 +333,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public void Copy()
{
new ICSharpCode.TextEditor.Actions.Copy().Execute(textEditorControl.ActiveTextAreaControl.TextArea);
textEditorControl.ActiveTextAreaControl.TextArea.ClipboardHandler.Copy(null, null);
}
public void Paste()
@ -346,8 +346,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -346,8 +346,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public void SelectAll()
{
new ICSharpCode.TextEditor.Actions.SelectWholeDocument().Execute(textEditorControl.ActiveTextAreaControl.TextArea);
// textEditorControl.SelectAll();
textEditorControl.ActiveTextAreaControl.TextArea.ClipboardHandler.SelectAll(null, null);
}
#endregion

15
src/Main/Base/Project/Src/Internal/ConditionEvaluators/WindowActiveEvaluator.cs

@ -47,12 +47,17 @@ namespace ICSharpCode.Core @@ -47,12 +47,17 @@ namespace ICSharpCode.Core
}
Type currentType = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent.GetType();
Type activeType = Type.GetType(activewindow);
if (activeType == null) {
return false;
if (currentType.FullName == activewindow)
return true;
foreach (Type interf in currentType.GetInterfaces()) {
if (interf.FullName == activewindow)
return true;
}
while ((currentType = currentType.BaseType) != null) {
if (currentType.FullName == activewindow)
return true;
}
return activeType.IsAssignableFrom(currentType);
return false;
}
}
}

Loading…
Cancel
Save