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();
     }
 }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        /// <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();
 }