def populate(self): catalog = self.catalog self.element = Gwc(catalog) layers = self.element.layers() for layer in layers: item = GwcLayerItem(layer) self.addChild(item)
class GwcLayersItem(GwcTreeItem): def __init__(self, catalog): self.catalog = catalog icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/gwc.png") TreeItem.__init__(self, None, icon, "GeoWebCache Layers") self.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsDropEnabled) def populate(self): catalog = self.catalog self.element = Gwc(catalog) layers = self.element.layers() for layer in layers: item = GwcLayerItem(layer) self.addChild(item) def acceptDroppedItem(self, tree, explorer, item): from opengeo.gui.gsexploreritems import GsLayerItem if isinstance(item, GsLayerItem): if createGwcLayer(explorer, item.element): return [self] else: return [] def contextMenuActions(self, tree, explorer): icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/add.png") addGwcLayerAction = QtGui.QAction(icon, "New GWC layer...", explorer) addGwcLayerAction.triggered.connect(lambda: self.addGwcLayer(tree, explorer)) return [addGwcLayerAction] def addGwcLayer(self, tree, explorer): cat = self.catalog layers = cat.get_layers() dlg = EditGwcLayerDialog(layers, None) dlg.exec_() if dlg.gridsets is not None: layer = dlg.layer gwc = Gwc(layer.catalog) #TODO: this is a hack that assumes the layer belongs to the same workspace typename = layer.resource.workspace.name + ":" + layer.name gwclayer = GwcLayer(gwc, typename, dlg.formats, dlg.gridsets, dlg.metaWidth, dlg.metaHeight) catItem = tree.findAllItems(cat)[0] explorer.run(gwc.addLayer, "Create GWC layer '" + layer.name + "'", [catItem.gwcItem], gwclayer)
class GwcLayersItem(GwcTreeItem): def __init__(self, catalog): self.catalog = catalog icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/gwc.png") TreeItem.__init__(self, None, icon, "GeoWebCache Layers") self.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsDropEnabled) def populate(self): catalog = self.catalog self.element = Gwc(catalog) layers = self.element.layers() for layer in layers: item = GwcLayerItem(layer) self.addChild(item) def acceptDroppedItem(self, tree, explorer, item): from opengeo.gui.gsexploreritems import GsLayerItem if isinstance(item, GsLayerItem): if createGwcLayer(explorer, item.element): return [self] else: return [] def contextMenuActions(self, tree, explorer): icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/add.png") addGwcLayerAction = QtGui.QAction(icon, "New GWC layer...", explorer) addGwcLayerAction.triggered.connect( lambda: self.addGwcLayer(tree, explorer)) return [addGwcLayerAction] def addGwcLayer(self, tree, explorer): cat = self.catalog layers = cat.get_layers() dlg = EditGwcLayerDialog(layers, None) dlg.exec_() if dlg.gridsets is not None: layer = dlg.layer gwc = Gwc(layer.catalog) #TODO: this is a hack that assumes the layer belongs to the same workspace typename = layer.resource.workspace.name + ":" + layer.name gwclayer = GwcLayer(gwc, typename, dlg.formats, dlg.gridsets, dlg.metaWidth, dlg.metaHeight) catItem = tree.findAllItems(cat)[0] explorer.run(gwc.addLayer, "Create GWC layer '" + layer.name + "'", [catItem.gwcItem], gwclayer)
def createGwcLayer(explorer, layer): dlg = EditGwcLayerDialog([layer], None) dlg.exec_() if dlg.gridsets is not None: gwc = Gwc(layer.catalog) #TODO: this is a hack that assumes the layer belongs to the same workspace typename = layer.resource.workspace.name + ":" + layer.name gwclayer = GwcLayer(gwc, typename, dlg.formats, dlg.gridsets, dlg.metaWidth, dlg.metaHeight) explorer.run(gwc.addLayer, "Create GWC layer '" + layer.name + "'", [], gwclayer) return True else: return False
def addGwcLayer(self, tree, explorer): cat = self.catalog layers = cat.get_layers() dlg = EditGwcLayerDialog(layers, None) dlg.exec_() if dlg.gridsets is not None: layer = dlg.layer gwc = Gwc(layer.catalog) #TODO: this is a hack that assumes the layer belongs to the same workspace typename = layer.resource.workspace.name + ":" + layer.name gwclayer = GwcLayer(gwc, typename, dlg.formats, dlg.gridsets, dlg.metaWidth, dlg.metaHeight) catItem = tree.findAllItems(cat)[0] explorer.run(gwc.addLayer, "Create GWC layer '" + layer.name + "'", [catItem.gwcItem], gwclayer)
def fillTree(self): self.tree.clear() QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) self.explorer.setProgressMaximum(7, "Filling explorer tree") try: groups = self.catalog.get_layergroups() for group in groups: groupItem = GsGroupItem(group) groupItem.populate() self.tree.addTopLevelItem(groupItem) self.explorer.setProgress(1) cat = self.catalog try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None self.explorer.setProgress(2) workspaces = cat.get_workspaces() for workspace in workspaces: workspaceItem = GsWorkspaceItem(workspace, workspace.name == defaultName) workspaceItem.populate() self.tree.addTopLevelItem(workspaceItem) self.explorer.setProgress(3) styles = self.catalog.get_styles() for style in styles: styleItem = GsStyleItem(style, False) self.tree.addTopLevelItem(styleItem) self.explorer.setProgress(4) layers = self.catalog.get_layers() for layer in layers: layerItem = GsLayerItem(layer) layerItem.populate() self.tree.addTopLevelItem(layerItem) self.explorer.setProgress(5) gwc = Gwc(self.catalog) layers = gwc.layers() for layer in layers: item = GwcLayerItem(layer) self.tree.addTopLevelItem(item) self.explorer.setProgress(6) self.element = Wps(self.catalog) try: processes = self.catalog.processes() for process in processes: item = GsProcessItem(process) self.tree.addTopLevelItem(item) self.explorer.setProgress(7) except: #ignore this section if catalog does not have WPS installed pass self.explorer.resetActivity() self.tree.invisibleRootItem().sortChildren(0, QtCore.Qt.AscendingOrder) #we keep a list of container items, to use their actions self.containerItems = [GsLayersItem(self.catalog), GsWorkspacesItem(self.catalog), GsStylesItem(self.catalog),GsGroupsItem(self.catalog), GwcLayersItem(self.catalog), GsProcessesItem(self.catalog)] finally: self.explorer.setProgress(0) QtGui.QApplication.restoreOverrideCursor()
def fillTree(self): self.tree.clear() QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) self.explorer.setProgressMaximum(7, "Filling explorer tree") try: groups = self.catalog.get_layergroups() for group in groups: groupItem = GsGroupItem(group) groupItem.populate() self.tree.addTopLevelItem(groupItem) self.explorer.setProgress(1) cat = self.catalog try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None self.explorer.setProgress(2) workspaces = cat.get_workspaces() for workspace in workspaces: workspaceItem = GsWorkspaceItem(workspace, workspace.name == defaultName) workspaceItem.populate() self.tree.addTopLevelItem(workspaceItem) self.explorer.setProgress(3) styles = self.catalog.get_styles() for style in styles: styleItem = GsStyleItem(style, False) self.tree.addTopLevelItem(styleItem) self.explorer.setProgress(4) layers = self.catalog.get_layers() for layer in layers: layerItem = GsLayerItem(layer) layerItem.populate() self.tree.addTopLevelItem(layerItem) self.explorer.setProgress(5) gwc = Gwc(self.catalog) layers = gwc.layers() for layer in layers: item = GwcLayerItem(layer) self.tree.addTopLevelItem(item) self.explorer.setProgress(6) self.element = Wps(self.catalog) try: processes = self.catalog.processes() for process in processes: item = GsProcessItem(process) self.tree.addTopLevelItem(item) self.explorer.setProgress(7) except: #ignore this section if catalog does not have WPS installed pass self.explorer.resetActivity() self.tree.invisibleRootItem().sortChildren( 0, QtCore.Qt.AscendingOrder) #we keep a list of container items, to use their actions self.containerItems = [ GsLayersItem(self.catalog), GsWorkspacesItem(self.catalog), GsStylesItem(self.catalog), GsGroupsItem(self.catalog), GwcLayersItem(self.catalog), GsProcessesItem(self.catalog) ] finally: self.explorer.setProgress(0) QtGui.QApplication.restoreOverrideCursor()