Na ovoj stranici

Core::IDocument Class

class Core::IDocument

Klasa IDocument opisuje dokument koji se može spremiti i ponovno učitati. Više...

Header: #include <coreplugin/idocument.h>
Inherits: QObject
Inherited By:

Core::BaseTextDocument

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 biste mu omogućili obradu vanjskih izmjena datoteke. Kada se datoteka navedena pomoću filePath() promijenila izvana, DocumentManager pita odgovarajući primjerak IDocumenta što učiniti putem reloadBehavior(). Ako se time vrati IDocument::BehaviorAsk, korisnika se pita treba li datoteku ponovno učitati s diska. Ako korisnik zatraži ponovno učitavanje ili 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 podjela. Stoga podklasa IDocument treba pohranjivati 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 promijenjena iznut Qt Creator a ili izvana.

KonstantaVrijednostOpis
Core::IDocument::TriggerInternal0Datoteka je izmijenjena u Qt Creator u.
Core::IDocument::TriggerExternal1Datoteka je izmijenjena izvana.

Vidi također IDocument::reloadBehavior().

enum IDocument::ChangeType

Enum ChangeType opisuje način na koji se datoteka promijenila.

KonstantaVrijednostOpis
Core::IDocument::TypeContents0Sadržaj datoteke je promijenjen.
Core::IDocument::TypeRemoved1Datoteka je uklonjena.

Vidi također IDocument::reloadBehavior() i IDocument::reload().

enum IDocument::ReloadFlag

Enum ReloadFlag opisuje treba li datoteku ponovno učitati s diska.

KonstantaVrijednostOpis
Core::IDocument::FlagReload0Datoteka treba biti ponovno učitana.
Core::IDocument::FlagIgnore1Datoteka 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.

Napomena: Korištenje parent 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 automatski spremljena datoteka, 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 praznu 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.

Prikazano ime je jedno od sljedećih, redom:

  1. Jedinstveno prikazno ime postavlja model dokumenta
  2. Preferirano prikazno ime postavljeno od strane vlasnika
  3. 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 dijaloškom okviru 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 u slučaju da 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 je putanja datoteke promijenjena 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

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 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 još uvijek otvoren u Qt Creator.

Zadano je false.

Vidi također setSuspendAllowed(), isModified(), i isTemporary().

bool IDocument::isTemporary() const

Vraća se ako je dokument privremen i, na primjer, ne bi se trebao uzeti u obzir pri spremanju ili vraćanju stanja sesije ili 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() služi za učitavanje sadržaja datoteke kada se dokument otvori u uređivaču.

Ako se dokument otvori iz automatski spremljene datoteke, realFilePath je naziv automatski spremljene datoteke koja se treba učitati, a filePath je naziv rezultirajuće datoteke. U tom slučaju treba učitati sadržaj automatski spremljene datoteke, naziv datoteke IDocument treba 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 informaciju 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 prikazno ime je prazno, što znači da je prikazno ime 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 pozadinske datoteke kada 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 datoteke 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 upitala š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 se dozvole ili sadržaj datoteke promijenio ili je datoteka 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)

Sprema sadržaj dokumenta na disk u filePath. Ako je filePath prazan, koristi se filePath().

Ako je option SaveOption::AutoSave , spremanje se obavlja kao automatsko spremanje, pa dokument ne bi trebao izvršavati čišćenja ili druge operacije koje obavlja pri ručnom spremanju na zahtjev korisnika.

Ako je option postavljen na SaveOption::DisableFormatOnSave, dokument se treba spremiti normalno, ali se ne bi 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 u filePath na disk.

Ako je option postavljena na SaveOption::AutoSave, spremanje se vrši kao automatsko spremanje, pa dokument ne bi trebao izvršavati čišćenja ili druge operacije koje se obavljaju 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šiti nikakva aktivnost tipa "Formatiranje pri spremanju".

Vraća informaciju o uspješnosti spremanja, uključujući poruku o pogrešci ako spremanje nije bilo uspješno.

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 metodi EditorManager::openEditorWithContents() za postavljanje contents a 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 hoć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 intervalom.

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.