From 26d074e2c1ac63a1381f27e3963867fdee543d88 Mon Sep 17 00:00:00 2001
From: sevonj <100710152+sevonj@users.noreply.github.com>
Date: Fri, 20 Feb 2026 16:19:37 +0200
Subject: [PATCH] feat: two-column sidebar
---
data/document_preview/meson.build | 4 +
data/document_preview/preview-style.xml | 23 ++
data/meson.build | 1 +
data/org.scratchmark.Scratchmark.gschema.xml | 9 +
data/resources/gresources.xml | 5 +-
.../actions/library-sort-asc-symbolic.svg | 38 ++
.../actions/library-sort-desc-symbolic.svg | 38 ++
.../ui/library/document_preview_row.ui | 31 ++
data/resources/ui/library/document_row.ui | 1 -
data/resources/ui/library/folder_row.ui | 17 +-
data/resources/ui/library/folder_view.ui | 80 ++++
data/resources/ui/library/project_view.ui | 19 -
data/resources/ui/window.ui | 83 ++--
src/data/document.rs | 35 +-
src/data/folder.rs | 5 +
src/data/markdown_buffer/mod.rs | 35 +-
src/data/project.rs | 5 +
src/data/sort.rs | 27 +-
src/main.rs | 42 ++
src/widgets/editor/mod.rs | 31 +-
src/widgets/library/document_preview_row.rs | 377 ++++++++++++++++++
src/widgets/library/folder_row.rs | 39 +-
src/widgets/library/folder_view.rs | 234 +++++++++++
src/widgets/library/library_view.rs | 105 ++++-
src/widgets/library/mod.rs | 4 +
src/widgets/library/project_list_box.rs | 212 ++++++++++
src/widgets/library/project_view.rs | 253 ++++--------
src/widgets/window.rs | 158 +++++---
28 files changed, 1545 insertions(+), 366 deletions(-)
create mode 100644 data/document_preview/meson.build
create mode 100644 data/document_preview/preview-style.xml
create mode 100644 data/resources/icons/scalable/actions/library-sort-asc-symbolic.svg
create mode 100644 data/resources/icons/scalable/actions/library-sort-desc-symbolic.svg
create mode 100644 data/resources/ui/library/document_preview_row.ui
create mode 100644 data/resources/ui/library/folder_view.ui
delete mode 100644 data/resources/ui/library/project_view.ui
create mode 100644 src/widgets/library/document_preview_row.rs
create mode 100644 src/widgets/library/folder_view.rs
create mode 100644 src/widgets/library/project_list_box.rs
diff --git a/data/document_preview/meson.build b/data/document_preview/meson.build
new file mode 100644
index 0000000..6fe0674
--- /dev/null
+++ b/data/document_preview/meson.build
@@ -0,0 +1,4 @@
+install_data(
+ 'preview-style.xml',
+ install_dir: get_option('datadir') / meson.project_name() / 'document_preview',
+)
\ No newline at end of file
diff --git a/data/document_preview/preview-style.xml b/data/document_preview/preview-style.xml
new file mode 100644
index 0000000..0d1cb39
--- /dev/null
+++ b/data/document_preview/preview-style.xml
@@ -0,0 +1,23 @@
+
+
+ sevonj
+ <_description>Default Theme for Scratchmark
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data/meson.build b/data/meson.build
index 34c3f51..378f9d3 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -36,4 +36,5 @@ test('Validate schema file',
subdir('icons')
subdir('resources')
subdir('editor_schemes')
+subdir('document_preview')
subdir('language_specs')
diff --git a/data/org.scratchmark.Scratchmark.gschema.xml b/data/org.scratchmark.Scratchmark.gschema.xml
index 5343eea..3321ac3 100644
--- a/data/org.scratchmark.Scratchmark.gschema.xml
+++ b/data/org.scratchmark.Scratchmark.gschema.xml
@@ -19,6 +19,15 @@
true
+
+ true
+
+
+ "AlphanumericAsc"
+
+
+ "AlphanumericAsc"
+
false
diff --git a/data/resources/gresources.xml b/data/resources/gresources.xml
index 61c6255..75aaf3e 100644
--- a/data/resources/gresources.xml
+++ b/data/resources/gresources.xml
@@ -10,6 +10,7 @@
ui/library/delete_confirm_dialog.ui
ui/library/document_context_menu.ui
ui/library/document_row.ui
+ ui/library/document_preview_row.ui
ui/library/document_create_popover.ui
ui/library/drafts_context_menu.ui
ui/library/err_placeholder_row_context_menu.ui
@@ -17,9 +18,9 @@
ui/library/folder_create_popover.ui
ui/library/folder_context_menu.ui
ui/library/folder_row.ui
+ ui/library/folder_view.ui
ui/library/item_rename_popover.ui
ui/library/library_view.ui
- ui/library/project_view.ui
ui/library/root_context_menu.ui
ui/about_dialog.ui
ui/editor_placeholder.ui
@@ -40,6 +41,8 @@
icons/scalable/actions/folder-symbolic.svg
icons/scalable/actions/info-outline-symbolic.svg
icons/scalable/actions/library-symbolic.svg
+ icons/scalable/actions/library-sort-asc-symbolic.svg
+ icons/scalable/actions/library-sort-desc-symbolic.svg
icons/scalable/actions/library-sort-symbolic.svg
icons/scalable/actions/list-compact-symbolic.svg
icons/scalable/actions/match-words-symbolic.svg
diff --git a/data/resources/icons/scalable/actions/library-sort-asc-symbolic.svg b/data/resources/icons/scalable/actions/library-sort-asc-symbolic.svg
new file mode 100644
index 0000000..5bfb634
--- /dev/null
+++ b/data/resources/icons/scalable/actions/library-sort-asc-symbolic.svg
@@ -0,0 +1,38 @@
+
+
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/library-sort-desc-symbolic.svg b/data/resources/icons/scalable/actions/library-sort-desc-symbolic.svg
new file mode 100644
index 0000000..b325d22
--- /dev/null
+++ b/data/resources/icons/scalable/actions/library-sort-desc-symbolic.svg
@@ -0,0 +1,38 @@
+
+
\ No newline at end of file
diff --git a/data/resources/ui/library/document_preview_row.ui b/data/resources/ui/library/document_preview_row.ui
new file mode 100644
index 0000000..0d1cdf8
--- /dev/null
+++ b/data/resources/ui/library/document_preview_row.ui
@@ -0,0 +1,31 @@
+
+
+
+ 192
+ 96
+
+
+
+
+
\ No newline at end of file
diff --git a/data/resources/ui/library/document_row.ui b/data/resources/ui/library/document_row.ui
index ece37f5..00bf425 100644
--- a/data/resources/ui/library/document_row.ui
+++ b/data/resources/ui/library/document_row.ui
@@ -1,7 +1,6 @@
-
GTK_ORIENTATION_HORIZONTAL
diff --git a/data/resources/ui/library/folder_row.ui b/data/resources/ui/library/folder_row.ui
index e701c45..35f9c1f 100644
--- a/data/resources/ui/library/folder_row.ui
+++ b/data/resources/ui/library/folder_row.ui
@@ -6,12 +6,17 @@
GTK_ORIENTATION_HORIZONTAL
4
-
-
- down-small-symbolic
- GTK_ICON_SIZE_NORMAL
+
+ 16
+
+
+
+ down-small-symbolic
+ GTK_ICON_SIZE_NORMAL
+
+
diff --git a/data/resources/ui/library/folder_view.ui b/data/resources/ui/library/folder_view.ui
new file mode 100644
index 0000000..e2ae0f4
--- /dev/null
+++ b/data/resources/ui/library/folder_view.ui
@@ -0,0 +1,80 @@
+
+
+
+ folder-name-here
+
+
+
+
+
+
+
+ GTK_ORIENTATION_VERTICAL
+ True
+
+
+ Folder is empty
+
+
+
+
+
+ True
+ true
+ 256
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data/resources/ui/library/project_view.ui b/data/resources/ui/library/project_view.ui
deleted file mode 100644
index 4c432b0..0000000
--- a/data/resources/ui/library/project_view.ui
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/data/resources/ui/window.ui b/data/resources/ui/window.ui
index da7c42e..88be542 100644
--- a/data/resources/ui/window.ui
+++ b/data/resources/ui/window.ui
@@ -15,35 +15,50 @@
-
+
+
+
+
@@ -66,9 +81,9 @@
-
@@ -176,28 +191,34 @@
-