def __init__(self, iface, settings):
        self.iface = iface
        self.s = settings

        QDialog.__init__(self, iface.mainWindow())
        # Set up the user interface from Designer.
        self.ui = Ui_VoGISRaumplanungPlot()
        self.ui.setupUi(self)

        try:
            self.json_settings = JsonSettings(
                self.iface, self.s.read(self.s.key_file_settings))
        except:
            msg = u'Einstellungsdatei konnte nicht geladen werden!\nBitte die Datei auf korrektes JSON-Format überprüfen.\n\n\nFehlerprotokoll:\n{0}'.format(
                traceback.format_exc())
            QMessageBox.warning(self.iface.mainWindow(), DLG_CAPTION, msg)
            return

        self.dkm_coverage_layer = None
        self.gstke = {}
        self.curr_gem_name = None
        #hold kgs and gnrs if there's already a selection in the active document
        self.autoselect_kgs = None
        self.autoselect_gnrs = None

        self.__add_themen()

        #add Gemeinde names
        self.gem_src = VRPGemeinden(self.iface, self.s, self.json_settings)
        QApplication.setOverrideCursor(Qt.WaitCursor)
        try:
            gem_names = self.gem_src.get_names()
            #if VRP_DEBUG is True: QgsMessageLog.logMessage('\n'.join(gem_names), DLG_CAPTION)
            for gem in gem_names:
                item = QListWidgetItem(gem)
                item.setData(Qt.UserRole, gem)
                self.ui.LST_GEMEINDEN.addItem(item)
        finally:
            QApplication.restoreOverrideCursor()

        #insert layouts
        for name, layout in self.json_settings.layouts().iteritems():
            self.ui.CB_Layout.addItem(name, layout)
        #speed up items insertion
        self.ui.LST_GSTKE.setLayoutMode(QListWidget.Batched)
        self.ui.LST_GSTKE.setBatchSize(100)
        self.ui.LST_GSTKE.setUniformItemSizes(True)

        #check if the active layer is a DKM layer and if there are any selected features
        if not self.iface.activeLayer() is None:
            act_lyr = self.iface.activeLayer()
            if isinstance(act_lyr, QgsVectorLayer):
                sel_feats = act_lyr.selectedFeatures()
                if len(sel_feats) > 0:
                    fld_gemname = self.json_settings.fld_pgem_name()
                    fld_kg = self.json_settings.fld_kg()
                    fld_gnr = self.json_settings.fld_gnr()
                    dkm_flds = [fld_gemname, fld_kg, fld_gnr]
                    if all(dkm_fld in
                           [fld.name() for fld in act_lyr.pendingFields()]
                           for dkm_fld in dkm_flds):
                        #self.iface.messageBar().pushMessage(u'alles da!', QgsMessageBar.INFO)
                        self.__apply_selected_features(sel_feats, fld_gemname,
                                                       fld_kg, fld_gnr)