6.0 KiB
6.0 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Schermafdruk vertraging | Tray-submenu "Schermafdruk vertraging: Xs" (0-60 s, slider plus getalveld) dat rechthoek- en vensterknipsels uitstelt, met een klein aftelvenster bij de muis dat met Esc te annuleren is. |
|
false |
Schermafdruk vertraging (0-60 s)
Gedrag
- In het tray-menu komt direct onder "Venster knippen" een item
Schermafdruk vertraging: 0smet een submenu. - In het submenu staan een slider (0-60) en een getalveld (
NumericUpDown, 0-60) die met elkaar meelopen. De tekst van het hoofditem werkt meteen bij, bijvoorbeeldSchermafdruk vertraging: 5s. - 0 betekent uit: dan werkt alles zoals nu.
- De vertraging geldt voor "Rechthoek knippen" en "Venster knippen", via de tray en via de sneltoetsen. Screencasts en "Nieuw knipsel" na het sluiten van de editor (
StartNewSnip) gaan zonder vertraging. - Tijdens het aftellen staat een klein, altijd-bovenop, niet-focusstelend venstertje bij de muis met de resterende seconden. Het scherm wordt pas vastgelegd nadat dat venster weg is, zodat het niet in de schermafdruk komt. Met Esc (of een klik op het venster) annuleer je.
flowchart LR
trigger["Tray of sneltoets"] --> check{"Delay groter dan 0?"}
check -->|nee| snip["BeginSnip: scherm bevriezen"]
check -->|ja| countdown["CountdownWindow bij muis"]
countdown -->|"Esc of klik"| cancel[Geannuleerd]
countdown -->|"tijd om"| closeWin["Venster sluiten, korte pauze"] --> snip
Wijzigingen
src/Kniip/Settings/AppSettings.cs
- Nieuwe instelling
public int CaptureDelaySeconds { get; set; }(standaard 0), met een doc-comment in dezelfde stijl. Bij het lezen begrenzen tot 0-60.
src/Kniip/Infrastructure/TrayIcon.cs
_delayItem(eenToolStripMenuItem) met in deDropDownItemseenToolStripControlHostom een kleinPanel: daarin eenTrackBar(0-60,TickFrequency5) en eenNumericUpDownmet het label "seconden".public void SetCaptureDelay(int seconds)zet de besturingselementen en de menutekst.public event Action<int>? CaptureDelayChanged: wordt afgevuurd als de waarde wijzigt. Opslaan gebeurt pas bijDropDownClosed, zodat niet elke stap van de slider een schrijfactie wordt.- Toetsen in het getalveld mogen het menu niet sluiten. Als dat in de praktijk toch gebeurt, krijgt het hostpaneel focus en geven we Enter/Esc expliciet door.
- Bij het opstarten:
_tray.SetCaptureDelay(Settings.CaptureDelaySeconds)enCaptureDelayChangedkoppelen. De koppeling zetSettings.CaptureDelaySecondsen roeptSettingsStore.Saveaan. BeginRegionSnip/BeginWindowSnipgaan via een nieuweBeginDelayedSnip(bool pickWindow):- Als de vertraging 0 is, of er al een knipsel loopt, of er al wordt afgeteld, gaat het direct naar
BeginSnip. Een tweede sneltoets tijdens het aftellen wordt genegeerd. - Anders wordt een
CountdownWindowgestart. Na afloop sluit dat venster en volgt eenDispatcherTimervan circa 150 ms (zelfde idee alsStartNewSnip), daarnaBeginSnip(pickWindow). - Esc tijdens het aftellen: tijdelijk een
Escape-binding toevoegen aanHotkeyHook.Bindingsdie het aftellen annuleert, en daarna viaApplyHotkeys()herstellen.HotkeyHook.Capturegebruiken we niet, want dat slokt alle toetsen op, en de gebruiker moet tijdens het aftellen juist zijn scherm kunnen klaarzetten.
- Als de vertraging 0 is, of er al een knipsel loopt, of er al wordt afgeteld, gaat het direct naar
StartNewSnipblijftBeginRegionSnipdirect aanroepen, maar dan via de onvertraagde route (BeginSnip(false)).
Nieuw: src/Kniip/Capture/CountdownWindow.xaml(.cs)
- Een klein, rond-hoekig WPF-venster zonder rand:
Topmost,ShowActivated=False,ShowInTaskbar=False, metWS_EX_NOACTIVATE/WS_EX_TOOLWINDOWzodat de focus bij het actieve programma blijft. De opmaak is vergelijkbaar metSnipToast.xaml. - Toont een groot getal en de tekst "Esc om te annuleren". Er loopt een
DispatcherTimervan 1 s. Het venster schuift mee met de muis (positie bijwerken op dezelfde tick of op een snellere tick van circa 50 ms). - Events
ElapsedenCancelled. Een muisklik op het venster telt als annuleren.
Release 1.1.5
De versienummers in build.ps1, installer/Kniip.iss, src/Kniip/Kniip.csproj en README.md staan al op 1.1.5. Tag 1.1.5 bestaat nog niet. Deze functie gaat dus mee in dezelfde release als de ShareX-indeling, het vergrootglas en de geschiedenis.
- CHANGELOG.md: in de bestaande sectie
## 1.1.5 - 2026-11-09onder Nieuw een item toevoegen in dezelfde stijl, bijvoorbeeld: Schermafdruk vertraging. In het systeemvakmenu staat Schermafdruk vertraging: 0s. Stel daar met de schuifbalk of het getalveld 0 tot 60 seconden in. Daarna wachten Rechthoek knippen en Venster knippen (ook via de sneltoets) zo lang voordat het scherm bevriest. Bij de muis telt een venstertje af, en met Esc annuleer je. 0 betekent geen vertraging; screencasts wachten niet. .\build.ps1draaien en controleren dat de build en de installer slagen.- Commit "1.1.5" met alle openstaande 1.1.5-wijzigingen, waaronder de nieuwe History- en Magnifier-bestanden. Daarna tag
1.1.5en pushen, net als bij 1.1.4. De release op git.hibbit.net maak je zelf aan; ik lever de changelogtekst aan.