Forum QGIS

Pełna wersja: Aktywna warstwa i atrybuty edytowanego obiektu w Pythonie
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Zastanawiam się jak pobrać za pomocą Pythona (w skrypcie Init uruchamianym przy edycji warstwy), atrybut aktualnie edytowalnego obiektu (np. GID czy dowolnie inny) jak i nazwę aktywnej warstwy. Mam stworzony formularz ui, którym kopiuję pliki (wskazane przez użytkownika z dowolnej lokalizacji) na serwer plików. Ścieżka na serwer jest na sztywno przypisana w kodzie ale chciałbym aby pliki lądowały w miejscu składającym się z: ścieżka_do_serwera/aktywna_warstwa/GID_edytowanego_obiektu/nazwa_kopiowanego_pliku. Dlatego zależy mi na dobraniu się do tych dwóch danych (aktywna warstwa, GID obiektu). Kod warstwa=qgis.utils.iface.activeLayer() działa w konsoli Pythona w QGISie ale w skrypcie init już nie, co chyba kiedyś tłumaczył tutaj Borys.
Jeżeli mógłbym liczyć na małe wsparcie w tym zakresie to proszę o pomoc.
Dzięki!
Trochę to trwało ale się udało Wink
Aktywną warstwę w skrypcie init możemy pobrać przechwytując załadowany formularz (layerid):
def open_form (dialog,layerid,featureid):
Natomiast żeby mieć GID obiektu musimy wpierw zapisać do bazy świeżo dodany obiekt (to ona decyduje jaki będzie kolejny nr GID) i później go przechwycić z formularza:
GID = dialog.findChild(QLineEdit,"gid"))
W sprawie skryptów ini polecam Nathan's QGIS blog ...
I jeszcze jedno pytanie... jak sprawdzić czy aktywna warstwa, pozyskiwana za pomocą def open_form (dialog, layerid, featureid): jest włączona do edycji?
Pozdrawiam!
Spróbuj w ten sposób:

Kod:
QgsMapLayerRegistry.instance().mapLayer(layerid).isEditable()

Pozdrawiam
Super! Dzięki...