private void SetTreeFromFolder(string folder, bool setFocus = false, string searchText = null) { if (Window == null) { return; } Window.SetStatusIcon(FontAwesome.WPF.FontAwesomeIcon.Spinner, Colors.Orange, true); Window.ShowStatus($"Retrieving files for folder {folder}..."); Dispatcher.InvokeAsync(() => { // just get the top level folder first ActivePathItem = null; WindowUtilities.DoEvents(); var items = FolderStructure.GetFilesAndFolders(folder, nonRecursive: true, ignoredFolders: ".git"); ActivePathItem = items; WindowUtilities.DoEvents(); Window.ShowStatus(); if (TreeFolderBrowser.HasItems) { SetTreeViewSelectionByIndex(0); } if (setFocus) { TreeFolderBrowser.Focus(); } AttachFileWatcher(folder); }, DispatcherPriority.ApplicationIdle); }
private void TextFolderPath_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter || e.Key == Key.Tab) { TreeFolderBrowser.Focus(); } }
private void ButtonSelectFolder_Click(object sender, RoutedEventArgs e) { string folder = FolderPath; if (string.IsNullOrEmpty(folder)) { folder = AppModel.ActiveDocument?.Filename; if (string.IsNullOrEmpty(folder)) { folder = Path.GetDirectoryName(folder); } else { folder = KnownFolders.GetPath(KnownFolder.Libraries); } } folder = mmWindowsUtils.ShowFolderDialog(folder, "Select folderOrFilePath to open in the Folder Browser"); if (folder == null) { return; } FolderPath = folder; TreeFolderBrowser.Focus(); }
private void SetTreeFromFolder(string folder, bool setFocus = false) { mmApp.Model.Window.SetStatusIcon(FontAwesome.WPF.FontAwesomeIcon.Spinner, Colors.Orange, true); mmApp.Model.Window.ShowStatus($"Retrieving files for folder {folder}..."); Dispatcher.InvokeAsync(() => { // just get the top level folder first ActivePathItem = FolderStructure.GetFilesAndFolders(folder, nonRecursive: true); WindowUtilities.DoEvents(); // get all folders next ActivePathItem = FolderStructure.GetFilesAndFolders(folder); WindowUtilities.DoEvents(); mmApp.Model.Window.ShowStatus(); if (TreeFolderBrowser.HasItems) { SetTreeViewSelectionByIndex(0); } if (setFocus) { TreeFolderBrowser.Focus(); } }, DispatcherPriority.ApplicationIdle); }
private void MenuDeleteFile_Click(object sender, RoutedEventArgs e) { var selected = TreeFolderBrowser.SelectedItem as PathItem; if (selected == null) { return; } if (MessageBox.Show( "Delete:\r\n" + selected.FullPath + "\r\n\r\n" + "Are you sure?", "Delete File", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes) { return; } try { //Directory.Delete(selected.FullPath, true); //File.Delete(selected.FullPath); // Recyle Bin Code can handle both files and directories if (!mmFileUtils.MoveToRecycleBin(selected.FullPath)) { return; } var parent = selected.Parent; var file = parent?.Files?.FirstOrDefault(fl => fl.FullPath == selected.FullPath); if (file != null) { var tab = Window.GetTabFromFilename(file.FullPath); if (tab != null) { Window.CloseTab(tab, dontPromptForSave: true); } selected.Parent?.Files.Remove(file); } // Delay required to overcome editor focus after MsgBox Dispatcher.Delay(700, s => { TreeFolderBrowser.Focus(); SetTreeViewSelectionByItem(parent); TreeFolderBrowser.Focus(); }); } catch (Exception ex) { Window.ShowStatus("Delete operation failed: " + ex.Message, 6000); Window.SetStatusIcon(FontAwesome.WPF.FontAwesomeIcon.Warning, Colors.Red); } }
private void ComboFolderPath_PreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter ) // || e.Key == Key.Tab && (Keyboard.Modifiers & ModifierKeys.Shift) != (ModifierKeys.Shift) ) { ((ComboBox)sender).IsDropDownOpen = false; TreeFolderBrowser.Focus(); e.Handled = true; } }
private void ButtonUseCurrentFolder_Click(object sender, RoutedEventArgs e) { var doc = mmApp.Model.ActiveDocument; if (doc != null) { FolderPath = System.IO.Path.GetDirectoryName(doc.Filename); } TreeFolderBrowser.Focus(); }
/// <summary> /// Sets the tree's content from a folderOrFilePath or filename. /// /// This method is also called from the FolderPath property Getter /// after some pre-processing. /// </summary> /// <param name="folderOrFilePath">Folder or File path to load. If File folder is loaded and file selected</param> /// <param name="setFocus">Optional - determines on whether focus is set to the TreeView Item</param> /// <param name="searchText">Optional - search text filter that is applied to the file names</param> public void SetTreeFromFolder(string folderOrFilePath, bool setFocus = false, string searchText = null) { if (Window == null) { return; } string fileName = null; if (File.Exists(folderOrFilePath)) { fileName = folderOrFilePath; folderOrFilePath = Path.GetDirectoryName(folderOrFilePath); } Window.ShowStatusProgress($"Retrieving files for folderOrFilePath {folderOrFilePath}..."); Dispatcher.InvokeAsync(() => { // just get the top level folderOrFilePath first ActivePathItem = null; WindowUtilities.DoEvents(); var items = FolderStructure.GetFilesAndFolders(folderOrFilePath, nonRecursive: true, ignoredFolders: ".git"); ActivePathItem = items; WindowUtilities.DoEvents(); Window.ShowStatus(); if (TreeFolderBrowser.HasItems) { SetTreeViewSelectionByIndex(0); } if (setFocus) { TreeFolderBrowser.Focus(); } AttachFileWatcher(folderOrFilePath); FolderStructure.UpdateGitFileStatus(items); if (!string.IsNullOrEmpty(fileName)) { SelectFileInSelectedFolderBrowserFolder(fileName); } }, DispatcherPriority.ApplicationIdle); }
/// <summary> /// Selects a file in the top level folder browser folder /// by file name. /// </summary> /// <param name="fileName">filename with full path - must match case</param> public void SelectFileInSelectedFolderBrowserFolder(string fileName, bool setFocus = true) { if (!string.IsNullOrEmpty(fileName)) { foreach (var file in ActivePathItem.Files) { if (file.FullPath == fileName) { if (setFocus) { TreeFolderBrowser.Focus(); } file.IsSelected = true; } } } }
private void SetTreeFromFolder(string folder, bool setFocus = false) { Dispatcher.InvokeAsync(() => { ActivePathItem = FolderStructure.GetFilesAndFolders(folder); WindowUtilities.DoEvents(); if (TreeFolderBrowser.HasItems) { SetTreeViewSelectionByIndex(0); } if (setFocus) { TreeFolderBrowser.Focus(); } }, System.Windows.Threading.DispatcherPriority.ApplicationIdle); }
private void ButtonSelectFolder_Click(object sender, RoutedEventArgs e) { string folder = FolderPath; if (string.IsNullOrEmpty(folder)) { folder = AppModel.ActiveDocument?.Filename; if (string.IsNullOrEmpty(folder)) { folder = Path.GetDirectoryName(folder); } else { folder = KnownFolders.GetPath(KnownFolder.Libraries); } } var dlg = new CommonOpenFileDialog(); dlg.Title = "Select folder to open in the Folder Browser"; dlg.IsFolderPicker = true; dlg.InitialDirectory = folder; dlg.RestoreDirectory = true; dlg.ShowHiddenItems = true; dlg.ShowPlacesList = true; dlg.EnsurePathExists = true; var result = dlg.ShowDialog(); if (result != CommonFileDialogResult.Ok) { return; } FolderPath = dlg.FileName; TreeFolderBrowser.Focus(); }
private void Button_CloseSearch_Click(object sender, RoutedEventArgs e) { SearchPanel.Visibility = Visibility.Collapsed; TreeFolderBrowser.Focus(); }