Author: lluis
Date: 2007-03-06 14:41:51 -0500 (Tue, 06 Mar 2007)
New Revision: 73838
Added:
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog
trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp
Log:
* Makefile.am, MonoDevelop.Components.mdp: Updated.
* MonoDevelop.Components.Commands/CommandManager.cs,
MonoDevelop.Components.Commands/ICommandTargetVisitor.cs: Added
support for custom command target visitors.
Modified: trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog 2007-03-06
19:39:03 UTC (rev 73837)
+++ trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog 2007-03-06
19:41:51 UTC (rev 73838)
@@ -1,3 +1,10 @@
+2007-03-06 Lluis Sanchez Gual <[EMAIL PROTECTED]>
+
+ * Makefile.am, MonoDevelop.Components.mdp: Updated.
+ * MonoDevelop.Components.Commands/CommandManager.cs,
+ MonoDevelop.Components.Commands/ICommandTargetVisitor.cs: Added
+ support for custom command target visitors.
+
2007-02-20 Lluis Sanchez Gual <[EMAIL PROTECTED]>
* MonoDevelop.Components.Commands/CommandToolbar.cs,
Modified: trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am
2007-03-06 19:39:03 UTC (rev 73837)
+++ trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am
2007-03-06 19:41:51 UTC (rev 73838)
@@ -50,6 +50,7 @@
MonoDevelop.Components.Commands/ICommandDelegatorRouter.cs \
MonoDevelop.Components.Commands/ICommandMenuItem.cs \
MonoDevelop.Components.Commands/ICommandRouter.cs \
+ MonoDevelop.Components.Commands/ICommandTargetVisitor.cs \
MonoDevelop.Components.Commands/ICommandUserItem.cs \
MonoDevelop.Components.Commands/LinkCommandEntry.cs \
MonoDevelop.Components.Commands/LocalCommandEntry.cs \
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
2007-03-06 19:39:03 UTC (rev 73837)
+++
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
2007-03-06 19:41:51 UTC (rev 73838)
@@ -42,6 +42,7 @@
ArrayList toolbars = new ArrayList ();
ArrayList globalHandlers = new ArrayList ();
ArrayList commandUpdateErrors = new ArrayList ();
+ ArrayList visitors = new ArrayList ();
Hashtable overloadedAccelCommands = new Hashtable ();
Stack delegatorStack = new Stack ();
bool disposed;
@@ -102,7 +103,7 @@
set {
if (enableToolbarUpdate != value) {
if (value) {
- if (toolbars.Count > 0) {
+ if (toolbars.Count > 0 ||
visitors.Count > 0) {
if
(!toolbarUpdaterRunning) {
GLib.Timeout.Add (500, new GLib.TimeoutHandler (UpdateStatus));
toolbarUpdaterRunning = true;
@@ -154,6 +155,20 @@
globalHandlers.Remove (handler);
}
+ public void RegisterCommandTargetVisitor (ICommandTargetVisitor
visitor)
+ {
+ visitors.Add (visitor);
+ if (enableToolbarUpdate && !toolbarUpdaterRunning) {
+ GLib.Timeout.Add (500, new GLib.TimeoutHandler
(UpdateStatus));
+ toolbarUpdaterRunning = true;
+ }
+ }
+
+ public void UnregisterCommandTargetVisitor
(ICommandTargetVisitor visitor)
+ {
+ visitors.Remove (visitor);
+ }
+
public Command GetCommand (object cmdId)
{
Command cmd = cmds [cmdId] as Command;
@@ -379,6 +394,23 @@
return info;
}
+ public object VisitCommandTargets (ICommandTargetVisitor
visitor, object initialTarget)
+ {
+ int globalPos = -1;
+ object cmdTarget = initialTarget != null ?
initialTarget : GetFirstCommandTarget (out globalPos);
+
+ while (cmdTarget != null)
+ {
+ if (visitor.Visit (cmdTarget))
+ return cmdTarget;
+
+ cmdTarget = GetNextCommandTarget (cmdTarget,
ref globalPos);
+ }
+
+ visitor.Visit (null);
+ return null;
+ }
+
internal ArrayList FindAlternateAccelCommands (object commandId)
{
return (ArrayList) overloadedAccelCommands [commandId];
@@ -548,7 +580,7 @@
Gtk.Window[] wins = Gtk.Window.ListToplevels ();
foreach (Gtk.Window w in wins) {
- if (w.IsActive && w.Visible && w.Type ==
Gtk.WindowType.Toplevel) {
+ if (w.IsActive && w.Visible && w.Type ==
Gtk.WindowType.Toplevel && !(w is Gtk.Dialog)) {
win = w;
break;
}
@@ -596,6 +628,9 @@
if (toolbar.Visible)
toolbar.Update (activeWidget);
}
+ foreach (ICommandTargetVisitor v in visitors)
+ VisitCommandTargets (v, null);
+
}
public void ReportError (object commandId, string message,
Exception ex)
Added:
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
2007-03-06 19:39:03 UTC (rev 73837)
+++
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
2007-03-06 19:41:51 UTC (rev 73838)
@@ -0,0 +1,10 @@
+
+using System;
+
+namespace MonoDevelop.Components.Commands
+{
+ public interface ICommandTargetVisitor
+ {
+ bool Visit (object ob);
+ }
+}
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp
2007-03-06 19:39:03 UTC (rev 73837)
+++
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp
2007-03-06 19:41:51 UTC (rev 73838)
@@ -95,20 +95,21 @@
<File name="./gtk-gui/objects.xml" subtype="Code"
buildaction="EmbedAsResource" />
<File name="./gtk-gui/generated.cs" subtype="Code" buildaction="Compile" />
<File name="./AssemblyInfo.cs" subtype="Code" buildaction="Compile" />
+ <File name="./MonoDevelop.Components.Commands/ICommandTargetVisitor.cs"
subtype="Code" buildaction="Compile" />
</Contents>
<References>
- <ProjectReference type="Gac" localcopy="True" refto="System,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <ProjectReference type="Gac" localcopy="True" refto="System.Drawing,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <ProjectReference type="Gac" localcopy="True" refto="System.Xml,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <ProjectReference type="Gac" localcopy="True" refto="gecko-sharp,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=ccf7d78a55e9f021" />
- <ProjectReference type="Gac" localcopy="True" refto="glade-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <ProjectReference type="Gac" localcopy="True" refto="gnome-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <ProjectReference type="Gac" localcopy="True" refto="pango-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <ProjectReference type="Gac" localcopy="True" refto="atk-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <ProjectReference type="Project" localcopy="True" refto="MonoDevelop.Core"
/>
- <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+ <ProjectReference type="Gac" localcopy="False" refto="System,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <ProjectReference type="Gac" localcopy="False" refto="System.Drawing,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <ProjectReference type="Gac" localcopy="False" refto="System.Xml,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <ProjectReference type="Gac" localcopy="False" refto="gecko-sharp,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=ccf7d78a55e9f021" />
+ <ProjectReference type="Gac" localcopy="False" refto="glade-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Gac" localcopy="False" refto="gnome-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Gac" localcopy="False" refto="pango-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Gac" localcopy="False" refto="atk-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Gac" localcopy="False" refto="gdk-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Gac" localcopy="False" refto="gtk-sharp,
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Project" localcopy="False"
refto="MonoDevelop.Core" />
+ <ProjectReference type="Gac" localcopy="False" refto="Mono.Posix,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
</References>
<MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="True"
RelativeMakefileName="./Makefile.am" BuildTargetName="" CleanTargetName=""
SyncReferences="True" IsAutotoolsProject="True"
RelativeConfigureInPath="../../../">
<ExcludedFiles>
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches