Browse Source

Fixed bug that could cause pads to be lost when the layout is changed. (when trying to reopen such a "lost" pad, it would show up with a width of zero)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4134 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts^2
Daniel Grunwald 16 years ago
parent
commit
8bf506da54
  1. 4
      data/layouts/Debug.xml
  2. 0
      data/layouts/Default.xml
  3. 0
      data/layouts/LayoutConfig.xml
  4. 5
      data/layouts/Plain.xml
  5. 13
      data/resources/layouts/Plain.xml
  6. 3
      src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/FSharpBinding.addin
  7. 3
      src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.addin
  8. 3
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.addin
  9. 3
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin
  10. 10
      src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs
  11. 80
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs
  12. 52
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonPadContent.cs
  13. 38
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs
  14. 2
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/LayoutConfiguration.cs
  15. 10
      src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
  16. 15
      src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs
  17. 6
      src/Main/Base/Project/Src/Project/IProject.cs
  18. 16
      src/Setup/Files.wxs

4
data/resources/layouts/Debug.xml → data/layouts/Debug.xml

@ -25,6 +25,8 @@ @@ -25,6 +25,8 @@
</DockablePane>
</ResizingPanel>
</ResizingPanel>
<Hidden />
<Hidden>
<DockableContent Name="ICSharpCode_SharpDevelop_Gui_TaskListPad" AutoHide="false"/>
</Hidden>
<Windows />
</DockingManager>

0
data/resources/layouts/Default.xml → data/layouts/Default.xml

0
data/resources/layouts/LayoutConfig.xml → data/layouts/LayoutConfig.xml

5
data/layouts/Plain.xml

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
<DockingManager>
<DocumentPanePlaceHolder />
<Hidden />
<Windows />
</DockingManager>

13
data/resources/layouts/Plain.xml

@ -1,13 +0,0 @@ @@ -1,13 +0,0 @@
<DockingManager>
<DocumentPanePlaceHolder />
<Hidden>
<DockableContent Name="ICSharpCode_SharpDevelop_Project_ProjectBrowserPad" AutoHide="false" />
<DockableContent Name="ICSharpCode_SharpDevelop_Gui_ToolsPad" AutoHide="false" />
<DockableContent Name="ICSharpCode_SharpDevelop_Gui_ClassBrowser_ClassBrowserPad" AutoHide="false" />
<DockableContent Name="ICSharpCode_SharpDevelop_Gui_PropertyPad" AutoHide="false" />
<DockableContent Name="ICSharpCode_SharpDevelop_Gui_ErrorListPad" AutoHide="false" />
<DockableContent Name="ICSharpCode_SharpDevelop_Gui_TaskListPad" AutoHide="false" />
<DockableContent Name="ICSharpCode_SharpDevelop_Gui_CompilerMessageView" AutoHide="false" />
</Hidden>
<Windows />
</DockingManager>

3
src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/FSharpBinding.addin

@ -101,7 +101,8 @@ @@ -101,7 +101,8 @@
category = "Main"
title = "F# Interactive"
icon = "F#.ProjectIcon"
class = "FSharpBinding.FSharpInteractive"/>
defaultPosition = "Bottom, Hidden"
class = "FSharpBinding.FSharpInteractive"/>
</Path>
<Path name = "/SharpDevelop/ViewContent/DefaultTextEditor/ContextMenu">

3
src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.addin

@ -173,7 +173,8 @@ @@ -173,7 +173,8 @@
insertafter = "Bookmarks"
insertbefore = "DefinitionView"
icon = "PadIcons.Output"
class = "ICSharpCode.PythonBinding.PythonConsolePad"/>
defaultPosition = "Bottom, Hidden"
class = "ICSharpCode.PythonBinding.PythonConsolePad"/>
</Path>
<Path name = "/Workspace/Icons">

3
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.addin

@ -122,7 +122,8 @@ @@ -122,7 +122,8 @@
title = "${res:MainWindow.Windows.Debug.Watch}"
icon = "PadIcons.LocalVariables"
shortcut = "Control|Alt|W"
class = "ICSharpCode.SharpDevelop.Gui.Pads.WatchPad"/>
class = "ICSharpCode.SharpDevelop.Gui.Pads.WatchPad"
defaultPosition = "Bottom, Hidden" />
</Path>
<Path name ="/SharpDevelop/Pads/WatchPad/ContextMenu">

3
src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin

@ -49,7 +49,8 @@ @@ -49,7 +49,8 @@
category = "Help2"
title = "${res:AddIns.HtmlHelp2.DynamicHelp}"
icon = "HtmlHelp2.16x16.DynamicHelp"
class = "HtmlHelp2.HtmlHelp2DynamicHelpPad"/>
class = "HtmlHelp2.HtmlHelp2DynamicHelpPad"
defaultPosition = "Right, Hidden" />
</Path>
<Path name = "/SharpDevelop/Dialogs/OptionsDialog/ToolsOptions">

10
src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs

@ -55,28 +55,28 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -55,28 +55,28 @@ namespace ICSharpCode.SharpDevelop.Gui
/// <summary>
/// Shows a new <see cref="IPadContent"/>.
/// </summary>
void ShowPad(PadDescriptor content);
void ShowPad(PadDescriptor padDescriptor);
/// <summary>
/// Activates a pad (Show only makes it visible but Activate does
/// bring it to foreground)
/// </summary>
void ActivatePad(PadDescriptor content);
void ActivatePad(PadDescriptor padDescriptor);
/// <summary>
/// Hides a <see cref="IPadContent"/>.
/// </summary>
void HidePad(PadDescriptor content);
void HidePad(PadDescriptor padDescriptor);
/// <summary>
/// Closes and disposes a <see cref="IPadContent"/>.
/// </summary>
void UnloadPad(PadDescriptor content);
void UnloadPad(PadDescriptor padDescriptor);
/// <summary>
/// returns true, if padContent is visible;
/// </summary>
bool IsVisible(PadDescriptor padContent);
bool IsVisible(PadDescriptor padDescriptor);
/// <summary>
/// Shows a new <see cref="IViewContent"/> and optionally switches to it.

80
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
@ -121,58 +122,36 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -121,58 +122,36 @@ namespace ICSharpCode.SharpDevelop.Gui
Dictionary<PadDescriptor, AvalonPadContent> pads = new Dictionary<PadDescriptor, AvalonPadContent>();
Dictionary<string, AvalonPadContent> padsByClass = new Dictionary<string, AvalonPadContent>();
public void ShowPad(PadDescriptor content)
public void ShowPad(PadDescriptor padDescriptor)
{
AvalonPadContent pad;
if (pads.TryGetValue(content, out pad)) {
if (pads.TryGetValue(padDescriptor, out pad)) {
dockingManager.Show(pad);
} else {
pad = new AvalonPadContent(this, content);
pads.Add(content, pad);
padsByClass.Add(content.Class, pad);
AnchorStyle style;
if ((content.DefaultPosition & DefaultPadPositions.Top) != 0)
style = AnchorStyle.Top;
else if ((content.DefaultPosition & DefaultPadPositions.Left) != 0)
style = AnchorStyle.Left;
else if ((content.DefaultPosition & DefaultPadPositions.Bottom) != 0)
style = AnchorStyle.Bottom;
else
style = AnchorStyle.Right;
dockingManager.Show(pad, DockableContentState.Docked, style);
SetPaneSizeWorkaround(pad.ContainerPane);
if ((content.DefaultPosition & DefaultPadPositions.Hidden) != 0)
dockingManager.Hide(pad);
LoggingService.Debug("Add pad " + padDescriptor.Class + " at " + padDescriptor.DefaultPosition);
pad = new AvalonPadContent(this, padDescriptor);
pads.Add(padDescriptor, pad);
padsByClass.Add(padDescriptor.Class, pad);
pad.ShowInDefaultPosition();
}
}
static void SetPaneSizeWorkaround(Pane pane)
public void ActivatePad(PadDescriptor padDescriptor)
{
ResizingPanel panel = pane.Parent as ResizingPanel;
if (panel.Orientation == Orientation.Horizontal) {
if (ResizingPanel.GetResizeWidth(pane).Value == 0)
ResizingPanel.SetResizeWidth(pane, new GridLength(200));
} else if (panel.Orientation == Orientation.Vertical) {
if (ResizingPanel.GetResizeHeight(pane).Value == 0)
ResizingPanel.SetResizeHeight(pane, new GridLength(150));
}
}
public void ActivatePad(PadDescriptor content)
{
ShowPad(content);
ShowPad(padDescriptor);
}
public void HidePad(PadDescriptor content)
public void HidePad(PadDescriptor padDescriptor)
{
AvalonPadContent p;
if (pads.TryGetValue(content, out p))
if (pads.TryGetValue(padDescriptor, out p))
dockingManager.Hide(p);
}
public void UnloadPad(PadDescriptor content)
public void UnloadPad(PadDescriptor padDescriptor)
{
AvalonPadContent p = pads[content];
AvalonPadContent p = pads[padDescriptor];
dockingManager.Hide(p);
DockablePane pane = p.Parent as DockablePane;
if (pane != null)
@ -180,10 +159,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -180,10 +159,10 @@ namespace ICSharpCode.SharpDevelop.Gui
p.Dispose();
}
public bool IsVisible(PadDescriptor padContent)
public bool IsVisible(PadDescriptor padDescriptor)
{
AvalonPadContent p;
if (pads.TryGetValue(padContent, out p))
if (pads.TryGetValue(padDescriptor, out p))
return p.IsVisible;
else
return false;
@ -218,10 +197,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -218,10 +197,11 @@ namespace ICSharpCode.SharpDevelop.Gui
return;
Busy = true;
try {
bool isPlainLayout = LayoutConfiguration.CurrentLayoutName == "Plain";
if (File.Exists(LayoutConfiguration.CurrentLayoutFileName)) {
dockingManager.RestoreLayout(LayoutConfiguration.CurrentLayoutFileName);
} else {
LoadDefaultLayoutConfiguration();
LoadLayout(LayoutConfiguration.CurrentLayoutFileName, isPlainLayout);
} else if (File.Exists(LayoutConfiguration.CurrentLayoutTemplateFileName)) {
LoadLayout(LayoutConfiguration.CurrentLayoutTemplateFileName, isPlainLayout);
}
} catch (Exception ex) {
MessageService.ShowError(ex);
@ -234,10 +214,22 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -234,10 +214,22 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
void LoadDefaultLayoutConfiguration()
void LoadLayout(string fileName, bool hideAllLostPads)
{
if (File.Exists(LayoutConfiguration.CurrentLayoutTemplateFileName)) {
dockingManager.RestoreLayout(LayoutConfiguration.CurrentLayoutTemplateFileName);
LoggingService.Info("Loading layout file: " + fileName + ", hideAllLostPads=" + hideAllLostPads);
DockableContent[] oldContents = dockingManager.DockableContents;
dockingManager.RestoreLayout(fileName);
DockableContent[] newContents = dockingManager.DockableContents;
// Restoring a AvalonDock layout will remove pads that are not
// stored in the layout file.
// We'll re-add those lost pads.
foreach (DockableContent lostContent in oldContents.Except(newContents)) {
AvalonPadContent padContent = lostContent as AvalonPadContent;
if (padContent != null && !hideAllLostPads) {
padContent.ShowInDefaultPosition();
} else {
dockingManager.Hide(lostContent);
}
}
}

52
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonPadContent.cs

@ -41,6 +41,37 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -41,6 +41,37 @@ namespace ICSharpCode.SharpDevelop.Gui
placeholder.IsVisibleChanged += AvalonPadContent_IsVisibleChanged;
}
public void ShowInDefaultPosition()
{
AnchorStyle style;
if ((descriptor.DefaultPosition & DefaultPadPositions.Top) != 0)
style = AnchorStyle.Top;
else if ((descriptor.DefaultPosition & DefaultPadPositions.Left) != 0)
style = AnchorStyle.Left;
else if ((descriptor.DefaultPosition & DefaultPadPositions.Bottom) != 0)
style = AnchorStyle.Bottom;
else
style = AnchorStyle.Right;
layout.DockingManager.Show(this, DockableContentState.Docked, style);
SetPaneSizeWorkaround(this.ContainerPane);
if ((descriptor.DefaultPosition & DefaultPadPositions.Hidden) != 0)
layout.DockingManager.Hide(this);
}
static void SetPaneSizeWorkaround(Pane pane)
{
ResizingPanel panel = pane.Parent as ResizingPanel;
if (panel != null) {
if (panel.Orientation == Orientation.Horizontal) {
if (ResizingPanel.GetResizeWidth(pane).Value == 0)
ResizingPanel.SetResizeWidth(pane, new GridLength(200));
} else if (panel.Orientation == Orientation.Vertical) {
if (ResizingPanel.GetResizeHeight(pane).Value == 0)
ResizingPanel.SetResizeHeight(pane, new GridLength(150));
}
}
}
void AvalonPadContent_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(LoadPadContentIfRequired));
@ -61,16 +92,16 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -61,16 +92,16 @@ namespace ICSharpCode.SharpDevelop.Gui
CommandsRegistry.LoadContext(contextName, (UIElement)Content);
CommandsRegistry.RegisterCommandBindingsUpdateHandler(contextName, delegate {
var bindings = CommandsRegistry.GetCommandBindings(contextName);
CommandsRegistry.RemoveManagedCommandBindings(CommandBindings);
CommandBindings.AddRange(bindings);
});
var bindings = CommandsRegistry.GetCommandBindings(contextName);
CommandsRegistry.RemoveManagedCommandBindings(CommandBindings);
CommandBindings.AddRange(bindings);
});
CommandsRegistry.RegisterInputBindingUpdateHandler(contextName, delegate {
var bindings = CommandsRegistry.GetInputBindings(contextName);
CommandsRegistry.RemoveManagedInputBindings(InputBindings);
InputBindings.AddRange(bindings);
});
var bindings = CommandsRegistry.GetInputBindings(contextName);
CommandsRegistry.RemoveManagedInputBindings(InputBindings);
InputBindings.AddRange(bindings);
});
CommandsRegistry.InvokeCommandBindingUpdateHandlers(contextName);
CommandsRegistry.InvokeInputBindingUpdateHandlers(contextName);
}
@ -83,5 +114,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -83,5 +114,10 @@ namespace ICSharpCode.SharpDevelop.Gui
padInstance.Dispose();
}
}
public override string ToString()
{
return "[AvalonPadContent " + this.Name + "]";
}
}
}

38
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs

@ -92,23 +92,29 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -92,23 +92,29 @@ namespace ICSharpCode.SharpDevelop.Gui
oldActiveViewContent = newActiveViewContent;
CommandManager.InvalidateRequerySuggested();
var contextName = newActiveViewContent.GetType().FullName;
CommandsRegistry.LoadContext(contextName, (UIElement)Content);
CommandsRegistry.RegisterCommandBindingsUpdateHandler(contextName, delegate {
var bindings = CommandsRegistry.GetCommandBindings(contextName);
CommandsRegistry.RemoveManagedCommandBindings(CommandBindings);
CommandBindings.AddRange(bindings);
});
if (newActiveViewContent != null) {
string contextName = newActiveViewContent.GetType().FullName;
CommandsRegistry.LoadContext(contextName, (UIElement)Content);
CommandsRegistry.RegisterInputBindingUpdateHandler(contextName, delegate {
var bindings = CommandsRegistry.GetInputBindings(contextName);
CommandsRegistry.RemoveManagedInputBindings(InputBindings);
InputBindings.AddRange(bindings);
});
CommandsRegistry.InvokeCommandBindingUpdateHandlers(contextName);
CommandsRegistry.InvokeInputBindingUpdateHandlers(contextName);
CommandsRegistry.RegisterCommandBindingsUpdateHandler(
contextName,
delegate {
var bindings = CommandsRegistry.GetCommandBindings(contextName);
CommandsRegistry.RemoveManagedCommandBindings(CommandBindings);
CommandBindings.AddRange(bindings);
});
CommandsRegistry.RegisterInputBindingUpdateHandler(
contextName,
delegate {
var bindings = CommandsRegistry.GetInputBindings(contextName);
CommandsRegistry.RemoveManagedInputBindings(InputBindings);
InputBindings.AddRange(bindings);
});
CommandsRegistry.InvokeCommandBindingUpdateHandlers(contextName);
CommandsRegistry.InvokeInputBindingUpdateHandlers(contextName);
}
}
sealed class ViewContentCollection : Collection<IViewContent>

2
src/Main/Base/Project/Src/Gui/Workbench/Layouts/LayoutConfiguration.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
public class LayoutConfiguration
{
const string DataLayoutSubPath = "resources/layouts";
const string DataLayoutSubPath = "layouts";
const string configFile = "LayoutConfig.xml";
public static readonly List<LayoutConfiguration> Layouts = new List<LayoutConfiguration>();

10
src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

@ -56,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -56,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public ISynchronizeInvoke SynchronizingObject { get; private set; }
public Window MainWindow { get { return this; } }
List<PadDescriptor> padViewContentCollection = new List<PadDescriptor>();
List<PadDescriptor> padDescriptorCollection = new List<PadDescriptor>();
ToolBar[] toolBars;
@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
// keep a reference to the event handler to prevent it from being gargabe collected
// keep a reference to the event handler to prevent it from being garbage collected
// (CommandManager.RequerySuggested only keeps weak references to the event handlers)
EventHandler requerySuggestedEventHandler;
@ -180,7 +180,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -180,7 +180,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public IList<PadDescriptor> PadContentCollection {
get {
return padViewContentCollection.AsReadOnly();
return padDescriptorCollection.AsReadOnly();
}
}
@ -318,8 +318,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -318,8 +318,10 @@ namespace ICSharpCode.SharpDevelop.Gui
{
if (content == null)
throw new ArgumentNullException("content");
if (padDescriptorCollection.Contains(content))
throw new ArgumentException("Pad is already loaded");
padViewContentCollection.Add(content);
padDescriptorCollection.Add(content);
if (WorkbenchLayout != null) {
WorkbenchLayout.ShowPad(content);

15
src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs

@ -48,6 +48,8 @@ namespace ICSharpCode.SharpDevelop @@ -48,6 +48,8 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
public PadDescriptor(Codon codon)
{
if (codon == null)
throw new ArgumentNullException("codon");
addIn = codon.AddIn;
shortcut = codon.Properties["shortcut"];
category = codon.Properties["category"];
@ -64,6 +66,12 @@ namespace ICSharpCode.SharpDevelop @@ -64,6 +66,12 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
public PadDescriptor(Type padType, string title, string icon)
{
if (padType == null)
throw new ArgumentNullException("padType");
if (title == null)
throw new ArgumentNullException("title");
if (icon == null)
throw new ArgumentNullException("icon");
this.padType = padType;
this.@class = padType.FullName;
this.title = title;
@ -151,10 +159,8 @@ namespace ICSharpCode.SharpDevelop @@ -151,10 +159,8 @@ namespace ICSharpCode.SharpDevelop
public void CreatePad()
{
#if DEBUG
if (WorkbenchSingleton.InvokeRequired)
throw new InvalidOperationException("This action could trigger pad creation and is only valid on the main thread!");
#endif
if (!padContentCreated) {
padContentCreated = true;
try {
@ -179,5 +185,10 @@ namespace ICSharpCode.SharpDevelop @@ -179,5 +185,10 @@ namespace ICSharpCode.SharpDevelop
}
WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this);
}
public override string ToString()
{
return "[PadDescriptor " + this.Class + "]";
}
}
}

6
src/Main/Base/Project/Src/Project/IProject.cs

@ -85,6 +85,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -85,6 +85,8 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// Gets/Sets the name of the project.
///
/// Only the getter is thread-safe.
/// </summary>
/// <remarks>
/// Name already exists in ISolutionFolder, it's repeated here to prevent
@ -262,6 +264,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -262,6 +264,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Gets the list of projects on which this project depends.
/// This method is thread-safe.
/// </summary>
ICollection<IBuildable> GetBuildDependencies(ProjectBuildOptions buildOptions);
@ -273,16 +276,19 @@ namespace ICSharpCode.SharpDevelop.Project @@ -273,16 +276,19 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// Gets the name of the buildable item.
/// This property is thread-safe.
/// </summary>
string Name { get; }
/// <summary>
/// Gets the parent solution.
/// This property is thread-safe.
/// </summary>
Solution ParentSolution { get; }
/// <summary>
/// Creates the project-specific build options.
/// This member must be implemented thread-safe.
/// </summary>
/// <param name="options">The global build options.</param>
/// <param name="isRootBuildable">Specifies whether this project is the main buildable item.

16
src/Setup/Files.wxs

@ -780,6 +780,14 @@ @@ -780,6 +780,14 @@
<File Source="..\..\data\options\StandardHeader.xml" Id="StandardHeader.xml" Name="StandardHeader.xml" />
</Component>
</Directory>
<Directory Id="LayoutsFolder" Name="layouts">
<Component Guid="B982324C-D787-425E-BB2C-4EF4C983867D" Id="LayoutFiles" DiskId="1">
<File Source="..\..\data\layouts\Plain.xml" Name="Plain.xml" Id="Plain.xml" />
<File Source="..\..\data\layouts\Debug.xml" Name="Debug.xml" Id="Debug.xml" />
<File Source="..\..\data\layouts\Default.xml" Name="Default.xml" Id="Default.xml" />
<File Source="..\..\data\layouts\LayoutConfig.xml" Id="LayoutConfig.xml" Name="LayoutConfig.xml" />
</Component>
</Directory>
<Directory Id="ResourcesFolder" Name="resources">
<Directory Id="CssFolder" Name="css">
<Component Guid="458B2D53-EE43-4586-BDEB-E9AFF37F720B" Id="CssFiles" DiskId="1">
@ -833,14 +841,6 @@ @@ -833,14 +841,6 @@
<File Source="..\..\data\resources\languages\uk.png" Name="uk.png" Id="uk.png" />
</Component>
</Directory>
<Directory Id="LayoutsFolder" Name="layouts">
<Component Guid="B982324C-D787-425E-BB2C-4EF4C983867D" Id="LayoutFiles" DiskId="1">
<File Source="..\..\data\resources\layouts\Plain.xml" Name="Plain.xml" Id="Plain.xml" />
<File Source="..\..\data\resources\layouts\Debug.xml" Name="Debug.xml" Id="Debug.xml" />
<File Source="..\..\data\resources\layouts\Default.xml" Name="Default.xml" Id="Default.xml" />
<File Source="..\..\data\resources\layouts\LayoutConfig.xml" Id="LayoutConfig.xml" Name="LayoutConfig.xml" />
</Component>
</Directory>
<Component Guid="D8322576-2925-4F43-ACB0-05369DC5FC67" Id="StringResourceFiles" DiskId="1">
<File Source="..\..\data\resources\StringResources.tr.resources" Id="StringResources.tr.resources" Name="StringResources.tr.resources" />
<File Source="..\..\data\resources\StringResources.cz.resources" Id="StringResources.cz.resources" Name="StringResources.cz.resources" />

Loading…
Cancel
Save