From 942155da0d427b7c4f98fa91da390461b5f1dd9f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Mon, 27 Sep 2021 05:27:06 +0000 Subject: [PATCH] wip --- Crow/src/Widgets/DirectoryView2.cs | 157 ++++++++++++++++++ Crow/src/Widgets/FileDialog.cs | 12 +- .../Divers/fitListWithStretchedItems.crow | 4 +- .../Experimental/directoryView2.crow | 40 +++++ .../Experimental/directoryView3.crow | 35 ++++ .../Experimental/directoryView4.crow | 40 +++++ .../Experimental/directoryView5.crow | 36 ++++ .../Interfaces/Experimental/fileDialog.crow | 91 +++++++++- .../ui/Interfaces/Experimental/tabView1.crow | 4 +- .../tabviewWithScrollTabName.crow | 10 +- 10 files changed, 413 insertions(+), 16 deletions(-) create mode 100644 Crow/src/Widgets/DirectoryView2.cs create mode 100644 Samples/common/ui/Interfaces/Experimental/directoryView2.crow create mode 100644 Samples/common/ui/Interfaces/Experimental/directoryView3.crow create mode 100644 Samples/common/ui/Interfaces/Experimental/directoryView4.crow create mode 100644 Samples/common/ui/Interfaces/Experimental/directoryView5.crow diff --git a/Crow/src/Widgets/DirectoryView2.cs b/Crow/src/Widgets/DirectoryView2.cs new file mode 100644 index 00000000..174708d4 --- /dev/null +++ b/Crow/src/Widgets/DirectoryView2.cs @@ -0,0 +1,157 @@ +// Copyright (c) 2013-2020 Jean-Philippe Bruyère +// +// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; + +namespace Crow +{ + public enum DirectoryViewStyle { + Icons, + Detailed, + Compact, + } + /// + /// templated directory viewer + /// + public class DirectoryView2 : TemplatedGroup + { + #region CTOR + protected DirectoryView2() {} + public DirectoryView2 (Interface iface, string style = null) : base (iface, style) { } + #endregion + + string currentDirectory = "/"; + bool showFiles, showHidden; + string fileMask = "*.*"; + int iconSize; + DirectoryViewStyle viewStyle; + + [DefaultValue(DirectoryViewStyle.Icons)] + public virtual DirectoryViewStyle ViewStyle { + get => viewStyle; + set { + if (viewStyle == value) + return; + viewStyle = value; + NotifyValueChangedAuto (viewStyle); + updateItemTemplates (); + } + } + [DefaultValue(32)] + public virtual int IconSize { + get => iconSize; + set { + if (iconSize == value) + return; + iconSize = value; + NotifyValueChangedAuto (iconSize); + NotifyValueChanged ("IconSizeMeasure", new Measure(iconSize, Unit.Pixel)); + updateItemTemplates (); + } + } + //public Measure IconSizeMeasure => new Measure(iconSize, Unit.Pixel); + [DefaultValue(true)] + public virtual bool ShowFiles { + get { return showFiles; } + set { + if (showFiles == value) + return; + showFiles = value; + NotifyValueChangedAuto (showFiles); + NotifyValueChanged ("FileSystemEntries", FileSystemEntries); + } + } + [DefaultValue(false)] + public virtual bool ShowHidden { + get { return showHidden; } + set { + if (showHidden == value) + return; + showHidden = value; + NotifyValueChangedAuto (showHidden); + NotifyValueChanged ("FileSystemEntries", FileSystemEntries); + } + } + [DefaultValue("*.*")] + public virtual string FileMask { + get { return fileMask; } + set { + if (fileMask == value) + return; + fileMask = value; + NotifyValueChangedAuto (fileMask); + NotifyValueChanged ("FileSystemEntries", FileSystemEntries); + } + } + [DefaultValue(".")] + public virtual string CurrentDirectory { + get { return currentDirectory; } + set { + if (currentDirectory == value) + return; + currentDirectory = value; + NotifyValueChangedAuto (currentDirectory); + NotifyValueChanged ("FileSystemEntries", FileSystemEntries); + updateFileSystemEntries(); + } + } + [XmlIgnore]public FileSystemInfo[] FileSystemEntries { + get { + try { + if (string.IsNullOrEmpty(CurrentDirectory)) + return null; + DirectoryInfo di = new DirectoryInfo(CurrentDirectory); + List fi = new List (di.GetDirectories()); + if (showFiles && !string.IsNullOrEmpty(fileMask)) + fi.AddRange(di.GetFiles(fileMask)); + return showHidden ? + fi.OrderBy(f=>f.Attributes).ThenBy(f=>f.Name).ToArray() : + fi.Where(f=>!f.Attributes.HasFlag (FileAttributes.Hidden)).OrderBy (f => f.Attributes).ThenBy (f => f.Name).ToArray(); + } catch (Exception ex) { + System.Diagnostics.Debug.WriteLine (ex.ToString ()); + return null; + } + } + } + //set template and itemTemplates depending on view configuration + void updateItemTemplates () { + return; + ItemTemplate = fileItemTemplates; + } + void updateFileSystemEntries () { + + } + string fileItemTemplates => @" + + + + + + + + + + + + + + + +".Replace ("ICON_SIZE", iconSize.ToString()); + } +} + diff --git a/Crow/src/Widgets/FileDialog.cs b/Crow/src/Widgets/FileDialog.cs index 302818bf..9438597e 100644 --- a/Crow/src/Widgets/FileDialog.cs +++ b/Crow/src/Widgets/FileDialog.cs @@ -41,7 +41,7 @@ namespace Crow } [DefaultValue("/home")] public virtual string CurrentDirectory { - get { return curDir; } + get => curDir; set { if (curDir == value) return; @@ -53,7 +53,7 @@ namespace Crow [DefaultValue("*")] public virtual string SearchPattern { - get { return searchPattern; } + get => searchPattern; set { if (searchPattern == value) return; @@ -64,7 +64,7 @@ namespace Crow } [DefaultValue(false)] public virtual bool ShowHidden { - get { return showHidden; } + get => showHidden; set { if (showHidden == value) return; @@ -74,7 +74,7 @@ namespace Crow } [DefaultValue(true)] public virtual bool ShowFiles { - get { return showFiles; } + get => showFiles; set { if (showFiles == value) return; @@ -83,7 +83,7 @@ namespace Crow } } public string SelectedFile { - get { return _selectedFile; } + get => _selectedFile; set { if (value == _selectedFile) return; @@ -92,7 +92,7 @@ namespace Crow } } public string SelectedDirectory { - get { return _selectedDir; } + get => _selectedDir; set { if (value == _selectedDir) return; diff --git a/Samples/common/ui/Interfaces/Divers/fitListWithStretchedItems.crow b/Samples/common/ui/Interfaces/Divers/fitListWithStretchedItems.crow index f159a6b2..73693535 100644 --- a/Samples/common/ui/Interfaces/Divers/fitListWithStretchedItems.crow +++ b/Samples/common/ui/Interfaces/Divers/fitListWithStretchedItems.crow @@ -1,5 +1,5 @@  - + -- 2.47.3