🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309769

Re: C++, Qt, Pluginy

#309769
From: szykcech
Date: Sat, 29 Dec 2018 20:44
40 lines
3322 bytes
W dniu sobota, 29 grudnia 2018 21:33:49 UTC+1 użytkownik Borneq napisał:
> W dniu 29.12.2018 o 21:17, szykcech@gmail.com pisze:
> >> widget edytora to jest standardowo brany z Qt?
> > 
> > Tak.
> 
> QPlainTextEdit?

Tak. 

> >> jaka klasa służy do podświetlania składni oraz sprawdzania pisowni?
> > Z Kde KSyntaxhighlighting, chyba stąd:
> > https://github.com/KDE/syntax-highlighting
> > 
> 
> Potem jakoś przyłącza się ten highlighter do QPlainTextEdit'a?

Robisz coś w stylu:
MyEditor: public QPlainTextEdit
{
protected:
    SyntaxHighlighter* mSyntaxHighlighter = nullptr;
    KSyntaxHighlighting::Repository mRepository;
};

I potem w cpp:
MyEditor::MyEditor(QWidget* aParent) : QPlainTextEdit(aParent)
{
    mSyntaxHighlighter = new SyntaxHighlighter(document());
}

Potem w funkcji openFile(QString aFileName) ładujesz plik i robisz detekcję rodzaju wg nazwy lub rozszerzenia - niestety wykrywanie pliku po zawartości chyba nie działa, wiec ja obsługiwałem to na piechotę dla plików jakich używam.
Standardowa detekcja wygląda tak:

KSyntaxHighlighting::Definition lDef = mRepository.definitionForFileName(mInputFileInfo->mFileName);
        if(!lDef.isValid() && mInputFileInfo->mExt.length())
            lDef = mRepository.definitionForFileName(C::gBaseName(mInputFileInfo->mFileName, false) + '.' + mInputFileInfo->mExt);   // try open file detected by content
        if(lDef.isValid()) mSyntaxHighlighter->setDefinition(lDef);

Tak mam zrobione w wersji monolitycznej. Użyte funkcje z mojej biblioteki są samo opisowe, więc nie będę tłumaczył (jedynie podam, że C::gBaseName(mInputFileInfo->mFileName, false)  zwraca nazwę pliku bez rozszerzenia).
Technical Details
Message-ID: <a1e5c232-825c-4d15-9a68-7be85944f03c@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!4.us.feeder.erje.net!feeder.erje.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no4039921qtk.0!news-out.google.com!h3ni8133qtk.1!nntp.google.com!v55no4039918qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <38ca6860-de3a-49ff-8fb1-88b49056dd25@googlegroups.com> <q07ts9$2me$1@node2.news.atman.pl> <391a4159-3ab9-44b9-9cce-7d47516dfc15@googlegroups.com> <q07vm4$4dg$1@node2.news.atman.pl> <78f2b757-5cd7-41cf-831c-1ed4d0f2e3a3@googlegroups.com> <q08lnc$p92$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:a582:: with SMTP id o124mr22530778qke.26.1546116275985;        Sat, 29 Dec 2018 12:44:35 -0800 (PST)
X-Received: by 2002:a25:f207:: with SMTP id i7-v6mr333872ybe.3.1546116275834; Sat, 29 Dec 2018 12:44:35 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!4.us.feeder.erje.net!feeder.erje.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no4039921qtk.0!news-out.google.com!h3ni8133qtk.1!nntp.google.com!v55no4039918qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Sat, 29 Dec 2018 12:44:35 -0800 (PST)
In-Reply-To: <q08lnc$p92$1@node2.news.atman.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=188.146.112.172; posting-account=pyti1AoAAAAf66c003TUy10QAAnMWaKw
NNTP-Posting-Host: 188.146.112.172
References: <38ca6860-de3a-49ff-8fb1-88b49056dd25@googlegroups.com> <q07ts9$2me$1@node2.news.atman.pl> <391a4159-3ab9-44b9-9cce-7d47516dfc15@googlegroups.com> <q07vm4$4dg$1@node2.news.atman.pl> <78f2b757-5cd7-41cf-831c-1ed4d0f2e3a3@googlegroups.com> <q08lnc$p92$1@node2.news.atman.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a1e5c232-825c-4d15-9a68-7be85944f03c@googlegroups.com>
Subject: Re: C++, Qt, Pluginy
From: szykcech@gmail.com
Injection-Date: Sat, 29 Dec 2018 20:44:35 +0000
Lines: 51
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit