QML-programmeringsgränssnitt

Programmeringsgränssnittet kan enkelt utforskas genom att använda QML-terminalen, som är tillgänglig som ett exempelskript med ett användargränssnitt.

Kid3Script

Kid3Script är en vanlig QML-komponent som finns i katalogen med insticksprogram. Du skulle lika enkelt kunna använda en annan QML-komponent. Genom att använda Kid3Script blir det enkelt att starta skriptfunktionen med signalhanteraren onRun. Dessutom erbjuder den några funktioner:

onRun: Signalhanterare som anropas när skriptet startas
tagv1, tagv2, tagv2v1: Konstanter för taggparametrar
script: Åtkomst till skriptfunktioner
configs: Åtkomst till inställningsobjekt
getArguments(): Lista över skripargument
isStandalone(): true om skriptet inte startades inifrån Kid3
setTimeout(callback, delay): Startar återanrop efter delay ms
firstFile(): Till första markerade fil
nextFile(): Till nästa markerade fil

Skriptfunktioner

Eftersom JavaScript och därför också QML bara har en begränsad uppsättning funktioner för skript, har objektet script några ytterligare metoder, exempelvis:

script.properties(obj): Sträng med Qt-egenskaper
script.writeFile(filePath, data): Skriv data i filen, true om ok
script.readFile(filePath): Läs data från fil
script.removeFile(filePath): Ta bort fil, true om ok
script.fileExists(filePath): true om filen finns
script.fileIsWritable(filePath): true om filen är skrivbar
script.getFilePermissions(filePath): Hämta filrättighetsbitar
script.setFilePermissions(filePath, modeBits): Tilldela filrättighetsbitar
script.classifyFile(filePath): Hämta filklassen (katalog "/", symbolisk länk "@",
   exe "*", file " ")
script.renameFile(oldName, newName): Byt namn på fil, true om ok
script.copyFile(source, dest): Kopiera fil, true om ok
script.makeDir(path): Skapa katalog, true om ok
script.removeDir(path): Ta bort katalog, true om ok
script.tempPath(): Sökväg till temporär katalog
script.musicPath(): Sökväg till musikfolder
script.listDir(path, [nameFilters], [classify]): Lista katalogposter
script.system(program, [args], [msecs]): Starta ett systemkommando synkront,
  [avslutningskod, standardutmatning, standardfelutmatning] om tidsgräns inte överskrids
script.systemAsync(program, [args], [callback]): Starta ett systemkommando
asynkront, återanrop görs med [avslutningskod, standardutmatning,
standardfelutmatning]
script.getEnv(varName): Hämta värde på miljövariabel
script.setEnv(varName, value): Tilldela miljövariabel värde
script.getQtVersion(): Qt-versionssträng, t.ex. "5.4.1"
script.getDataMd5(data): Hämta hexadecimal sträng med MD5-kondensat för data
script.getDataSize(data): Hämta storlek på bytefält
script.dataToImage(data, [format]): Skapa en bild från data
script.dataFromImage(img, [format]): Hämta data från en bild
script.loadImage(filePath): Läs in en bild från en fil
script.saveImage(img, filePath, [format]): Spara en bild i en fil, true om ok
script.imageProperties(img): Hämta egenskaper för en bild, avbildning med
  "width", "height", "depth" och "colorCount", tom om ogiltig bild
script.scaleImage(img, width, [height]): Skala en bild, returnerar skalad bild

Programsammanhang

Med användning av QML, är en stor del av funktionerna i Kid3 tillgängliga. Programmeringsgränssnittet liknar det som används för D-Bus. För detaljerad information, se respektive anmärkningar.

app.openDirectory(path): Öppna katalog
app.unloadAllTags(): Ladda ur alla taggar
app.saveDirectory(): Spara katalog
app.revertFileModifications(): Ångra
app.importTags(tag, path, fmtIdx): Importera filer
app.importFromTags(tag, source, extraction): Importera från taggar
app.importFromTagsToSelection(tag, source, extraction): Importera från taggar från markerade filer
app.downloadImage(url, allFilesInDir): Ladda ner bild
app.exportTags(tag, path, fmtIdx): Exportera filer
app.writePlaylist(): Skriv spellista
app.getPlaylistItems(path): Hämta objekt i en spellista
app.setPlaylistItems(path, items): Tilldela objekt i en spellista
app.selectAllFiles(): Markera alla
app.deselectAllFiles(): Avmarkera
app.firstFile([select], [onlyTaggedFiles]): Till första fil
app.nextFile([select], [onlyTaggedFiles]): Till nästa fil
app.previousFile([select], [onlyTaggedFiles]): Till föregående fil
app.selectCurrentFile([select]): Markera aktuell fil
app.selectFile(path, [select]): Markera en specifik fil
app.getSelectedFilePaths([onlyTaggedFiles]): Hämta sökvägar för markerade filer
app.requestExpandFileList(): Expandera alla
app.applyFilenameFormat(): Använd filnamnsformat
app.applyTagFormat(): Verkställ taggformat
app.applyTextEncoding(): Verkställ textkodning
app.numberTracks(nr, total, tag, [options]): Nummerspår
app.applyFilter(expr): Filtrera
app.convertToId3v23(): Konvertera ID3v2.4.0 till ID3v2.3.0
app.convertToId3v24(): Konvertera ID3v2.3.0 till ID3v2.4.0
app.getFilenameFromTags(tag): Filnamn från taggar
app.getTagsFromFilename(tag): Filnamn till taggar
app.getAllFrames(tag): Hämta object med alla ramar
app.getFrame(tag, name): Hämta ram
app.setFrame(tag, name, value): Tilldela ram
app.getPictureData(): Hämta data från bildram
app.setPictureData(data): Tilldela data i bildram
app.copyToOtherTag(tag): Taggar till andra taggar
app.copyTags(tag): Kopiera
app.pasteTags(tag): Klistra in
app.removeTags(tag): Ta bort
app.playAudio(): Spela
app.readConfig(): Läs inställning
app.applyChangedConfiguration(): Verkställ inställning
app.dirName: Katalognamn
app.selectionInfo.fileName: Filnamn
app.selectionInfo.filePath: Absolut filsökväg
app.selectionInfo.detailInfo: Formatdetaljer
app.selectionInfo.tag(Frame.Tag_1).tagFormat: Tagg 1 format
app.selectionInfo.tag(Frame.Tag_2).tagFormat: Tagg 2 format
app.selectionInfo.formatString(tag, format): Ersätt koder i formatsträng
app.selectFileName(caption, dir, filter, saveFile): Öppna fildialogruta
för att markera en fil
app.selectDirName(caption, dir): Öppna fildialogruta för att markera en katalog

För asynkrona operationer, kan återanrop anslutas till signaler.

function automaticImport(profile) {
  function onAutomaticImportFinished() {
    app.batchImporter.finished.disconnect(onAutomaticImportFinished)
  }
  app.batchImporter.finished.connect(onAutomaticImportFinished)
  app.batchImport(profile, tagv2)
}

function renameDirectory(format) {
  function onRenameActionsScheduled() {
    app.renameActionsScheduled.disconnect(onRenameActionsScheduled)
    app.performRenameActions()
  }
  app.renameActionsScheduled.connect(onRenameActionsScheduled)
  app.renameDirectory(tagv2v1, format, false)
}

Inställningsobjekt

De olika inställningsdelarna kan kommas åt via metoder kallade configs. Deras egenskaper kan listas i QML-konsolen.

script.properties(configs.networkConfig())

Egenskaperna kan ställas in:

configs.networkConfig().useProxy = false

configs.batchImportConfig()
configs.exportConfig()
configs.fileConfig()
configs.filenameFormatConfig()
configs.filterConfig()
configs.findReplaceConfig()
configs.guiConfig()
configs.importConfig()
configs.mainWindowConfig()
configs.networkConfig()
configs.numberTracksConfig()
configs.playlistConfig()
configs.renDirConfig()
configs.tagConfig()
configs.tagFormatConfig()
configs.userActionsConfig()