From 13e3fd8a0bef6ad8a47161dc90115c65e0bbca68 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Laurent?= <francois.laurent@posteo.net>
Date: Sun, 9 Feb 2025 22:52:50 +0100
Subject: [PATCH] feat: download, delete and create directory

---
 Project.toml        |  2 +-
 src/editor.jl       | 10 +++++++++-
 src/larvatagger.css |  6 +++++-
 src/wgl.jl          | 10 ++++++++--
 4 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/Project.toml b/Project.toml
index 64da699..e4aeb6a 100644
--- a/Project.toml
+++ b/Project.toml
@@ -27,7 +27,7 @@ WGLMakie = "276b4fcb-3e11-5398-bf8b-a0c2d153d008"
 
 [compat]
 Bonito = "< 4.0.0"
-NyxWidgets = "0.1.1"
+NyxWidgets = ">= 0.2.0"
 ObservationPolicies = "0.2.4"
 PlanarLarvae = ">= 0.11.2"
 TidyObservables = "0.1.1"
diff --git a/src/editor.jl b/src/editor.jl
index d385c4c..0ea314a 100644
--- a/src/editor.jl
+++ b/src/editor.jl
@@ -37,6 +37,10 @@ function larvaeditor(path=nothing;
         title="LarvaTagger",
         root_directory=nothing,
         enable_uploads=false,
+        enable_downloads=false,
+        prepare_download=nothing,
+        enable_new_directories=false,
+        enable_delete=false,
         kwargs...)
 
     # to (re-)load a file, the app is reloaded with the filepath as sole information
@@ -63,7 +67,11 @@ function larvaeditor(path=nothing;
                             larvafilter(controller),
                             tagfilter(controller; manualtag=manualtag),
                             metadataeditor(controller),
-                            filemenu(controller; upload_button=enable_uploads),
+                            filemenu(controller; upload_button=enable_uploads,
+                                     download_button=enable_downloads,
+                                     prepare_download=prepare_download,
+                                     create_directory_button=enable_new_directories,
+                                     delete_button=enable_delete),
                             backendmenu(controller, backend_directory),
                             loadanimation(controller),
                             twooptiondialog(controller))
diff --git a/src/larvatagger.css b/src/larvatagger.css
index 0ead180..013b8a4 100644
--- a/src/larvatagger.css
+++ b/src/larvatagger.css
@@ -40,7 +40,7 @@ canvas {
 .cp-tab .cp-tab-switch:checked ~ .control-panel {
 	display: block;
 }
-.cp-tab .cp-tab-switch:checked ~ .control-panel div {
+.cp-tab .cp-tab-switch:checked ~ .control-panel > div {
 	background: var(--theme-main-color);
 }
 .control-panel {
@@ -63,6 +63,10 @@ canvas {
   background-color: var(--nyx-icon-fill-color);
 }
 
+.nyx-filebrowser-entrycontrols {
+  margin-left: -2.25rem;
+}
+
 div.scrollable {
 	position: relative;
 	margin-right: 0;
diff --git a/src/wgl.jl b/src/wgl.jl
index f20f9a2..7a4972f 100644
--- a/src/wgl.jl
+++ b/src/wgl.jl
@@ -902,10 +902,16 @@ struct FileMenu
     browser::FileBrowser
 end
 
-function filemenu(controller; upload_button=false, kwargs...)
+function filemenu(controller; upload_button=false, download_button=false,
+        prepare_download=nothing, create_directory_button=false, delete_button=false,
+        kwargs...)
     wd = getworkingdir(controller)
     dir = joinpath(wd.root, wd.path[])
-    browser = FileBrowser(dir; root=wd.root, upload_button=upload_button)
+    browser = FileBrowser(dir; root=wd.root, upload_button=upload_button,
+                          download_button=download_button,
+                          prepare_download=prepare_download,
+                          create_directory_button=create_directory_button,
+                          delete_button=delete_button)
     on(FileBrowsers.selectedfile(browser)) do file
         tryopenfile(controller, file; reload=true)
     end
-- 
GitLab