Article View: pl.comp.lang.c
Article #309775Re: C++, Qt, Pluginy
From: szykcech
Date: Sun, 30 Dec 2018 20:31
Date: Sun, 30 Dec 2018 20:31
25 lines
3519 bytes
3519 bytes
W dniu niedziela, 30 grudnia 2018 21:16:12 UTC+1 użytkownik Borneq napisał: > W dniu 30.12.2018 o 14:17, szykcech@gmail.com pisze: > > + plik Json opisuje Ci plugin i można ten plik (json z biblioteki współdzielonej) pobrać bez ładowania całego pluginu. Ma to znaczenie np. w Qt > > Z tym plikiem json to ciekawe, bo > pytałem na forum Qt i mam linki > http://doc.qt.io/qt-5/qtwidgets-tools-echoplugin-example.html > http://doc.qt.io/qt-5/qpluginloader.html > > Ten pierwszy, jest co prawda pluginem robiącym konkretną rzecz, ale > tutaj obie strony wiedzą co ma robić, natomiast kłopot jest z pluginami, > które by miały mieć całkiem nową funkcjonalność, nieprzewidzianą przez > program główny. > Mam coś takiego: w programie głównym jest klasa dziedzicząca po > QPlainTextEdit nazywająca się CodeEditor. > Klasa ta korzysta z bilbioteki statycznej dla takich rzeczy jak > KSyntaxHighlighting::Repository m_repository; > KSyntaxHighlighting::SyntaxHighlighter *m_highlighter; > Teraz trzeba by coś opisać w jsonie, żeby bez pluginu zadziałał w > uproszczony sposób, bez kolorowania, a gdy wśród pluginów będzie plugin > kolorowania, to aby kolorował. Json będzie częścią pluginu jeśli go zrobisz. Natomiast bez niego Json jest po nic. W sumie ja w swoim edytorze mam przewidziane 3 rodzaje pluginów: editor, view i tool. I ładuję plugin który sam się rejestruje w programie (wywołuję jedynie funkcję pluginu z parametrem fabryki pluginów Plugins). A wcześniej w systemie się rejestruje plugin edytora. I w momencie gdy jest tworzony nowy edytor wywoływana jest lista zarejestrowanych funkcji std::function (callback) które robią określone rzeczy na tym nowym obiekcie. Json w tym momencie jest tylko do określenia typu pluginu oraz do ustalenia zależności między pluginami (który ma się ładować jako pierwszy). Podobnie jest zrobiony Qt Creator - na nim się (luźno) wzorowałem. Zaś typ pluginu jest mi potrzebny tylko do zapytania jaki plugin ma być domyślny do wyświetlania - biorę do tej listy tylko pluginy editor i view.
Technical Details
Message-ID:
<515a6abb-561c-4027-b3aa-d1c398b5611f@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!v55no5704569qtk.0!news-out.google.com!m21ni8873qta.0!nntp.google.com!v55no5704565qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<38ca6860-de3a-49ff-8fb1-88b49056dd25@googlegroups.com> <q0a1ar$198$1@node2.news.atman.pl> <876c6b1d-b6aa-4d68-afca-5edb6a29612f@googlegroups.com> <q0b92b$68n$1@node2.news.atman.pl>Show Full Headers
Complete Article Headers
X-Received: by 2002:a0c:d196:: with SMTP id e22mr25888300qvh.53.1546201895167; Sun, 30 Dec 2018 12:31:35 -0800 (PST) X-Received: by 2002:a25:2d64:: with SMTP id s36mr291654ybe.7.1546201894995; Sun, 30 Dec 2018 12:31:34 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!v55no5704569qtk.0!news-out.google.com!m21ni8873qta.0!nntp.google.com!v55no5704565qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Sun, 30 Dec 2018 12:31:34 -0800 (PST) In-Reply-To: <q0b92b$68n$1@node2.news.atman.pl> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=188.147.38.106; posting-account=pyti1AoAAAAf66c003TUy10QAAnMWaKw NNTP-Posting-Host: 188.147.38.106 References: <38ca6860-de3a-49ff-8fb1-88b49056dd25@googlegroups.com> <q0a1ar$198$1@node2.news.atman.pl> <876c6b1d-b6aa-4d68-afca-5edb6a29612f@googlegroups.com> <q0b92b$68n$1@node2.news.atman.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <515a6abb-561c-4027-b3aa-d1c398b5611f@googlegroups.com> Subject: Re: C++, Qt, Pluginy From: szykcech@gmail.com Injection-Date: Sun, 30 Dec 2018 20:31:35 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit