Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@novell.com>2010-03-18 19:39:00 +0300
committerLluis Sanchez <lluis@novell.com>2010-03-18 19:39:00 +0300
commit099e20cde3ae001638e366215885f110cc69ea16 (patch)
tree442be83e80fd12ea5fcc984db5b1117910ceacd1 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking
parenta53e9d46686838f9ab224f2f7e64a9d5f542dd62 (diff)
* Makefile.am:
* MonoDevelop.Ide.csproj: Updated. * MonoDevelop.Ide/Ide.cs: * MonoDevelop.Ide.Gui/StatusProgressMonitor.cs: Use the new status bar model. * MonoDevelop.Ide/ImageService.cs: * MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs: Show error and warning icons in grayscale when there are no errors/warnings. * MonoDevelop.Ide.Commands/ViewCommands.cs: Don't sort layouts by name. Use the order in the extension point. * MonoDevelop.Components.Docking/DockGroup.cs: * MonoDevelop.Components.Docking/DockObject.cs: * MonoDevelop.Components.Docking/DockGroupItem.cs: Impoved the logic that selects a dock bar where to show an autohide item by default. * MonoDevelop.Components.Docking/DockItem.cs: * MonoDevelop.Components.Docking/DockFrame.cs: * MonoDevelop.Components.Docking/DockContainer.cs: Allow setting the dock location of an item. * MonoDevelop.Ide.addin.xml: * MonoDevelop.Ide.Extensions/LayoutExtensionNode.cs: Added extension point for registering stock layous. Assigned default layouts for existing pads. * gtk-gui/objects.xml: * gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.KeyBindingsPanel.cs: Flush. * MonoDevelop.Ide.Gui/InternalLog.cs: * MonoDevelop.Ide.Gui/AddinUpdateHandler.cs: * MonoDevelop.Ide.Gui/MonoDevelopStatusBar.cs: * MonoDevelop.Ide.Gui/BackgroundProgressMonitor.cs: New status bar model. The status bar widget is hidden behind an interface. Added support for status bar contexts. Status information displayed through a context is cleaned up when the context is disposed. * MonoDevelop.Ide.Gui/Pad.cs: * MonoDevelop.Ide.Gui/Workbench.cs: * MonoDevelop.Ide.Gui/IPadContainer.cs: * MonoDevelop.Ide.Gui/WorkbenchMemento.cs: * MonoDevelop.Ide.Gui/DefaultWorkbench.cs: * MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs: * MonoDevelop.Ide.Gui/SdiWorkspaceLayout.cs: Merged SdiWorkspaceLayout into DefaultWorkbench. Removed support for workbench contexts. * MonoDevelop.Ide.Codons/PadCodon.cs: Allow setting the default layout of a pad. * MonoDevelop.Ide.Codons/WorkbenchContextCondition.cs: Not required anymore. * MonoDevelop.Ide.Tasks/TaskStore.cs: Show a better status message when the end of the task list is reached. svn path=/trunk/monodevelop/; revision=153851
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockContainer.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockFrame.cs20
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroup.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroupItem.cs33
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockObject.cs6
6 files changed, 66 insertions, 13 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockContainer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockContainer.cs
index cba733da8e..6a7281fe2a 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockContainer.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockContainer.cs
@@ -434,7 +434,8 @@ namespace MonoDevelop.Components.Docking
public IEnumerable<Rectangle> GetShadedAreas ()
{
List<Gdk.Rectangle> rects = new List<Gdk.Rectangle> ();
- layout.DrawSeparators (Allocation, currentHandleGrp, currentHandleIndex, true, rects);
+ if (layout != null)
+ layout.DrawSeparators (Allocation, currentHandleGrp, currentHandleIndex, true, rects);
return rects;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockFrame.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockFrame.cs
index f372dd4245..7b17598626 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockFrame.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockFrame.cs
@@ -444,6 +444,15 @@ namespace MonoDevelop.Components.Docking
container.RelayoutWidgets ();
}
+ internal void SetDockLocation (DockItem item, string placement)
+ {
+ bool vis = item.Visible;
+ DockItemStatus stat = item.Status;
+ item.ResetMode ();
+ container.Layout.RemoveItemRec (item);
+ AddItemAtLocation (container.Layout, item, placement, vis, stat);
+ }
+
DockLayout GetDefaultLayout ()
{
DockLayout group = new DockLayout (this);
@@ -486,7 +495,12 @@ namespace MonoDevelop.Components.Docking
DockGroupItem AddDefaultItem (DockGroup grp, DockItem it)
{
- string[] positions = it.DefaultLocation.Split (';');
+ return AddItemAtLocation (grp, it, it.DefaultLocation, it.DefaultVisible, it.DefaultStatus);
+ }
+
+ DockGroupItem AddItemAtLocation (DockGroup grp, DockItem it, string location, bool visible, DockItemStatus status)
+ {
+ string[] positions = location.Split (';');
foreach (string pos in positions) {
int i = pos.IndexOf ('/');
if (i == -1) continue;
@@ -501,8 +515,8 @@ namespace MonoDevelop.Components.Docking
continue;
}
DockGroupItem dgt = g.AddObject (it, dpos, id);
- dgt.SetVisible (it.DefaultVisible);
- dgt.Status = it.DefaultStatus;
+ dgt.SetVisible (visible);
+ dgt.Status = status;
return dgt;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroup.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroup.cs
index 6fc5396660..abc72d3b47 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroup.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroup.cs
@@ -637,7 +637,7 @@ namespace MonoDevelop.Components.Docking
} else
boundTabStrip.CurrentTab = 0;
}
- if (Frame.CompactGuiLevel == 3 && IsNextToMargin (PositionType.Bottom))
+ if (Frame.CompactGuiLevel == 3 && IsNextToMargin (PositionType.Bottom, true))
boundTabStrip.BottomPadding = 3;
else
boundTabStrip.BottomPadding = 0;
@@ -1097,26 +1097,26 @@ namespace MonoDevelop.Components.Docking
reader.ReadEndElement ();
}
- public bool IsChildNextToMargin (Gtk.PositionType margin, DockObject obj)
+ public bool IsChildNextToMargin (Gtk.PositionType margin, DockObject obj, bool visibleOnly)
{
if (type == DockGroupType.Tabbed)
return true;
else if (type == DockGroupType.Horizontal) {
if (margin == PositionType.Top || margin == PositionType.Bottom)
return true;
- int i = VisibleObjects.IndexOf (obj);
+ int i = visibleOnly ? VisibleObjects.IndexOf (obj) : Objects.IndexOf (obj);
if (margin == PositionType.Left && i == 0)
return true;
- if (margin == PositionType.Right && i == VisibleObjects.Count - 1)
+ if (margin == PositionType.Right && i == (visibleOnly ? VisibleObjects.Count - 1 : Objects.Count - 1))
return true;
}
else if (type == DockGroupType.Vertical) {
if (margin == PositionType.Left || margin == PositionType.Right)
return true;
- int i = VisibleObjects.IndexOf (obj);
+ int i = visibleOnly ? VisibleObjects.IndexOf (obj) : Objects.IndexOf (obj);
if (margin == PositionType.Top && i == 0)
return true;
- if (margin == PositionType.Bottom && i == VisibleObjects.Count - 1)
+ if (margin == PositionType.Bottom && i == (visibleOnly ? VisibleObjects.Count - 1 : Objects.Count - 1))
return true;
}
return false;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroupItem.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroupItem.cs
index 89e01c2b90..2134d9b9eb 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroupItem.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockGroupItem.cs
@@ -259,6 +259,39 @@ namespace MonoDevelop.Components.Docking
// Determine the best position for docking the item
if (Allocation.IsEmpty) {
+ int uniqueTrue = -1;
+ int uniqueFalse = -1;
+ for (int n=0; n<4; n++) {
+ bool inMargin = IsNextToMargin ((PositionType) n, false);
+ if (inMargin) {
+ if (uniqueTrue == -1)
+ uniqueTrue = n;
+ else
+ uniqueTrue = -2;
+ } else {
+ if (uniqueFalse == -1)
+ uniqueFalse = n;
+ else
+ uniqueFalse = -2;
+ }
+ }
+
+ if (uniqueTrue >= 0) {
+ barDocPosition = (PositionType) uniqueTrue;
+ autoHideSize = 200;
+ return;
+ } else if (uniqueFalse >= 0) {
+ barDocPosition = (PositionType) uniqueFalse;
+ switch (barDocPosition) {
+ case PositionType.Left: barDocPosition = PositionType.Right; break;
+ case PositionType.Right: barDocPosition = PositionType.Left; break;
+ case PositionType.Top: barDocPosition = PositionType.Bottom; break;
+ case PositionType.Bottom: barDocPosition = PositionType.Top; break;
+ }
+ autoHideSize = 200;
+ return;
+ }
+
// If the item is in a group, use the dock location of other items
DockObject current = this;
do {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs
index dd47a99572..12eb78e67c 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs
@@ -294,6 +294,11 @@ namespace MonoDevelop.Components.Docking
return widget.Parent != null && widget.Visible;
}
}
+
+ public void SetDockLocation (string location)
+ {
+ frame.SetDockLocation (this, location);
+ }
internal void SetFocus ()
{
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockObject.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockObject.cs
index f909bf3542..e6954f9351 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockObject.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockObject.cs
@@ -272,13 +272,13 @@ namespace MonoDevelop.Components.Docking
prefSize = obj.prefSize;
}
- public virtual bool IsNextToMargin (Gtk.PositionType margin)
+ public virtual bool IsNextToMargin (Gtk.PositionType margin, bool visibleOnly)
{
if (ParentGroup == null)
return true;
- if (!ParentGroup.IsNextToMargin (margin))
+ if (!ParentGroup.IsNextToMargin (margin, visibleOnly))
return false;
- return ParentGroup.IsChildNextToMargin (margin, this);
+ return ParentGroup.IsChildNextToMargin (margin, this, visibleOnly);
}
}
}