Pytanie o pluginy

0

Witam. Tworzę aplikację opartą na pluginach. Piszę w QT, ale korzystam tylko z QLibrary nie z QPluginLoader itp. Właśnie myślę nad jakimś interfejsem i natknąłem się na pewien problem. Czy lepiej do głównej aplikacji przesyłać tylko listę dotyczącą pozycji w potencjalnym menu i komendy jakie plugin obsługuje, czy lepiej przy ładowaniu plugina przesłać wskaźnik do głównego okna i tworzyć wpisy menu bezpośrednio w pluginie ?

0

Też zaraz będę męczył pluginy w Qt i ogólnie widzę to tak, że w interfejsie pluginu(tym z klasy bazowej) deklarujesz np. metodę, która zwróci listę obiektów QMenu na przykład. Ja nic bym nie pchał do pluginu - jedynie udostępnił metody w bazowej pluginu, by zwrócił wszystko to, co potrzeba pokazać na zewnątrz. Mam nadzieję że nie przekombinowałem w swoim opisie.

0

Trochę myślałem nad tym i wstępnie skleciłem coś takiego:

 
class IPlugin : public QObject
{
    Q_OBJECT
  public:
    virtual ~IPlugin() {}
    virtual QString my_getName() = 0;        --------------> myślę że tutaj lepiej będzie jeśli zwróci mi bardziej szczegółowe informacje (wersja pluginu, wersja api, nazwa)
    virtual QMenu* my_getMainMenu() = 0; --------------> menadżer pobiera i ładuje menu do głównej aplikacji                        
    virtual QToolBar* my_getToolBar() = 0; -------------->  to samo co wyżej 
    virtual QSystemTrayIcon* my_getTrayIcon() = 0; ----> tak na wszelki wypadek, żeby była taka mozliwość
    virtual QMenu* my_getTrayIconMenu() = 0; ----------> menu do ikonki . 
    QMap<QString, QMdiSubWindow*> my_subWindowsMap; -> lista okien mdi
  protected:
    QString my_nameOfPlugin;
    QMainWindow *my_mainWindowPtr; --------------> wsk do głównego okna (mam wtedy w pluginie kontrolę nad oknem );
    QMdiArea *my_mainMdiAreaPtr; ------------------> wsk do mdiarea, gdzie będę dodawał okna MDI za pomocą funkcji my_doCommand i trzymał je w my_subWindowsMap... 

  public slots:
    virtual void my_doCommand(const QString &cmd, const QString &cmdParams) = 0; --------------> funkcja, która będzie wykonywała różne rzeczy, na podst. param. "cmd"
    virtual void my_doMenuAction(QAction *action) = 0; --------------> tą funkcją chcę 'złączyć' funkcje toolbarów i menu z funkcją my_doCommand na podstawie nazwy akcji.
};

No i teraz pytanie - czy taki interfejs jest ogólnie OK, czy zawiera jakieś grubsze wady, które wyjdą za np. tydzień :) ??? Mnie się wydaję że będzie OK i nie będzie żadnych niespodzianek .

1 użytkowników online, w tym zalogowanych: 0, gości: 1