Browse Source

Fixed SD2-640: Add existing form to project does not add .resx file

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1051 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
ebbd3bd080
  1. 6
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 8
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs
  3. 50
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  4. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  5. 9
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs
  6. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
  7. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs

6
AddIns/ICSharpCode.SharpDevelop.addin

@ -2043,7 +2043,9 @@ @@ -2043,7 +2043,9 @@
<Class id="EqualsCodeGenerator"
class="ICSharpCode.SharpDevelop.DefaultEditor.Commands.EqualsCodeGenerator"/>
</Path>
<!--
<Path name = "/SharpDevelop/Workbench/DependentFileExtensions">
</Path>-->
<String id = "FormsDesignerGeneratedCode" text=".Designer${Extension}"/>
<String id = "FormsDesignerResources" text=".resx"/>
</Path>
</AddIn>

8
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs

@ -52,6 +52,14 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -52,6 +52,14 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
void ExcludeFileNode(FileNode fileNode)
{
List<FileNode> dependentNodes = new List<FileNode>();
foreach (TreeNode subNode in fileNode.Nodes) {
// exclude dependent files
if (subNode is FileNode)
dependentNodes.Add((FileNode)subNode);
}
dependentNodes.ForEach(ExcludeFileNode);
ProjectService.RemoveProjectItem(fileNode.Project, fileNode.ProjectItem);
fileNode.ProjectItem = null;
fileNode.FileNodeStatus = FileNodeStatus.None;

50
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs

@ -121,6 +121,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -121,6 +121,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
return null;
}
public static IEnumerable<string> FindAdditionalFiles(string fileName)
{
List<string> list = new List<string>();
StringParser.Properties["Extension"] = Path.GetExtension(fileName);
string prefix = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName));
foreach (string ext in AddInTree.BuildItems("/SharpDevelop/Workbench/DependentFileExtensions", null, true)) {
if (File.Exists(prefix + ext))
list.Add(prefix + ext);
}
return list;
}
public override void Run()
{
TreeNode selectedNode = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode;
@ -145,35 +157,63 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -145,35 +157,63 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
fdiag.Title = StringParser.Parse("${res:ProjectComponent.ContextMenu.AddExistingFiles}");
if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) {
string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(fdiag.FileNames[0]));
if (!FileUtility.IsEqualFileName(fdiag.FileNames[0], copiedFileName)) {
List<KeyValuePair<string, string>> fileNames = new List<KeyValuePair<string, string>>(fdiag.FileNames.Length);
foreach (string fileName in fdiag.FileNames) {
fileNames.Add(new KeyValuePair<string, string>(fileName, ""));
}
bool addedDependentFiles = false;
foreach (string fileName in fdiag.FileNames) {
foreach (string additionalFile in FindAdditionalFiles(fileName)) {
if (!fileNames.Exists(delegate(KeyValuePair<string, string> pair) {
return FileUtility.IsEqualFileName(pair.Key, additionalFile);
}))
{
addedDependentFiles = true;
fileNames.Add(new KeyValuePair<string, string>(additionalFile, Path.GetFileName(fileName)));
}
}
}
string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(fileNames[0].Key));
if (!FileUtility.IsEqualFileName(fileNames[0].Key, copiedFileName)) {
int res = MessageService.ShowCustomDialog(fdiag.Title, "${res:ProjectComponent.ContextMenu.AddExistingFiles.Question}",
0, 2,
"${res:ProjectComponent.ContextMenu.AddExistingFiles.Copy}",
"${res:ProjectComponent.ContextMenu.AddExistingFiles.Link}",
"${res:Global.CancelButtonText}");
if (res == 1) {
foreach (string fileName in fdiag.FileNames) {
foreach (KeyValuePair<string, string> pair in fileNames) {
string fileName = pair.Key;
string relFileName = FileUtility.GetRelativePath(node.Project.Directory, fileName);
FileNode fileNode = new FileNode(fileName, FileNodeStatus.InProject);
FileProjectItem fileProjectItem = new FileProjectItem(node.Project, IncludeFileInProject.GetDefaultItemType(node.Project, fileName));
fileProjectItem.Include = relFileName;
fileProjectItem.Properties.Set("Link", Path.Combine(node.RelativePath, Path.GetFileName(fileName)));
fileProjectItem.DependentUpon = pair.Value;
fileNode.ProjectItem = fileProjectItem;
fileNode.AddTo(node);
ProjectService.AddProjectItem(node.Project, fileProjectItem);
}
node.Project.Save();
if (addedDependentFiles)
node.RecreateSubNodes();
return;
}
if (res == 2) {
return;
}
}
foreach (string fileName in fdiag.FileNames) {
CopyFile(fileName, node, true);
foreach (KeyValuePair<string, string> pair in fileNames) {
FileProjectItem item = CopyFile(pair.Key, node, true);
if (item != null) {
item.DependentUpon = pair.Value;
}
}
node.Project.Save();
if (addedDependentFiles)
node.RecreateSubNodes();
}
}
}

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -494,7 +494,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -494,7 +494,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
this.directory = newPath;
ProjectService.SaveSolution();
Project.Save();
}
}
public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data)

9
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs

@ -199,18 +199,17 @@ namespace ICSharpCode.SharpDevelop.Project @@ -199,18 +199,17 @@ namespace ICSharpCode.SharpDevelop.Project
{
if (FileNodeStatus == FileNodeStatus.Missing) {
FileService.RemoveFile(FileName, false);
ProjectService.SaveSolution();
Project.Save();
} else {
if (Nodes.Count > 0) {
if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.DeleteWithDependentFiles.Question}"))) {
DeleteChildNodes();
FileService.RemoveFile(FileName, false);
ProjectService.SaveSolution();
Project.Save();
}
}
else if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.Delete.Question}"))) {
} else if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.Delete.Question}"))) {
FileService.RemoveFile(FileName, false);
ProjectService.SaveSolution();
Project.Save();
}
}
}

4
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs

@ -80,7 +80,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -80,7 +80,7 @@ namespace ICSharpCode.SharpDevelop.Project
return;
}
Text = folder.Location = folder.Name = newName;
ProjectService.SaveSolution();
solution.Save();
}
public void AddItem(string fileName)
@ -123,7 +123,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -123,7 +123,7 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Delete()
{
ProjectService.RemoveSolutionFolder(folder.IdGuid);
ProjectService.SaveSolution();
solution.Save();
}
public override bool EnableCopy {

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs

@ -128,7 +128,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -128,7 +128,7 @@ namespace ICSharpCode.SharpDevelop.Project
string newFileName = Path.Combine(Path.GetDirectoryName(this.FileName), newName);
FileService.RenameFile(this.FileName, newFileName, false);
ProjectService.SaveSolution();
solution.Save();
}
public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data)
{

Loading…
Cancel
Save