Console icons

This commit is contained in:
2024-03-11 21:35:11 +01:00
parent 2e1f682bbe
commit 92374fcd7b
7 changed files with 851 additions and 4 deletions

View File

@@ -0,0 +1,8 @@
using FileTime.Core.Models;
namespace FileTime.ConsoleUI.App.Services;
public interface IIconProvider
{
string GetImage(IItem? item);
}

View File

@@ -3,6 +3,7 @@ using FileTime.App.Core.Models.Enums;
using FileTime.App.Core.ViewModels;
using FileTime.ConsoleUI.App.Configuration;
using FileTime.ConsoleUI.App.Controls;
using FileTime.ConsoleUI.App.Services;
using FileTime.ConsoleUI.App.Styling;
using FileTime.Core.Enums;
using FileTime.Core.Models;
@@ -39,6 +40,7 @@ public class MainWindow
private readonly Dialogs _dialogs;
private readonly Timeline _timeline;
private readonly ItemPreviews _itemPreviews;
private readonly IIconProvider _iconProvider;
private readonly IOptions<ConsoleApplicationConfiguration> _consoleApplicationConfiguration;
private readonly Lazy<IView> _root;
@@ -51,6 +53,7 @@ public class MainWindow
Dialogs dialogs,
Timeline timeline,
ItemPreviews itemPreviews,
IIconProvider iconProvider,
IOptions<ConsoleApplicationConfiguration> consoleApplicationConfiguration)
{
_rootViewModel = rootViewModel;
@@ -61,6 +64,7 @@ public class MainWindow
_dialogs = dialogs;
_timeline = timeline;
_itemPreviews = itemPreviews;
_iconProvider = iconProvider;
_consoleApplicationConfiguration = consoleApplicationConfiguration;
_root = new Lazy<IView>(Initialize);
}
@@ -540,9 +544,21 @@ public class MainWindow
new Grid<IItemViewModel>
{
Margin = "1 0 1 0",
ColumnDefinitionsObject = "* Auto",
ColumnDefinitionsObject = "2 * Auto",
ChildInitializer =
{
new TextBlock<IItemViewModel>()
{
AsciiOnly = false
}
.Setup(t =>
{
t.Bind(
t,
dc => dc == null ? string.Empty : _iconProvider.GetImage(dc.BaseItem),
tb => tb.Text
);
}),
new TextBlock<IItemViewModel>()
.Setup(t =>
{
@@ -551,11 +567,11 @@ public class MainWindow
dc => dc == null ? string.Empty : dc.DisplayNameText,
tb => tb.Text
);
}),
}).WithExtension(new GridPositionExtension(1, 0)),
new StackPanel<IItemViewModel>
{
Orientation = Orientation.Horizontal,
Extensions = {new GridPositionExtension(1, 0)},
Extensions = {new GridPositionExtension(2, 0)},
ChildInitializer =
{
new TextBlock<IItemViewModel>()

View File

@@ -0,0 +1,31 @@
using FileTime.Core.Models;
namespace FileTime.ConsoleUI.App.Services;
public partial class NerdFontIconProvider : IIconProvider
{
private const string _fileIcon = "\uf15b"; //"\uea7b"
public string GetImage(IItem? item)
=> item switch
{
IContainer container => GetContainerImage(container),
IElement element => GetElementImage(element),
_ => _fileIcon
};
private string GetContainerImage(IContainer container)
{
if (_directoryIcons.TryGetValue(container.Name, out var icon))
return icon;
return "\uf07b";
}
private string GetElementImage(IElement element)
{
if (_fileNameIcons.TryGetValue(element.Name, out var icon))
return icon;
if (_fileExtensionIcons.TryGetValue(element.Name.Split('.').LastOrDefault() ?? "", out icon))
return icon;
return _fileIcon;
}
}

View File

@@ -0,0 +1,114 @@
namespace FileTime.ConsoleUI.App.Services;
partial class NerdFontIconProvider {
private const string AUDIO = "\uf001"; // 
private const string BINARY = "\ueae8"; // 
private const string BOOK = "\ue28b"; // 
private const string CALENDAR = "\ueab0"; // 
private const string CLOCK = "\uf43a"; // 
private const string COMPRESSED = "\uf410"; // 
private const string CONFIG = "\ue615"; // 
private const string CSS3 = "\ue749"; // 
private const string DATABASE = "\uf1c0"; // 
private const string DIFF = "\uf440"; // 
private const string DISK_IMAGE = "\ue271"; // 
private const string DOCKER = "\ue650"; // 
private const string DOCUMENT = "\uf1c2"; // 
private const string DOWNLOAD = "\udb80\uddda"; // 󰇚
private const string EMACS = "\ue632"; // 
private const string ESLINT = "\ue655"; // 
private const string FILE = "\uf15b"; // 
private const string FILE_3D = "\udb80\udda7"; // 󰆧
private const string FILE_OUTLINE = "\uf016"; // 
private const string FOLDER = "\ue5ff"; // 
private const string FOLDER_CONFIG = "\ue5fc"; // 
private const string FOLDER_GIT = "\ue5fb"; // 
private const string FOLDER_GITHUB = "\ue5fd"; // 
private const string FOLDER_HIDDEN = "\udb85\udf9e"; // 󱞞
private const string FOLDER_KEY = "\udb82\udcac"; // 󰢬
private const string FOLDER_NPM = "\ue5fa"; // 
private const string FOLDER_OPEN = "\uf115"; // 
private const string FONT = "\uf031"; // 
private const string GIST_SECRET = "\ueafa"; // 
private const string GIT = "\uf1d3"; // 
private const string GODOT = "\ue65f"; // 
private const string GRADLE = "\ue660"; // 
private const string GRAPHQL = "\ue662"; // 
private const string GRUNT = "\ue611"; // 
private const string GULP = "\ue610"; // 
private const string HTML5 = "\uf13b"; // 
private const string IMAGE = "\uf1c5"; // 
private const string INTELLIJ = "\ue7b5"; // 
private const string JSON = "\ue60b"; // 
private const string KEY = "\ueb11"; // 
private const string KEYPASS = "\uf23e"; // 
private const string LANG_ASSEMBLY = "\ue637"; // 
private const string LANG_C = "\ue61e"; // 
private const string LANG_CPP = "\ue61d"; // 
private const string LANG_CSHARP = "\udb80\udf1b"; // 󰌛
private const string LANG_D = "\ue7af"; // 
private const string LANG_ELIXIR = "\ue62d"; // 
private const string LANG_FORTRAN = "\udb84\ude1a"; // 󱈚
private const string LANG_FSHARP = "\ue7a7"; // 
private const string LANG_GO = "\ue65e"; // 
private const string LANG_GROOVY = "\ue775"; // 
private const string LANG_HASKELL = "\ue777"; // 
private const string LANG_JAVA = "\ue256"; // 
private const string LANG_JAVASCRIPT = "\ue74e"; // 
private const string LANG_KOTLIN = "\ue634"; // 
private const string LANG_NIM = "\ue677"; // 
private const string LANG_OCAML = "\ue67a"; // 
private const string LANG_PERL = "\ue67e"; // 
private const string LANG_PHP = "\ue73d"; // 
private const string LANG_PYTHON = "\ue606"; // 
private const string LANG_R = "\ue68a"; // 
private const string LANG_RUBY = "\ue21e"; // 
private const string LANG_RUBYRAILS = "\ue73b"; // 
private const string LANG_RUST = "\ue68b"; // 
private const string LANG_SASS = "\ue603"; // 
private const string LANG_STYLUS = "\ue600"; // 
private const string LANG_TEX = "\ue69b"; // 
private const string LANG_TYPESCRIPT = "\ue628"; // 
private const string LANG_V = "\ue6ac"; // 
private const string LIBRARY = "\ueb9c"; // 
private const string LICENSE = "\uf02d"; // 
private const string LOCK = "\uf023"; // 
private const string MAKE = "\ue673"; // 
private const string MARKDOWN = "\uf48a"; // 
private const string MUSTACHE = "\ue60f"; // 
private const string NODEJS = "\ue718"; // 
private const string NPM = "\ue71e"; // 
private const string OS_ANDROID = "\ue70e"; // 
private const string OS_APPLE = "\uf179"; // 
private const string OS_LINUX = "\uf17c"; // 
private const string OS_WINDOWS = "\uf17a"; // 
private const string OS_WINDOWS_CMD = "\uebc4"; // 
private const string PLAYLIST = "\udb83\udcb9"; // 󰲹
private const string POWERSHELL = "\uebc7"; // 
private const string PRIVATE_KEY = "\udb80\udf06"; // 󰌆
private const string PUBLIC_KEY = "\udb83\uddd6"; // 󰷖
private const string RAZOR = "\uf1fa"; // 
private const string REACT = "\ue7ba"; // 
private const string README = "\udb80\udcba"; // 󰂺
private const string SHEET = "\uf1c3"; // 
private const string SHELL = "\udb84\udd83"; // 󱆃
private const string SHELL_CMD = "\uf489"; // 
private const string SHIELD_CHECK = "\udb81\udd65"; // 󰕥
private const string SHIELD_KEY = "\udb82\udfc4"; // 󰯄
private const string SHIELD_LOCK = "\udb82\udd9d"; // 󰦝
private const string SIGNED_FILE = "\udb86\uddc3"; // 󱧃
private const string SLIDE = "\uf1c4"; // 
private const string SUBLIME = "\ue7aa"; // 
private const string SUBTITLE = "\udb82\ude16"; // 󰨖
private const string TERRAFORM = "\udb84\udc62"; // 󱁢
private const string TEXT = "\uf15c"; // 
//private const string TYPST = "\u1D42D"; // 𝐭
private const string UNITY = "\ue721"; // 
private const string VECTOR = "\udb81\udd59"; // 󰕙
private const string VIDEO = "\uf03d"; // 
private const string VIM = "\ue7c5"; // 
private const string WRENCH = "\uf0ad"; // 
private const string XML = "\udb81\uddc0"; // 󰗀
private const string YAML = "\ue6a8"; // 
private const string YARN = "\ue6a7"; // 
}

View File

@@ -0,0 +1,678 @@
namespace FileTime.ConsoleUI.App.Services;
public partial class NerdFontIconProvider
{
private Dictionary<string, string> _directoryIcons = new()
{
{".config" , FOLDER_CONFIG}, // 
{".git" , FOLDER_GIT}, // 
{".github" ,FOLDER_GITHUB}, // 
{".npm" ,FOLDER_NPM}, // 
{".ssh" ,FOLDER_KEY}, // 󰢬
{".Trash" , "\uf1f8"}, // 
{"config" , FOLDER_CONFIG}, // 
{"Contacts" , "\udb80\ude4c"}, // 󰉌
{"cron.d" , FOLDER_CONFIG}, // 
{"cron.daily" , FOLDER_CONFIG}, // 
{"cron.hourly" , FOLDER_CONFIG}, // 
{"cron.monthly" , FOLDER_CONFIG}, // 
{"cron.weekly" , FOLDER_CONFIG}, // 
{"Desktop" , "\uf108"}, // 
{"Downloads" , "\udb80\ude4d"}, // 󰉍
{"etc" , FOLDER_CONFIG}, // 
{"Favorites" , "\udb81\ude9d"}, // 󰚝
{"hidden" ,FOLDER_HIDDEN}, // 󱞞
{"home" , "\udb84\udcb5"}, // 󱂵
{"include" , FOLDER_CONFIG}, // 
{"Mail" , "\udb80\uddf0"}, // 󰇰
{"Movies" , "\udb83\udfce"}, // 󰿎
{"Music" , "\udb84\udf59"}, // 󱍙
{"node_modules" ,FOLDER_NPM}, // 
{"npm_cache" ,FOLDER_NPM}, // 
{"pam.d" ,FOLDER_KEY}, // 󰢬
{"Pictures" , "\udb80\ude4f"}, // 󰉏
{"ssh" ,FOLDER_KEY}, // 󰢬
{"sudoers.d" ,FOLDER_KEY}, // 󰢬
{"Videos" , "\uf03d"}, // 
{"xbps.d" , FOLDER_CONFIG}, // 
{"xorg.conf.d" , FOLDER_CONFIG}, // 
{"hi" ,BINARY}, // 
{"cabal" ,LANG_HASKELL}, // 
};
private Dictionary<string, string> _fileNameIcons = new()
{
{".atom" ,"\ue764"}, // 
{".bashrc" ,SHELL}, // 󱆃
{".bash_history" ,SHELL}, // 󱆃
{".bash_logout" ,SHELL}, // 󱆃
{".bash_profile" ,SHELL}, // 󱆃
{".CFUserTextEncoding" ,OS_APPLE}, // 
{".clang-format" ,CONFIG}, // 
{".cshrc" ,SHELL}, // 󱆃
{".DS_Store" ,OS_APPLE}, // 
{".emacs" ,EMACS}, // 
{".eslintrc.cjs" ,ESLINT}, // 
{".eslintrc.js" ,ESLINT}, // 
{".eslintrc.json" ,ESLINT}, // 
{".eslintrc.yaml" ,ESLINT}, // 
{".eslintrc.yml" ,ESLINT}, // 
{".gitattributes" ,GIT}, // 
{".gitconfig" ,GIT}, // 
{".gitignore" ,GIT}, // 
{".gitignore_global" ,GIT}, // 
{".gitlab-ci.yml" ,"\uf296"}, // 
{".gitmodules" ,GIT}, // 
{".htaccess" ,CONFIG}, // 
{".htpasswd" ,CONFIG}, // 
{".idea" ,INTELLIJ}, // 
{".ideavimrc" ,VIM}, // 
{".inputrc" ,CONFIG}, // 
{".kshrc" ,SHELL}, // 󱆃
{".login" ,SHELL}, // 󱆃
{".logout" ,SHELL}, // 󱆃
{".mailmap" ,GIT}, // 
{".node_repl_history" ,NODEJS}, // 
{".npmignore" ,NPM}, // 
{".npmrc" ,NPM}, // 
{".profile" ,SHELL}, // 󱆃
{".python_history" ,LANG_PYTHON}, // 
{".rustfmt.toml" ,LANG_RUST}, // 
{".rvm" ,LANG_RUBY}, // 
{".rvmrc" ,LANG_RUBY}, // 
{".tcshrc" ,SHELL}, // 󱆃
{".viminfo" ,VIM}, // 
{".vimrc" ,VIM}, // 
{".Xauthority" ,CONFIG}, // 
{".xinitrc" ,CONFIG}, // 
{".Xresources" ,CONFIG}, // 
{".yarnrc" ,YARN}, // 
{".zlogin" ,SHELL}, // 󱆃
{".zlogout" ,SHELL}, // 󱆃
{".zprofile" ,SHELL}, // 󱆃
{".zshenv" ,SHELL}, // 󱆃
{".zshrc" ,SHELL}, // 󱆃
{".zsh_history" ,SHELL}, // 󱆃
{".zsh_sessions" ,SHELL}, // 󱆃
{"._DS_Store" ,OS_APPLE}, // 
{"a.out" ,SHELL_CMD}, // 
{"authorized_keys" ,"\udb82\udcc0"}, // 󰣀
{"bashrc" ,SHELL}, // 󱆃
{"bspwmrc" ,CONFIG}, // 
{"build.gradle.kts" ,GRADLE}, // 
{"Cargo.lock" ,LANG_RUST}, // 
{"Cargo.toml" ,LANG_RUST}, // 
{"CMakeLists.txt" ,MAKE}, // 
{"composer.json" ,LANG_PHP}, // 
{"composer.lock" ,LANG_PHP}, // 
{"config" ,CONFIG}, // 
{"config.status" ,CONFIG}, // 
{"configure" ,WRENCH}, // 
{"configure.ac" ,CONFIG}, // 
{"configure.in" ,CONFIG}, // 
{"constraints.txt" ,LANG_PYTHON}, // 
{"COPYING" ,LICENSE}, // 
{"COPYRIGHT" ,LICENSE}, // 
{"crontab" ,CONFIG}, // 
{"crypttab" ,CONFIG}, // 
{"csh.cshrc" ,SHELL}, // 󱆃
{"csh.login" ,SHELL}, // 󱆃
{"csh.logout" ,SHELL}, // 󱆃
{"docker-compose.yml" ,DOCKER}, // 
{"Dockerfile" ,DOCKER}, // 
{"compose.yaml" ,DOCKER}, // 
{"compose.yml" ,DOCKER}, // 
{"docker-compose.yaml" ,DOCKER}, // 
{"dune" ,LANG_OCAML}, // 
{"dune-project" ,WRENCH}, // 
{"Earthfile" ,"\uf0ac"}, // 
{"environment" ,CONFIG}, // 
{"GNUmakefile" ,MAKE}, // 
{"go.mod" ,LANG_GO}, // 
{"go.sum" ,LANG_GO}, // 
{"go.work" ,LANG_GO}, // 
{"gradle" ,GRADLE}, // 
{"gradle.properties" ,GRADLE}, // 
{"gradlew" ,GRADLE}, // 
{"gradlew.bat" ,GRADLE}, // 
{"group" ,LOCK}, // 
{"gruntfile.coffee" ,GRUNT}, // 
{"gruntfile.js" ,GRUNT}, // 
{"gruntfile.ls" ,GRUNT}, // 
{"gshadow" ,LOCK}, // 
{"gulpfile.coffee" ,GULP}, // 
{"gulpfile.js" ,GULP}, // 
{"gulpfile.ls" ,GULP}, // 
{"heroku.yml" ,"\ue77b"}, // 
{"hostname" ,CONFIG}, // 
{"id_dsa" ,PRIVATE_KEY}, // 󰌆
{"id_ecdsa" ,PRIVATE_KEY}, // 󰌆
{"id_ecdsa_sk" ,PRIVATE_KEY}, // 󰌆
{"id_ed25519" ,PRIVATE_KEY}, // 󰌆
{"id_ed25519_sk" ,PRIVATE_KEY}, // 󰌆
{"id_rsa" ,PRIVATE_KEY}, // 󰌆
{"inputrc" ,CONFIG}, // 
{"Jenkinsfile" ,"\ue66e"}, // 
{"jsconfig.json" ,LANG_JAVASCRIPT},// 
{"Justfile" ,WRENCH}, // 
{"known_hosts" ,"\udb82\udcc0"}, // 󰣀
{"LICENCE" ,LICENSE}, // 
{"LICENCE.md" ,LICENSE}, // 
{"LICENCE.txt" ,LICENSE}, // 
{"LICENSE" ,LICENSE}, // 
{"LICENSE-APACHE" ,LICENSE}, // 
{"LICENSE-MIT" ,LICENSE}, // 
{"LICENSE.md" ,LICENSE}, // 
{"LICENSE.txt" ,LICENSE}, // 
{"localized" ,OS_APPLE}, // 
{"localtime" ,CLOCK}, // 
{"Makefile" ,MAKE}, // 
{"makefile" ,MAKE}, // 
{"Makefile.ac" ,MAKE}, // 
{"Makefile.am" ,MAKE}, // 
{"Makefile.in" ,MAKE}, // 
{"MANIFEST" ,LANG_PYTHON}, // 
{"MANIFEST.in" ,LANG_PYTHON}, // 
{"npm-shrinkwrap.json" ,NPM}, // 
{"npmrc" ,NPM}, // 
{"package-lock.json" ,NPM}, // 
{"package.json" ,NPM}, // 
{"passwd" ,LOCK}, // 
{"php.ini" ,LANG_PHP}, // 
{"PKGBUILD" ,"\uf303"}, // 
{"platformio.ini" ,"\ue682"}, // 
{"pom.xml" ,"\ue674"}, // 
{"Procfile" ,"\ue77b"}, // 
{"profile" ,SHELL}, // 󱆃
{"pyproject.toml" ,LANG_PYTHON}, // 
{"Rakefile" ,LANG_RUBY}, // 
{"README" ,README}, // 󰂺
{"release.toml" ,LANG_RUST}, // 
{"requirements.txt" ,LANG_PYTHON}, // 
{"robots.txt" ,"\udb81\udea9"}, // 󰚩
{"rubydoc" ,LANG_RUBYRAILS}, // 
{"rvmrc" ,LANG_RUBY}, // 
{"settings.gradle.kts" ,GRADLE}, // 
{"shadow" ,LOCK}, // 
{"shells" ,CONFIG}, // 
{"sudoers" ,LOCK}, // 
{"timezone" ,CLOCK}, // 
{"tsconfig.json" ,LANG_TYPESCRIPT},// 
{"Vagrantfile" ,"\u2371"}, // ⍱
{"webpack.config.js" ,"\udb81\udf2b"}, // 󰜫
{"yarn.lock" ,YARN}, // 
{"zlogin" ,SHELL}, // 󱆃
{"zlogout" ,SHELL}, // 󱆃
{"zprofile" ,SHELL}, // 󱆃
{"zshenv" ,SHELL}, // 󱆃
{"zshrc" ,SHELL}, // 󱆃
};
private Dictionary<string, string> _fileExtensionIcons = new()
{
{"3mf" ,FILE_3D}, // 󰆧
{"7z" ,COMPRESSED}, // 
{"a" ,OS_LINUX}, // 
{"acc" ,AUDIO}, // 
{"acf" ,"\uf1b6"}, // 
{"age" ,SHIELD_LOCK}, // 󰦝
{"ai" ,"\ue7b4"}, // 
{"aif" ,AUDIO}, // 
{"aifc" ,AUDIO}, // 
{"aiff" ,AUDIO}, // 
{"alac" ,AUDIO}, // 
{"android" ,OS_ANDROID}, // 
{"ape" ,AUDIO}, // 
{"apk" ,OS_ANDROID}, // 
{"apple" ,OS_APPLE}, // 
{"ar" ,COMPRESSED}, // 
{"arj" ,COMPRESSED}, // 
{"arw" ,IMAGE}, // 
{"asc" ,SHIELD_LOCK}, // 󰦝
{"asm" ,LANG_ASSEMBLY}, // 
{"asp" ,"\uf121"}, // 
{"avi" ,VIDEO}, // 
{"avif" ,IMAGE}, // 
{"avro" ,JSON}, // 
{"awk" ,SHELL_CMD}, // 
{"bash" ,SHELL_CMD}, // 
{"bat" ,OS_WINDOWS_CMD}, // 
{"bats" ,SHELL_CMD}, // 
{"bdf" ,FONT}, // 
{"bib" ,LANG_TEX}, // 
{"bin" ,BINARY}, // 
{"blend" ,"\udb80\udcab"}, // 󰂫
{"bmp" ,IMAGE}, // 
{"br" ,COMPRESSED}, // 
{"bst" ,LANG_TEX}, // 
{"bundle" ,OS_APPLE}, // 
{"bz" ,COMPRESSED}, // 
{"bz2" ,COMPRESSED}, // 
{"bz3" ,COMPRESSED}, // 
{"c" ,LANG_C}, // 
{"c++" ,LANG_CPP}, // 
{"cab" ,OS_WINDOWS}, // 
{"cbr" ,IMAGE}, // 
{"cbz" ,IMAGE}, // 
{"cc" ,LANG_CPP}, // 
{"cert" ,GIST_SECRET}, // 
{"cfg" ,CONFIG}, // 
{"cjs" ,LANG_JAVASCRIPT}, // 
{"class" ,LANG_JAVA}, // 
{"clj" ,"\ue768"}, // 
{"cljs" ,"\ue76a"}, // 
{"cls" ,LANG_TEX}, // 
{"cmake" ,MAKE}, // 
{"cmd" ,OS_WINDOWS}, // 
{"coffee" ,"\uf0f4"}, // 
{"com" ,OS_WINDOWS_CMD}, // 
{"conf" ,CONFIG}, // 
{"config" ,CONFIG}, // 
{"cp" ,LANG_CPP}, // 
{"cpio" ,COMPRESSED}, // 
{"cpp" ,LANG_CPP}, // 
{"cr" ,"\ue62f"}, // 
{"cr2" ,IMAGE}, // 
{"crdownload" ,DOWNLOAD}, // 󰇚
{"crt" ,GIST_SECRET}, // 
{"cs" ,LANG_CSHARP}, // 󰌛
{"csh" ,SHELL_CMD}, // 
{"cshtml" ,RAZOR}, // 
{"csproj" ,LANG_CSHARP}, // 󰌛
{"css" ,CSS3}, // 
{"csv" ,SHEET}, // 
{"csx" ,LANG_CSHARP}, // 󰌛
{"cts" ,LANG_TYPESCRIPT}, // 
{"cu" ,"\ue64b"}, // 
{"cue" ,PLAYLIST}, // 󰲹
{"cxx" ,LANG_CPP}, // 
{"d" ,LANG_D}, // 
{"dart" ,"\ue798"}, // 
{"db" ,DATABASE}, // 
{"deb" ,"\ue77d"}, // 
{"desktop" ,"\uebd1"}, // 
{"di" ,LANG_D}, // 
{"diff" ,DIFF}, // 
{"djv" ,DOCUMENT}, // 
{"djvu" ,DOCUMENT}, // 
{"dll" ,LIBRARY}, // 
{"dmg" ,DISK_IMAGE}, // 
{"doc" ,DOCUMENT}, // 
{"docx" ,DOCUMENT}, // 
{"dot" ,"\udb84\udc49"}, // 󱁉
{"download" ,DOWNLOAD}, // 󰇚
{"dockerfile" ,DOCKER}, // 
{"dockerignore" ,DOCKER}, // 
{"drawio" ,"\uebba"}, // 
{"dump" ,DATABASE}, // 
{"dvi" ,IMAGE}, // 
{"dylib" ,OS_APPLE}, // 
{"ebook" ,BOOK}, // 
{"ebuild" ,"\uf30d"}, // 
{"editorconfig" ,CONFIG}, // 
{"ejs" ,"\ue618"}, // 
{"el" ,EMACS}, // 
{"elc" ,EMACS}, // 
{"elf" ,BINARY}, // 
{"elm" ,"\ue62c"}, // 
{"eml" ,"\uf003"}, // 
{"env" ,"\uf462"}, // 
{"eot" ,FONT}, // 
{"eps" ,VECTOR}, // 󰕙
{"epub" ,BOOK}, // 
{"erb" ,LANG_RUBYRAILS}, // 
{"erl" ,"\ue7b1"}, // 
{"ex" ,LANG_ELIXIR}, // 
{"exe" ,OS_WINDOWS_CMD}, // 
{"exs" ,LANG_ELIXIR}, // 
{"f" ,LANG_FORTRAN}, // 󱈚
{"f90" ,LANG_FORTRAN}, // 󱈚
{"fbx" ,FILE_3D}, // 󰆧
{"fdmdownload" ,DOWNLOAD}, // 󰇚
{"fish" ,SHELL_CMD}, // 
{"flac" ,AUDIO}, // 
{"flv" ,VIDEO}, // 
{"fnt" ,FONT}, // 
{"fodg" ,VECTOR}, // 󰕙
{"fodp" ,SLIDE}, // 
{"fods" ,SHEET}, // 
{"fodt" ,DOCUMENT}, // 
{"fon" ,FONT}, // 
{"font" ,FONT}, // 
{"for" ,LANG_FORTRAN}, // 󱈚
{"fs" ,LANG_FSHARP}, // 
{"fsi" ,LANG_FSHARP}, // 
{"fsproj" ,LANG_FSHARP}, // 
{"fsx" ,LANG_FSHARP}, // 
{"gcode" ,"\udb82\udef4"}, // 󰫴
{"gd" ,GODOT}, // 
{"gdoc" ,DOCUMENT}, // 
{"gem" ,LANG_RUBY}, // 
{"gemfile" ,LANG_RUBY}, // 
{"gemspec" ,LANG_RUBY}, // 
{"gform" ,"\uf298"}, // 
{"gif" ,IMAGE}, // 
{"git" ,GIT}, // 
{"go" ,LANG_GO}, // 
{"godot" ,GODOT}, // 
{"gpg" ,SHIELD_LOCK}, // 󰦝
{"gql" ,GRAPHQL}, // 
{"gradle" ,GRADLE}, // 
{"graphql" ,GRAPHQL}, // 
{"groovy" ,LANG_GROOVY}, // 
{"gsheet" ,SHEET}, // 
{"gslides" ,SLIDE}, // 
{"guardfile" ,LANG_RUBY}, // 
{"gv" ,"\udb84\udc49"}, // 󱁉
{"gvy" ,LANG_GROOVY}, // 
{"gz" ,COMPRESSED}, // 
{"h" ,LANG_C}, // 
{"h++" ,LANG_CPP}, // 
{"h264" ,VIDEO}, // 
{"haml" ,"\ue664"}, // 
{"hbs" ,MUSTACHE}, // 
{"heic" ,IMAGE}, // 
{"heics" ,VIDEO}, // 
{"heif" ,IMAGE}, // 
{"hex" ,"\udb84\udea7"}, // 󱊧
{"hh" ,LANG_CPP}, // 
{"hpp" ,LANG_CPP}, // 
{"hs" ,LANG_HASKELL}, // 
{"htm" ,HTML5}, // 
{"html" ,HTML5}, // 
{"hxx" ,LANG_CPP}, // 
{"ical" ,CALENDAR}, // 
{"icalendar" ,CALENDAR}, // 
{"ico" ,IMAGE}, // 
{"ics" ,CALENDAR}, // 
{"ifb" ,CALENDAR}, // 
{"image" ,DISK_IMAGE}, // 
{"img" ,DISK_IMAGE}, // 
{"iml" ,INTELLIJ}, // 
{"ini" ,CONFIG}, // 
{"inl" ,LANG_C}, // 
{"ipynb" ,"\ue678"}, // 
{"iso" ,DISK_IMAGE}, // 
{"j2c" ,IMAGE}, // 
{"j2k" ,IMAGE}, // 
{"jad" ,LANG_JAVA}, // 
{"jar" ,LANG_JAVA}, // 
{"java" ,LANG_JAVA}, // 
{"jfi" ,IMAGE}, // 
{"jfif" ,IMAGE}, // 
{"jif" ,IMAGE}, // 
{"jl" ,"\ue624"}, // 
{"jmd" ,MARKDOWN}, // 
{"jp2" ,IMAGE}, // 
{"jpe" ,IMAGE}, // 
{"jpeg" ,IMAGE}, // 
{"jpf" ,IMAGE}, // 
{"jpg" ,IMAGE}, // 
{"jpx" ,IMAGE}, // 
{"js" ,LANG_JAVASCRIPT}, // 
{"json" ,JSON}, // 
{"jsx" ,REACT}, // 
{"jxl" ,IMAGE}, // 
{"kbx" ,SHIELD_KEY}, // 󰯄
{"kdb" ,KEYPASS}, // 
{"kdbx" ,KEYPASS}, // 
{"key" ,KEY}, // 
{"ko" ,OS_LINUX}, // 
{"ksh" ,SHELL_CMD}, // 
{"kt" ,LANG_KOTLIN}, // 
{"kts" ,LANG_KOTLIN}, // 
{"latex" ,LANG_TEX}, // 
{"ldb" ,DATABASE}, // 
{"less" ,"\ue758"}, // 
{"lhs" ,LANG_HASKELL}, // 
{"lib" ,LIBRARY}, // 
{"license" ,LICENSE}, // 
{"lisp" ,"\udb80\udd72"}, // 󰅲
{"localized" ,OS_APPLE}, // 
{"lock" ,LOCK}, // 
{"log" ,"\uf18d"}, // 
{"ltx" ,LANG_TEX}, // 
{"lua" ,"\ue620"}, // 
{"lz" ,COMPRESSED}, // 
{"lz4" ,COMPRESSED}, // 
{"lzh" ,COMPRESSED}, // 
{"lzma" ,COMPRESSED}, // 
{"lzo" ,COMPRESSED}, // 
{"m" ,LANG_C}, // 
{"m2ts" ,VIDEO}, // 
{"m2v" ,VIDEO}, // 
{"m3u" ,PLAYLIST}, // 󰲹
{"m3u8" ,PLAYLIST}, // 󰲹
{"m4a" ,AUDIO}, // 
{"m4v" ,VIDEO}, // 
{"magnet" ,"\uf076"}, // 
{"markdown" ,MARKDOWN}, // 
{"md" ,MARKDOWN}, // 
{"md5" ,SHIELD_CHECK}, // 󰕥
{"mdb" ,DATABASE}, // 
{"mid" ,"\udb82\udcf2"}, // 󰣲
{"mjs" ,LANG_JAVASCRIPT}, // 
{"mk" ,MAKE}, // 
{"mka" ,AUDIO}, // 
{"mkd" ,MARKDOWN}, // 
{"mkv" ,VIDEO}, // 
{"ml" ,LANG_OCAML}, // 
{"mli" ,LANG_OCAML}, // 
{"mll" ,LANG_OCAML}, // 
{"mly" ,LANG_OCAML}, // 
{"mm" ,LANG_CPP}, // 
{"mobi" ,BOOK}, // 
{"mov" ,VIDEO}, // 
{"mp2" ,AUDIO}, // 
{"mp3" ,AUDIO}, // 
{"mp4" ,VIDEO}, // 
{"mpeg" ,VIDEO}, // 
{"mpg" ,VIDEO}, // 
{"msi" ,OS_WINDOWS}, // 
{"mts" ,LANG_TYPESCRIPT}, // 
{"mustache" ,MUSTACHE}, // 
{"nef" ,IMAGE}, // 
{"nim" ,LANG_NIM}, // 
{"nimble" ,LANG_NIM}, // 
{"nims" ,LANG_NIM}, // 
{"ninja" ,"\udb81\udf74"}, // 󰝴
{"nix" ,"\uf313"}, // 
{"node" ,NODEJS}, // 
{"o" ,BINARY}, // 
{"obj" ,FILE_3D}, // 󰆧
{"odf" ,"\udb81\udf84"}, // 󰞄
{"odg" ,VECTOR}, // 󰕙
{"odp" ,SLIDE}, // 
{"ods" ,SHEET}, // 
{"odt" ,DOCUMENT}, // 
{"ogg" ,AUDIO}, // 
{"ogm" ,VIDEO}, // 
{"ogv" ,VIDEO}, // 
{"opus" ,AUDIO}, // 
{"orf" ,IMAGE}, // 
{"org" ,"\ue633"}, // 
{"otf" ,FONT}, // 
{"out" ,"\ueb2c"}, // 
{"p12" ,KEY}, // 
{"par" ,COMPRESSED}, // 
{"part" ,DOWNLOAD}, // 󰇚
{"patch" ,DIFF}, // 
{"pbm" ,IMAGE}, // 
{"pcm" ,AUDIO}, // 
{"pdf" ,"\uf1c1"}, // 
{"pem" ,KEY}, // 
{"pfx" ,KEY}, // 
{"pgm" ,IMAGE}, // 
{"phar" ,LANG_PHP}, // 
{"php" ,LANG_PHP}, // 
{"pkg" ,"\ueb29"}, // 
{"pl" ,LANG_PERL}, // 
{"plist" ,OS_APPLE}, // 
{"plx" ,LANG_PERL}, // 
{"ply" ,FILE_3D}, // 󰆧
{"pm" ,LANG_PERL}, // 
{"png" ,IMAGE}, // 
{"pnm" ,IMAGE}, // 
{"pod" ,LANG_PERL}, // 
{"pp" ,"\ue631"}, // 
{"ppm" ,IMAGE}, // 
{"pps" ,SLIDE}, // 
{"ppsx" ,SLIDE}, // 
{"ppt" ,SLIDE}, // 
{"pptx" ,SLIDE}, // 
{"properties" ,JSON}, // 
{"prql" ,DATABASE}, // 
{"ps" ,VECTOR}, // 󰕙
{"ps1" ,POWERSHELL}, // 
{"psd" ,"\ue7b8"}, // 
{"psd1" ,POWERSHELL}, // 
{"psf" ,FONT}, // 
{"psm1" ,POWERSHELL}, // 
{"pub" ,PUBLIC_KEY}, // 󰷖
{"purs" ,"\ue630"}, // 
{"pxm" ,IMAGE}, // 
{"py" ,LANG_PYTHON}, // 
{"pyc" ,LANG_PYTHON}, // 
{"pyd" ,LANG_PYTHON}, // 
{"pyi" ,LANG_PYTHON}, // 
{"pyo" ,LANG_PYTHON}, // 
{"qcow" ,DISK_IMAGE}, // 
{"qcow2" ,DISK_IMAGE}, // 
{"r" ,LANG_R}, // 
{"rar" ,COMPRESSED}, // 
{"raw" ,IMAGE}, // 
{"razor" ,RAZOR}, // 
{"rb" ,LANG_RUBY}, // 
{"rdata" ,LANG_R}, // 
{"rdb" ,"\ue76d"}, // 
{"rdoc" ,MARKDOWN}, // 
{"rds" ,LANG_R}, // 
{"readme" ,README}, // 󰂺
{"rlib" ,LANG_RUST}, // 
{"rmd" ,MARKDOWN}, // 
{"rmeta" ,LANG_RUST}, // 
{"rpm" ,"\ue7bb"}, // 
{"rs" ,LANG_RUST}, // 
{"rspec" ,LANG_RUBY}, // 
{"rspec_parallel" ,LANG_RUBY}, // 
{"rspec_status" ,LANG_RUBY}, // 
{"rss" ,"\uf09e"}, // 
{"rst" ,TEXT}, // 
{"rtf" ,TEXT}, // 
{"ru" ,LANG_RUBY}, // 
{"rubydoc" ,LANG_RUBYRAILS}, // 
{"s" ,LANG_ASSEMBLY}, // 
{"sal" ,"\udb85\udc7b"}, // 󱑻
{"sass" ,LANG_SASS}, // 
{"sbt" ,SUBTITLE}, // 󰨖
{"scala" ,"\ue737"}, // 
{"scss" ,LANG_SASS}, // 
{"service" ,"\ueba2"}, // 
{"sh" ,SHELL_CMD}, // 
{"sha1" ,SHIELD_CHECK}, // 󰕥
{"sha224" ,SHIELD_CHECK}, // 󰕥
{"sha256" ,SHIELD_CHECK}, // 󰕥
{"sha384" ,SHIELD_CHECK}, // 󰕥
{"sha512" ,SHIELD_CHECK}, // 󰕥
{"shell" ,SHELL_CMD}, // 
{"shtml" ,HTML5}, // 
{"sig" ,SIGNED_FILE}, // 󱧃
{"signature" ,SIGNED_FILE}, // 󱧃
{"slim" ,LANG_RUBYRAILS}, // 
{"sln" ,"\ue70c"}, // 
{"so" ,OS_LINUX}, // 
{"sql" ,DATABASE}, // 
{"sqlite3" ,"\ue7c4"}, // 
{"sr" ,"\udb85\udc7b"}, // 󱑻
{"srt" ,SUBTITLE}, // 󰨖
{"ssa" ,SUBTITLE}, // 󰨖
{"stl" ,FILE_3D}, // 󰆧
{"sty" ,LANG_TEX}, // 
{"styl" ,LANG_STYLUS}, // 
{"stylus" ,LANG_STYLUS}, // 
{"sub" ,SUBTITLE}, // 󰨖
{"sublime-build" ,SUBLIME}, // 
{"sublime-keymap" ,SUBLIME}, // 
{"sublime-menu" ,SUBLIME}, // 
{"sublime-options",SUBLIME}, // 
{"sublime-package",SUBLIME}, // 
{"sublime-project",SUBLIME}, // 
{"sublime-session",SUBLIME}, // 
{"sublime-settings",SUBLIME}, // 
{"sublime-snippet",SUBLIME}, // 
{"sublime-theme" ,SUBLIME}, // 
{"svelte" ,"\ue697"}, // 
{"svg" ,VECTOR}, // 󰕙
{"swift" ,"\ue755"}, // 
{"t" ,LANG_PERL}, // 
{"tar" ,COMPRESSED}, // 
{"taz" ,COMPRESSED}, // 
{"tbz" ,COMPRESSED}, // 
{"tbz2" ,COMPRESSED}, // 
{"tc" ,DISK_IMAGE}, // 
{"tex" ,LANG_TEX}, // 
{"tf" ,TERRAFORM}, // 󱁢
{"tfstate" ,TERRAFORM}, // 󱁢
{"tfvars" ,TERRAFORM}, // 󱁢
{"tgz" ,COMPRESSED}, // 
{"tif" ,IMAGE}, // 
{"tiff" ,IMAGE}, // 
{"tlz" ,COMPRESSED}, // 
{"tml" ,CONFIG}, // 
{"toml" ,CONFIG}, // 
{"torrent" ,"\ue275"}, // 
{"tres" ,GODOT}, // 
{"ts" ,LANG_TYPESCRIPT}, // 
{"tscn" ,GODOT}, // 
{"tsv" ,SHEET}, // 
{"tsx" ,REACT}, // 
{"ttc" ,FONT}, // 
{"ttf" ,FONT}, // 
{"twig" ,"\ue61c"}, // 
{"txt" ,TEXT}, // 
//{"typ" ,TYPST}, // 𝐭
{"txz" ,COMPRESSED}, // 
{"tz" ,COMPRESSED}, // 
{"tzo" ,COMPRESSED}, // 
{"unity" ,UNITY}, // 
{"unity3d" ,UNITY}, // 
{"v" ,LANG_V}, // 
{"vdi" ,DISK_IMAGE}, // 
{"vhd" ,DISK_IMAGE}, // 
{"video" ,VIDEO}, // 
{"vim" ,VIM}, // 
{"vmdk" ,DISK_IMAGE}, // 
{"vob" ,VIDEO}, // 
{"vue" ,"\udb82\udc44"}, // 󰡄
{"war" ,LANG_JAVA}, // 
{"wav" ,AUDIO}, // 
{"webm" ,VIDEO}, // 
{"webmanifest" ,JSON}, // 
{"webp" ,IMAGE}, // 
{"whl" ,LANG_PYTHON}, // 
{"windows" ,OS_WINDOWS}, // 
{"wma" ,AUDIO}, // 
{"wmv" ,VIDEO}, // 
{"woff" ,FONT}, // 
{"woff2" ,FONT}, // 
{"wv" ,AUDIO}, // 
{"xcf" ,IMAGE}, // 
{"xhtml" ,HTML5}, // 
{"xlr" ,SHEET}, // 
{"xls" ,SHEET}, // 
{"xlsm" ,SHEET}, // 
{"xlsx" ,SHEET}, // 
{"xml" ,XML}, // 󰗀
{"xpm" ,IMAGE}, // 
{"xul" ,XML}, // 󰗀
{"xz" ,COMPRESSED}, // 
{"yaml" ,YAML}, // 
{"yml" ,YAML}, // 
{"z" ,COMPRESSED}, // 
{"zig" ,"\ue6a9"}, // 
{"zip" ,COMPRESSED}, // 
{"zsh" ,SHELL_CMD}, // 
{"zsh-theme" ,SHELL}, // 󱆃
{"zst" ,COMPRESSED}, // 
};
}

View File

@@ -42,6 +42,7 @@ public static class Startup
services.TryAddSingleton<IUserCommunicationService>(sp => sp.GetRequiredService<IDialogService>());
services.AddSingleton<IUserCommandHandler, ConsoleUserCommandHandler>();
services.AddSingleton<IStartupHandler, StartupHandler>();
services.TryAddSingleton<IIconProvider, NerdFontIconProvider>();
services.TryAddSingleton<IThemeProvider, ThemeProvider>();
services.Configure<ConsoleApplicationConfiguration>(configuration);

View File

@@ -1,7 +1,6 @@
using FileTime.Core.Models;
using FileTime.GuiApp.App.Models;
using FileTime.GuiApp.App.Places;
using FileTime.GuiApp.App.Services;
using FileTime.Providers.Local;
namespace FileTime.GuiApp.App.IconProviders;