# Hooks

# onNoteStored

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn eine Notiz auf der Festplatte gespeichert wird
 * Sie k├Ânnen gespeicherte Notizen nicht modifizieren, da es sonst Chaos g├Ąbe, weil
 * Sie sie wahrscheinlich gleichzeitig per Hand bearbeiten
 *
 * @param {NoteApi} note - das Notizobjekt der gespeicherten Notiz
 */
function onNoteStored (note);
1
2
3
4
5
6
7
8

Vielleicht schauen Sie sich mal das Beispiel auf on-note-opened.qml (opens new window) an.

# noteOpenedHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, nachdem eine Notiz ge├Âffnet wurde
 *
 * @param {NoteApi} note - das ge├Âffnete Notizobjekt
 */
function noteOpenedHook(note);
1
2
3
4
5
6

Schauen Sie sich dazu das Beispiel auf on-note-opened.qml (opens new window) an.

# noteDoubleClickedHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, nachdem auf eine Notiz doppelklickt wurde
 *
 * @param {NoteApi} note - das Notizobjekt, auf das geklickt wurde
 */
function noteDoubleClickedHook(note);
1
2
3
4
5
6

Schauen Sie sich dazu das Beispiel auf external-note-open.qml (opens new window) an.

# insertMediaHook

Diese Funktion wird aufgerufen, wenn eine Mediendatei in die aktuelle Notiz eingef├╝gt wird.

Wenn diese Funktion in mehreren Skripten definiert ist, gewinnt das erste Skript, das eine nicht leere Zeichenfolge zur├╝ckgibt.

# Methodenaufruf und Parameter

/**
 * @param fileName string Der Dateipfad der Quellmediendatei, bevor sie in den Medienordner kopiert wurde
 * @param markdownText string Der Markdown-Text der Mediendatei, z.B. ![my-image](media/my-image-4101461585.jpg)
 * @return string Der neue Markdown-Text der Mediendatei
 */
function insertMediaHook(fileName, markdownText);
1
2
3
4
5
6

Schauen Sie sich das Beispiel auf example.qml (opens new window) an.

# insertAttachmentHook

Diese Funktion wird aufgerufen, wenn eine Anhangsdatei in die aktuelle Notiz eingef├╝gt wird.

Wenn diese Funktion in mehreren Skripten definiert ist, gewinnt das erste Skript, das eine nicht leere Zeichenfolge zur├╝ckgibt.

# Methodenaufruf und Parameter

/**
 * @param fileName string Der Dateipfad der Quellanhangsdatei, bevor sie in den Anhangsordner kopiert wurde
 * @param markdownText string Der Markdown-Text der Anhangsdatei, z.B. [my-file.txt](attachments/my-file-4245650967.txt)
 * @return string der neue Markdown-Text der Anhangsdatei
 */
function insertAttachmentHook(fileName, markdownText);
1
2
3
4
5
6

Schauen Sie sich dazu ein Beispiel auf example.qml (opens new window) an.

# insertingFromMimeDataHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn HTML oder eine Mediendatei mit "Strg + Umschalt + V" in eine Notiz eingef├╝gt wird
 *
 * @param text Text des QMimeData-Objekts
 * @param html HTML des QMimeData-Objekts
 * @gibt die Zeichenfolge zur├╝ck, die anstelle des Texts aus dem QMimeData-Objekt eingef├╝gt werden soll
 */
function insertingFromMimeDataHook(text, html);
1
2
3
4
5
6
7
8

Schauen Sie sich dazu das Beispiel auf example.qml (opens new window), insert-headline-with-link-from-github-url.qml (opens new window) oder note-text-from-5pm-mail.qml (opens new window) an.

# handleNoteTextFileNameHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn eine Notiz auf der Festplatte gespeichert wird, wenn
 * "Zulassen, dass der Dateiname der Notiz sich von der ├ťberschrift unterscheidet" in den Einstellungen
 * aktiviert ist
 *
 * Hier k├Ânnen Sie den Namen der Notizdatei ├Ąndern
 * Denken Sie daran, dass Sie sich selbst um doppelte Namen k├╝mmern m├╝ssen!
 *
 * Geben Sie eine leere Zeichenfolge zur├╝ck, wenn der Dateiname der Notiz
 * nicht ge├Ąndert werden soll
 *
 * @param {NoteApi} note - das Notizobjekt der gespeicherten Notiz
 * @return {string} der Dateiname der Notiz
 */
function handleNoteTextFileNameHook(note);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Schauen Sie sich die Beispiele auf example.qml (opens new window) oder use-tag-names-in-filename.qml (opens new window) an.

# handleNoteNameHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn der Notizname f├╝r eine Notiz bestimmt wird
 *
 * Hier k├Ânnen Sie den Namen der angezeigten Notiz ├Ąndern
 *
 * Geben Sie eine leere Zeichenfolge zur├╝ck, wenn der Name der Notiz nicht ge├Ąndert werden soll
 *
 * @param {NoteApi} note - das Notizobjekt der gespeicherten Notiz
 * @return {string} der Name der Notiz
 */
function handleNoteNameHook(note);
1
2
3
4
5
6
7
8
9
10
11

Schauen Sie sich dazu das Beispiel auf example.qml (opens new window) an.

Es ist m├Âglicherweise keine gute Idee, diesen Hook zu verwenden, wenn die Einstellung zur Verwendung des Dateinamens als Notizname aktiv ist.

# handleNewNoteHeadlineHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, bevor eine Notiz erstellt wird
 *
 * Sie k├Ânnen damit die ├ťberschrift der Notiz ├Ąndern, bevor sie erstellt wird
 * Beachten Sie, dass Sie auf einen eindeutigen Notennamen achten m├╝ssen, da
 * sondst die neue Notiz nicht erstellt wird, sonder nur eine vorhandene in der Notizliste gefunden wird
 *
 * Sie k├Ânnen diese Funktion zum Erstellen von Notizvorlagen verwenden
 *
 * @param headline Text, der zum Erstellen der ├ťberschrift verwendet wird
 * @return {string} Die ├ťberschrift der Notiz
 */
function handleNewNoteHeadlineHook(headline);
1
2
3
4
5
6
7
8
9
10
11
12
13

Schauen Sie sich dazu das Beispiel auf custom-new-note-headline.qml (opens new window) an.

# preNoteToMarkdownHtmlHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, bevor das Markdown-HTML einer Notiz generiert wird
 *
 * Sie k├Ânnen ├Ąndern, was an den Markdown-zu-HTML-Konverter ├╝bergeben wird
 *
 * Die Funktion kann zum Beispiel in mehreren Skripten verwendet werden, um Code (wie LaTeX math oder mermaid)
 * in seine grafische Darstellung f├╝r die Vorschau zu rendern
 *
 * Die Notiz wird dabei nicht ver├Ąndert
 *
 * @param {NoteApi} note - das Notizobjekt
 * @param {string} markdown - der Markdown, der gerade in HTML konvertiert wird
 * @param {bool} forExport - true, wenn das HTML f├╝r einen Export verwendet wird, false f├╝r die Vorschau
 * @return {string} der ge├Ąnderte Markdown oder ein leerer String, wenn nichts ge├Ąndert werden soll
 */
function preNoteToMarkdownHtmlHook(note, markdown, forExport);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Schauen Sie sich dazu das Beispiel auf preview-styling.qml (opens new window) an.

# noteToMarkdownHtmlHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn das Markdown-HTML einer Notiz generiert wird
 *
 * Damit k├Ânnen Sie den HTML-Code ├Ąndern
 * Dies wird beispielsweise zuvor von der Notenvorschau aufgerufen
 *
 * Die Funktion kann in mehreren Skripten verwendet werden, um das HTML der Vorschau zu ├Ąndern
 *
 * @param {NoteApi} note - das Notizobjekt
 * @param {string} html - das HTML, das gerendert werden soll
 * @param {bool} forExport - true, wenn das HTML f├╝r einen Export verwendet wird, false f├╝r die Vorschau
 * @return {string} der ge├Ąnderte HTML-Code oder ein leerer String, wenn nichts ge├Ąndert werden soll
 */
function noteToMarkdownHtmlHook(note, html, forExport);
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Schauen Sie sich dazu Beispiele auf example.qml (opens new window) oder preview-styling.qml (opens new window) an.

Eine Liste aller unterst├╝tzten CSS-Stile finden Sie in der Dokumentation Supported HTML Subset (opens new window).

# encryptionHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn Text ver- oder entschl├╝sselt werden soll
 *
 * @param text string Der Text zum ent-/verschl├╝sseln
 * @param password string Das Passwort
 * @param decrypt bool false, wenn verschl├╝sselt werden soll, true wenn Entschl├╝sseln verlangt wird
 * @return der ver-/entschl├╝sselte Text
 */
function encryptionHook(text, password, decrypt);
1
2
3
4
5
6
7
8
9

Schauen Sie sich dazu die Beispiele auf encryption-keybase.qml (opens new window), encryption-pgp.qml (opens new window) oder encryption-rot13.qml (opens new window) an.

# noteTaggingHook

Sie k├Ânnen Ihren eigenen Notiz-Schlagwortmechanismus beispielsweise mit speziellem Text in Ihrer Notiz implementieren, z.B. @tag1, @tag2, @tag3.

# Methodenaufruf und Parameter

/ **
 * K├╝mmert sich um Notiz-Schlagworte f├╝r eine Notiz
 *
 * Diese Funktion wird aufgerufen, wenn Schlagworte zu einer Notiz hinzugef├╝gt, entfernt
 * oder umbenannt werden, oder die Schlagworte einer Notiz aufgelistet werden sollen
 *
 * @param note
 * @param action kann "add", "remove", "rename" oder "list" sein.
 * @param tagName Schlagwortname, der hinzugef├╝gt, entfernt oder umbenannt werden soll
 * @param newTagName Schlagwort-Name, in den umbenannt werden soll, wenn action = "rename"
 * @return note Text-String oder String-Liste von Schlagwortnamen (wenn action = "list")
 */
function noteTaggingHook(note, action, tagName, newTagName);
1
2
3
4
5
6
7
8
9
10
11
12
13
  • sobald ein Skript aktiviert ist, das die neue Funktion noteTaggingHook implementiert, werden die Notiz-Schlagworte von dieser Funktion verarbeitet
  • die folgenden Funktionen sollten ├╝ber die QOwnNotes-Benutzeroberfl├Ąche funktionieren
    • importieren Sie zun├Ąchst Schlagworte wie @tag aus Ihren Notizen und ├╝berschreiben Sie Ihre aktuelle Schlagwort-Zuweisung
      • Sie werden Ihren Schlagwortbaum nicht verlieren, sondern nur die fr├╝here Zuordnung zu Notizen
      • Sie k├Ânnen Schlagw├Ârter weiterhin in andere Schlagw├Ârter verschieben
      • wenn mehr als ein Schlagwort denselben Namen in Ihrem Schlagwortbaum hat, wird der erste Treffer zugewiesen
    • durch Hinzuf├╝gen eines Schlagwortes zu einer Notiz wird das Schlagwort zum Notiztext hinzugef├╝gt
    • durch Entfernen eines Schlagwortes aus einer Notiz wird das Schlagwort aus dem Notiztext entfernt
    • durch das Entfernen von Schlagw├Ârtern in der Schlagwortliste werden diese Schlagw├Ârter aus Ihren Notizen entfernt
    • durch das Umbenennen von Schlagworten in der Schlagwortliste werden diese Schlagw├Ârter in Ihren Notizen umbenannt
    • durch Massen-Taggen von Notizen in der Notizliste werden diese Schlagworte zu Ihren Notizen hinzugef├╝gt
    • durch das Massenentfernen von Schlagworten aus Notizen in der Notizliste werden diese Schlagworte aus Ihren Notizen entfernt
    • die Anwendung l├Âst eine Reihe von add- und remove-Aktionen aus f├╝r alle ausgew├Ąhlten Schlagworte und ihre Unterelemente in allen Notizen, wenn Schlagworte im Schlagwortbedienfeld entfernt werden

Schauen Sie sich dazu das Beispiel auf note-tagging.qml (opens new window) an, um eigene Schlagwortmechanismen zu implementieren.

WARNING

Stellen Sie sicher, dass Ihre list-Aktion sehr schnell ist, da sie bei jedem erneuten Laden des Notizordners f├╝r jede Notiz ausgef├╝hrt wird!

# noteTaggingByObjectHook

├ähnlich wie bei noteTaggingHook k├Ânnen Sie Ihren eigenen Mechanismus zum Markieren von Notizen implementieren, sind jedoch nicht an Schlagwortnamen in der Schlagwortbaumwurzel gebunden. Auf diese Weise k├Ânnen Sie den gesamten Schlagwortbaum anstelle von nur einer Schlagwortliste verwenden.

Mit noteTaggingByObjectHook erhalten Sie anstelle eines Schlagwortnamens einTagApi-Objekt als Parameter. Als Ergebnis f├╝r die Aktion list m├╝ssen Sie eine Liste der Schlagwort-IDs bereitstellen.

Dies bedeutet auch, dass Sie fehlende Schlagworte selbst erstellen m├╝ssen, um eine Liste bereits vorhandener Schlagwort-IDs f├╝r die Aktion list bereitstellen zu k├Ânnen.

# Methodenaufruf und Parameter

/**
 * K├╝mmert sich um das das Markieren von Notizen f├╝r eine Notiz
 *
 * Diese Funktion wird aufgerufen, wenn Schlagworte in einer Notiz hinzugef├╝gt, entfernt
 * oder umbenannt werden oder die Schlagworte einer Notiz aufgelistet werden sollen
 *
 * @param note
 * @param action kann "add", "remove", "rename" oder "list" sein.
 * @param Schlagwort, das hinzugef├╝gt, entfernt oder umbenannt werden soll
 * @param newTagName Schlagwort-Name, in den umbenannt werden soll, wenn action = "rename"
 * @return note Text-string oder string-Liste von Schlagwort-IDs (wenn action = "list")
 */
function noteTaggingByObjectHook(note, action, tag, newTagName);
1
2
3
4
5
6
7
8
9
10
11
12
13

Schauen Sie sich dazu das Beispiel auf note-tagging-by-object.qml (opens new window) an, wie Sie Ihren eigenen Schlagwort-Mechanismus implementieren k├Ânnen.

# autocompletionHook

Sie k├Ânnen eine Liste von Zeichenfolgen zur├╝ckgeben, die der Autovervollst├Ąndigungsliste hinzugef├╝gt werden sollen, wenn Autovervollst├Ąndigung aufgerufen wird (z.B. durch Dr├╝cken von Strg + Leertaste).

# Methodenaufruf und Parameter

/**
 * Ruft die AutocompletionHook-Funktion f├╝r alle Skriptkomponenten auf
 * Diese Funktion wird aufgerufen, wenn die automatische Vervollst├Ąndigung in einer Notiz aufgerufen wird
 *
 * @return QStringListe des Textes f├╝r die Autovervollst├Ąndigungsliste
 */
function callAutocompletionHook ();
1
2
3
4
5
6
7

Schauen Sie sich dazu das Beispiel auf autocompletion.qml (opens new window) an.

# websocketRawDataHook

Dieser Hook wird aufgerufen, wenn Daten von der QOwnNotes Web Companion-Browsererweiterung ├╝ber das Kontextmen├╝ des Webbrowsers gesendet werden.

# Methodenaufruf und Parameter

/**
 * @param requestType kann "page" oder "selection" sein
 * @param pageUrl die URL der Webseite, wo die Anfrage gestellt wurde
 * @param pageTitle der Titel der Webseite, wo die Anfrage gestellt wurde
 * @param rawData die ├╝bertragenen Daten, HTML f├╝r requestType "page" oder Klartext f├╝r requestType "selection"
 * @param screenshotDataUrl die Daten-URL des Screenshots der Webseite, wo die Anfrage gestellt wurde
 * @return true wenn Daten durch einen Hook gelaufen sind
 */
function callHandleWebsocketRawDataHook(requestType, pageUrl, pageTitle, rawData, screenshotDataUrl);
1
2
3
4
5
6
7
8
9

Schauen Sie sich dazu die Beispiele auf websocket-raw-data-new-note.qml (opens new window) und websocket-raw-data-selection-in-note.qml (opens new window) an.

# onDetachedProcessCallback

Dieser Hook wird aufgerufen, wenn ein Skript-Thread von startDetachedProcess ausgef├╝hrt wird.

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn ein Skript-Thread fertig ausgef├╝hrt wurde.
 * Hinweis: thread[1]==0 hilft festzustellen, ob ein Gro├čteil der gestarteten Prozesse f├╝r einen bestimmten Identifier fertig ausgef├╝hrt wurde.
 *
 * @param {QString} callbackIdentifier - die beim Aufruf von startDetachedProcess() angegebene ID
 * @param {QString} resultSet - das Ergebnis des Prozesses
 * @param {QVariantList} cmd - das gesamte Befehlsarray [0-ausf├╝hrbarer Pfad, 1-Parameter, 2-exitCode]
 * @param {QVariantList} thread - das Thread-Informationsarray [0-├╝bergebener CallbackParameter, 1-verbleibende Threads f├╝r diesen Bezeichner]
 */
function onDetachedProcessCallback(callbackIdentifier, resultSet, cmd, thread);
1
2
3
4
5
6
7
8
9
10

Schauen Sie sich dazu das Beispiel auf callback-example.qml (opens new window) an.

# windowStateChangedHook

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, nachdem ein WindowStateChange-Ereignis ausgel├Âst wurde
 *
 * @param {QString} windowState - Der neue Fensterstatus; Parameterwert kann "minimized", "maximized", "fullscreen", "active" oder "nostate" sein.
 */
function windowStateChangedHook(windowState);
1
2
3
4
5
6

Schauen Sie sich dazu das Beispiel auf window-state-changed.qml (opens new window) an.

# workspaceSwitchedHook

Dieser Hook wird aufgerufen, wenn Arbeitsbereiche gewechselt werden.

# Methodenaufruf und Parameter

/**
 * Diese Funktion wird aufgerufen, wenn Arbeitsbereiche gewechselt werden
 *
 * @param oldUuid Alte Arbeitsbereich-UUID
 * @param newUuid Neue Arbeitsbereich-UUID
 */
function workspaceSwitchedHook(oldUuid, newUuid);
1
2
3
4
5
6
7

Schauen Sie sich dazu das Beispiel auf websocket-raw-data-new-note.qml (opens new window) an.