def displaySearchDialog(self): if self.first_start_search_dialog == True: self.first_start_search_dialog = False self.imgSearchDialog = ImgSearchDialog(self.iface, self.settings) # show the dialog self.imgSearchDialog.show() self.imgSearchDialog.activateWindow() self.imgSearchDialog.raise_() # Run the dialog event loop result = self.imgSearchDialog.exec_() print(result) # See if OK was pressed if result: # Do something useful here - delete the line containing pass and # substitute with your code. pass
class OpenAerialMap: """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 """move this part for tr into __init__.py?""" # 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', 'OpenAerialMap_{}.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) # Declare instance attributes self.actions = [] # need to send this setting object to setting dialog. self.settings = QSettings('QGIS', 'oam-qgis-plugin') # Testing purpose only # self.settings.remove('') """this part is only for testImgUploader() function""" """Please delete these statements when we delete the testImgUploader() function""" self.currentImgSettings = self.settings self.currentImgMetadata = {} # noinspection PyMethodMayBeStatisc 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('OpenAerialMap', 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 displayImgUploaderWizard(self): pass self.imgUploaderWizard = ImgUploaderWizard(self.iface, self.settings) self.imgUploaderWizard.show() def displaySearchTool(self): self.imgSearchDialog = ImgSearchDialog(self.iface, self.settings) self.imgSearchDialog.show() def displaySettingDialog(self): self.settingDialog = SettingDialog(self.iface, self.settings) self.settingDialog.show() def displayHelp(self): currentAbsPath = os.path.abspath(__file__) helpAbsPath = os.path.join( os.path.dirname(currentAbsPath), 'help/index.html') url = 'file://' + str(helpAbsPath) webbrowser.open_new(url) def displayTestWidget(self): pass def initGui(self): """Set OS-specific environment.""" SetEnvironment.setPaths() """Create the menu and toolbar inside the QGIS GUI.""" self.menu = self.tr(u'&Open Aerial Map (OAM)') self.toolbar = self.iface.addToolBar(u'OpenAerialMap') self.toolbar.setObjectName(u'OpenAerialMap') """Create the menu entries and toolbar icons inside the QGIS GUI.""" icon_path_img_wizard = ':/plugins/OpenAerialMap/icon/icon.png' icon_path_search_tool = ':/plugins/OpenAerialMap/icon/search_icon.png' icon_path_setting_dialog = ':/plugins/OpenAerialMap/icon/settings_icon.png' icon_path_help = ':/plugins/OpenAerialMap/icon/help_icon.png' self.add_action( icon_path_img_wizard, text=self.tr(u'Upload Imagery'), callback=self.displayImgUploaderWizard, parent=self.iface.mainWindow()) self.add_action( icon_path_search_tool, text=self.tr(u'Search Imagery'), callback=self.displaySearchTool, parent=self.iface.mainWindow()) self.add_action( icon_path_setting_dialog, text=self.tr(u'Edit Default Settings'), callback=self.displaySettingDialog, parent=self.iface.mainWindow()) self.add_action( icon_path_help, text=self.tr(u'OAM Help'), callback=self.displayHelp, 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'&Open Aerial Map (OAM)'), action) self.iface.removeToolBarIcon(action) del self.toolbar def run(self): """ Please refer to the following functions for details: def displayImgUploaderWizard(self): def displaySearchTool(self): def displaySettingDialog(self): def displayHelp(self): """ pass
def displaySearchTool(self): self.imgSearchDialog = ImgSearchDialog(self.iface, self.settings) self.imgSearchDialog.show()
class OpenAerialMap: """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 """move this part for tr into __init__.py?""" # 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', 'OpenAerialMap_{}.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) # Declare instance attributes self.actions = [] # need to send this setting object to setting dialog. self.settings = QSettings('QGIS', 'oam-qgis-plugin') # Testing purpose only # self.settings.remove('') """this part is only for testImgUploader() function""" """Please delete these statements when we delete the testImgUploader() function""" self.currentImgSettings = self.settings self.currentImgMetadata = {} # noinspection PyMethodMayBeStatisc 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('OpenAerialMap', 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 displayImgUploaderWizard(self): pass self.imgUploaderWizard = ImgUploaderWizard(self.iface, self.settings) self.imgUploaderWizard.show() def displaySearchTool(self): self.imgSearchDialog = ImgSearchDialog(self.iface, self.settings) self.imgSearchDialog.show() def displaySettingDialog(self): self.settingDialog = SettingDialog(self.iface, self.settings) self.settingDialog.show() def displayHelp(self): currentAbsPath = os.path.abspath(__file__) helpAbsPath = os.path.join(os.path.dirname(currentAbsPath), 'help/index.html') url = 'file://' + str(helpAbsPath) webbrowser.open_new(url) def displayTestWidget(self): pass def initGui(self): """Set OS-specific environment.""" SetEnvironment.setPaths() """Create the menu and toolbar inside the QGIS GUI.""" self.menu = self.tr(u'&Open Aerial Map (OAM)') self.toolbar = self.iface.addToolBar(u'OpenAerialMap') self.toolbar.setObjectName(u'OpenAerialMap') """Create the menu entries and toolbar icons inside the QGIS GUI.""" icon_path_img_wizard = ':/plugins/OpenAerialMap/icon/icon.png' icon_path_search_tool = ':/plugins/OpenAerialMap/icon/search_icon.png' icon_path_setting_dialog = ':/plugins/OpenAerialMap/icon/settings_icon.png' icon_path_help = ':/plugins/OpenAerialMap/icon/help_icon.png' self.add_action(icon_path_img_wizard, text=self.tr(u'Upload Imagery'), callback=self.displayImgUploaderWizard, parent=self.iface.mainWindow()) self.add_action(icon_path_search_tool, text=self.tr(u'Search Imagery'), callback=self.displaySearchTool, parent=self.iface.mainWindow()) self.add_action(icon_path_setting_dialog, text=self.tr(u'Edit Default Settings'), callback=self.displaySettingDialog, parent=self.iface.mainWindow()) self.add_action(icon_path_help, text=self.tr(u'OAM Help'), callback=self.displayHelp, 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'&Open Aerial Map (OAM)'), action) self.iface.removeToolBarIcon(action) del self.toolbar def run(self): """ Please refer to the following functions for details: def displayImgUploaderWizard(self): def displaySearchTool(self): def displaySettingDialog(self): def displayHelp(self): """ pass
def displaySearchTool(self): self.imgSearchDialog = ImgSearchDialog(self.iface) self.imgSearchDialog.show()
class OAMQGIS3: """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', 'OAMQGIS3_{}.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) # Declare instance attributes self.actions = [] self.menu = self.tr(u'&OAMQGIS3 EXPRESS') # QSettings objects self.settings = QSettings('QGIS', 'OAM_QGIS3_EXPRESS') # self.settings = QSettings() # Check if plugin was started the first time in current QGIS session # Must be set in initGui() to survive plugin reloads self.first_start_search_dialog = None # self.first_start = None # 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('OAMQGIS3', 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: # Adds plugin icon to Plugins toolbar self.iface.addToolBarIcon(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/oam_qgis3_express/icon/search_icon.png' self.add_action( icon_path, text=self.tr(u'Image Search'), callback=self.displaySearchDialog, parent=self.iface.mainWindow()) """ icon_path = ':/plugins/oam_qgis3_express/icon/sample_icon.png' self.add_action( icon_path, text=self.tr(u'Sample Item'), callback=self.run, parent=self.iface.mainWindow()) """ # will be set False in displaySearchDialog() and run() self.first_start_search_dialog = True # self.first_start = True def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" for action in self.actions: self.iface.removePluginMenu( self.tr(u'&OAMQGIS3 EXPRESS'), action) self.iface.removeToolBarIcon(action) """Please refer to the displaySearchDialog function below""" """ def run(self): # Create the dialog with elements (after translation) and keep reference # Only create GUI ONCE in callback, so that it will only load when the plugin is started if self.first_start == True: self.first_start = False self.dlg = OAMQGIS3Dialog() # show the dialog self.dlg.show() # 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 displaySearchDialog(self): if self.first_start_search_dialog == True: self.first_start_search_dialog = False self.imgSearchDialog = ImgSearchDialog(self.iface, self.settings) # show the dialog self.imgSearchDialog.show() self.imgSearchDialog.activateWindow() self.imgSearchDialog.raise_() # Run the dialog event loop result = self.imgSearchDialog.exec_() print(result) # See if OK was pressed if result: # Do something useful here - delete the line containing pass and # substitute with your code. pass