Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Custom gui
06-03-2011, 14:20, (Ten post był ostatnio modyfikowany: 06-03-2011, 14:37 {2} przez Rafa.)
#1
Custom gui
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ł
06-03-2011, 14:59,
#2
RE: Custom gui
W pliku src/app/qgisapp.cpp

QGisApp::CreateActions() i potem CreateMenus() oraz CreateToolbars()
06-03-2011, 16:19,
#3
RE: Custom gui
Ok dzięki Smile
A gdzie szukać kodu jeśli chcę też pozbyć się/edytować funkcjonalności z menu kontekstowego ?
06-03-2011, 16:27,
#4
RE: Custom gui
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
07-03-2011, 09:59,
#5
RE: Custom gui
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?
07-03-2011, 13:07,
#6
RE: Custom gui
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.
08-03-2011, 12:13,
#7
RE: Custom gui
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.
09-03-2011, 11:35,
#8
RE: Custom gui
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.


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Easy custom labelling Mazur 2 10 271 28-09-2016, 22:13
Ostatni post: Binko

Skocz do: