def __init__(self, iface): """Constructor. :param iface: An interface instance that will be passed to this class which provides the hook by which you can manipulate the QGIS application at run time. :type iface: QgsInterface """ # Save reference to the QGIS interface self.iface = iface # initialize plugin directory self.plugin_dir = os.path.dirname(__file__) # initialize locale locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join(self.plugin_dir, 'i18n', 'EMUiAdok_{}.qm'.format(locale)) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) # Create the dialog (after translation) and keep reference self.dlg = EMUiAdokDialog() # Declare instance attributes self.actions = [] self.menu = self.tr(u'&EMUiAdok') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'EMUiAdok') self.toolbar.setObjectName(u'EMUiAdok')
class EMUiAdokDialogTest(unittest.TestCase): """Test dialog works.""" def setUp(self): """Runs before each test.""" self.dialog = EMUiAdokDialog(None) def tearDown(self): """Runs after each test.""" self.dialog = None def test_dialog_ok(self): """Test we can click OK.""" button = self.dialog.button_box.button(QDialogButtonBox.Ok) button.click() result = self.dialog.result() self.assertEqual(result, QDialog.Accepted) def test_dialog_cancel(self): """Test we can click cancel.""" button = self.dialog.button_box.button(QDialogButtonBox.Cancel) button.click() result = self.dialog.result() self.assertEqual(result, QDialog.Rejected)
def __init__(self, iface): """Constructor. :param iface: An interface instance that will be passed to this class which provides the hook by which you can manipulate the QGIS application at run time. :type iface: QgsInterface """ # Save reference to the QGIS interface self.iface = iface # initialize plugin directory self.plugin_dir = os.path.dirname(__file__) # initialize locale locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join( self.plugin_dir, 'i18n', 'EMUiAdok_{}.qm'.format(locale)) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) # Create the dialog (after translation) and keep reference self.dlg = EMUiAdokDialog() # Declare instance attributes self.actions = [] self.menu = self.tr(u'&EMUiAdok') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'EMUiAdok') self.toolbar.setObjectName(u'EMUiAdok')
class EMUiAdok: """QGIS Plugin Implementation.""" def __init__(self, iface): """Constructor. :param iface: An interface instance that will be passed to this class which provides the hook by which you can manipulate the QGIS application at run time. :type iface: QgsInterface """ # Save reference to the QGIS interface self.iface = iface # initialize plugin directory self.plugin_dir = os.path.dirname(__file__) # initialize locale locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join( self.plugin_dir, 'i18n', 'EMUiAdok_{}.qm'.format(locale)) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) # Create the dialog (after translation) and keep reference self.dlg = EMUiAdokDialog() # Declare instance attributes self.actions = [] self.menu = self.tr(u'&EMUiAdok') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'EMUiAdok') self.toolbar.setObjectName(u'EMUiAdok') #self.dlg.wybierzDokumentComboBox.addItem(u'Zaświadczenie') #self.dlg.wybierzDokumentComboBox.addItem(u'Zawiadomienie o ustaleniu nr') #self.dlg.wybierzDokumentComboBox.addItem(u'Zawiadomienie o zmianie nr') # noinspection PyMethodMayBeStatic def tr(self, message): """Get the translation for a string using Qt translation API. We implement this ourselves since we do not inherit QObject. :param message: String for translation. :type message: str, QString :returns: Translated version of message. :rtype: QString """ # noinspection PyTypeChecker,PyArgumentList,PyCallByClass return QCoreApplication.translate('EMUiAdok', message) def add_action( self, icon_path, text, callback, enabled_flag=True, add_to_menu=True, add_to_toolbar=True, status_tip=None, whats_this=None, parent=None): """Add a toolbar icon to the toolbar. :param icon_path: Path to the icon for this action. Can be a resource path (e.g. ':/plugins/foo/bar.png') or a normal file system path. :type icon_path: str :param text: Text that should be shown in menu items for this action. :type text: str :param callback: Function to be called when the action is triggered. :type callback: function :param enabled_flag: A flag indicating if the action should be enabled by default. Defaults to True. :type enabled_flag: bool :param add_to_menu: Flag indicating whether the action should also be added to the menu. Defaults to True. :type add_to_menu: bool :param add_to_toolbar: Flag indicating whether the action should also be added to the toolbar. Defaults to True. :type add_to_toolbar: bool :param status_tip: Optional text to show in a popup when mouse pointer hovers over the action. :type status_tip: str :param parent: Parent widget for the new action. Defaults None. :type parent: QWidget :param whats_this: Optional text to show in the status bar when the mouse pointer hovers over the action. :returns: The action that was created. Note that the action is also added to self.actions list. :rtype: QAction """ icon = QIcon(icon_path) action = QAction(icon, text, parent) action.triggered.connect(callback) action.setEnabled(enabled_flag) if status_tip is not None: action.setStatusTip(status_tip) if whats_this is not None: action.setWhatsThis(whats_this) if add_to_toolbar: self.toolbar.addAction(action) if add_to_menu: self.iface.addPluginToMenu( self.menu, action) self.actions.append(action) return action def initGui(self): """Create the menu entries and toolbar icons inside the QGIS GUI.""" icon_path = ':/plugins/EMUiAdok/icon.png' self.add_action( icon_path, text=self.tr(u'EMUiAdok'), callback=self.run, parent=self.iface.mainWindow()) def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" for action in self.actions: self.iface.removePluginMenu( self.tr(u'&EMUiAdok'), action) self.iface.removeToolBarIcon(action) # remove the toolbar del self.toolbar def szukaj(self): # selekcja atrybutów na podstawie zaznaczonych wartości #self.iface.mapCanvas().setSelectionColor( QColor("yellow") ) activeLyr=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) #wartości z coboBoxów do zmiennej varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) if varNumer == '': self.iface.messageBar().pushMessage('Puste pole', u'Proszę wypełnić pole numeru działki', level=QgsMessageBar.CRITICAL, duration=10) elif varArkusz == '': self.iface.messageBar().pushMessage('Puste pole', u'Proszę wypełnić pole Arkusza', level=QgsMessageBar.CRITICAL, duration=10) else: data1 = (varObreb, varNumer, varArkusz, varNumPorza) data = (varObreb, varNumer, varArkusz) warstwa = self.iface.activeLayer() expr = QgsExpression( "\"rejon\"='" + varObreb + "' AND \"numdzialki\"='"+ varNumer + "' AND \"arkusz\"='"+ varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'" ) features = warstwa.getFeatures( QgsFeatureRequest( expr ) ) f = features.next() #selected = features.next() #selected = [s.id() for s in features] #warstwa.setSelectedFeatures( features ) #self.iface.mapCanvas().zoomToSelected() #ulicaPA = features.attributes()[13] #ulicaPAteryt = features.attributes()[14] #nrPorza = features.attributes()[15] #kodPoczt = features.attributes()[16] #zoom do wybranej działki #box = warstwa.boundingBoxOfSelected() #self.iface.mapCanvas().setExtent(box) #self.iface.mapCanvas().refresh() def printZaswiadczenie(self): activeLyr=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) alayer = self.iface.activeLayer() varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) expr = QgsExpression( "\"rejon\"='" + varObreb + "' AND \"numdzialki\"='"+ varNumer + "' AND \"arkusz\"='"+ varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'" ) features = alayer.getFeatures( QgsFeatureRequest( expr ) ).next() self.idAtlas = int(features.id()) # Dodaje wszystkie warstwy do widoku mapy myMapRenderer = self.iface.mapCanvas().mapRenderer() # ładuje szablon druku myComposition = QgsComposition(myMapRenderer) username = getpass.getuser() username = str(username) templateDir = r'C:\Users' endDir = '\Desktop\KnurowEMUiA\pliki\szablony druku' template = '\zaswiadczenie.qpt' myFile = os.path.join(templateDir, username + endDir + template) myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument) # pobierz kompozycję mapy i zdefinuj skalę myAtlasMap = myComposition.getComposerMapById(0) # Konfiguracja Atlas myAtlas = myComposition.atlasComposition()#ustawia warstwę w atlasie myAtlas.setEnabled(True) myAtlas.setCoverageLayer(alayer) myAtlas.setHideCoverage(False) myAtlas.setSingleFile(True) myAtlasMap.setAtlasDriven(True)#mapa kontrolowana przez atlas myAtlasMap.setAtlasScalingMode(QgsComposerMap.Auto)# jaka skala kontrolowana przez atlas (margin) myComposition.setAtlasMode(QgsComposition.ExportAtlas)#Ustawia Atlas na Eksport do PDF myComposition.refreshItems() # generuj atlas myAtlas.beginRender() myAtlas.prepareForFeature(self.idAtlas) saveDirEnd = '\Desktop\KnurowEMUiA\wydruki\zaswiadczenie' outputDir = os.path.join(templateDir, username + saveDirEnd) output_pdf = outputDir + "\zaswiadczenie_nr_" + str(self.idAtlas)+ ".pdf" try: myComposition.exportAsPDF(output_pdf) myAtlas.endRender() self.iface.messageBar().pushMessage('Sukces', u'Zaświadczenie zostało wygenerowane pomyślnie', level=QgsMessageBar.SUCCESS, duration=5) except: self.iface.messageBar().pushMessage(u'Błąd', u'Generowanie Zaświadczenia nie powiodło sie', level=QgsMessageBar.CRITICAL, duration=5) def printZawiadomienieUstal(self): activeLyr=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) alayer = self.iface.activeLayer() varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) expr = QgsExpression( "\"rejon\"='" + varObreb + "' AND \"numdzialki\"='"+ varNumer + "' AND \"arkusz\"='"+ varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'" ) features = alayer.getFeatures( QgsFeatureRequest( expr ) ).next() self.idAtlas = int(features.id()) # Dodaje wszystkie warstwy do widoku mapy myMapRenderer = self.iface.mapCanvas().mapRenderer() # ładuje szablon druku myComposition = QgsComposition(myMapRenderer) username = getpass.getuser() username = str(username) templateDir = r'C:\Users' endDir = '\Desktop\KnurowEMUiA\pliki\szablony druku' template = '\zawiadomienie_o_ust.qpt' myFile = os.path.join(templateDir, username + endDir + template) myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument) # pobierz kompozycję mapy i zdefinuj skalę myAtlasMap = myComposition.getComposerMapById(0) # Konfiguracja Atlas myAtlas = myComposition.atlasComposition()#ustawia warstwę w atlasie myAtlas.setEnabled(True) myAtlas.setCoverageLayer(alayer) myAtlas.setHideCoverage(False) myAtlas.setSingleFile(True) myAtlasMap.setAtlasDriven(True)#mapa kontrolowana przez atlas myAtlasMap.setAtlasScalingMode(QgsComposerMap.Auto)# jaka skala kontrolowana przez atlas (margin) myComposition.setAtlasMode(QgsComposition.ExportAtlas)#Ustawia Atlas na Eksport do PDF myComposition.refreshItems() # generuj atlas myAtlas.beginRender() myAtlas.prepareForFeature(self.idAtlas) saveDirEnd = '\Desktop\KnurowEMUiA\wydruki\zawiadomienie_o_ustaleniu_nr' outputDir = os.path.join(templateDir, username + saveDirEnd) output_pdf = outputDir + "\zawiadomienieUstal_nr_" + str(self.idAtlas)+ ".pdf" try: myComposition.exportAsPDF(output_pdf) myAtlas.endRender() self.iface.messageBar().pushMessage('Sukces', u'Zawiadomienie o ustaleniu numeru zostało wygenerowane pomyślnie', level=QgsMessageBar.SUCCESS, duration=5) except: self.iface.messageBar().pushMessage(u'Błąd', u'Generowanie zawiadomienia nie powiodło sie', level=QgsMessageBar.CRITICAL, duration=5) def printZawiadomienieZmiana(self): activeLyr=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) alayer = self.iface.activeLayer() varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) expr = QgsExpression( "\"rejon\"='" + varObreb + "' AND \"numdzialki\"='"+ varNumer + "' AND \"arkusz\"='"+ varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'" ) features = alayer.getFeatures( QgsFeatureRequest( expr ) ).next() self.idAtlas = int(features.id()) # Dodaje wszystkie warstwy do widoku mapy myMapRenderer = self.iface.mapCanvas().mapRenderer() # ładuje szablon druku myComposition = QgsComposition(myMapRenderer) username = getpass.getuser() username = str(username) templateDir = r'C:\Users' endDir = '\Desktop\KnurowEMUiA\pliki\szablony druku' template = '\zawiadomienie_o_zm_nr.qpt' myFile = os.path.join(templateDir, username + endDir + template) myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument) # pobierz kompozycję mapy i zdefinuj skalę myAtlasMap = myComposition.getComposerMapById(0) # Konfiguracja Atlas myAtlas = myComposition.atlasComposition()#ustawia warstwę w atlasie myAtlas.setEnabled(True) myAtlas.setCoverageLayer(alayer) myAtlas.setHideCoverage(False) myAtlas.setSingleFile(True) myAtlasMap.setAtlasDriven(True)#mapa kontrolowana przez atlas myAtlasMap.setAtlasScalingMode(QgsComposerMap.Auto)# jaka skala kontrolowana przez atlas (margin) myComposition.setAtlasMode(QgsComposition.ExportAtlas)#Ustawia Atlas na Eksport do PDF myComposition.refreshItems() # generuj atlas myAtlas.beginRender() myAtlas.prepareForFeature(self.idAtlas) saveDirEnd = '\Desktop\KnurowEMUiA\wydruki\zawiadomienie_o_zmianie_nr' outputDir = os.path.join(templateDir, username + saveDirEnd) output_pdf = outputDir + "\zaswiadczenieZmian_nr_" + str(self.idAtlas)+ ".pdf" try: myComposition.exportAsPDF(output_pdf) myAtlas.endRender() self.iface.messageBar().pushMessage('Sukces', u'Zawiadomienie o zmianie numeru zostało wygenerowane pomyślnie', level=QgsMessageBar.SUCCESS, duration=5) except: self.iface.messageBar().pushMessage(u'Błąd', u'Generowanie zawiadomienia nie powiodło sie', level=QgsMessageBar.CRITICAL, duration=5) def run(self): """Run method that performs all the real work""" # show the dialog self.dlg.show() self.dlg.btnZaswiadczenie.clicked.connect(self.printZaswiadczenie) self.dlg.btnZawiadomienieUstal.clicked.connect(self.printZawiadomienieUstal) self.dlg.btnZawiadomienieZmiana.clicked.connect(self.printZawiadomienieZmiana) self.dlg.btnSzukaj.clicked.connect(self.szukaj) #self.dlg.obrebComboBox.clear() self.dlg.dzialkaLineEdit.clear() self.dlg.arkuszLineEdit.clear() self.dlg.numerBudynkuLineEdit.clear() activeLyr=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) warstwa = self.iface.activeLayer() #filtr Obręby self.dlg.obrebComboBox.addItem(u'Knurów') self.dlg.obrebComboBox.addItem(u'Krywałd') self.dlg.obrebComboBox.addItem(u'Szczygłowice') # Run the dialog event loop result = self.dlg.exec_() # See if OK was pressed if result: # Do something useful here - delete the line containing pass and # substitute with your code. pass
class EMUiAdok: """QGIS Plugin Implementation.""" def __init__(self, iface): """Constructor. :param iface: An interface instance that will be passed to this class which provides the hook by which you can manipulate the QGIS application at run time. :type iface: QgsInterface """ # Save reference to the QGIS interface self.iface = iface # initialize plugin directory self.plugin_dir = os.path.dirname(__file__) # initialize locale locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join(self.plugin_dir, 'i18n', 'EMUiAdok_{}.qm'.format(locale)) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) # Create the dialog (after translation) and keep reference self.dlg = EMUiAdokDialog() # Declare instance attributes self.actions = [] self.menu = self.tr(u'&EMUiAdok') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'EMUiAdok') self.toolbar.setObjectName(u'EMUiAdok') #self.dlg.wybierzDokumentComboBox.addItem(u'Zaświadczenie') #self.dlg.wybierzDokumentComboBox.addItem(u'Zawiadomienie o ustaleniu nr') #self.dlg.wybierzDokumentComboBox.addItem(u'Zawiadomienie o zmianie nr') # noinspection PyMethodMayBeStatic def tr(self, message): """Get the translation for a string using Qt translation API. We implement this ourselves since we do not inherit QObject. :param message: String for translation. :type message: str, QString :returns: Translated version of message. :rtype: QString """ # noinspection PyTypeChecker,PyArgumentList,PyCallByClass return QCoreApplication.translate('EMUiAdok', message) def add_action(self, icon_path, text, callback, enabled_flag=True, add_to_menu=True, add_to_toolbar=True, status_tip=None, whats_this=None, parent=None): """Add a toolbar icon to the toolbar. :param icon_path: Path to the icon for this action. Can be a resource path (e.g. ':/plugins/foo/bar.png') or a normal file system path. :type icon_path: str :param text: Text that should be shown in menu items for this action. :type text: str :param callback: Function to be called when the action is triggered. :type callback: function :param enabled_flag: A flag indicating if the action should be enabled by default. Defaults to True. :type enabled_flag: bool :param add_to_menu: Flag indicating whether the action should also be added to the menu. Defaults to True. :type add_to_menu: bool :param add_to_toolbar: Flag indicating whether the action should also be added to the toolbar. Defaults to True. :type add_to_toolbar: bool :param status_tip: Optional text to show in a popup when mouse pointer hovers over the action. :type status_tip: str :param parent: Parent widget for the new action. Defaults None. :type parent: QWidget :param whats_this: Optional text to show in the status bar when the mouse pointer hovers over the action. :returns: The action that was created. Note that the action is also added to self.actions list. :rtype: QAction """ icon = QIcon(icon_path) action = QAction(icon, text, parent) action.triggered.connect(callback) action.setEnabled(enabled_flag) if status_tip is not None: action.setStatusTip(status_tip) if whats_this is not None: action.setWhatsThis(whats_this) if add_to_toolbar: self.toolbar.addAction(action) if add_to_menu: self.iface.addPluginToMenu(self.menu, action) self.actions.append(action) return action def initGui(self): """Create the menu entries and toolbar icons inside the QGIS GUI.""" icon_path = ':/plugins/EMUiAdok/icon.png' self.add_action(icon_path, text=self.tr(u'EMUiAdok'), callback=self.run, parent=self.iface.mainWindow()) def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" for action in self.actions: self.iface.removePluginMenu(self.tr(u'&EMUiAdok'), action) self.iface.removeToolBarIcon(action) # remove the toolbar del self.toolbar def szukaj(self): # selekcja atrybutów na podstawie zaznaczonych wartości #self.iface.mapCanvas().setSelectionColor( QColor("yellow") ) activeLyr = None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) #wartości z coboBoxów do zmiennej varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) if varNumer == '': self.iface.messageBar().pushMessage( 'Puste pole', u'Proszę wypełnić pole numeru działki', level=QgsMessageBar.CRITICAL, duration=10) elif varArkusz == '': self.iface.messageBar().pushMessage( 'Puste pole', u'Proszę wypełnić pole Arkusza', level=QgsMessageBar.CRITICAL, duration=10) else: data1 = (varObreb, varNumer, varArkusz, varNumPorza) data = (varObreb, varNumer, varArkusz) warstwa = self.iface.activeLayer() expr = QgsExpression("\"rejon\"='" + varObreb + "' AND \"numdzialki\"='" + varNumer + "' AND \"arkusz\"='" + varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'") features = warstwa.getFeatures(QgsFeatureRequest(expr)) f = features.next() #selected = features.next() #selected = [s.id() for s in features] #warstwa.setSelectedFeatures( features ) #self.iface.mapCanvas().zoomToSelected() #ulicaPA = features.attributes()[13] #ulicaPAteryt = features.attributes()[14] #nrPorza = features.attributes()[15] #kodPoczt = features.attributes()[16] #zoom do wybranej działki #box = warstwa.boundingBoxOfSelected() #self.iface.mapCanvas().setExtent(box) #self.iface.mapCanvas().refresh() def printZaswiadczenie(self): activeLyr = None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) alayer = self.iface.activeLayer() varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) expr = QgsExpression("\"rejon\"='" + varObreb + "' AND \"numdzialki\"='" + varNumer + "' AND \"arkusz\"='" + varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'") features = alayer.getFeatures(QgsFeatureRequest(expr)).next() self.idAtlas = int(features.id()) # Dodaje wszystkie warstwy do widoku mapy myMapRenderer = self.iface.mapCanvas().mapRenderer() # ładuje szablon druku myComposition = QgsComposition(myMapRenderer) username = getpass.getuser() username = str(username) templateDir = r'C:\Users' endDir = '\Desktop\KnurowEMUiA\pliki\szablony druku' template = '\zaswiadczenie.qpt' myFile = os.path.join(templateDir, username + endDir + template) myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument) # pobierz kompozycję mapy i zdefinuj skalę myAtlasMap = myComposition.getComposerMapById(0) # Konfiguracja Atlas myAtlas = myComposition.atlasComposition() #ustawia warstwę w atlasie myAtlas.setEnabled(True) myAtlas.setCoverageLayer(alayer) myAtlas.setHideCoverage(False) myAtlas.setSingleFile(True) myAtlasMap.setAtlasDriven(True) #mapa kontrolowana przez atlas myAtlasMap.setAtlasScalingMode( QgsComposerMap.Auto ) # jaka skala kontrolowana przez atlas (margin) myComposition.setAtlasMode( QgsComposition.ExportAtlas) #Ustawia Atlas na Eksport do PDF myComposition.refreshItems() # generuj atlas myAtlas.beginRender() myAtlas.prepareForFeature(self.idAtlas) saveDirEnd = '\Desktop\KnurowEMUiA\wydruki\zaswiadczenie' outputDir = os.path.join(templateDir, username + saveDirEnd) output_pdf = outputDir + "\zaswiadczenie_nr_" + str( self.idAtlas) + ".pdf" try: myComposition.exportAsPDF(output_pdf) myAtlas.endRender() self.iface.messageBar().pushMessage( 'Sukces', u'Zaświadczenie zostało wygenerowane pomyślnie', level=QgsMessageBar.SUCCESS, duration=5) except: self.iface.messageBar().pushMessage( u'Błąd', u'Generowanie Zaświadczenia nie powiodło sie', level=QgsMessageBar.CRITICAL, duration=5) def printZawiadomienieUstal(self): activeLyr = None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) alayer = self.iface.activeLayer() varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) expr = QgsExpression("\"rejon\"='" + varObreb + "' AND \"numdzialki\"='" + varNumer + "' AND \"arkusz\"='" + varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'") features = alayer.getFeatures(QgsFeatureRequest(expr)).next() self.idAtlas = int(features.id()) # Dodaje wszystkie warstwy do widoku mapy myMapRenderer = self.iface.mapCanvas().mapRenderer() # ładuje szablon druku myComposition = QgsComposition(myMapRenderer) username = getpass.getuser() username = str(username) templateDir = r'C:\Users' endDir = '\Desktop\KnurowEMUiA\pliki\szablony druku' template = '\zawiadomienie_o_ust.qpt' myFile = os.path.join(templateDir, username + endDir + template) myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument) # pobierz kompozycję mapy i zdefinuj skalę myAtlasMap = myComposition.getComposerMapById(0) # Konfiguracja Atlas myAtlas = myComposition.atlasComposition() #ustawia warstwę w atlasie myAtlas.setEnabled(True) myAtlas.setCoverageLayer(alayer) myAtlas.setHideCoverage(False) myAtlas.setSingleFile(True) myAtlasMap.setAtlasDriven(True) #mapa kontrolowana przez atlas myAtlasMap.setAtlasScalingMode( QgsComposerMap.Auto ) # jaka skala kontrolowana przez atlas (margin) myComposition.setAtlasMode( QgsComposition.ExportAtlas) #Ustawia Atlas na Eksport do PDF myComposition.refreshItems() # generuj atlas myAtlas.beginRender() myAtlas.prepareForFeature(self.idAtlas) saveDirEnd = '\Desktop\KnurowEMUiA\wydruki\zawiadomienie_o_ustaleniu_nr' outputDir = os.path.join(templateDir, username + saveDirEnd) output_pdf = outputDir + "\zawiadomienieUstal_nr_" + str( self.idAtlas) + ".pdf" try: myComposition.exportAsPDF(output_pdf) myAtlas.endRender() self.iface.messageBar().pushMessage( 'Sukces', u'Zawiadomienie o ustaleniu numeru zostało wygenerowane pomyślnie', level=QgsMessageBar.SUCCESS, duration=5) except: self.iface.messageBar().pushMessage( u'Błąd', u'Generowanie zawiadomienia nie powiodło sie', level=QgsMessageBar.CRITICAL, duration=5) def printZawiadomienieZmiana(self): activeLyr = None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) alayer = self.iface.activeLayer() varObreb = unicode(self.dlg.obrebComboBox.currentText()) varNumer = unicode(self.dlg.dzialkaLineEdit.text()) varArkusz = unicode(self.dlg.arkuszLineEdit.text()) varNumPorza = unicode(self.dlg.numerBudynkuLineEdit.text()) expr = QgsExpression("\"rejon\"='" + varObreb + "' AND \"numdzialki\"='" + varNumer + "' AND \"arkusz\"='" + varArkusz + "' AND \"numerporza\"='" + varNumPorza + "'") features = alayer.getFeatures(QgsFeatureRequest(expr)).next() self.idAtlas = int(features.id()) # Dodaje wszystkie warstwy do widoku mapy myMapRenderer = self.iface.mapCanvas().mapRenderer() # ładuje szablon druku myComposition = QgsComposition(myMapRenderer) username = getpass.getuser() username = str(username) templateDir = r'C:\Users' endDir = '\Desktop\KnurowEMUiA\pliki\szablony druku' template = '\zawiadomienie_o_zm_nr.qpt' myFile = os.path.join(templateDir, username + endDir + template) myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument.setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument) # pobierz kompozycję mapy i zdefinuj skalę myAtlasMap = myComposition.getComposerMapById(0) # Konfiguracja Atlas myAtlas = myComposition.atlasComposition() #ustawia warstwę w atlasie myAtlas.setEnabled(True) myAtlas.setCoverageLayer(alayer) myAtlas.setHideCoverage(False) myAtlas.setSingleFile(True) myAtlasMap.setAtlasDriven(True) #mapa kontrolowana przez atlas myAtlasMap.setAtlasScalingMode( QgsComposerMap.Auto ) # jaka skala kontrolowana przez atlas (margin) myComposition.setAtlasMode( QgsComposition.ExportAtlas) #Ustawia Atlas na Eksport do PDF myComposition.refreshItems() # generuj atlas myAtlas.beginRender() myAtlas.prepareForFeature(self.idAtlas) saveDirEnd = '\Desktop\KnurowEMUiA\wydruki\zawiadomienie_o_zmianie_nr' outputDir = os.path.join(templateDir, username + saveDirEnd) output_pdf = outputDir + "\zaswiadczenieZmian_nr_" + str( self.idAtlas) + ".pdf" try: myComposition.exportAsPDF(output_pdf) myAtlas.endRender() self.iface.messageBar().pushMessage( 'Sukces', u'Zawiadomienie o zmianie numeru zostało wygenerowane pomyślnie', level=QgsMessageBar.SUCCESS, duration=5) except: self.iface.messageBar().pushMessage( u'Błąd', u'Generowanie zawiadomienia nie powiodło sie', level=QgsMessageBar.CRITICAL, duration=5) def run(self): """Run method that performs all the real work""" # show the dialog self.dlg.show() self.dlg.btnZaswiadczenie.clicked.connect(self.printZaswiadczenie) self.dlg.btnZawiadomienieUstal.clicked.connect( self.printZawiadomienieUstal) self.dlg.btnZawiadomienieZmiana.clicked.connect( self.printZawiadomienieZmiana) self.dlg.btnSzukaj.clicked.connect(self.szukaj) #self.dlg.obrebComboBox.clear() self.dlg.dzialkaLineEdit.clear() self.dlg.arkuszLineEdit.clear() self.dlg.numerBudynkuLineEdit.clear() activeLyr = None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "rejestr_emuia": activeLyr = lyr self.iface.setActiveLayer(activeLyr) warstwa = self.iface.activeLayer() #filtr Obręby self.dlg.obrebComboBox.addItem(u'Knurów') self.dlg.obrebComboBox.addItem(u'Krywałd') self.dlg.obrebComboBox.addItem(u'Szczygłowice') # Run the dialog event loop result = self.dlg.exec_() # See if OK was pressed if result: # Do something useful here - delete the line containing pass and # substitute with your code. pass
def setUp(self): """Runs before each test.""" self.dialog = EMUiAdokDialog(None)