# Classi esposte
# Nota
# Proprietà e metodi
class NoteApi {
Q_PROPERTY(int id)
Q_PROPERTY(QString name)
Q_PROPERTY(QString fileName)
Q_PROPERTY(QString fullNoteFilePath)
Q_PROPERTY(QString fullNoteFileDirPath)
Q_PROPERTY(QString relativeNoteFileDirPath)
Q_PROPERTY(int noteSubFolderId)
Q_PROPERTY(QString noteText)
Q_PROPERTY(QString decryptedNoteText)
Q_PROPERTY(bool hasDirtyData)
Q_PROPERTY(QQmlListProperty<TagApi> tags)
Q_PROPERTY(QDateTime fileCreated)
Q_PROPERTY(QDateTime fileLastModified)
Q_INVOKABLE QStringList tagNames()
Q_INVOKABLE bool addTag(QString tagName)
Q_INVOKABLE bool removeTag(QString tagName)
Q_INVOKABLE bool renameNoteFile(QString newName)
Q_INVOKABLE QString toMarkdownHtml(bool forExport = true)
Q_INVOKABLE QString getFileURLFromFileName(QString localFileName)
Q_INVOKABLE bool allowDifferentFileName()
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Puoi usare i metodi di Date (opens new window) per lavorare con fileCreated
o fileLastModified
.
# Esempio
script.log(note.fileCreated.toISOString());
script.log(note.fileLastModified.getFullYear());
// rinomina una nota in "new name.md"
note.renameNoteFile("new name");
// controlla se è possibile avere un nome di file diverso dal titolo
script.log(note.allowDifferentFileName());
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# NoteSubFolder
# Proprietà e metodi
class NoteSubFolderApi {
Q_PROPERTY(int id)
Q_PROPERTY(QString name)
Q_PROPERTY(QQmlListProperty<NoteApi> notes)
Q_INVOKABLE static NoteSubFolderApi *fetchNoteSubFolderById(int id);
Q_INVOKABLE static NoteSubFolderApi *activeNoteSubFolder();
Q_INVOKABLE static QList<QObject*> fetchNoteSubFoldersByParentId(int parentId);
Q_INVOKABLE QString relativePath();
Q_INVOKABLE QString fullPath();
};
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# Esempio
var noteSubFolderQmlObj = Qt.createQmlObject("import QOwnNotesTypes 1.0; NoteSubFolder{}", mainWindow, "noteSubFolder");
// mostra i nomi di tutte le sottoscartelle
noteSubFolderQmlObj.fetchNoteSubFoldersByParentId(parentId).forEach(function(nsf) {
script.log(nsf.name);
});
// restituisce il nome della sottocartella della nota attiva
var noteSubFolder = noteSubFolderQmlObj.activeNoteSubFolder();
// Mostra il percorso assoluto e relativo della sottocartella della nota attiva
script.log(noteSubFolder.fullPath());
script.log(noteSubFolder.relativePath());
script.log(noteSubFolder.id);
script.log(noteSubFolder.name);
// cicla tutte le note della sottocartella note
for (var idx in noteSubFolder.notes) {
var note = noteSubFolder.notes[idx];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Etichetta (Tag)
# Proprietà e metodi
class TagApi {
Q_PROPERTY(int id)
Q_PROPERTY(QString name)
Q_PROPERTY(int parentId)
Q_PROPERTY(QQmlListProperty<NoteApi> notes)
Q_INVOKABLE TagApi fetchByName(const QString &name, int parentId = 0)
Q_INVOKABLE QStringList getParentTagNames()
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Esempio
// Non dimenticarti di usare "import QOwnNotesTypes 1.0" in cima al tuo script!
// Leggi l'etichetta "home"
var tag = script.getTagByNameBreadcrumbList(["home"]);
// Leggi tutte le note con quell'etichetta
var notes = tag.notes;
// Itera le note dell'etichetta
for (var idx in notes) {
var note = notes[idx];
script.log(note.name);
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Troverai un esempio in cui viene utilizzato TagApi note-tagging-by-object.qml (opens new window).
# MainWindow
# Proprietà e metodi
class MainWindow {
Q_INVOKABLE void reloadTagTree();
Q_INVOKABLE void reloadNoteSubFolderTree();
Q_INVOKABLE void buildNotesIndexAndLoadNoteDirectoryList(
bool forceBuild = false, bool forceLoad = false);
Q_INVOKABLE void focusNoteTextEdit();
// Creates a new note subfolder in the current subfolder
Q_INVOKABLE bool createNewNoteSubFolder(QString folderName = "");
// Inserts html in the current note as markdown
// This method also downloads remote images and transforms "data:image"
// urls to local images stored in the media directory
Q_INVOKABLE void insertHtmlAsMarkdownIntoCurrentNote(QString html);
// Reloads the current note by id
// This is useful when the path or filename of the current note changed
Q_INVOKABLE void reloadCurrentNoteByNoteId();
// Returns the list of workspace UUIDs
Q_INVOKABLE QStringList getWorkspaceUuidList();
// Returns the UUID of a workspace, passing in the workspace name
Q_INVOKABLE QString getWorkspaceUuid(const QString &workspaceName);
// Sets the current workspace by UUID
Q_INVOKABLE void setCurrentWorkspace(const QString &uuid);
// Closes a note tab on a specific index (returns true if successful)
Q_INVOKABLE bool removeNoteTab(int index);
// Returns a list of note ids that are opened in tabs
Q_INVOKABLE QList<int> getNoteTabNoteIdList();
// Jumps to a tag in the tag tree
Q_INVOKABLE bool jumpToTag(int tagId);
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Esempio
// Forza il ricaricamento della lista delle note
mainWindow.buildNotesIndexAndLoadNoteDirectoryList(true, true);
// Crea una nuova sottocartella "La mia cartella elegante" nella cartella corrente
mainWindow.createNewNoteSubFolder("La mia cartella elegante");
// Inserisci html nella nota corrente come markdown
mainWindow.insertHtmlAsMarkdownIntoCurrentNote("<h2>my headline</h2>some text");
// Imposta lo spazio di lavoro "modifica" come spazio di lavoro corrente
mainWindow.setCurrentWorkspace(mainWindow.getWorkspaceUuid("Modifica"));
// Salta all'etichetta "test" nell'albero delle etichette
// There is an example in https://github.com/pbek/QOwnNotes/blob/main/docs/scripting/examples/custom-actions.qml
var tag = script.getTagByNameBreadcrumbList(["test"]);
mainWindow.jumpToTag(tag.id);
// Prendi tutte le note che sono aperte nelle schede
var noteIds = mainWindow.getNoteTabNoteIdList();
noteIds.forEach(function (noteId){
var note = script.fetchNoteById(noteId);
// Fai qualcosa con le note
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
← Connessioni Partecipa →
Crafted by Patrizio Bekerle with ❤️