public void OpenFile(DialogItem file, TreeNode nodePressed) { //If it is already open, focus it if (file.OpenFileData != null) { if (nodePressed == file.OpenFileData.GUINode) { tabStrip.SelectedItem = file.OpenFileData.TabPage; file.OpenFileData.DialogControl.Focus(); return; } if (nodePressed == file.OpenFileData.CodeGUINode) { tabStrip.SelectedItem = file.OpenFileData.CodeTabPage; file.OpenFileData.CodeEditor.Focus(); return; } if (nodePressed == file.OpenFileData.DesignerGUINode) { tabStrip.SelectedItem = file.OpenFileData.DesignerTabPage; file.OpenFileData.DesignerEditor.Focus(); return; } } else { file.OpenFileData = DialogData.Load(file.FullName); file.OpenFileData.DialogItem = file; } //Otherwise make a new tab if (file.GUINode == nodePressed) { //Show graphical designer file.OpenFileData.DialogControl = new DialogCreatorControl(file.OpenFileData); file.OpenFileData.DialogControl.Dock = DockStyle.Fill; file.OpenFileData.DialogControl.Tag = file.OpenFileData; file.OpenFileData.TabPage = new FATabStripItem(file.Text, null); file.OpenFileData.TabPage.Margin = new Padding(0); file.OpenFileData.TabPage.Padding = new Padding(0); file.OpenFileData.TabPage.Tag = file.OpenFileData; file.OpenFileData.GUINode = nodePressed; file.OpenFileData.TabPage.Controls.Add(file.OpenFileData.DialogControl); tabStrip.AddTab(file.OpenFileData.TabPage); //openFiles.Add(file.OpenFileData); //file.OpenFile.Editor.OnTextEdited += MyEditor_TextEdited; tabStrip.SelectedItem = file.OpenFileData.TabPage; tabStrip_TabStripItemSelectionChanged(null); file.OpenFileData.DialogControl.Focus(); } else if (file.CodeGUINode == nodePressed) { bool editorReadOnly = Options.Editor.ReadOnlyOutput && file.IsDecendantOf(ProjectProperties.CurrentProjectPropperties.OutputFolder); //Otherwise make a new tab file.OpenFileData.CodeEditor = new MyEditor(this, editorReadOnly); //If we have another editor, get font styles from that (to save memmory) if (openFiles.Count > 0) file.OpenFileData.CodeEditor.SetFontScheme(openFiles[0].Editor.GetFontScheme()); else { file.OpenFileData.CodeEditor.AddFontStyle(GalaxyKeywords.InMethodKeywords.mod, GalaxyKeywords.InMethodKeywords.words); file.OpenFileData.CodeEditor.AddFontStyle(GalaxyKeywords.OutMethodKeywords.mod, GalaxyKeywords.OutMethodKeywords.words); file.OpenFileData.CodeEditor.AddFontStyle(GalaxyKeywords.SystemExpressions.mod, GalaxyKeywords.SystemExpressions.words); file.OpenFileData.CodeEditor.AddFontStyle(GalaxyKeywords.InitializerKeywords.mod, GalaxyKeywords.InitializerKeywords.words); //file.OpenFile.Editor.AddFontStyle(GalaxyKeywords.TriggerKeywords.mod, GalaxyKeywords.TriggerKeywords.words); file.OpenFileData.CodeEditor.AddFontStyle(GalaxyKeywords.Primitives.mod, GalaxyKeywords.Primitives.words); } file.OpenFileData.CodeEditor.Dock = DockStyle.Fill; file.OpenFileData.CodeEditor.Tag = file.OpenFileData; file.OpenFileData.CodeTabPage = new FATabStripItem(file.Text.Substring(0, file.Text.LastIndexOf(".Dialog")) + ".galaxy++", null); file.OpenFileData.CodeTabPage.Margin = new Padding(0); file.OpenFileData.CodeTabPage.Padding = new Padding(0); file.OpenFileData.CodeTabPage.Tag = file.OpenFileData; file.OpenFileData.CodeGUINode = nodePressed; file.OpenFileData.CodeEditor.Text = file.OpenFileData.Code; //file.OpenFile.Editor.SetHiddenBlocks(file.ClosedBlocks); file.OpenFileData.CodeTabPage.Controls.Add(file.OpenFileData.CodeEditor); tabStrip.AddTab(file.OpenFileData.CodeTabPage); //openFiles.Add(file.OpenFileData); file.OpenFileData.CodeEditor.OnTextEdited += MyEditor_TextEdited; tabStrip.SelectedItem = file.OpenFileData.CodeTabPage; tabStrip_TabStripItemSelectionChanged(null); file.OpenFileData.CodeEditor.Focus(); } else if (file.DesignerGUINode == nodePressed) { //Otherwise make a new tab file.OpenFileData.DesignerEditor = new MyEditor(this, true); //If we have another editor, get font styles from that (to save memmory) if (openFiles.Count > 0) file.OpenFileData.DesignerEditor.SetFontScheme(openFiles[0].Editor.GetFontScheme()); else { file.OpenFileData.DesignerEditor.AddFontStyle(GalaxyKeywords.InMethodKeywords.mod, GalaxyKeywords.InMethodKeywords.words); file.OpenFileData.DesignerEditor.AddFontStyle(GalaxyKeywords.OutMethodKeywords.mod, GalaxyKeywords.OutMethodKeywords.words); file.OpenFileData.DesignerEditor.AddFontStyle(GalaxyKeywords.SystemExpressions.mod, GalaxyKeywords.SystemExpressions.words); file.OpenFileData.DesignerEditor.AddFontStyle(GalaxyKeywords.InitializerKeywords.mod, GalaxyKeywords.InitializerKeywords.words); //file.OpenFile.Editor.AddFontStyle(GalaxyKeywords.TriggerKeywords.mod, GalaxyKeywords.TriggerKeywords.words); file.OpenFileData.DesignerEditor.AddFontStyle(GalaxyKeywords.Primitives.mod, GalaxyKeywords.Primitives.words); } file.OpenFileData.DesignerEditor.Dock = DockStyle.Fill; file.OpenFileData.DesignerEditor.Tag = file.OpenFileData; file.OpenFileData.DesignerTabPage = new FATabStripItem(file.Text.Substring(0, file.Text.LastIndexOf(".Dialog")) + ".Designer.galaxy++", null); file.OpenFileData.DesignerTabPage.Margin = new Padding(0); file.OpenFileData.DesignerTabPage.Padding = new Padding(0); file.OpenFileData.DesignerTabPage.Tag = file.OpenFileData; file.OpenFileData.DesignerGUINode = nodePressed; file.OpenFileData.DesignerEditor.Text = file.OpenFileData.DesignerCode; //file.OpenFile.Editor.SetHiddenBlocks(file.ClosedBlocks); file.OpenFileData.DesignerTabPage.Controls.Add(file.OpenFileData.DesignerEditor); tabStrip.AddTab(file.OpenFileData.DesignerTabPage); //openFiles.Add(file.OpenFileData); //file.OpenFileData.DesignerEditor.OnTextEdited += MyEditor_TextEdited; tabStrip.SelectedItem = file.OpenFileData.DesignerTabPage; tabStrip_TabStripItemSelectionChanged(null); file.OpenFileData.DesignerEditor.Focus(); } }
public override bool FixConflicts(params string[] reqPrefixes) { /*Dir = new DirectoryInfo(Dir.FullName); foreach (DirItem child in Children) { if (child is FolderItem) { FolderItem folder = (FolderItem) child; folder.Dir = new DirectoryInfo(folder.Dir.FullName); } if (child is FileItem) { FileItem folder = (FileItem)child; folder.File = new FileInfo(folder.File.FullName); } } */ //If this item does not exist on the hdd, remove it. if (!Dir.Exists) { if (Parent == null) Dir.Create(); else { Parent.Children.Remove(this); return true; } } /*if (watcher == null) { watcher = new FileSystemWatcher(Dir.FullName, "*.galaxy++"); watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.Deleted += new FileSystemEventHandler(watcher_Deleted); watcher.EnableRaisingEvents = true; }*/ //If this dir contains any dirs or files that is not on the list, add them foreach (FileSystemInfo info in Dir.GetFileSystemInfos()) { if (info is FileInfo) { FileInfo fileInfo = (FileInfo) info; if (!reqPrefixes.Any(prefix => fileInfo.Name.EndsWith(prefix))) continue; if (!Children.Any(child => child.FullName == fileInfo.FullName)) { if (fileInfo.Name.EndsWith(".Dialog")) { DialogItem item = new DialogItem(this); item.Name = fileInfo.Name; Children.Add(item); } else { Children.Add(new FileItem(this, fileInfo.Name)); } } } if (info is DirectoryInfo) { DirectoryInfo dirInfo = (DirectoryInfo)info; if (!Children.Any(child => (child is FolderItem) && ((FolderItem)child).Dir.FullName.TrimEnd('\\', '/') == dirInfo.FullName.TrimEnd('\\', '/'))) Children.Add(new FolderItem(this, dirInfo.Name)); } } bool changes = false; //Visit children for (int i = Children.Count - 1; i >= 0; i--) { changes |= Children[i].FixConflicts(reqPrefixes); } return changes; }
private void MakeNewDialog() { if (openProjectDir == null) { //Open an unsaved file } else { //Make file, and open it //Find it's position in the gui tree TreeNode folderNode = projectView.SelectedNode ?? ProjectProperties.CurrentProjectPropperties.SrcFolder.GUINode; DirItem markedChild = (DirItem) folderNode.Tag; FolderItem parentFolder = (FolderItem) (markedChild.Parent ?? markedChild); if (markedChild is FolderItem) parentFolder = (FolderItem) markedChild; //Find a default unique name string name = "New dialog.Dialog"; int i = 1; while (parentFolder.Children.Any(child => child.Text == name)) { i++; name = "New dialog" + i + ".Dialog"; } DialogItem item = new DialogItem(parentFolder); item.Name = name; //Create the file DialogData dialogData = new DialogData(); Dialog mainDialog = new Dialog(null, new Rectangle(0, 0, 500, 400), dialogData); mainDialog.Anchor = Dialog_Creator.Enums.Anchor.TopLeft; dialogData.Dialogs.Add(mainDialog); dialogData.Save(item.FullName); //Todo: Add to compiler item.GUINode = new TreeNode(name); item.GUINode.SelectedImageIndex = item.GUINode.ImageIndex = 5; item.GUINode.Tag = item; //Image index //Insert into tree int insertAt = parentFolder.Children.IndexOf(markedChild) + 1; if (insertAt == 0 || insertAt == parentFolder.Children.Count) { parentFolder.Children.Add(item); parentFolder.GUINode.Nodes.Add(item.GUINode); } else { parentFolder.Children.Insert(insertAt, item); parentFolder.GUINode.Nodes.Insert(insertAt, item.GUINode); } item.CodeGUINode = new TreeNode(name.Substring(0, name.LastIndexOf(".Dialog")) + ".galaxy++"); item.CodeGUINode.SelectedImageIndex = item.CodeGUINode.ImageIndex = 2; item.CodeGUINode.Tag = item; item.GUINode.Nodes.Add(item.CodeGUINode); item.DesignerGUINode = new TreeNode(name.Substring(0, name.LastIndexOf(".Dialog")) + ".Designer.galaxy++"); item.DesignerGUINode.SelectedImageIndex = item.DesignerGUINode.ImageIndex = 2; item.DesignerGUINode.Tag = item; item.GUINode.Nodes.Add(item.DesignerGUINode); compiler.AddDialogFile(item); ProjectProperties.CurrentProjectPropperties.Save(); UploadedChangesToMap = false; UploadToMap(); projectView.SelectedNode = item.GUINode; item.GUINode.EnsureVisible(); BeginRename(item.GUINode); } }
public override bool FixConflicts(params string[] reqPrefixes) { /*Dir = new DirectoryInfo(Dir.FullName); * foreach (DirItem child in Children) * { * if (child is FolderItem) * { * FolderItem folder = (FolderItem) child; * folder.Dir = new DirectoryInfo(folder.Dir.FullName); * } * if (child is FileItem) * { * FileItem folder = (FileItem)child; * folder.File = new FileInfo(folder.File.FullName); * } * } */ //If this item does not exist on the hdd, remove it. if (!Dir.Exists) { if (Parent == null) { Dir.Create(); } else { Parent.Children.Remove(this); return(true); } } /*if (watcher == null) * { * watcher = new FileSystemWatcher(Dir.FullName, "*.galaxy++"); * watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; * watcher.Deleted += new FileSystemEventHandler(watcher_Deleted); * watcher.EnableRaisingEvents = true; * }*/ //If this dir contains any dirs or files that is not on the list, add them foreach (FileSystemInfo info in Dir.GetFileSystemInfos()) { if (info is FileInfo) { FileInfo fileInfo = (FileInfo)info; if (!reqPrefixes.Any(prefix => fileInfo.Name.EndsWith(prefix))) { continue; } if (!Children.Any(child => child.FullName == fileInfo.FullName)) { if (fileInfo.Name.EndsWith(".Dialog")) { DialogItem item = new DialogItem(this); item.Name = fileInfo.Name; Children.Add(item); } else { Children.Add(new FileItem(this, fileInfo.Name)); } } } if (info is DirectoryInfo) { DirectoryInfo dirInfo = (DirectoryInfo)info; if (!Children.Any(child => (child is FolderItem) && ((FolderItem)child).Dir.FullName.TrimEnd('\\', '/') == dirInfo.FullName.TrimEnd('\\', '/'))) { Children.Add(new FolderItem(this, dirInfo.Name)); } } } bool changes = false; //Visit children for (int i = Children.Count - 1; i >= 0; i--) { changes |= Children[i].FixConflicts(reqPrefixes); } return(changes); }