# Hooks
# onNoteStored
# Methodeaanroep en parameters
/ **
* Deze functie wordt aangeroepen wanneer een notitie op schijf wordt opgeslagen
* Je kunt opgeslagen notities niet wijzigen, dat zou een puinhoop zijn sindsdien
* u bewerkt ze waarschijnlijk tegelijkertijd met de hand
*
* @param {NoteApi} notitie - het notitieobject van de opgeslagen notitie
* /
functie onNoteStored (Notizie);
2
3
4
5
6
7
8
Misschien wilt u het voorbeeld bekijken on-note-opened.qml (opens new window).
# noteOpenedHook
# Methodeaanroep en parameters
/ **
* Deze functie wordt aangeroepen nadat een notitie is geopend
*
* @param {NoteApi} note - het notitieobject dat werd geopend
* /
functie noteOpenedHook (note);
2
3
4
5
6
Misschien wilt u het voorbeeld bekijken on-note-opened.qml (opens new window).
# noteDoubleClickedHook
# Methodeaanroep en parameters
/ **
* Deze functie wordt aangeroepen nadat een notitie is geopend
*
* @param {NoteApi} note - het notitieobject dat werd geopend
* /
functie noteOpenedHook (note);
2
3
4
5
6
Misschien wilt u het voorbeeld bekijken external-note-open.qml (opens new window).
# insertMediaHook
Deze functie wordt aangeroepen wanneer een mediabestand in de huidige notitie wordt ingevoegd.
Als deze functie in meerdere scripts is gedefinieerd, wint het eerste script dat een niet-lege tekenreeks retourneert.
# Methodeaanroep en parameters
// **
* @param fileName string het bestandspad van het bronmediabestand voordat het naar de mediamap werd gekopieerd
* @param markdownText string de markdown-tekst van het mediabestand, bijv. ![mijn-afbeelding] 
* @return string de nieuwe markdown-tekst van het mediabestand
* /
functie insertMediaHook (bestandsnaam, markdownText);
2
3
4
5
6
Misschien wilt u het voorbeeld bekijken example.qml (opens new window).
# insertAttachmentHook
Deze functie wordt aangeroepen wanneer een mediabestand in de huidige notitie wordt ingevoegd.
Als deze functie in meerdere scripts is gedefinieerd, wint het eerste script dat een niet-lege tekenreeks retourneert.
# Methodeaanroep en parameters
/**
* @param fileName string het bestandspad van het bronbijlagebestand voordat het naar de bijlagemap werd gekopieerd
* @param markdownText string de markdown-tekst van het bijlagebestand, bijv. [mijn-bestand.txt] (bijlagen / mijn-bestand-4245650967.txt)
* @return string de nieuwe markdown-tekst van het bijlagebestand
*/
functie insertAttachmentHook (bestandsnaam, markdownText);
2
3
4
5
6
Misschien wilt u het voorbeeld bekijken example.qml (opens new window).
# insertingFromMimeDataHook
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen wanneer html of een mediabestand in een notitie wordt geplakt met `Ctrl + Shift + V`
*
* @ parametertekst tekst van het QMimeData-object
* @param html html van het QMimeData-object
* @ retourneert de tekenreeks die moet worden ingevoegd in plaats van de tekst uit het QMimeData-object
*/
functie insertingFromMimeDataHook (tekst, html);
2
3
4
5
6
7
8
Misschien wilt u het voorbeeld bekijken example.qml (opens new window), insert-headline-with-link-from-github-url.qml (opens new window) of note-text-from-5pm-mail.qml (opens new window).
# handleNoteTextFileNameHook
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen wanneer een notitie op schijf wordt opgeslagen als
* "Toestaan dat de naam van het notitiebestand anders is dan de kop" is ingeschakeld
* in de instellingen
*
* Hiermee kunt u de naam van het notitiebestand wijzigen
* Houd er rekening mee dat u zelf voor dubbele namen moet zorgen!
*
* Retourneer een lege tekenreeks als de bestandsnaam van de notitie zou moeten
* niet worden gewijzigd
*
* @param {NoteApi} note - het notitieobject van de opgeslagen notitie
* @return {string} de bestandsnaam van de notitie
*/
functie handleNoteTextFileNameHook (opmerking);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Misschien wilt u het voorbeeld eens bekijken example.qml (opens new window) of use-tag-names-in-filename.qml (opens new window).
# handleNoteNameHook
# Methodeaanroep en parameters
/ **
* Deze functie wordt aangeroepen wanneer de nootnaam voor een noot wordt bepaald
*
* Hiermee kunt u de naam wijzigen van de notitie die wordt bekeken
*
* Retourneer een lege tekenreeks als de naam van de notitie niet moet worden gewijzigd
*
* @param {NoteApi} note - het notitieobject van de opgeslagen notitie
* @return {string} de naam van de notitie
* /
functie handleNoteNameHook (opmerking);
2
3
4
5
6
7
8
9
10
11
The note name is mainly used when showing the note in the lists.
Misschien wilt u het voorbeeld bekijken example.qml (opens new window).
Het is misschien geen goed idee om deze hook te gebruiken als de instelling om de bestandsnaam als nootnaam te gebruiken actief is.
# handleNewNoteHeadlineHook
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen voordat een noot wordt gemaakt
*
* Hiermee kunt u de kop van de notitie wijzigen voordat deze wordt gemaakt
* Houd er rekening mee dat u anders moet zorgen voor een unieke nootnaam
* de nieuwe notitie wordt niet gemaakt, deze wordt alleen in de notitielijst gevonden
*
* U kunt deze functie gebruiken voor het maken van notitiesjablonen
*
* @param koptekst die zou worden gebruikt om de kop te maken
* @return {string} de kop van de notitie
*/
function handleNewNoteHeadlineHook(headline);
2
3
4
5
6
7
8
9
10
11
12
13
Misschien wilt u het voorbeeld bekijken custom-new-note-headline.qml (opens new window).
# preNoteToMarkdownHtmlHook
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen voordat de markdown-html van een notitie wordt gegenereerd
*
* Hiermee kunt u wijzigen wat wordt doorgegeven aan de markdown naar html-converter
*
* De functie kan bijvoorbeeld in meerdere scripts worden gebruikt om code weer te geven (zoals LaTeX wiskunde of zeemeermin)
* naar de grafische weergave voor de preview
*
* De notitie wordt tijdens dit proces niet gewijzigd
*
* @param {NoteApi} notitie - het notitieobject
* @param {string} markdown - de markdown die op het punt staat te worden geconverteerd naar html
* @param {bool} forExport - waar als de html wordt gebruikt voor een export, onwaar voor het voorbeeld
* @return {string} de gewijzigde afwaardering of een lege tekenreeks als er niets moet worden gewijzigd
*/
functie preNoteToMarkdownHtmlHook(note, markdown, forExport);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Misschien wilt u het voorbeeld bekijken preview-styling.qml (opens new window).
# noteToMarkdownHtmlHook
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen wanneer de markdown-html van een notitie wordt gegenereerd
*
* Hiermee kunt u deze html wijzigen
* Dit wordt bijvoorbeeld eerder aangeroepen door de notitievoorbeeld
*
* De functie kan in meerdere scripts worden gebruikt om de html van de preview te wijzigen
*
* @param {NoteApi} notitie - het notitieobject
* @param {string} html - de html die op het punt staat te worden weergegeven
* @param {bool} forExport - waar als de html wordt gebruikt voor een export, onwaar voor het voorbeeld
* @return {string} de gewijzigde html of een lege string als er niets gewijzigd moet worden
*/
functie noteToMarkdownHtmlHook(note, html, forExport);
2
3
4
5
6
7
8
9
10
11
12
13
14
Misschien wilt u het voorbeeld bekijken example.qml (opens new window) of preview-styling.qml (opens new window).
Raadpleeg de ondersteunde HTML Subset (opens new window) documentatie voor een lijst met alle ondersteunde css-stijlen.
# encryptionHook
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen wanneer tekst moet worden gecodeerd of gedecodeerd
*
* @param text string de tekst die moet worden versleuteld of ontsleuteld
* @param wachtwoord tekenreeks het wachtwoord
* @param decrypt bool als valse codering vereist is, als echte decodering vereist is
* @return de versleutelde ontsleutelde tekst
*/
functie encryptionHook (tekst, wachtwoord, decoderen);
2
3
4
5
6
7
8
9
Misschien wilt u het voorbeeld eens bekijken encryption-keybase.qml (opens new window), encryption-pgp.qml (opens new window) of encryption-rot13.qml (opens new window).
# noteTaggingHook
U kunt uw eigen tagging-mechanisme voor notities implementeren met bijvoorbeeld speciale tekst in uw notitie, zoals @tag1
, @tag2
, @tag3
.
# Methodeaanroep en parameters
/ **
* Verwerkt notitie-tagging voor een notitie
*
* Deze functie wordt aangeroepen wanneer tags worden toegevoegd aan, verwijderd uit of hernoemd in
* een notitie of de tags van een notitie moeten worden vermeld
*
* @param opmerking
* @param-actie kan zijn "toevoegen", "verwijderen", "hernoemen" of "lijst"
* @param tagName tag naam die moet worden toegevoegd, verwijderd of hernoemd
* @param newTagName tagnaam die moet worden hernoemd als action = "hernoemen"
* @return opmerking tekstreeks of string-lijst met tagnamen (if action = "list")
* /
functie noteTaggingHook (note, action, tagName, newTagName);
2
3
4
5
6
7
8
9
10
11
12
13
- as soon as a script is activated that implements the new function
noteTaggingHook
note tagging will be handled by that function - zodra een script is geactiveerd dat de nieuwe functie <0>noteTaggingHook</0> implementeert, wordt het taggen van opmerkingen door die afgehandeld
- initially importing tags like
@tag
from your notes and overwriting your current tag assignment- you will not lose your tags tree, just the former assignment to notes
- u kunt nog steeds tags naar andere tags verplaatsen
- if more than one tag has the same name in your tag tree the first hit will be assigned
- door een tag aan een notitie toe te voegen, wordt de tag aan de notitietekst toegevoegd
- door een tag aan een notitie toe te voegen, wordt de tag aan de notitietekst toegevoegd
- removing of tags in the tag list will remove those tags from your notes
- renaming of tags in the tag list will rename those tags in your notes
- bulk tagging of notes in the note list will add those tags to your notes
- bulk removing of tags from notes in the note list will remove those tags from your notes
- the application will trigger a series of
add
andremove
actions for all selected tags and their children on all notes if tags are moved in the tag panel
- initially importing tags like
Misschien wilt u het voorbeeld bekijken note-tagging.qml (opens new window) om uw eigen tagging-mechanisme te implementeren.
WARNING
Make sure your list
action is really fast, because it will be executed for every note every time the note folder or the tag tree is reloaded!
That is every time you find reloadTagTree
in mainwindow.cpp (opens new window).
# noteTaggingByObjectHook
Net als bij noteTaggingHook kunt u uw eigen mechanisme voor het taggen van notities implementeren, maar u bent niet gebonden aan het taggen van namen in de root van de tagboom. Op deze manier kunt u gebruik maken van de hele tagboom in plaats van alleen een taglijst.
Met noteTaggingByObjectHook
krijg je een TagApi
-object als parameter, in plaats van een tagnaam. En als resultaat voor de list
-actie moet u een lijst met tag-id's.
Dit betekent ook dat u zelf ontbrekende tags moet maken om een lijst met reeds bestaande tag-ID's voor de list
-actie te kunnen leveren.
# Methodeaanroep en parameters
/ **
* Verwerkt notitie-tagging voor een notitie
*
* Deze functie wordt aangeroepen wanneer tags worden toegevoegd aan, verwijderd uit of hernoemd in
* een notitie of de tags van een notitie moeten worden vermeld
*
* @param opmerking
* @param-actie kan zijn "toevoegen", "verwijderen", "hernoemen" of "lijst"
* @param-tag die moet worden toegevoegd, verwijderd of hernoemd
* @param newTagName tagnaam die moet worden hernoemd als action = "hernoemen"
* @return notitie tekstreeks of string-lijst met tag-ID's (if action = "list")
* /
functie noteTaggingByObjectHook (opmerking, actie, tag, newTagName);
2
3
4
5
6
7
8
9
10
11
12
13
Misschien wilt u het voorbeeld bekijken notice-tagging-by-object.qml (opens new window) om uw eigen tagging-mechanisme te implementeren.
# autocompletionHook
U kunt een lijst met tekenreeksen retourneren die aan de autocomplete-lijst moeten worden toegevoegd wanneer ze automatisch worden aangeroepen (bijvoorbeeld door op Ctrl + Space te drukken).
# Methodeaanroep en parameters
/**
* Roept de functie autocompletionHook aan voor alle scriptcomponenten
* Deze functie wordt aangeroepen wanneer automatische aanvulling wordt aangeroepen in een notitie
*
* @return QStringLijst met tekst voor de autocomplete lijst
*/
functie callAutocompletionHook ();
2
3
4
5
6
7
Misschien wilt u het voorbeeld bekijken autocompletion.qml (opens new window).
# websocketRawDataHook
Deze hook wordt aangeroepen wanneer gegevens worden verzonden vanuit de QOwnNotes Web Companion-browserextensie via het contextmenu van de webbrowser.
# Methodeaanroep en parameters
/**
* @param requestType can be "page" or "selection"
* @param pageUrl the url of the webpage where the request was made
* @param pageTitle the page title of the webpage where the request was made
* @param rawData the data that was transmitted, html for requestType "page" or plain text for requestType "selection"
* @param screenshotDataUrl the data url of the screenshot of the webpage where the request was made
* @return true if data was handled by a hook
*/
function callHandleWebsocketRawDataHook(requestType, pageUrl, pageTitle, rawData, screenshotDataUrl);
2
3
4
5
6
7
8
9
Misschien wilt u de voorbeelden eens bekijken websocket-raw-data-new-note.qml (opens new window) en websocket-raw-data-selection-in-note.qml (opens new window).
# onDetachedProcessCallback
Deze hook wordt aangeroepen wanneer een scriptthread van startDetachedProcess klaar is met uitvoeren.
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen wanneer een scriptthread klaar is met uitvoeren.
* Hint: thread [1]==0 helpt om te bepalen of een groot deel van de gestarte processen voor een bepaalde identifier is voltooid.
*
* @param {QString} callbackIdentifier - de opgegeven id bij het aanroepen van startDetachedProcess ()
* @param {QString} resultSet - het resultaat van het proces
* @param {QVariantList} cmd - de volledige commando-array [0-executablePath, 1-parameters, 2-exitCode]
* @param {QVariantList} thread - de thread-informatie-array [0-doorgegeven callbackParameter, 1-resterende threads voor deze identifier]
* /
functie onDetachedProcessCallback (callbackIdentifier, resultSet, cmd, thread);
2
3
4
5
6
7
8
9
10
Misschien wilt u het voorbeeld bekijken callback-example.qml (opens new window).
# windowStateChangedHook
# Methodeaanroep en parameters
/**
* Deze functie wordt aangeroepen nadat een WindowStateChange-gebeurtenis is geactiveerd
*
* @param {QString} windowState - de nieuwe vensterstatus, parameterwaarde kan "geminimaliseerd", "gemaximaliseerd", "volledig scherm", "actief" of "nostate" zijn
*/
functie windowStateChangedHook (windowState);
2
3
4
5
6
Misschien wilt u het voorbeeld bekijken window-state-changed.qml (opens new window).
# workspaceSwitchedHook
Deze haak wordt aangeroepen wanneer werkplekken worden geschakeld.
# Methodeaanroep en parameters
/**
* This function is called when workspaces are switched
*
* @param oldUuid old uuid of workspace
* @param newUuid new uuid of workspace
*/
function workspaceSwitchedHook(oldUuid, newUuid);
2
3
4
5
6
7
Misschien wilt u het voorbeeld bekijken websocket-raw-data-new-note.qml (opens new window).
# openAiBackendsHook
Deze hook wordt aangeroepen bij het laden van de OpenAI-serviceconfiguratie. Dit wordt bijv. ook gedaan wanneer de scriptengine opnieuw wordt geladen.
Je kunt het gebruiken om configuratie te bieden voor aangepaste OpenAI-backends, zoals die van eigen OpenAI API-compatibele LLM's, zoals ChatGPT, Claude of systemen zoals Ollama.
# Methode-aanroep en parameters
/**
* This function is called when the OpenAI service config is reloaded
* It returns a list of objects with config parameters for new OpenAI backends
*/
function openAiBackendsHook() {
return [
{
id: "my-custom-ai",
name: "My Custom AI",
baseUrl: "http://localhost:5000",
apiKey: "kDFJkjk3asdm",
models: ["gpt-3.5-turbo", "gpt-4.0-turbo"],
},
{
id: "my-custom-ai2",
name: "My Custom AI 2",
baseUrl: "http://localhost:5001",
apiKey: "lOikf7eNdb9",
models: ["gpt-3.5-turbo2", "gpt-4.0-turbo2"],
},
];
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TIP
U kunt Scriptinstellingen variabelen registreren gebruiken om de OpenAI backend-instellingen op te slaan in de scriptinstellingen.
Bestudeer vooral het voorbeeld custom-openai-backends.qml (opens new window).