Witam,
Chciałbym spróbować przerobić sobie interfejs użytkownika w ten sposób abym mógł pozmieniać lokalizacje niektórych pozycji w menu qgis a niektóre w ogóle wyrzucić. Gdzie w źródłach powinienem szukać właściwych fragmentów kodu i jak gui jest w QGIS organizowane?
Z góry dzięki za wszelkie wskazówki
Pozdrawiam,
Rafał
W pliku src/app/qgisapp.cpp
QGisApp::CreateActions() i potem CreateMenus() oraz CreateToolbars()
Ok dzięki
A gdzie szukać kodu jeśli chcę też pozbyć się/edytować funkcjonalności z menu kontekstowego ?
Rozumiem, że legend odpowiada za menu kontekstowe dla panelu warstw. Czyli jeśli interesuje mnie menu rozwijane po prawym kliknięciu dla konfiguracji Tool Barów powinienem szukać klasy odpowiedzialnej za cały obszar ToolBarów i tam szukać metod typu addToPopup?
Obsługa toolbarów jest zaimplementowana na poziomie biblioteki Qt4 i obawiam się (choć głowy nie dam), że to menu jest jej integralną częścią. Ingerencja w ten mechanizm może być dość trudna, może po prostu trzeba zrezygnować ze standardowych toolbarów i napisać własną potomną klasę. Poszperaj w dokumentacji Qt.
Chcę wyłączyć panele: 'skala kafla' 'cofnij ponow' oraz 'podgląd' z prawego kliku więc próbowałem szukać tak jak mówisz.
Ten pierwszy link do metody klasy QgsLegendLayer::addToPopupMenu rozumiem że to klasa odpowiadająca za panel warstwy a metoda dodaje funkcjonalność do menu kontekstowego danego jako parametr typu QMenu?. Dziwna sprawa ale tutaj:
http://doc.qgis.org/head/classes.html klasa qgslegendlayer jest nieobecna.
Bo nie ma jej w api. Trzeba zajrzeć w kod, jest w katalogu src/app/legend.
Panel z podglądem jest tworzony w QgisApp::createOverview(). Wprawdzie masz tam:
mPanelMenu->addAction( mOverviewDock->toggleViewAction() )
ale tu chodzi chyba tylko o menu Widok->Panele (tudzież Ustawienia->Panele), a nie to kontekstowe. Przypuszczam, że kontekstowe jest zaimplementowane na poziomie Qt i łapie wszystkie panele wstawiane do intefejsu.
Trzeba po prostu usunąć te panele z kodu programu, zamiast kombinować z ich włącznikiem. W przypadku podglądu trzeba wywalić metodę QgisApp::createOverview() oraz odwołania do niej i, rekursywnie, wszystkiego, co w tej metodzie powstało.
Trochę trzeba pogrepować drzewo źródeł
Podobnie z pozostałymi. Wszystkie trzy powinny się dać bezpiecznie usunąć, bo żadna wtyczka chyba się do nich nie odwołuje.