Cancellazione multipla di viste

Ecco lo script che ha creato dopo cinque o sei tentativi chatGPT.
non ho idea se sia stilisticamente “elegante” ma funziona.

copiare lo script nella console python che si trova nel menu dei Plugin e lanciarlo.

compare una finestra di dialogo che chiede una stringa contenuta nel nome delle viste e cancellerà tutte le viste che contengono quella stringa nel nome.
se anziché una stringa si inserisce l’asterisco (*) saranno cancellate tutte le viste.

from qgis.core import QgsProject
from PyQt5.QtWidgets import QInputDialog

# Funzione per eliminare i temi di mappa (map themes) che contengono una stringa specifica
def delete_map_themes(search_string):
    # Ottieni il progetto corrente
    project = QgsProject.instance()

    # Accedi ai temi di mappa salvati
    map_themes = project.mapThemeCollection()

    # Ottieni tutti i nomi dei temi di mappa salvati
    themes = map_themes.mapThemes()

    # Controlla se l'utente vuole eliminare tutti i temi di mappa
    if search_string == "*":
        for theme in themes:
            map_themes.removeMapTheme(theme)
            print(f"Tema di mappa '{theme}' eliminato.")
        print("Tutti i temi di mappa sono stati eliminati.")
    else:
        # Elimina i temi di mappa che contengono la stringa specificata
        for theme in themes:
            if search_string in theme:
                map_themes.removeMapTheme(theme)
                print(f"Tema di mappa '{theme}' eliminato.")

# Richiedi all'utente di inserire la stringa di ricerca tramite una finestra di dialogo
search_string, ok = QInputDialog.getText(None, "Elimina Temi di Mappa", "Inserisci la stringa da cercare (inserisci '*' per eliminare tutti i temi di mappa):")

# Controlla se l'utente ha premuto "OK" nella finestra di dialogo
if ok:
    # Chiama la funzione per eliminare i temi di mappa
    delete_map_themes(search_string)
1 Like