// This handles our dragging and dropping to drag png files into the MainView as a spritebox. private void ProjectView_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { ListView listView = sender as ListView; ListViewItem listViewItem = FindAncestor <ListViewItem>((DependencyObject)e.OriginalSource); // If there was no listviewitem selected, break. if (listViewItem == null) { return; } ProjectListViewElement element = (ProjectListViewElement)ProjectView.ItemContainerGenerator.ItemFromContainer(listViewItem); if (element == null) { return; } DataObject dragData = new DataObject("ProjectListViewElement", element); DragDrop.DoDragDrop(listViewItem, dragData, DragDropEffects.Copy | DragDropEffects.Move); } }
private void ProjectView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { ProjectListViewElement element = ProjectView.SelectedItem as ProjectListViewElement; if (element != null && element.FolderVisibility == Visibility.Visible) { if (Directory.Exists($"{_CurrentDirectory}/{element.FileName}")) { string dir = $"{_CurrentDirectory}/{element.FileName}"; _CurrentDirectory = dir; UpdateExplorer(); } } }
public void UpdateExplorer() { if (ProjectView.ItemsSource as ObservableCollection <ProjectListViewElement> == null) { ProjectView.ItemsSource = ListViewElements; } ObservableCollection <ProjectListViewElement> elements = ProjectView.ItemsSource as ObservableCollection <ProjectListViewElement>; elements.Clear(); if (_CurrentDirectory.Length == 0) { return; } foreach (string folder in Directory.GetDirectories(_CurrentDirectory)) { FileInfo info = new FileInfo(folder); string fileName = info.Name; ProjectListViewElement element = new ProjectListViewElement() { FileName = fileName, FolderVisibility = Visibility.Visible, FileVisibility = Visibility.Hidden }; elements.Add(element); } foreach (string file in Directory.GetFiles(_CurrentDirectory)) { FileInfo info = new FileInfo(file); string fileName = info.Name; ProjectListViewElement element = new ProjectListViewElement() { FileName = fileName, FolderVisibility = Visibility.Hidden, FileVisibility = Visibility.Visible }; elements.Add(element); } }
// For dragging sprites into main sprite view private void MainView_DragEnter(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent("ProjectListViewElement")) { e.Effects = DragDropEffects.None; } else { ProjectListViewElement ViewElement = (ProjectListViewElement)e.Data.GetData("ProjectListViewElement"); FileInfo info = new FileInfo($"{project.GetProjectInfo().ContentPath}/{ViewElement.FileName}"); if (info.Extension != ".png") { e.Effects = DragDropEffects.None; } } }
// For dropping sprites into main sprite view private void MainView_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("ProjectListViewElement")) { ProjectListViewElement ViewElement = (ProjectListViewElement)e.Data.GetData("ProjectListViewElement"); FileInfo info = new FileInfo($"{_CurrentDirectory}/{ViewElement.FileName}"); string safeFileName = Util.GetRelativePath(project.GetContentPath(), _CurrentDirectory) + info.Name.Substring(0, info.Name.Length - info.Extension.Length); Console.WriteLine(safeFileName); Texture2D tex = ContentManager.GetTexture(safeFileName); if (info.Extension == ".png" && tex != null) { MainWindowViewModel.MonogameWindow.AddPreviewSpriteBox(new Spritebox(new Vector2(0, 0), tex.Width, tex.Height, 0, safeFileName, 0, new Rectangle(0, 0, tex.Width, tex.Height), MainWindowViewModel.MonogameWindow.GetPreviewObject())); } } }