mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-29 00:07:54 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding:utf-8 -*-
 | |
| """
 | |
| /***************************************************************************
 | |
| Module to generate prepared APIs for calltips and auto-completion.
 | |
|                              -------------------
 | |
| begin                : 2012-09-10
 | |
| copyright            : (C) 2012 Larry Shaffer
 | |
| email                : larrys (at) dakotacarto (dot) com
 | |
|  ***************************************************************************/
 | |
| 
 | |
| /***************************************************************************
 | |
|  *                                                                         *
 | |
|  *   This program is free software; you can redistribute it and/or modify  *
 | |
|  *   it under the terms of the GNU General Public License as published by  *
 | |
|  *   the Free Software Foundation; either version 2 of the License, or     *
 | |
|  *   (at your option) any later version.                                   *
 | |
|  *                                                                         *
 | |
|  ***************************************************************************/
 | |
| Portions of this file contain code from Eric4 APIsManager module.
 | |
| """
 | |
| 
 | |
| import os
 | |
| 
 | |
| from qgis.PyQt.Qsci import QsciAPIs, QsciLexerPython
 | |
| from qgis.PyQt.QtWidgets import QDialog, QDialogButtonBox
 | |
| from qgis.PyQt.QtCore import QCoreApplication
 | |
| 
 | |
| from .ui_console_compile_apis import Ui_APIsDialogPythonConsole
 | |
| 
 | |
| 
 | |
| class PrepareAPIDialog(QDialog):
 | |
| 
 | |
|     def __init__(self, api_lexer, api_files, pap_file, parent=None):
 | |
|         QDialog.__init__(self, parent)
 | |
|         self.ui = Ui_APIsDialogPythonConsole()
 | |
|         self.ui.setupUi(self)
 | |
|         self.setWindowTitle(QCoreApplication.translate("PythonConsole", "Compile APIs"))
 | |
|         self.ui.plainTextEdit.setVisible(False)
 | |
|         self.ui.textEdit_Qsci.setVisible(False)
 | |
|         self.adjustSize()
 | |
|         self._api = None
 | |
|         self.ui.buttonBox.rejected.connect(self._stopPreparation)
 | |
|         self._api_files = api_files
 | |
|         self._api_lexer = api_lexer
 | |
|         self._pap_file = pap_file
 | |
| 
 | |
|     def _clearLexer(self):
 | |
|         # self.ui.textEdit_Qsci.setLexer(0)
 | |
|         self.qlexer = None
 | |
| 
 | |
|     def _stopPreparation(self):
 | |
|         if self._api is not None:
 | |
|             self._api.cancelPreparation()
 | |
|         self._api = None
 | |
|         self._clearLexer()
 | |
|         self.close()
 | |
| 
 | |
|     def _preparationFinished(self):
 | |
|         self._clearLexer()
 | |
|         if os.path.exists(self._pap_file):
 | |
|             os.remove(self._pap_file)
 | |
|         self.ui.label.setText(QCoreApplication.translate("PythonConsole", "Saving prepared file…"))
 | |
|         prepd = self._api.savePrepared(self._pap_file)
 | |
|         rslt = self.tr("Error")
 | |
|         if prepd:
 | |
|             rslt = QCoreApplication.translate("PythonConsole", "Saved")
 | |
|         self.ui.label.setText('{0} {1}'.format(self.ui.label.text(), rslt))
 | |
|         self._api = None
 | |
|         self.ui.progressBar.setVisible(False)
 | |
|         self.ui.buttonBox.button(QDialogButtonBox.Cancel).setText(
 | |
|             QCoreApplication.translate("PythonConsole", "Done"))
 | |
|         self.adjustSize()
 | |
| 
 | |
|     def prepareAPI(self):
 | |
|         # self.ui.textEdit_Qsci.setLexer(0)
 | |
|         exec('self.qlexer = {0}(self.ui.textEdit_Qsci)'.format(self._api_lexer))
 | |
|         # self.ui.textEdit_Qsci.setLexer(self.qlexer)
 | |
|         self._api = QsciAPIs(self.qlexer)
 | |
|         self._api.apiPreparationFinished.connect(self._preparationFinished)
 | |
|         for api_file in self._api_files:
 | |
|             self._api.load(api_file)
 | |
|         try:
 | |
|             self._api.prepare()
 | |
|         except Exception as err:
 | |
|             self._api = None
 | |
|             self._clearLexer()
 | |
|             self.ui.label.setText(QCoreApplication.translate("PythonConsole", "Error preparing file…"))
 | |
|             self.ui.progressBar.setVisible(False)
 | |
|             self.ui.plainTextEdit.setVisible(True)
 | |
|             self.ui.plainTextEdit.insertPlainText(err)
 | |
|             self.ui.buttonBox.button(QDialogButtonBox.Cancel).setText(self.tr("Done"))
 | |
|             self.adjustSize()
 |