private void GetFiles(TreeViewItemImage item)
        {
            List <string> files      = new List <string>();
            string        folderName = (string)item.Tag;

            try
            {
                var dirs   = Directory.GetFiles(folderName);
                var images = GetImages(folderName);

                if (images.Count > 0)
                {
                    files.AddRange(images);
                }
            }
            catch (Exception)
            {
                CollapseAll();
            }

            files.ForEach(directoryPath =>
            {
                TreeViewItemImage subItem = new TreeViewItemImage()
                {
                    Header = GetPath(directoryPath),
                    Tag    = directoryPath,
                };
                item.AddItem(subItem);
            });
        }
예제 #2
0
 public TreeViewItemHeader(object obj, string path, TreeViewItemImage image)
     : this(null, image)
 {
     textView.SetBinding(TextBlock.TextProperty,
                         new Binding(path)
     {
         Source = obj, Mode = BindingMode.OneWay
     });
 }
        private void Expand(object sender)
        {
            TreeViewItemImage treeViewItem = (TreeViewItemImage)sender;

            if (treeViewItem.Items.Count != 1 || treeViewItem.Items[0] != null)
            {
                return;
            }

            treeViewItem.Items.Clear();
            string folderName  = (string)treeViewItem.Tag;
            var    directories = new List <string>();

            try
            {
                List <string> dirs = Directory.GetDirectories(folderName).Where(x =>
                {
                    DirectoryInfo di = new DirectoryInfo(x);
                    return(!di.Attributes.HasFlag(FileAttributes.ReparsePoint) && !di.Attributes.HasFlag(FileAttributes.Hidden));
                }
                                                                                ).ToList();

                if (dirs.Count > 0)
                {
                    directories.AddRange(dirs);
                }
            }
            catch (Exception)
            {
                CollapseAll();
            }

            directories.ForEach(directoryPath =>
            {
                TreeViewItemImage subItem = new TreeViewItemImage()
                {
                    Header = GetPath(directoryPath),
                    Tag    = directoryPath
                };

                if (Path.GetExtension(subItem.Tag.ToString()) == "")
                {
                    if (!CheckIfEmpty(subItem.Tag.ToString()))
                    {
                        subItem.Items.Add(null);
                    }
                }

                subItem.Expanded += Folder_Expanded;
                treeViewItem.AddItem(subItem);
            });
            GetFiles(treeViewItem);
        }
        public static ImageSource GetImageSource(TreeViewItemImage image)
        {
            switch (image)
            {
            case TreeViewItemImage.Graph: return(Startup.Application.Resources["IconGraphSmall"] as ImageSource);

            case TreeViewItemImage.Node: return(Startup.Application.Resources["IconNodeSmall"] as ImageSource);

            case TreeViewItemImage.Input: return(Startup.Application.Resources["IconInputSmall"] as ImageSource);

            case TreeViewItemImage.Output: return(Startup.Application.Resources["IconOutputSmall"] as ImageSource);

            case TreeViewItemImage.Folder: return(Startup.Application.Resources["IconOpenSmall"] as ImageSource);
            }
            return(null);
        }
예제 #5
0
        private void FileDragFromWindows(DragEventArgs obj)
        {
            string[] files = (string[])obj.Data.GetData(System.Windows.DataFormats.FileDrop);
            ObservableCollection <Image> temp = new ObservableCollection <Image>();

            if (files == null)
            {
                TreeViewItemImage tr = (TreeViewItemImage)obj.Data.GetData("ImageViewer.Model.TreeViewItemImage");
                if (Path.GetExtension(tr.Header.ToString()) != String.Empty)
                {
                    Image image = new Image();
                    image.FilePath  = tr.Tag.ToString();
                    image.FileName  = System.Text.RegularExpressions.Regex.Match(tr.Tag.ToString(), @".*\\([^\\]+$)").Groups[1].Value;
                    image.Extension = Path.GetExtension(tr.Header.ToString());
                    temp.Add(image);
                    _aggregator.GetEvent <SendImage>().Publish(temp);
                }
                else
                {
                    foreach (string path in Directory.GetFiles(tr.Tag.ToString()))
                    {
                        LoadFiles(temp, path);
                    }
                }
            }
            else
            {
                ObservableCollection <Image> tempOfSingleImages = new ObservableCollection <Image>();
                foreach (var s in (string[])obj.Data.GetData(DataFormats.FileDrop, false))
                {
                    if (Directory.Exists(s))
                    {
                        temp = new ObservableCollection <Image>();
                        foreach (string path in Directory.GetFiles(s))
                        {
                            LoadFiles(temp, path.ToString());
                        }
                    }
                    else
                    {
                        LoadFiles(tempOfSingleImages, s.ToString());
                    }
                }
            }
            NotifyPropertyChanged("TiledViewRows");
        }
        private void TreeViewItemImage_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                TreeViewItemImage tr = sender as TreeViewItemImage;
                if (tr != null && e.LeftButton == MouseButtonState.Pressed)
                {
                    var hit = e.OriginalSource as DependencyObject;
                    while (hit != null && !(hit is TreeViewItemImage))
                    {
                        hit = VisualTreeHelper.GetParent(hit);
                    }

                    DragDrop.DoDragDrop(tr, hit, DragDropEffects.Copy);
                }
            }
            catch (Exception)
            {
                return;
            }
        }
예제 #7
0
        public TreeViewItemHeader(string title, TreeViewItemImage image)
        {
            imageView = new Image();
            textView  = new TextBlock();
            imageType = image;

            imageView.Margin = new Thickness(0, 0, 4, 0);
            imageView.Width  = 20;
            imageView.Height = 20;
            imageView.Source = TreeViewItemImageSource.GetImageSource(image);

            textView.VerticalAlignment = VerticalAlignment.Center;
            textView.TextWrapping      = TextWrapping.Wrap;
            textView.Foreground        = Brushes.White;
            textView.Margin            = new Thickness(4);
            textView.Text = title;

            HorizontalAlignment = HorizontalAlignment.Stretch;
            VerticalAlignment   = VerticalAlignment.Center;
            Orientation         = Orientation.Horizontal;
            Children.Add(imageView);
            Children.Add(textView);
        }
        private void FileExplorer_Loaded(object sender, RoutedEventArgs e)
        {
            DriveInfo[] logicalDrives = DriveInfo.GetDrives().Where(x => x.DriveType != DriveType.CDRom).ToArray();
            foreach (var drive in Directory.GetLogicalDrives())
            {
                var item = new TreeViewItemImage()
                {
                    Header      = drive,
                    Tag         = drive,
                    ImageSource = new BitmapImage(new Uri("pack://application:,,,/Resources/Images/DriveIcon.png", UriKind.Absolute))
                };

                if (!CheckIfEmpty(item.Tag.ToString()))
                {
                    item.Items.Add(null);
                }
                item.Expanded += Folder_Expanded;
                FolderTreeView.Items.Add(item);
            }
            String            path;
            TreeViewItemImage specialItem;

            path        = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            specialItem = new TreeViewItemImage()
            {
                Header      = "Desktop",
                Tag         = path,
                ImageSource = new BitmapImage(new Uri("pack://application:,,,/Resources/Images/MyComputerIcon.png", UriKind.Absolute))
            };
            if (!CheckIfEmpty(specialItem.Tag.ToString()))
            {
                specialItem.Items.Add(null);
            }
            specialItem.Expanded += Folder_Expanded;
            FolderTreeView.Items.Add(specialItem);

            path        = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            specialItem = new TreeViewItemImage()
            {
                Header      = "My Documents",
                Tag         = path,
                ImageSource = new BitmapImage(new Uri("pack://application:,,,/Resources/Images/FolderIcon.png", UriKind.Absolute))
            };
            if (!CheckIfEmpty(specialItem.Tag.ToString()))
            {
                specialItem.Items.Add(null);
            }
            specialItem.Expanded += Folder_Expanded;
            FolderTreeView.Items.Add(specialItem);

            path        = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            specialItem = new TreeViewItemImage()
            {
                Header      = "My Pictures",
                Tag         = path,
                ImageSource = new BitmapImage(new Uri("pack://application:,,,/Resources/Images/FolderIcon.png", UriKind.Absolute))
            };
            if (!CheckIfEmpty(specialItem.Tag.ToString()))
            {
                specialItem.Items.Add(null);
            }
            specialItem.Expanded += Folder_Expanded;
            FolderTreeView.Items.Add(specialItem);
        }