from qgis.PyQt.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QMessageBox from qgis.PyQt.QtGui import QIcon, QPixmap from qgis.PyQt.QtCore import Qt, QTimer from qgis.core import Qgis, QgsProject, QgsMessageLog from qgis.utils import iface import os from sn_verfahrensgebiet.logic.alkis_verfahrensgebiet import alkis_verfahrensgebiet from sn_basis.logic.utils import zoom_to_layer class TabA(QWidget): tab_title = "Bearbeitung" def __init__(self, parent=None): super().__init__(parent) layout = QVBoxLayout() layout.setAlignment(Qt.AlignmentFlag.AlignTop) # Abschnitt 1: Verfahrensgebiet row_verf_header = QHBoxLayout() lbl_verf = QLabel("Verfahrensgebiet") self.haken1 = self._haken_label() row_verf_header.addWidget(lbl_verf) row_verf_header.addWidget(self.haken1) row_verf_header.addStretch() layout.addLayout(row_verf_header) row_verf_buttons = QHBoxLayout() self.btn_verf_alkis = QPushButton("Aus ALKIS laden") self.btn_verf_shape = QPushButton("Aus Shape laden") row_verf_buttons.addWidget(self.btn_verf_alkis) row_verf_buttons.addWidget(self.btn_verf_shape) layout.addLayout(row_verf_buttons) # Abschnitt 2: Flurstücke row_flurst_header = QHBoxLayout() lbl_flurst = QLabel("Flurstücke") self.haken2 = self._haken_label() row_flurst_header.addWidget(lbl_flurst) row_flurst_header.addWidget(self.haken2) row_flurst_header.addStretch() layout.addLayout(row_flurst_header) row_flurst_buttons = QHBoxLayout() self.btn_flurst_alkis = QPushButton("Aus ALKIS laden") self.btn_flurst_shape = QPushButton("Aus Shape laden") row_flurst_buttons.addWidget(self.btn_flurst_alkis) row_flurst_buttons.addWidget(self.btn_flurst_shape) layout.addLayout(row_flurst_buttons) layout.addStretch() self.setLayout(layout) # Beispiel: Haken anzeigen nach Klick # self.button1.clicked.connect(lambda: alkis_verfahrensgebiet(self)) self.btn_verf_alkis.clicked.connect(lambda: self.handle_button1()) #self.button2.clicked.connect(lambda: self.setze_haken(self.haken2, True)) def handle_button1(self): layer, neu_geladen = alkis_verfahrensgebiet(self) if not layer or not layer.isValid(): return if neu_geladen: QgsProject.instance().addMapLayer(layer) iface.mapCanvas().setExtent(layer.extent()) iface.mapCanvas().refresh() # Beispiel: Haken setzen oder Meldung ausgeben self.setze_haken(self.haken1, True) # QMessageBox.information(self, "Info", "Layer 'Verfahrensgebiet' wurde neu geladen.") else: # Kein Zoom, kein Neu-Laden QgsMessageLog.logMessage("Vorhandener Layer behalten.", "sn_verfahrensgebiet", level=Qgis.Info) def _haken_label(self): label = QLabel() label.setFixedSize(20, 20) # label.setAlignment(Qt.AlignCenter) label.setAlignment(Qt.AlignmentFlag.AlignCenter) label.setScaledContents(False) label.setText("") return label def setze_haken(self, label: QLabel, aktiv: bool): """Zeigt oder entfernt den grünen Haken.""" if aktiv: # grünes Unicode-Häkchen label.setPixmap(QPixmap()) label.setText("✓") label.setStyleSheet("color: #2ea043; font-weight: bold;") else: label.setPixmap(QPixmap()) label.setText("") label.setStyleSheet("")