Forum QGIS

Pełna wersja: Custom gui
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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 Smile
Pozdrawiam,
Rafał
W pliku src/app/qgisapp.cpp

QGisApp::CreateActions() i potem CreateMenus() oraz CreateToolbars()
Ok dzięki Smile
A gdzie szukać kodu jeśli chcę też pozbyć się/edytować funkcjonalności z menu kontekstowego ?
Zapewne w klasie, której to menu dotyczy, np. tu:
http://trac.osgeo.org/qgis/browser/trunk...r.cpp#L406

A klasę można znaleźć metodą eliminacji ;-)
http://doc.qgis.org/head/classes.html
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ł Smile

Podobnie z pozostałymi. Wszystkie trzy powinny się dać bezpiecznie usunąć, bo żadna wtyczka chyba się do nich nie odwołuje.