Core::IDocument Class
class Core::IDocumentKlasa IDocument opisuje dokument koji se može spremiti i ponovno učitati. Više...
| Header: | #include <coreplugin/idocument.h> |
| Inherits: | QObject |
| Inherited By: |
Javne vrste
| enum | ChangeTrigger { TriggerInternal, TriggerExternal } |
| enum | ChangeType { TypeContents, TypeRemoved } |
| enum | ReloadFlag { FlagReload, FlagIgnore } |
Javne funkcije
| IDocument(QObject *parent = nullptr) | |
| virtual | ~IDocument() override |
| void | checkPermissions() |
| virtual QByteArray | contents() const |
| QString | displayName() const |
| virtual QString | fallbackSaveAsFileName() const |
| virtual Utils::FilePath | fallbackSaveAsPath() const |
| const Utils::FilePath & | filePath() const |
| virtual void | formatContents() |
| Utils::Id | id() const |
| Utils::InfoBar * | infoBar() |
| bool | isFileReadOnly() const |
| virtual bool | isModified() const |
| virtual bool | isSaveAsAllowed() const |
| bool | isSuspendAllowed() const |
| bool | isTemporary() const |
| QString | mimeType() const |
| virtual Utils::Result<> | open(const Utils::FilePath &filePath, const Utils::FilePath &realFilePath) |
| QString | preferredDisplayName() const |
| virtual Utils::Result<> | reload(Core::IDocument::ReloadFlag flag, Core::IDocument::ChangeType type) |
| virtual Core::IDocument::ReloadBehavior | reloadBehavior(Core::IDocument::ChangeTrigger trigger, Core::IDocument::ChangeType type) const |
| Utils::Result<> | save(const Utils::FilePath &filePath = {}, Core::IDocument::SaveOption option = SaveOption::None) |
| virtual Utils::Result<> | setContents(const QByteArray &contents) |
| virtual void | setFilePath(const Utils::FilePath &filePath) |
| void | setId(Utils::Id id) |
| void | setMimeType(const QString &mimeType) |
| void | setPreferredDisplayName(const QString &name) |
| void | setSuspendAllowed(bool value) |
| void | setTemporary(bool temporary) |
| virtual bool | shouldAutoSave() const |
Signali
| void | aboutToReload() |
| void | aboutToSave(const Utils::FilePath &filePath, Core::IDocument::SaveOption option) |
| void | changed() |
| void | contentsChanged() |
| void | filePathChanged(const Utils::FilePath &oldName, const Utils::FilePath &newName) |
| void | mimeTypeChanged() |
| void | reloadFinished(bool success) |
| void | saved(const Utils::FilePath &filePath, Core::IDocument::SaveOption option) |
Zaštićene funkcije
| virtual Utils::Result<> | saveImpl(const Utils::FilePath &filePath = {}, Core::IDocument::SaveOption option = SaveOption::None) |
Detaljan opis
Klasa ima dva slučaja upotrebe.
Obrada vanjskih izmjena
Možete implementirati IDocument i registrirati instance u DocumentManager kako bi on obrađivao vanjske izmjene datoteke. Kada se datoteka specificirana metodom filePath() promijeni izvana, DocumentManager pita odgovarajuću instancu IDocument što učiniti putem metode reloadBehavior(). Ako ta metoda vrati IDocument::BehaviorAsk, korisnika se pita treba li datoteku ponovno učitati s diska. Ako korisnik zatraži ponovno učitavanje ili metoda reloadBehavior() vrati IDocument::BehaviorSilent, DocumentManager poziva reload() kako bi pokrenuo ponovno učitavanje datoteke s diska.
Osnovne funkcije: setFilePath(), reload(), reloadBehavior().
Ako se sadržaj dokumenta može promijeniti u Qt Creator, odstupajući od sadržaja na disku: isModified(), save(), isSaveAsAllowed(), fallbackSaveAsPath(), fallbackSaveAsFileName().
Editor Dokument
Najčešći slučaj upotrebe implementacije podklase IDocument jest kao dokument za implementaciju IEditor -a. Više instanci uređivača može raditi na istoj instanci dokumenta, na primjer ako je dokument istovremeno vidljiv u više razdjela. Stoga podklasa IDocument treba sadržavati sve podatke koji su neovisni o određenoj instanci IEditor -a, na primjer sadržaj i informacije o isticanju.
Svaka podklasa IDocument mora raditi samo s odgovarajućim podklasama IEditor s kojima je dizajnirana da radi.
IDocument može biti podržan datotekom ili isključivo predstavljati neke podatke u memoriji. Dokumenti podržani datotekom automatski se dodaju u DocumentManager pomoću EditorManager.
Osnovne funkcije: setId(), isModified(), contents(), setContents().
Ako je sadržaj dokumenta podržan datotekom: open(), save(), setFilePath(), mimeType(), shouldAutoSave(), setSuspendAllowed(), i sve iz Handling External Modifications.
Ako sadržaj dokumenta nije potkrijepljen datotekom: setPreferredDisplayName(), setTemporary().
Dokumentacija o vrsti člana
enum IDocument::ChangeTrigger
Enum ChangeTrigger opisuje je li datoteka izmijenjena iznut Qt Creator a ili izvana.
| Konstanta | Vrijednost | Opis |
|---|---|---|
Core::IDocument::TriggerInternal | 0 | Datoteka je izmijenjena u Qt Creator u. |
Core::IDocument::TriggerExternal | 1 | Datoteka je izmijenjena izvana. |
Vidi također IDocument::reloadBehavior().
enum IDocument::ChangeType
Enum ChangeType opisuje način na koji se datoteka promijenila.
| Konstanta | Vrijednost | Opis |
|---|---|---|
Core::IDocument::TypeContents | 0 | Sadržaj datoteke je promijenjen. |
Core::IDocument::TypeRemoved | 1 | Datoteka je uklonjena. |
Vidi također IDocument::reloadBehavior() i IDocument::reload().
enum IDocument::ReloadFlag
Enum ReloadFlag opisuje treba li datoteku ponovno učitati s diska.
| Konstanta | Vrijednost | Opis |
|---|---|---|
Core::IDocument::FlagReload | 0 | Datoteka bi se trebala ponovno učitati. |
Core::IDocument::FlagIgnore | 1 | Datoteka se ne bi trebala ponovno učitati, ali stanje dokumenta treba odražavati promjenu. |
Vidi također IDocument::reload().
Dokumentacija funkcija člana
IDocument::IDocument(QObject *parent = nullptr)
Stvara IDocument pomoću parent.
parent Napomena: Korištenje IDocument.GetOwner() za vlasništvo nad dokumentom općenito je loša ideja ako je IDocument namijenjen za upotrebu s IEditor. U tom je slučaju bolje koristiti zajedničko vlasništvo.
[override virtual noexcept] IDocument::~IDocument()
Uništava IDocument. Ako je za ovaj dokument postojala automatska sigurnosna kopija, ona se uklanja.
Vidi također shouldAutoSave().
[signal] void IDocument::aboutToReload()
Ovaj signal se emitira prije ponovnog učitavanja dokumenta iz pozadinske datoteke.
Vidi također reload().
[signal] void IDocument::aboutToSave(const Utils::FilePath &filePath, Core::IDocument::SaveOption option)
Ovaj signal se emitira prije spremanja dokumenta u filePath s opcijom spremanja option.
Vidi također save().
[signal] void IDocument::changed()
Ovaj signal se emitira kada se promijene metapodaci dokumenta, poput naziva datoteke ili stanja izmjene.
Vidi također isModified(), filePath(), i displayName().
void IDocument::checkPermissions()
Ažurira keširane informacije o statusu samo za čitanje pozadinske datoteke.
[virtual] QByteArray IDocument::contents() const
Vraća trenutni sadržaj dokumenta. Zadana implementacija vraća prazan QByteArray.
Vidi također setContents() i contentsChanged().
[signal] void IDocument::contentsChanged()
Ovaj signal se emitira kada se sadržaj dokumenta promijeni.
Vidi također contents().
QString IDocument::displayName() const
Vraća niz znakova za prikaz ovog dokumenta, na primjer u prikazu e Open Documents a i u padajućem izborniku dokumenata.
Prikazno ime je jedno od sljedećih, redom:
- Jedinstveno ime za prikaz postavljeno od strane modela dokumenta
- Preferirano ime za prikaz postavlja vlasnik
- Osnovno ime naziva datoteke dokumenta
Vidi također setPreferredDisplayName(), filePath(), i changed().
[virtual] QString IDocument::fallbackSaveAsFileName() const
Vraća naziv datoteke koji će se koristiti u dijalogu za odabir datoteke Save As ako dokument nije podržan datotekom.
Vidi također fallbackSaveAsPath().
[virtual] Utils::FilePath IDocument::fallbackSaveAsPath() const
Vraća putanju za dijalog za datoteku Save As ako dokument nije podržan datotekom.
Vidi također fallbackSaveAsFileName().
const Utils::FilePath &IDocument::filePath() const
Vraća apsolutnu putanju datoteke na koju se ovaj dokument poziva. Može biti prazna za dokumente koji nemaju podršku datoteke.
Vidi također setFilePath().
[signal] void IDocument::filePathChanged(const Utils::FilePath &oldName, const Utils::FilePath &newName)
Ovaj signal se emitira nakon što se putanja datoteke promijenila iz oldName u newName.
Vidi također filePath().
[virtual] void IDocument::formatContents()
Formatira sadržaj dokumenta, ako implementacija podržava takvu funkcionalnost.
Utils::Id IDocument::id() const
Vraća ID za ovu vrstu dokumenta.
Vidi također setId().
Utils::InfoBar *IDocument::infoBar()
Vraća Utils::InfoBar dokumenta, koji se prikazuje na vrhu uređivača.
bool IDocument::isFileReadOnly() const
false Vraća true ako je datoteka koja podržava ovaj dokument samo za čitanje, ili false ako dokument nije podržan datotekom.
[virtual] bool IDocument::isModified() const
Vraća informaciju je li dokument izmijenjen nakon što je učitano iz datoteke.
Zadana implementacija vraća false. Ponovne implementacije trebaju emitirati changed() kada se ova svojina promijeni.
Vidi također changed().
[virtual] bool IDocument::isSaveAsAllowed() const
Vraća je li dokument moguće spremiti pod drugim nazivom datoteke.
Zadana implementacija vraća false.
Vidi također save().
bool IDocument::isSuspendAllowed() const
Vraća je li dokument moguće suspendirati.
EditorManager može automatski suspendirati uređivače i pripadajuće dokumente ako je dokument podržan datotekom, nije izmijenjen i nije privremen. Suspenzirane instance IEditor i IDocument brišu se i uklanjaju iz memorije, ali su i dalje vidljivo dostupne kao da je dokument otvoren u Qt Creator.
Zadano je false.
Vidi također setSuspendAllowed(), isModified(), i isTemporary().
bool IDocument::isTemporary() const
Vraća vrijednost koja označava je li dokument privremen i, na primjer, ne bi se trebao uzimati u obzir pri spremanju ili vraćanju stanja sesije, niti dodavati na popis nedavnih datoteka.
Zadano je false.
Vidi također setTemporary().
QString IDocument::mimeType() const
Vraća MIME tip sadržaja dokumenta, ako je primjenjivo.
Podklase bi to trebale postaviti pomoću setMimeType() nakon postavljanja ili učitavanja sadržaja.
Zadani MIME tip je prazan.
Vidi također setMimeType() i mimeTypeChanged().
[signal] void IDocument::mimeTypeChanged()
Ovaj signal se emitira kada se promijeni MIME tip sadržaja dokumenta.
Vidi također mimeType().
[virtual] Utils::Result<> IDocument::open(const Utils::FilePath &filePath, const Utils::FilePath &realFilePath)
Metoda open() koristi se za učitavanje sadržaja datoteke kada se dokument otvori u uređivaču.
Ako se dokument otvori iz automatske sigurnosne datoteke, realFilePath je naziv automatske sigurnosne datoteke koja se treba učitati, a filePath je naziv konačne datoteke. U tom slučaju treba učitati sadržaj automatske sigurnosne datoteke, naziv datoteke IDocument postaviti na filePath i stanje dokumenta postaviti na modificirano.
Ako se uređivač otvori iz obične datoteke, filePath i filePath su ista.
Vraća je li datoteka uspješno otvorena i pročitana.
Zadana implementacija ne radi ništa i vraća CannotHandle.
Vidi također EditorManager::openEditor(), shouldAutoSave(), i setFilePath().
QString IDocument::preferredDisplayName() const
Vraća preferirano ime za prikaz ovog dokumenta.
Zadano preferirano ime za prikaz je prazno, što znači da je ime za prikaz poželjno ime datoteke koja podržava ovaj dokument.
Vidi također setPreferredDisplayName() i displayName().
[virtual] Utils::Result<> IDocument::reload(Core::IDocument::ReloadFlag flag, Core::IDocument::ChangeType type)
Ponovno učitava dokument iz temeljne datoteke kad se ona promijenila na disku.
Ako je flag FlagIgnore , datoteka zapravo ne bi trebala biti učitana, ali dokument bi trebao odražavati promjenu u svom modified state u.
type određuje je li promijenjena samo dozvola za datoteku ili je promijenjen njezin sadržaj.
Vraća se ako je datoteka uspješno ponovno učitana.
Zadana implementacija ne radi ništa i vraća true.
Podklase bi trebale pozvati aboutToReload() prije i reloadFinished() nakon ponovnog učitavanja datoteke.
Vidi također isModified(), aboutToReload(), reloadFinished(), i changed().
[virtual] Core::IDocument::ReloadBehavior IDocument::reloadBehavior(Core::IDocument::ChangeTrigger trigger, Core::IDocument::ChangeType type) const
Metoda reloadBehavior() koristi se u DocumentManager u kako bi se pitao što učiniti ako se datoteka koja podržava ovaj dokument promijenila na disku.
trigger navodi je li promjenu pokrenula neka operacija u Qt Creator. type navodi je li datoteka promijenila dozvole ili sadržaj, ili je potpuno izbrisana.
Vraća vrijednost koja označava treba li se korisnika pitati ili dokument tiho ponovno učitati.
Zadana implementacija traži tiho ponovno učitavanje ako su promijenjene samo dozvole ili ako se promijenio sadržaj, ali je trigger interna i dokument nije izmijenjen.
Vidi također isModified().
[signal] void IDocument::reloadFinished(bool success)
Ovaj signal se emitira nakon ponovnog učitavanja dokumenta iz pozadinske datoteke ili ako je ponovno učitavanje propalo.
Stanje uspjeha prosljeđuje se u success.
Vidi također reload().
Utils::Result<> IDocument::save(const Utils::FilePath &filePath = {}, Core::IDocument::SaveOption option = SaveOption::None)
filePath filePath Sprema sadržaj dokumenta u privremenu datoteku na disku. Ako je privremena datoteka prazna, koristi se filePath()
Ako je option SaveOption::AutoSave , spremanje se obavlja kao automatsko spremanje, pa dokument treba izbjegavati čišćenja ili druge operacije koje obavlja pri spremanju na zahtjev korisnika.
Ako je option postavljen na SaveOption::DisableFormatOnSave, dokument bi se trebao spremiti normalno, ali ne bi se smjela izvršiti nikakva aktivnost tipa "Formatiranje pri spremanju".
Vraća je li spremanje bilo uspješno.
Ako je spremanje bilo uspješno, emitira se 'saved'.
Vidi također shouldAutoSave(), aboutToSave(), saved(), i filePath().
[virtual protected] Utils::Result<> IDocument::saveImpl(const Utils::FilePath &filePath = {}, Core::IDocument::SaveOption option = SaveOption::None)
Implementacija spremanja sadržaja dokumenta na disk u filePath.
Ako je option postavljena na SaveOption::AutoSave, spremanje se obavlja kao automatsko spremanje, pa dokument ne bi trebao izvršavati čišćenja ili druge operacije koje se provode pri ručnom spremanju na zahtjev korisnika.
Ako je option postavljen na SaveOption::DisableFormatOnSave, dokument bi se trebao spremiti normalno, ali ne bi se smjela izvršavati nikakva aktivnost tipa "Formatiranje pri spremanju".
Vraća informaciju o uspješnosti spremanja, uključujući poruku o pogrešci ako spremanje nije uspjelo.
Zadana implementacija ne radi ništa i vraća false.
[signal] void IDocument::saved(const Utils::FilePath &filePath, Core::IDocument::SaveOption option)
Ovaj signal se emitira nakon što je dokument spremljen u filePath s opcijom spremanja option.
Vidi također save().
[virtual] Utils::Result<> IDocument::setContents(const QByteArray &contents)
Metoda setContents() se na primjer koristi u EditorManager::openEditorWithContents() za postavljanje contents ovog dokumenta.
Vraća je li postavljanje sadržaja bilo uspješno.
Zadana implementacija ne radi ništa i vraća false.
Vidi također contents() i EditorManager::openEditorWithContents().
[virtual] void IDocument::setFilePath(const Utils::FilePath &filePath)
Postavlja apsolutnu filePath datoteke koja podržava ovaj dokument. Zadana implementacija postavlja naziv datoteke i šalje signale filePathChanged() i changed()
Vidi također filePath(), filePathChanged() i changed().
void IDocument::setId(Utils::Id id)
Postavlja ID za ovu vrstu dokumenta na id. To je povezano s odgovarajućom implementacijom IEditor i id() u IEditorFactory. Ako implementacija IDocument radi samo s jednom vrstom IEditor, to se po mogućnosti postavlja u konstruktoru IDocumentsa.
Vidi također id().
void IDocument::setMimeType(const QString &mimeType)
Postavlja MIME tip sadržaja dokumenta na mimeType.
Vidi također mimeType().
void IDocument::setPreferredDisplayName(const QString &name)
Postavlja preferirani prikaz name za ovaj dokument.
Vidi također preferredDisplayName() i displayName().
void IDocument::setSuspendAllowed(bool value)
Postavlja se može li dokument biti suspendiran na value.
Vidi također isSuspendAllowed().
void IDocument::setTemporary(bool temporary)
Postavlja je li dokument temporary.
Vidi također isTemporary().
[virtual] bool IDocument::shouldAutoSave() const
Vraća je li dokument automatski spremiti u korisniku definiranom intervalu.
Zadana implementacija vraća false.
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.