From 36c55c034c348eac64cb2ffa77b5a3043c239504 Mon Sep 17 00:00:00 2001 From: R0GGER Date: Tue, 10 Nov 2026 10:36:25 +0100 Subject: [PATCH] 1.1.8 Co-authored-by: Cursor --- CHANGELOG.md | 9 ++++ README.md | 4 +- build.ps1 | 2 +- installer/Kniip.iss | 2 +- src/Kniip/Editor/EditorWindow.xaml | 9 ++++ src/Kniip/Editor/EditorWindow.xaml.cs | 51 +++++++++++++++++++++-- src/Kniip/Kniip.csproj | 2 +- src/Kniip/Settings/AppSettings.cs | 8 +++- src/Kniip/Settings/SettingsWindow.xaml | 5 +++ src/Kniip/Settings/SettingsWindow.xaml.cs | 10 ++++- 10 files changed, 90 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 508a34f..26736c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ Alle noemenswaardige wijzigingen in kniip staan in dit bestand. De nieuwste versie staat bovenaan. +## 1.1.8 - 2026-11-10 + +### Nieuw + +- **Drie-split-weergave.**\ + Een derde indeling voor de editor: de gereedschappen staan boven, **Opslaan**, **Uploaden**, **Kopiëren** en de zoomknoppen onder, en **Nieuw** en **Screencast** in een smalle zijbalk naast het canvas. Kies de indeling in de instellingen onder **Weergave** > **Werkbalk**, of klik met rechts op een werkbalk en kies **Indeling**. + - De zijbalk staat links of rechts van het canvas. Kies de kant in de instellingen of via rechtsklik > **Zijbalk**. + - In de zijbalk staan alleen de iconen. Ctrl+H verbergt ook de zijbalk, en **Standaard herstellen** zet hem weer links. + ## 1.1.7 - 2026-11-09 ### Gewijzigd diff --git a/README.md b/README.md index a832a56..dc561e2 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ kniip is een annotatie-editor die naast het Windows Knipprogramma werkt. Maak ee | Versie | Installer | | ------ | --------- | -| 1.1.7 | [Kniip-Setup-1.1.7.exe](https://git.hibbit.net/rogier/kniip/releases/download/1.1.7/Kniip-Setup-1.1.7.exe) | +| 1.1.8 | [Kniip-Setup-1.1.8.exe](https://git.hibbit.net/rogier/kniip/releases/download/1.1.8/Kniip-Setup-1.1.8.exe) | Oudere versies vind je bij [alle releases](https://git.hibbit.net/rogier/kniip/releases). @@ -80,7 +80,7 @@ Vereisten: Bouwen: ```powershell -.\build.ps1 # versie 1.1.7 +.\build.ps1 # versie 1.1.8 .\build.ps1 -Version 1.2.0 # andere versie ``` diff --git a/build.ps1 b/build.ps1 index 4834157..5343b68 100644 --- a/build.ps1 +++ b/build.ps1 @@ -12,7 +12,7 @@ # .\build.ps1 -SkipTest -> zonder testexe param( - [string]$Version = "1.1.7", + [string]$Version = "1.1.8", [string]$Runtime = "win-x64", [switch]$SkipTest ) diff --git a/installer/Kniip.iss b/installer/Kniip.iss index 933294c..576dbf5 100644 --- a/installer/Kniip.iss +++ b/installer/Kniip.iss @@ -5,7 +5,7 @@ #define AppName "kniip" #define AppExe "Kniip.exe" #ifndef AppVersion - #define AppVersion "1.1.7" + #define AppVersion "1.1.8" #endif #ifndef PublishDir #define PublishDir "..\artifacts\publish" diff --git a/src/Kniip/Editor/EditorWindow.xaml b/src/Kniip/Editor/EditorWindow.xaml index a3c7421..1bd0ef9 100644 --- a/src/Kniip/Editor/EditorWindow.xaml +++ b/src/Kniip/Editor/EditorWindow.xaml @@ -440,6 +440,15 @@ + + + + + + + + diff --git a/src/Kniip/Editor/EditorWindow.xaml.cs b/src/Kniip/Editor/EditorWindow.xaml.cs index ffe2e64..310cb98 100644 --- a/src/Kniip/Editor/EditorWindow.xaml.cs +++ b/src/Kniip/Editor/EditorWindow.xaml.cs @@ -52,6 +52,9 @@ public partial class EditorWindow : Window /// Items die alleen in de gesplitste indeling op een werkbalk staan. private static readonly HashSet SplitOnlyIds = new() { "SplitSpacer1", "SplitSpacer2" }; + /// Items die in de drie-split-indeling in de zijbalk staan in plaats van de onderste werkbalk. + private static readonly HashSet CaptureBarIds = new() { "New", "Screencast" }; + private readonly EditorDocument _doc; private readonly UndoStack _undo = new(); private readonly AppSettings _settings; @@ -184,14 +187,17 @@ public partial class EditorWindow : Window private static string ItemId(UIElement item) => ToolbarPanel.GetItemId(item) ?? string.Empty; - private bool IsSplitLayout => _settings.EditorLayout == EditorLayout.Split; + private bool IsSplitLayout => _settings.EditorLayout is EditorLayout.Split or EditorLayout.ThreeSplit; - private IEnumerable AllToolbarItems => ToolbarItems.Items.Concat(ActionItems.Items); + private bool IsThreeSplit => _settings.EditorLayout == EditorLayout.ThreeSplit; + + private IEnumerable AllToolbarItems => ToolbarItems.Items.Concat(ActionItems.Items).Concat(CaptureItems.Items); /// Items volgens de opgeslagen volgorde van de huidige indeling over de bovenste en onderste werkbalk verdelen. private void ApplyToolbarLayout() { bool split = IsSplitLayout; + bool threeSplit = IsThreeSplit; _appliedLayout = _settings.EditorLayout; List order = split ? MergeToolbarOrder(_settings.SplitToolbarOrder, _defaultSplitOrder) @@ -199,15 +205,28 @@ public partial class EditorWindow : Window ToolbarItems.Children.Clear(); ActionItems.Children.Clear(); + CaptureItems.Children.Clear(); foreach (string id in order.Where(id => split || !SplitOnlyIds.Contains(id))) { - (split && SplitBottomIds.Contains(id) ? ActionItems : ToolbarItems).Children.Add(_toolbarItems[id]); + ToolbarPanel panel = threeSplit && CaptureBarIds.Contains(id) ? CaptureItems + : split && SplitBottomIds.Contains(id) ? ActionItems + : ToolbarItems; + panel.Children.Add(_toolbarItems[id]); } ActionBar.Visibility = split && !_toolbarsHidden ? Visibility.Visible : Visibility.Collapsed; + CaptureBar.Visibility = threeSplit && !_toolbarsHidden ? Visibility.Visible : Visibility.Collapsed; + ApplyCaptureBarPosition(); ApplyToolbarPosition(); } + private void ApplyCaptureBarPosition() + { + bool right = _settings.CaptureBarPosition == Dock.Right; + DockPanel.SetDock(CaptureBar, right ? Dock.Right : Dock.Left); + CaptureBar.BorderThickness = right ? new Thickness(1, 0, 0, 0) : new Thickness(0, 0, 1, 0); + } + private List MergeToolbarOrder(IReadOnlyList saved, IReadOnlyList defaults) { List order = saved.Where(_toolbarItems.ContainsKey).Distinct().ToList(); @@ -248,8 +267,10 @@ public partial class EditorWindow : Window string background = locked ? "ToolbarBrush" : "UnlockedToolbarBrush"; ToolbarItems.IsLocked = locked; ActionItems.IsLocked = locked; + CaptureItems.IsLocked = locked; Toolbar.SetResourceReference(Border.BackgroundProperty, background); ActionBar.SetResourceReference(Border.BackgroundProperty, background); + CaptureBar.SetResourceReference(Border.BackgroundProperty, background); UpdateHint(); } @@ -265,6 +286,7 @@ public partial class EditorWindow : Window { UpdateActionLabels(Toolbar, ToolbarItems); UpdateActionLabels(ActionBar, ActionItems); + UpdateActionLabels(CaptureBar, CaptureItems); } // Labels alleen tonen als alles op één regel past; staat de werkbalk opzij, dan altijd alleen iconen. @@ -343,7 +365,7 @@ public partial class EditorWindow : Window private void Toolbar_ContextMenuOpening(object sender, ContextMenuEventArgs e) { var bar = (Border)sender; - ToolbarPanel panel = bar == ActionBar ? ActionItems : ToolbarItems; + ToolbarPanel panel = bar == ActionBar ? ActionItems : bar == CaptureBar ? CaptureItems : ToolbarItems; ContextMenu menu = bar.ContextMenu; menu.Items.Clear(); @@ -355,6 +377,7 @@ public partial class EditorWindow : Window foreach ((EditorLayout value, string label) in new[] { (EditorLayout.Split, "Split-weergave: gereedschappen boven, opslaan onder"), + (EditorLayout.ThreeSplit, "Drie-split: Nieuw en Screencast in een zijbalk"), (EditorLayout.Single, "Eén werkbalk") }) { @@ -365,6 +388,23 @@ public partial class EditorWindow : Window menu.Items.Add(layout); + if (IsThreeSplit) + { + var side = new MenuItem { Header = "Zijbalk" }; + foreach ((Dock dock, string label) in new[] { (Dock.Left, "Links"), (Dock.Right, "Rechts") }) + { + var item = new MenuItem { Header = label, IsCheckable = true, IsChecked = _settings.CaptureBarPosition == dock }; + item.Click += (_, _) => + { + _settings.CaptureBarPosition = dock; + ApplyCaptureBarPosition(); + }; + side.Items.Add(item); + } + + menu.Items.Add(side); + } + if (!IsSplitLayout) { var position = new MenuItem { Header = "Positie" }; @@ -466,6 +506,7 @@ public partial class EditorWindow : Window _settings.SplitToolbarOrder = new List(); _settings.ToolbarHidden = new List(); _settings.ToolbarPosition = Dock.Top; + _settings.CaptureBarPosition = Dock.Left; _settings.ToolbarLocked = true; ApplyToolbarLayout(); foreach (UIElement item in _toolbarItems.Values) @@ -1051,6 +1092,7 @@ public partial class EditorWindow : Window Toolbar.Visibility = visibility; PropsBar.Visibility = visibility; ActionBar.Visibility = IsSplitLayout ? visibility : Visibility.Collapsed; + CaptureBar.Visibility = IsThreeSplit ? visibility : Visibility.Collapsed; if (_toolbarsHidden) { ShowTemporaryHint("Werkbalken verborgen. Ctrl+H of rechtsklik op het canvas om ze terug te halen."); @@ -1630,6 +1672,7 @@ public partial class EditorWindow : Window ApplyToolbarLayout(); } + ApplyCaptureBarPosition(); ApplySaveButton(); ApplyUploadButton(); } diff --git a/src/Kniip/Kniip.csproj b/src/Kniip/Kniip.csproj index df0d634..d516c1c 100644 --- a/src/Kniip/Kniip.csproj +++ b/src/Kniip/Kniip.csproj @@ -18,7 +18,7 @@ app.manifest kniip Annotatie-editor naast het Windows Knipprogramma - 1.1.7 + 1.1.8 nl;en $(NoWarn);WFAC010 diff --git a/src/Kniip/Settings/AppSettings.cs b/src/Kniip/Settings/AppSettings.cs index 411f517..9f0da4e 100644 --- a/src/Kniip/Settings/AppSettings.cs +++ b/src/Kniip/Settings/AppSettings.cs @@ -39,7 +39,10 @@ public enum EditorLayout Single, /// Split-weergave: gereedschappen boven, opslaan/kopiëren en zoom onder. - Split + Split, + + /// Als Split, met Nieuw en Screencast in een zijbalk naast het canvas. + ThreeSplit } public enum ColorMode @@ -122,6 +125,9 @@ public sealed class AppSettings /// Volgorde van de werkbalkitems in de gesplitste indeling (boven, dan onder); leeg betekent de standaardvolgorde. public List SplitToolbarOrder { get; set; } = new(); + /// Kant van het canvas (Left of Right) waar de zijbalk van de drie-split-indeling staat. + public Dock CaptureBarPosition { get; set; } = Dock.Left; + public List ToolbarHidden { get; set; } = new(); /// Zipline-server waar Uploaden naartoe gaat; leeg betekent geen uploadknop. diff --git a/src/Kniip/Settings/SettingsWindow.xaml b/src/Kniip/Settings/SettingsWindow.xaml index a91d3bf..3b81cd6 100644 --- a/src/Kniip/Settings/SettingsWindow.xaml +++ b/src/Kniip/Settings/SettingsWindow.xaml @@ -239,6 +239,11 @@ + + + + + diff --git a/src/Kniip/Settings/SettingsWindow.xaml.cs b/src/Kniip/Settings/SettingsWindow.xaml.cs index 6c76932..2f789d9 100644 --- a/src/Kniip/Settings/SettingsWindow.xaml.cs +++ b/src/Kniip/Settings/SettingsWindow.xaml.cs @@ -102,7 +102,10 @@ public partial class SettingsWindow : Window ColorModeDarkRadio.IsChecked = settings.ColorMode == ColorMode.Dark; ColorModeSystemRadio.IsChecked = settings.ColorMode == ColorMode.System; LayoutSplitRadio.IsChecked = settings.EditorLayout == EditorLayout.Split; - LayoutSingleRadio.IsChecked = settings.EditorLayout != EditorLayout.Split; + LayoutThreeSplitRadio.IsChecked = settings.EditorLayout == EditorLayout.ThreeSplit; + LayoutSingleRadio.IsChecked = settings.EditorLayout == EditorLayout.Single; + CaptureBarRightRadio.IsChecked = settings.CaptureBarPosition == Dock.Right; + CaptureBarLeftRadio.IsChecked = settings.CaptureBarPosition != Dock.Right; AutoUpdateCheckBox.IsChecked = settings.CheckForUpdates; MagnifierBox.IsChecked = settings.ShowMagnifier; @@ -451,7 +454,10 @@ public partial class SettingsWindow : Window _settings.ColorMode = ColorModeDarkRadio.IsChecked == true ? ColorMode.Dark : ColorModeSystemRadio.IsChecked == true ? ColorMode.System : ColorMode.Light; - _settings.EditorLayout = LayoutSplitRadio.IsChecked == true ? EditorLayout.Split : EditorLayout.Single; + _settings.EditorLayout = LayoutSplitRadio.IsChecked == true ? EditorLayout.Split + : LayoutThreeSplitRadio.IsChecked == true ? EditorLayout.ThreeSplit + : EditorLayout.Single; + _settings.CaptureBarPosition = CaptureBarRightRadio.IsChecked == true ? Dock.Right : Dock.Left; _settings.CheckForUpdates = AutoUpdateCheckBox.IsChecked == true; _settings.ShowMagnifier = MagnifierBox.IsChecked == true; StopListening();