def testGSNameWidgetNames(self): nw = GSNameWidget( name='name_one', names=['name_one', 'name_two', 'name_three'], unique=True) self.assertFalse(nw.isValid()) nw.setNames(['name_four', 'name_five']) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 3) # 'name_one' prepended to list self.assertEqual(nw.definedName(), 'name_one') nw.setName('name_four') self.assertFalse(nw.isValid()) self.assertIsNone(nw.definedName()) nw.setName('name') nw.setNames(['name_one', 'name_two', 'name_three']) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 4) # 'name' is prepended to list self.assertEqual(nw.definedName(), 'name') nw.setNames([]) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 1) # 'name' is prepended to list self.assertEqual(nw.definedName(), 'name')
def testGSNameWidgetNames(self): nw = GSNameWidget( name='name_one', names=['name_one', 'name_two', 'name_three'], unique=True) self.assertFalse(nw.isValid()) nw.setNames(['name_four', 'name_five']) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 3) # 'name_one' prepended to list self.assertEqual(nw.definedName(), 'name_one') nw.setName('name_four') self.assertFalse(nw.isValid()) self.assertIsNone(nw.definedName()) nw.setName('name') nw.setNames(['name_one', 'name_two', 'name_three']) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 4) # 'name' is prepended to list self.assertEqual(nw.definedName(), 'name') nw.setNames([]) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 1) # 'name' is prepended to list self.assertEqual(nw.definedName(), 'name')
class PublishProjectDialog(QtGui.QDialog): def __init__(self, catalogs, parent = None): super(PublishProjectDialog, self).__init__(parent) self.catalogs = catalogs self.catalog = None self.workspace = None self.groupName = None self.initGui() def initGui(self): layout = QtGui.QVBoxLayout() self.setWindowTitle('Publish project') verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) catalogLabel = QtGui.QLabel('Catalog') self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) horizontalLayout.addWidget(catalogLabel) horizontalLayout.addWidget(self.catalogBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) workspaceLabel = QtGui.QLabel('Workspace') self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) horizontalLayout.addWidget(workspaceLabel) horizontalLayout.addWidget(self.workspaceBox) verticalLayout.addLayout(horizontalLayout) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(verticalLayout) verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) groupLabel = QtGui.QLabel('Global group name') groupnames = [grp.name for grp in cat.get_layergroups()] self.groupNameBox = GSNameWidget( nameregex=xmlNameEmptyRegex(), nameregexmsg=xmlNameRegexMsg(), names=groupnames, unique=True, allowempty=True) horizontalLayout.addWidget(groupLabel) horizontalLayout.addWidget(self.groupNameBox) verticalLayout.addLayout(horizontalLayout) self.groupGroupBox = QtGui.QGroupBox() self.groupGroupBox.setLayout(verticalLayout) layout.addWidget(self.destGroupBox) layout.addWidget(self.groupGroupBox) overwriteLabel = QtGui.QLabel( "Ungrouped layers will be published first.\n" "No GeoServer items will be overwritten.") overwriteLabel.setAlignment(QtCore.Qt.AlignHCenter) f = overwriteLabel.font() f.setItalic(True) overwriteLabel.setFont(f) layout.addWidget(overwriteLabel) self.buttonBox = QtGui.QDialogButtonBox( QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Close) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button(QtGui.QDialogButtonBox.Close) layout.addWidget(self.buttonBox) self.setLayout(layout) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) self.groupNameBox.nameValidityChanged.connect(self.validateGroupName) # set initial enabled state of Ok button self.validateGroupName() self.resize(400,200) def catalogHasChanged(self): catalog = self.catalogs[self.catalogBox.currentText()] self.workspaces = catalog.get_workspaces() try: defaultWorkspace = catalog.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.clear() self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) groupnames = [grp.name for grp in catalog.get_layergroups()] self.groupNameBox.setNames(groupnames) @QtCore.pyqtSlot() def validateGroupName(self): self.okButton.setEnabled(self.groupNameBox.isValid()) @QtCore.pyqtSlot() def okPressed(self): self.catalog = self.catalogs[self.catalogBox.currentText()] self.workspace = self.workspaces[self.workspaceBox.currentIndex()] self.groupName = self.groupNameBox.definedName() if self.groupName.strip() == "": self.groupName = None self.close() @QtCore.pyqtSlot() def cancelPressed(self): self.catalog = None self.workspace = None self.groupName = None self.close()
class PublishStyleDialog(QtGui.QDialog): def __init__(self, catalogs, layername, parent = None): super(PublishStyleDialog, self).__init__(parent) self.catalogs = catalogs self.catalognames = catalogs.keys() self.layername = layername self.catalog = None self.name = None self.initGui() def initGui(self): verticalLayout = QtGui.QVBoxLayout() buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Close) self.okButton = buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = buttonBox.button(QtGui.QDialogButtonBox.Close) self.setWindowTitle('Publish style') horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) catalogLabel = QtGui.QLabel('Catalog') catalogLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalognames) self.catalogBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)) horizontalLayout.addWidget(catalogLabel) horizontalLayout.addWidget(self.catalogBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) nameLabel = QtGui.QLabel('Name') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) self.nameBox = GSNameWidget( namemsg='', name=xmlNameFixUp(self.layername), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=[], unique=False) self.nameBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)) horizontalLayout.addWidget(nameLabel) horizontalLayout.addWidget(self.nameBox) verticalLayout.addLayout(horizontalLayout) self.groupBox = QtGui.QGroupBox() self.groupBox.setTitle("") self.groupBox.setLayout(verticalLayout) layout = QtGui.QVBoxLayout() layout.addWidget(self.groupBox) layout.addWidget(buttonBox) self.setLayout(layout) buttonBox.accepted.connect(self.okPressed) buttonBox.rejected.connect(self.cancelPressed) self.catalogBox.currentIndexChanged[str].connect(self.updateCatalogStyles) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.updateCatalogStyles(self.catalogBox.currentText()) self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400,200) @QtCore.pyqtSlot(bool) def updateButtons(self, overwriting): txt = "Overwrite" if overwriting else "OK" self.okButton.setText(txt) self.okButton.setDefault(not overwriting) self.cancelButton.setDefault(overwriting) @QtCore.pyqtSlot(str) def updateCatalogStyles(self, catname): catalog = self.catalogs[catname] styles = [style.name for style in catalog.get_styles()] self.nameBox.setNames(styles) def okPressed(self): self.name = unicode(self.nameBox.definedName()) self.catalog = unicode(self.catalogBox.currentText()) self.close() def cancelPressed(self): self.catalog = None self.name = None self.close()
class PublishLayerDialog(QtGui.QDialog): def __init__(self, catalogs, layer=None, parent = None): super(PublishLayerDialog, self).__init__(parent) self.catalogs = catalogs self.layer = layer self.catalog = None self.workspace = None self.layername = None self.initGui() def initGui(self): self.setWindowTitle('Publish layer') layout = QtGui.QVBoxLayout() gridLayout = QtGui.QGridLayout() gridLayout.setSpacing(10) gridLayout.setMargin(10) catalogLabel = QtGui.QLabel('Catalog') catalogLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(catalogLabel, 0, 0) self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) gridLayout.addWidget(self.catalogBox, 0, 1) workspaceLabel = QtGui.QLabel('Workspace') workspaceLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(workspaceLabel, 1, 0) self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) gridLayout.addWidget(self.workspaceBox, 1, 1) nameLabel = QtGui.QLabel('Layer') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(nameLabel, 2, 0) gslayers = [lyr.name for lyr in cat.get_layers()] name = '' # handle PG Table, whose name attribute is not callable if self.layer is not None and hasattr(self.layer, 'name'): if isinstance(self.layer, Table): name = self.layer.name + "_table" else: # QgsMapLayer name = self.layer.name() if layers.isPostGisLayer(self.layer): name += "_table" self.nameBox = GSNameWidget( name=xmlNameFixUp(name), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=gslayers, unique=False) gridLayout.addWidget(self.nameBox, 2, 1) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(gridLayout) layout.addWidget(self.destGroupBox) self.spacer = QtGui.QSpacerItem(20,40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) layout.addItem(self.spacer) self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button(QtGui.QDialogButtonBox.Cancel) layout.addWidget(self.buttonBox) self.setLayout(layout) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) # respond to intial validation self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400,160) def catalogHasChanged(self): catalog = self.catalogs[self.catalogBox.currentText()] self.workspaces = catalog.get_workspaces() self.workspaceBox.clear() try: defaultWorkspace = catalog.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) gslayers = [lyr.name for lyr in catalog.get_layers()] self.nameBox.setNames(gslayers) @QtCore.pyqtSlot(bool) def updateButtons(self, overwriting): txt = "Overwrite" if overwriting else "OK" self.okButton.setText(txt) self.okButton.setDefault(not overwriting) self.cancelButton.setDefault(overwriting) def okPressed(self): self.catalog = self.catalogs[self.catalogBox.currentText()] self.workspace = self.workspaces[self.workspaceBox.currentIndex()] self.layername = unicode(self.nameBox.definedName()) self.close() def cancelPressed(self): self.catalog = None self.workspace = None self.layername = None self.close()
class PublishProjectDialog(QtGui.QDialog): def __init__(self, catalogs, parent=None): super(PublishProjectDialog, self).__init__(parent) self.catalogs = catalogs self.catalog = None self.workspace = None self.groupName = None self.initGui() def initGui(self): layout = QtGui.QVBoxLayout() self.setWindowTitle('Publish project') verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) catalogLabel = QtGui.QLabel('Catalog') self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) horizontalLayout.addWidget(catalogLabel) horizontalLayout.addWidget(self.catalogBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) workspaceLabel = QtGui.QLabel('Workspace') self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex( workspaceNames.index(defaultName)) horizontalLayout.addWidget(workspaceLabel) horizontalLayout.addWidget(self.workspaceBox) verticalLayout.addLayout(horizontalLayout) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(verticalLayout) verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) groupLabel = QtGui.QLabel('Global group name') groupnames = [grp.name for grp in cat.get_layergroups()] self.groupNameBox = GSNameWidget(nameregex=xmlNameEmptyRegex(), nameregexmsg=xmlNameRegexMsg(), names=groupnames, unique=True, allowempty=True) horizontalLayout.addWidget(groupLabel) horizontalLayout.addWidget(self.groupNameBox) verticalLayout.addLayout(horizontalLayout) self.groupGroupBox = QtGui.QGroupBox() self.groupGroupBox.setLayout(verticalLayout) layout.addWidget(self.destGroupBox) layout.addWidget(self.groupGroupBox) overwriteLabel = QtGui.QLabel( "Ungrouped layers will be published first.\n" "No GeoServer items will be overwritten.") overwriteLabel.setAlignment(QtCore.Qt.AlignHCenter) f = overwriteLabel.font() f.setItalic(True) overwriteLabel.setFont(f) layout.addWidget(overwriteLabel) self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Close) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button(QtGui.QDialogButtonBox.Close) layout.addWidget(self.buttonBox) self.setLayout(layout) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) self.groupNameBox.nameValidityChanged.connect(self.validateGroupName) # set initial enabled state of Ok button self.validateGroupName() self.resize(400, 200) def catalogHasChanged(self): catalog = self.catalogs[self.catalogBox.currentText()] self.workspaces = catalog.get_workspaces() try: defaultWorkspace = catalog.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.clear() self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex( workspaceNames.index(defaultName)) groupnames = [grp.name for grp in catalog.get_layergroups()] self.groupNameBox.setNames(groupnames) @QtCore.pyqtSlot() def validateGroupName(self): self.okButton.setEnabled(self.groupNameBox.isValid()) @QtCore.pyqtSlot() def okPressed(self): self.catalog = self.catalogs[self.catalogBox.currentText()] self.workspace = self.workspaces[self.workspaceBox.currentIndex()] self.groupName = self.groupNameBox.definedName() if self.groupName.strip() == "": self.groupName = None self.close() @QtCore.pyqtSlot() def cancelPressed(self): self.catalog = None self.workspace = None self.groupName = None self.close()
class PublishLayerDialog(QtGui.QDialog): def __init__(self, catalogs, layer=None, parent=None): super(PublishLayerDialog, self).__init__(parent) self.catalogs = catalogs self.layer = layer self.catalog = None self.workspace = None self.layername = None self.initGui() def initGui(self): self.setWindowTitle('Publish layer') layout = QtGui.QVBoxLayout() gridLayout = QtGui.QGridLayout() gridLayout.setSpacing(10) gridLayout.setMargin(10) catalogLabel = QtGui.QLabel('Catalog') catalogLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(catalogLabel, 0, 0) self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) gridLayout.addWidget(self.catalogBox, 0, 1) workspaceLabel = QtGui.QLabel('Workspace') workspaceLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(workspaceLabel, 1, 0) self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex( workspaceNames.index(defaultName)) gridLayout.addWidget(self.workspaceBox, 1, 1) nameLabel = QtGui.QLabel('Layer') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(nameLabel, 2, 0) gslayers = [lyr.name for lyr in cat.get_layers()] name = '' # handle PG Table, whose name attribute is not callable if self.layer is not None and hasattr(self.layer, 'name'): if isinstance(self.layer, Table): name = self.layer.name + "_table" else: # QgsMapLayer name = self.layer.name() if layers.isPostGisLayer(self.layer): name += "_table" self.nameBox = GSNameWidget(name=xmlNameFixUp(name), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=gslayers, unique=False) gridLayout.addWidget(self.nameBox, 2, 1) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(gridLayout) layout.addWidget(self.destGroupBox) self.spacer = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) layout.addItem(self.spacer) self.buttonBox = QtGui.QDialogButtonBox( QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button( QtGui.QDialogButtonBox.Cancel) layout.addWidget(self.buttonBox) self.setLayout(layout) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) # respond to intial validation self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400, 160) def catalogHasChanged(self): catalog = self.catalogs[self.catalogBox.currentText()] self.workspaces = catalog.get_workspaces() self.workspaceBox.clear() try: defaultWorkspace = catalog.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex( workspaceNames.index(defaultName)) gslayers = [lyr.name for lyr in catalog.get_layers()] self.nameBox.setNames(gslayers) @QtCore.pyqtSlot(bool) def updateButtons(self, overwriting): txt = "Overwrite" if overwriting else "OK" self.okButton.setText(txt) self.okButton.setDefault(not overwriting) self.cancelButton.setDefault(overwriting) def okPressed(self): self.catalog = self.catalogs[self.catalogBox.currentText()] self.workspace = self.workspaces[self.workspaceBox.currentIndex()] self.layername = unicode(self.nameBox.definedName()) self.close() def cancelPressed(self): self.catalog = None self.workspace = None self.layername = None self.close()