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__) self.provider = None # Declare instance attributes self.actions = [] self.menu = QMenu(self.tr(u'&trends.earth')) self.menu.setIcon( QIcon(':/plugins/LDMP/trends_earth_logo_square_32x32.png')) self.raster_menu = self.iface.rasterMenu() self.raster_menu.addMenu(self.menu) self.toolbar = self.iface.addToolBar(u'trends.earth') self.dlg_settings = DlgSettings() self.dlg_calculate = DlgCalculate() self.dlg_jobs = DlgJobs() self.dlg_timeseries = DlgTimeseries() self.dlg_visualization = DlgVisualization() self.dlg_download = DlgDownload() self.dlg_data_io = DlgDataIO() self.dlg_about = DlgAbout()
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 and translation locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join(self.plugin_dir, 'i18n', u'LDMP_{}.qm'.format(locale)) QgsMessageLog.logMessage( u'Starting trends.earth version {} using locale "{}" in path {}.'. format(__version__, locale, locale_path), tag="trends.earth", level=Qgis.Info) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) QgsMessageLog.logMessage("Translator installed.", tag="trends.earth", level=Qgis.Info) # Declare instance attributes self.actions = [] self.menu = QMenu(QApplication.translate('LDMP', u'&trends.earth')) self.menu.setIcon( QIcon(':/plugins/LDMP/trends_earth_logo_square_32x32.png')) self.raster_menu = self.iface.rasterMenu() self.raster_menu.addMenu(self.menu) self.toolbar = self.iface.addToolBar(u'trends.earth') self.dlg_settings = DlgSettings() self.dlg_calculate = DlgCalculate() self.dlg_jobs = DlgJobs() self.dlg_timeseries = DlgTimeseries() self.dlg_visualization = DlgVisualization() self.dlg_download = DlgDownload() self.dlg_data_io = DlgDataIO() self.dlg_about = DlgAbout()
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 and translation locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join( self.plugin_dir, 'i18n', 'LDMP_{}.qm'.format(locale)) QgsMessageLog.logMessage('Using locale "{}" in path {}.'.format(locale, locale_path), tag="LDMP", level=QgsMessageLog.INFO) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) QgsMessageLog.logMessage("Translator installed.", tag="LDMP", level=QgsMessageLog.INFO) # Declare instance attributes self.actions = [] self.menu = QApplication.translate('LDMP', u'&Land Degradation Monitoring Toolbox') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'LDMP') self.toolbar.setObjectName(u'LDMP') self.dlg_settings = DlgSettings() self.dlg_download = DlgDownload() self.dlg_calculate = DlgCalculate() self.dlg_jobs = DlgJobs() self.dlg_timeseries = DlgTimeseries() self.dlg_reporting = DlgReporting() self.dlg_about = DlgAbout()
class LDMPPlugin(object): """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__) self.provider = None # Declare instance attributes self.actions = [] self.menu = QMenu(self.tr(u'&trends.earth')) self.menu.setIcon( QIcon(':/plugins/LDMP/trends_earth_logo_square_32x32.png')) self.raster_menu = self.iface.rasterMenu() self.raster_menu.addMenu(self.menu) self.toolbar = self.iface.addToolBar(u'trends.earth') self.dlg_settings = DlgSettings() self.dlg_calculate = DlgCalculate() self.dlg_jobs = DlgJobs() self.dlg_timeseries = DlgTimeseries() self.dlg_visualization = DlgVisualization() self.dlg_download = DlgDownload() self.dlg_data_io = DlgDataIO() self.dlg_about = DlgAbout() def initProcessing(self): self.provider = Provider() QgsApplication.processingRegistry().addProvider(self.provider) def tr(self, message): return QCoreApplication.translate("plugin", 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.menu.addAction(action) self.actions.append(action) return action def initGui(self): self.initProcessing() """Create the menu entries and toolbar icons inside the QGIS GUI.""" self.add_action(':/plugins/LDMP/icons/wrench.svg', text=self.tr(u'Settings'), callback=self.run_settings, parent=self.iface.mainWindow(), status_tip=self.tr('Trends.Earth Settings')) self.add_action(':/plugins/LDMP/icons/calculator.svg', text=self.tr(u'Calculate indicators'), callback=self.run_calculate, parent=self.iface.mainWindow(), status_tip=self.tr('Calculate indicators')) self.add_action(':/plugins/LDMP/icons/graph.svg', text=self.tr(u'Plot data'), callback=self.run_plot, parent=self.iface.mainWindow(), status_tip=self.tr('Plot time series datasets')) self.add_action(':/plugins/LDMP/icons/cloud-download.svg', text=self.tr(u'View Google Earth Engine tasks'), callback=self.get_jobs, parent=self.iface.mainWindow(), status_tip=self.tr('View cloud processing tasks')) self.add_action(':/plugins/LDMP/icons/document.svg', text=self.tr(u'Visualization tool'), callback=self.run_visualization, parent=self.iface.mainWindow(), status_tip=self.tr('Visualize and summarize data')) self.add_action(':/plugins/LDMP/icons/folder.svg', text=self.tr(u'Load data'), callback=self.data_io, parent=self.iface.mainWindow(), status_tip=self.tr('Load local data')) self.add_action(':/plugins/LDMP/icons/globe.svg', text=self.tr(u'Download raw data'), callback=self.run_download, parent=self.iface.mainWindow(), status_tip=self.tr('Download raw datasets')) self.add_action(':/plugins/LDMP/icons/info.svg', text=self.tr(u'About'), callback=self.run_about, parent=self.iface.mainWindow(), status_tip=self.tr('About trends.earth')) def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" for action in self.actions: self.iface.removePluginRasterMenu(self.tr(u'&trends.earth'), action) self.iface.removeToolBarIcon(action) # remove the menu self.raster_menu.removeAction(self.menu.menuAction()) # remove the toolbar del self.toolbar QgsApplication.processingRegistry().removeProvider(self.provider) def run_settings(self): self.dlg_settings.show() result = self.dlg_settings.exec_() def run_download(self): self.dlg_download.show() result = self.dlg_download.exec_() def run_calculate(self): # show the dialog self.dlg_calculate.show() result = self.dlg_calculate.exec_() def get_jobs(self): # show the dialog self.dlg_jobs.show() result = self.dlg_jobs.exec_() def run_plot(self): self.dlg_timeseries.show() result = self.dlg_timeseries.exec_() def run_visualization(self): self.dlg_visualization.show() result = self.dlg_visualization.exec_() def data_io(self): self.dlg_data_io.show() result = self.dlg_data_io.exec_() def run_about(self): self.dlg_about.show() result = self.dlg_about.exec_()
class LDMPPlugin(object): """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 and translation locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join(self.plugin_dir, 'i18n', u'LDMP_{}.qm'.format(locale)) QgsMessageLog.logMessage( u'Starting trends.earth version {} using locale "{}" in path {}.'. format(__version__, locale, locale_path), tag="trends.earth", level=Qgis.Info) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) QgsMessageLog.logMessage("Translator installed.", tag="trends.earth", level=Qgis.Info) # Declare instance attributes self.actions = [] self.menu = QMenu(QApplication.translate('LDMP', u'&trends.earth')) self.menu.setIcon( QIcon(':/plugins/LDMP/trends_earth_logo_square_32x32.png')) self.raster_menu = self.iface.rasterMenu() self.raster_menu.addMenu(self.menu) self.toolbar = self.iface.addToolBar(u'trends.earth') self.dlg_settings = DlgSettings() self.dlg_calculate = DlgCalculate() self.dlg_jobs = DlgJobs() self.dlg_timeseries = DlgTimeseries() self.dlg_visualization = DlgVisualization() self.dlg_download = DlgDownload() self.dlg_data_io = DlgDataIO() self.dlg_about = DlgAbout() # 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('LDMP', 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.menu.addAction(action) self.actions.append(action) return action def initGui(self): """Create the menu entries and toolbar icons inside the QGIS GUI.""" self.add_action(':/plugins/LDMP/icons/wrench.svg', text=QApplication.translate('LDMP', u'Settings'), callback=self.run_settings, parent=self.iface.mainWindow(), status_tip=QApplication.translate( 'LDMP', 'LDMT Settings')) self.add_action(':/plugins/LDMP/icons/calculator.svg', text=QApplication.translate('LDMP', u'Calculate indicators'), callback=self.run_calculate, parent=self.iface.mainWindow(), status_tip=QApplication.translate( 'LDMP', 'Calculate indicators')) self.add_action(':/plugins/LDMP/icons/graph.svg', text=QApplication.translate('LDMP', u'Plot data'), callback=self.run_plot, parent=self.iface.mainWindow(), status_tip=QApplication.translate( 'LDMP', 'Plot time series datasets')) self.add_action( ':/plugins/LDMP/icons/cloud-download.svg', text=QApplication.translate('LDMP', u'View Google Earth Engine tasks'), callback=self.get_jobs, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'View cloud processing tasks')) self.add_action(':/plugins/LDMP/icons/document.svg', text=QApplication.translate('LDMP', u'Visualization tool'), callback=self.run_visualization, parent=self.iface.mainWindow(), status_tip=QApplication.translate( 'LDMP', 'Visualize and summarize data')) self.add_action(':/plugins/LDMP/icons/folder.svg', text=QApplication.translate('LDMP', u'Load data'), callback=self.data_io, parent=self.iface.mainWindow(), status_tip=QApplication.translate( 'LDMP', 'Load local data')) self.add_action(':/plugins/LDMP/icons/globe.svg', text=QApplication.translate('LDMP', u'Download raw data'), callback=self.run_download, parent=self.iface.mainWindow(), status_tip=QApplication.translate( 'LDMP', 'Download raw datasets')) self.add_action(':/plugins/LDMP/icons/info.svg', text=QApplication.translate('LDMP', u'About'), callback=self.run_about, parent=self.iface.mainWindow(), status_tip=QApplication.translate( 'LDMP', 'About trends.earth')) def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" for action in self.actions: self.iface.removePluginRasterMenu( QApplication.translate('LDMP', u'&trends.earth'), action) self.iface.removeToolBarIcon(action) # remove the menu self.raster_menu.removeAction(self.menu.menuAction()) # remove the toolbar del self.toolbar def run_settings(self): self.dlg_settings.show() result = self.dlg_settings.exec_() def run_download(self): self.dlg_download.show() result = self.dlg_download.exec_() def run_calculate(self): # show the dialog self.dlg_calculate.show() result = self.dlg_calculate.exec_() def get_jobs(self): # show the dialog self.dlg_jobs.show() result = self.dlg_jobs.exec_() def run_plot(self): self.dlg_timeseries.show() result = self.dlg_timeseries.exec_() def run_visualization(self): self.dlg_visualization.show() result = self.dlg_visualization.exec_() def data_io(self): self.dlg_data_io.show() result = self.dlg_data_io.exec_() def run_about(self): #showHelp() self.dlg_about.show() result = self.dlg_about.exec_()
class LDMPPlugin: """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 and translation locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join( self.plugin_dir, 'i18n', 'LDMP_{}.qm'.format(locale)) QgsMessageLog.logMessage('Using locale "{}" in path {}.'.format(locale, locale_path), tag="LDMP", level=QgsMessageLog.INFO) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) QgsMessageLog.logMessage("Translator installed.", tag="LDMP", level=QgsMessageLog.INFO) # Declare instance attributes self.actions = [] self.menu = QApplication.translate('LDMP', u'&Land Degradation Monitoring Toolbox') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'LDMP') self.toolbar.setObjectName(u'LDMP') self.dlg_settings = DlgSettings() self.dlg_download = DlgDownload() self.dlg_calculate = DlgCalculate() self.dlg_jobs = DlgJobs() self.dlg_timeseries = DlgTimeseries() self.dlg_reporting = DlgReporting() self.dlg_about = DlgAbout() # 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('LDMP', 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.addPluginToWebMenu( self.menu, action) self.actions.append(action) return action def initGui(self): """Create the menu entries and toolbar icons inside the QGIS GUI.""" self.add_action( ':/plugins/LDMP/icons/icon-wrench.png', text=QApplication.translate('LDMP', u'Settings'), callback=self.run_settings, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'LDMT Settings')) self.add_action( ':/plugins/LDMP/icons/icon-globe.png', text=QApplication.translate('LDMP', u'Download data'), callback=self.run_download, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'Download land degradation datasets')) self.add_action( ':/plugins/LDMP/icons/icon-calculator.png', text=QApplication.translate('LDMP', u'Calculate indicators'), callback=self.run_calculate, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'Calculate land degradation indicators')) self.add_action( ':/plugins/LDMP/icons/icon-graph.png', text=QApplication.translate('LDMP', u'Plot data'), callback=self.run_plot, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'Plot timeseries datasets')) self.add_action( ':/plugins/LDMP/icons/icon-cloud-download.png', text=QApplication.translate('LDMP', u'View Google Earth Engine tasks'), callback=self.get_jobs, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'View cloud processing tasks')) self.add_action( ':/plugins/LDMP/icons/icon-chart.png', text=QApplication.translate('LDMP', u'Reporting tool'), callback=self.run_reporting, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'Land degradation reporting')) self.add_action( ':/plugins/LDMP/icons/icon-info.png', text=QApplication.translate('LDMP', u'About'), callback=self.run_about, parent=self.iface.mainWindow(), status_tip=QApplication.translate('LDMP', 'About the land degradation monitoring toolbox')) def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" for action in self.actions: self.iface.removePluginWebMenu( QApplication.translate('LDMP', u'&Land Degradation Monitoring Toolbox'), action) self.iface.removeToolBarIcon(action) # remove the toolbar del self.toolbar def run_settings(self): """Run method that performs all the real work""" # show the dialog self.dlg_settings.show() # Run the dialog event loop result = self.dlg_settings.exec_() # See if OK was pressed if result: pass def run_download(self): """Run method that performs all the real work""" # # show the dialog # self.dlg_download.show() # # Run the dialog event loop # result = self.dlg_download.exec_() # # See if OK was pressed # if result: # pass QMessageBox.critical(None, QApplication.translate('LDMP', "Error"), QApplication.translate('LDMP', "Raw data download coming soon!"), None) def run_calculate(self): """Run method that performs all the real work""" # show the dialog self.dlg_calculate.show() # Run the dialog event loop result = self.dlg_calculate.exec_() # See if OK was pressed if result: pass def get_jobs(self): """Run method that performs all the real work""" # show the dialog self.dlg_jobs.show() # Run the dialog event loop result = self.dlg_jobs.exec_() # See if OK was pressed if result: pass def run_plot(self): """Run method that performs all the real work""" # show the dialog self.dlg_timeseries.show() # Run the dialog event loop result = self.dlg_timeseries.exec_() # See if OK was pressed if result: pass def run_reporting(self): """Run method that performs all the real work""" # show the dialog self.dlg_reporting.show() # Run the dialog event loop result = self.dlg_reporting.exec_() # See if OK was pressed if result: pass def run_about(self): """Run method that performs all the real work""" # show the dialog self.dlg_about.show() # Run the dialog event loop result = self.dlg_about.exec_() # See if OK was pressed if result: pass