def initGui(self): self.initProcessing() # Setup menu self.quickosm_menu = QMenu('QuickOSM') self.quickosm_menu.setIcon( QIcon(resources_path('icons', 'QuickOSM.svg'))) self.vector_menu = self.iface.vectorMenu() self.vector_menu.addMenu(self.quickosm_menu) # Main window self.main_window_action = QAction( QIcon(resources_path('icons', 'QuickOSM.svg')), 'QuickOSM…', self.iface.mainWindow()) # noinspection PyUnresolvedReferences self.main_window_action.triggered.connect(self.open_dialog) self.toolbar.addAction(self.main_window_action) # Action JOSM self.josm_action = QAction( QIcon(resources_path('icons', 'josm_icon.svg')), tr('JOSM Remote'), self.iface.mainWindow()) self.josm_action.triggered.connect(self.josm_remote) self.toolbar.addAction(self.josm_action) # Insert in the good order self.quickosm_menu.addAction(self.main_window_action) self.quickosm_menu.addAction(self.josm_action)
def set_ui_query_panel(self): self.combo_query_type_q.addItem(tr('Canvas Extent'), 'canvas') self.combo_query_type_q.addItem(tr('Layer Extent'), 'layer') self.combo_query_type_q.currentIndexChanged.connect( self.query_type_updated_q) highlighter = XMLHighlighter(self.text_query.document()) self.text_query.cursorPositionChanged.connect(highlighter.rehighlight) self.text_query.cursorPositionChanged.connect( self.allow_nominatim_or_extent) self.button_overpass_turbo.setIcon( QIcon(resources_path('icons', 'turbo.png'))) self.button_overpass_turbo.clicked.connect(open_overpass_turbo) # Setup menu for documentation popup_menu = QMenu() map_features_action = QAction('Map Features', self.button_documentation) map_features_action.triggered.connect(open_map_features) popup_menu.addAction(map_features_action) overpass_action = QAction('Overpass', self.button_documentation) overpass_action.triggered.connect(open_doc_overpass) popup_menu.addAction(overpass_action) self.button_documentation.setMenu(popup_menu) self.run_buttons[Panels.File].clicked.connect(self.run_query) self.button_generate_query.clicked.connect(self.generate_query) self.button_box_q.button(QDialogButtonBox.Reset).clicked.connect( self.reset_form) self.allow_nominatim_or_extent() self.query_type_updated_q()
def set_ui_quick_query_panel(self): """Setup the UI for the QuickQuery.""" # Query type self.combo_query_type_qq.addItem(tr('In'), 'in') self.combo_query_type_qq.addItem(tr('Around'), 'around') self.combo_query_type_qq.addItem(tr('Canvas Extent'), 'canvas') self.combo_query_type_qq.addItem(tr('Layer Extent'), 'layer') self.combo_query_type_qq.addItem(tr('Not Spatial'), 'attributes') # self.cb_query_type_qq.setItemIcon( # 0, QIcon(resources_path('in.svg'))) # self.cb_query_type_qq.setItemIcon( # 1, QIcon(resources_path('around.svg'))) # self.cb_query_type_qq.setItemIcon( # 2, QIcon(resources_path('map_canvas.svg'))) # self.cb_query_type_qq.setItemIcon( # 3, QIcon(resources_path('extent.svg'))) # self.cb_query_type_qq.setItemIcon( # 4, QIcon(resources_path('mIconTableLayer.svg'))) self.combo_query_type_qq.currentIndexChanged.connect( self.query_type_updated_qq) self.line_file_prefix_qq.setDisabled(True) self.button_run_query_qq.clicked.connect(self.run_quick_query) # TODO self.button_show_query.clicked.connect(self.show_query) self.combo_key.editTextChanged.connect(self.key_edited) self.button_map_features.clicked.connect(open_map_features) self.button_box_qq.button(QDialogButtonBox.Reset).clicked.connect( self.reset_form) # Setup auto completion map_features_json_file = resources_path('json', 'map_features.json') if isfile(map_features_json_file): with open(map_features_json_file) as f: self.osm_keys = load(f) keys = list(self.osm_keys.keys()) keys.append('') # All keys request #118 keys.sort() keys_completer = QCompleter(keys) self.combo_key.addItems(keys) self.combo_key.setCompleter(keys_completer) self.combo_key.completer().setCompletionMode( QCompleter.PopupCompletion) self.combo_key.lineEdit().setPlaceholderText( tr('Query on all keys')) self.combo_value.lineEdit().setPlaceholderText( tr('Query on all values')) self.key_edited() self.query_type_updated_qq() self.init_nominatim_autofill()
def __init__(self, parent=None): """ Constructor """ QDialog.__init__(self, parent) self.setupUi(self) # Set icons item = self.listWidget.item(0) item.setIcon(QIcon(resources_path('quick.png'))) item = self.listWidget.item(1) item.setIcon(QIcon(resources_path('edit.png'))) item = self.listWidget.item(2) item.setIcon(QIcon(resources_path('open.png'))) item = self.listWidget.item(3) item.setIcon(QIcon(resources_path('general.svg'))) item = self.listWidget.item(4) item.setIcon(QIcon(resources_path('info.png'))) self.label_gnu.setPixmap(QPixmap(resources_path('gnu.png'))) # Disabled in QGIS3 # self.set_help_web_view() self.restore_queries_group.setVisible(False) self.timestamp_group.setVisible(False) self.help_file = None # Connect # noinspection PyUnresolvedReferences # self.pushButton_homeHelp.clicked.connect(self.get_root_help) QGIS 3 # noinspection PyUnresolvedReferences # self.pushButton_OAPI_timestamp.clicked.connect( # self.get_timestamp_overpass_api) # noinspection PyUnresolvedReferences self.comboBox_default_OAPI.currentIndexChanged[int].connect( self.set_server_overpass_api) # Set settings about the overpass API self.defaultServer = get_setting('defaultOAPI') if self.defaultServer: index = self.comboBox_default_OAPI.findText(self.defaultServer) self.comboBox_default_OAPI.setCurrentIndex(index) else: self.defaultServer = self.comboBox_default_OAPI.currentText() set_setting('defaultOAPI', self.defaultServer) # Set minimum width for the menu self.listWidget.setMinimumWidth( self.listWidget.sizeHintForColumn(0) + 10)
def set_ui_file_panel(self): self._set_custom_ui(Panels.File) self.radio_osm_conf.setChecked(False) self.osm_conf.setEnabled(False) # TODO self.edit_file_prefix_f.setDisabled(True) self.osm_file.setDialogTitle(tr('Select an OSM file')) self.osm_file.setFilter('OSM file (*.osm *.pbf)') default_osm_conf = resources_path('ogr', 'to_be_modified_osmconf.ini') if not isfile(default_osm_conf): default_osm_conf = '' self.osm_conf.setDialogTitle(tr('Select OSM conf file')) self.osm_conf.setFilter('OSM conf (*.ini)') self.osm_conf.lineEdit().setPlaceholderText(default_osm_conf) self.osm_conf.fileChanged.connect(self.disable_run_file_button) self.radio_osm_conf.toggled.connect(self.disable_run_file_button) # TODO # self.output_directory.fileChanged.connect(self.disable_prefix_file) self.run_buttons[Panels.File].clicked.connect(self.open_file) self.disable_run_file_button()
def set_ui_menu(self): """Set UI related to window and menus.""" item = self.menu_widget.item(0) item.setIcon(QIcon(resources_path('icons', 'quick.png'))) item = self.menu_widget.item(1) item.setIcon(QIcon(resources_path('icons', 'edit.png'))) item = self.menu_widget.item(2) item.setIcon(QIcon(resources_path('icons', 'open.png'))) item = self.menu_widget.item(3) item.setIcon(QIcon(resources_path('icons', 'general.svg'))) item = self.menu_widget.item(4) item.setIcon(QIcon(resources_path('icons', 'info.png'))) self.label_gnu.setPixmap(QPixmap(resources_path('icons', 'gnu.png'))) # Set minimum width for the menu self.menu_widget.setMinimumWidth( self.menu_widget.sizeHintForColumn(0) + 10) self.progress_text.setText('') self.menu_widget.currentRowChanged['int'].connect( self.stacked_panels_widget.setCurrentIndex)
def add_actions(layer, keys): """Add actions on layer. :param layer: The layer. :type layer: QgsVectorLayer :param keys: The list of keys in the layer. :type keys: list """ actions = layer.actions() title = tr('OpenStreetMap Browser') osm_browser = QgsAction( QgsAction.OpenUrl, title, 'http://www.openstreetmap.org/browse/[% "osm_type" %]/[% "osm_id" %]', '', False, title, ACTIONS_VISIBILITY, '' ) actions.addAction(osm_browser) title = 'Mapillary' mapillary = QgsAction( QgsAction.GenericPython, title, ACTIONS_PATH + 'Actions.run("mapillary","[% "mapillary" %]")', resources_path('mapillary_logo.svg'), False, title, ACTIONS_VISIBILITY, '' ) actions.addAction(mapillary) title = 'JOSM' josm = QgsAction( QgsAction.GenericPython, title, ACTIONS_PATH + 'Actions.run("josm","[% "full_id" %]")', resources_path('josm_icon.svg'), False, title, ACTIONS_VISIBILITY, '' ) actions.addAction(josm) title = tr('User default editor') default_editor = QgsAction( QgsAction.OpenUrl, title, 'http://www.openstreetmap.org/edit?[% "osm_type" %]=[% "osm_id" %]', '', False, title, ACTIONS_VISIBILITY, '' ) actions.addAction(default_editor) for link in ['url', 'website', 'wikipedia', 'wikidata', 'ref:UAI']: if link in keys: # Add an image to the action if available image = '' if link == 'wikipedia': image = resources_path('wikipedia.png') elif link == 'wikidata': image = resources_path('wikidata.png') elif link in ['url', 'website']: image = resources_path('external_link.png') link = link.replace(":", "_") generic = QgsAction( QgsAction.GenericPython, link, (ACTIONS_PATH + 'Actions.run("' + link + '","[% "' + link + '" %]")'), image, False, link, ACTIONS_VISIBILITY, '' ) actions.addAction(generic) if 'network' in keys and 'ref' in keys: sketch_line = QgsAction( QgsAction.GenericPython, tr('Sketchline'), (ACTIONS_PATH + 'Actions.run_sketch_line("[% "network" %]","[% "ref" %]")'), '', False, '', ACTIONS_VISIBILITY, '' ) actions.addAction(sketch_line)
def svgIconPath(self): return resources_path('icons', 'QuickOSM.svg')
def icon(self): return QIcon(resources_path('icons', 'QuickOSM.svg'))
from QuickOSM.core.utilities.tools import ( get_setting, set_setting, resources_path, tr, nominatim_file, custom_config_file, ) from QuickOSM.core.utilities.utilities_qgis import (open_map_features, open_log_panel, open_doc_overpass, open_overpass_turbo) from QuickOSM.core.parser.osm_parser import OsmParser from QuickOSM.ui.xml_highlighter import XMLHighlighter FORM_CLASS, _ = uic.loadUiType(resources_path('ui', 'main_window.ui')) LOGGER = logging.getLogger('QuickOSM') class MainDialog(QDialog, FORM_CLASS): """Main class about the dialog.""" def __init__(self, parent=None): """Constructor.""" QDialog.__init__(self, parent) self.setupUi(self) # Table mapping self.panels = { 'run_quick_query': Panels.QuickQuery, 'run_query': Panels.Query, 'open_file': Panels.File,
def __init__(self, parent=None): """ Constructor """ QDialog.__init__(self, parent) self.setupUi(self) # Set icons item = self.listWidget.item(0) item.setIcon(QIcon(resources_path('quick.png'))) item = self.listWidget.item(1) item.setIcon(QIcon(resources_path('edit.png'))) item = self.listWidget.item(2) item.setIcon(QIcon(resources_path('open.png'))) item = self.listWidget.item(3) item.setIcon(QIcon(resources_path('general.svg'))) item = self.listWidget.item(4) item.setIcon(QIcon(resources_path('info.png'))) self.label_gnu.setPixmap(QPixmap(resources_path('gnu.png'))) # Disabled in QGIS3 # self.set_help_web_view() self.restore_queries_group.setVisible(False) self.timestamp_group.setVisible(False) self.output_format_option.setVisible(False) self.help_file = None # Connect # noinspection PyUnresolvedReferences # self.pushButton_homeHelp.clicked.connect(self.get_root_help) QGIS 3 # noinspection PyUnresolvedReferences # self.pushButton_OAPI_timestamp.clicked.connect( # self.get_timestamp_overpass_api) # noinspection PyUnresolvedReferences self.comboBox_default_OAPI.currentIndexChanged[int].connect( self.set_server_overpass_api) self.query.signal_new_query_successful.connect( self.signal_new_query_successful.emit) # self.my_queries.signal_delete_query_successful.connect( # self.signal_delete_query_successful.emit) # noinspection PyUnresolvedReferences self.pushButton_restoreQueries.clicked.connect( self.restore_default_queries) # noinspection PyUnresolvedReferences self.radioButton_outputJson.toggled.connect(self.set_output_format) # Set settings about the overpass API self.defaultServer = get_setting('defaultOAPI') if self.defaultServer: index = self.comboBox_default_OAPI.findText(self.defaultServer) self.comboBox_default_OAPI.setCurrentIndex(index) else: self.defaultServer = self.comboBox_default_OAPI.currentText() set_setting('defaultOAPI', self.defaultServer) # Set settings about the output self.outputFormat = get_setting('outputFormat') if self.outputFormat == "geojson": self.radioButton_outputJson.setChecked(True) elif self.outputFormat == "shape": self.radioButton_outputShape.setChecked(True) else: set_setting('outputFormat', 'shape') self.radioButton_outputShape.setChecked(True) # Set minimum width for the menu self.listWidget.setMinimumWidth( self.listWidget.sizeHintForColumn(0) + 10)
def __init__(self, parent=None): """ QueryWidget constructor """ QuickOSMWidget.__init__(self, parent) self.setupUi(self) self.init() # Highlight XML self.highlighter = XMLHighlighter(self.textEdit_query.document()) # QGIS 3 self.pushButton_saveQuery.setVisible(False) # Setup UI self.cb_query_type.addItem(tr('Canvas Extent'), 'canvas') self.cb_query_type.addItem(tr('Layer Extent'), 'layer') self.cb_query_type.currentIndexChanged.connect(self.query_type_updated) self.label_progress.setText("") self.lineEdit_filePrefix.setDisabled(True) self.bbox = None # self.activate_extent_layer() self.pushButton_overpassTurbo.setIcon(QIcon(resources_path('turbo.png'))) # Disable buttons self.pushButton_generateQuery.setDisabled(True) self.pushButton_saveQuery.setDisabled(True) self.pushButton_runQuery.setDisabled(True) # Setup menu for saving popup_menu = QMenu() save_final_query_action = QAction( tr('Save as final query'), self.pushButton_saveQuery) # save_final_query_action.triggered.connect(self.save_final_query) popup_menu.addAction(save_final_query_action) save_template_query_action = QAction( tr('Save as template'), self.pushButton_saveQuery) # save_template_query_action.triggered.connect(self.save_template_query) popup_menu.addAction(save_template_query_action) self.pushButton_saveQuery.setMenu(popup_menu) # Setup menu for documentation popup_menu = QMenu() map_features_action = QAction( 'Map Features', self.pushButton_documentation) map_features_action.triggered.connect(self.open_map_features) popup_menu.addAction(map_features_action) overpass_action = QAction('Overpass', self.pushButton_documentation) overpass_action.triggered.connect(self.open_doc_overpass) popup_menu.addAction(overpass_action) self.pushButton_documentation.setMenu(popup_menu) # Enable autofill on nominatim self.init_nominatim_autofill() # connect self.pushButton_runQuery.clicked.connect(self.run_query) self.pushButton_generateQuery.clicked.connect(self.generate_query) self.textEdit_query.cursorPositionChanged.connect( self.highlighter.rehighlight) self.textEdit_query.cursorPositionChanged.connect( self.allow_nominatim_or_extent) self.pushButton_overpassTurbo.clicked.connect(self.open_overpass_turbo) self.buttonBox.button(QDialogButtonBox.Reset).clicked.connect( self.reset_form) self.query_type_updated()
def __init__(self, parent=None): """ QueryWidget constructor """ QuickOSMWidget.__init__(self, parent) self.setupUi(self) self.init() # Highlight XML self.highlighter = XMLHighlighter(self.textEdit_query.document()) # QGIS 3 self.pushButton_saveQuery.setVisible(False) # Setup UI self.cb_query_type.addItem(tr('Canvas Extent'), 'canvas') self.cb_query_type.addItem(tr('Layer Extent'), 'layer') self.cb_query_type.currentIndexChanged.connect(self.query_type_updated) self.label_progress.setText("") self.lineEdit_filePrefix.setDisabled(True) self.bbox = None # self.activate_extent_layer() self.pushButton_overpassTurbo.setIcon( QIcon(resources_path('turbo.png'))) # Disable buttons self.pushButton_generateQuery.setDisabled(True) self.pushButton_saveQuery.setDisabled(True) self.pushButton_runQuery.setDisabled(True) # Setup menu for saving popup_menu = QMenu() save_final_query_action = QAction(tr('Save as final query'), self.pushButton_saveQuery) # save_final_query_action.triggered.connect(self.save_final_query) popup_menu.addAction(save_final_query_action) save_template_query_action = QAction(tr('Save as template'), self.pushButton_saveQuery) # save_template_query_action.triggered.connect(self.save_template_query) popup_menu.addAction(save_template_query_action) self.pushButton_saveQuery.setMenu(popup_menu) # Setup menu for documentation popup_menu = QMenu() map_features_action = QAction('Map Features', self.pushButton_documentation) map_features_action.triggered.connect(open_map_features) popup_menu.addAction(map_features_action) overpass_action = QAction('Overpass', self.pushButton_documentation) overpass_action.triggered.connect(open_doc_overpass) popup_menu.addAction(overpass_action) self.pushButton_documentation.setMenu(popup_menu) # Enable autofill on nominatim self.init_nominatim_autofill() # connect self.pushButton_runQuery.clicked.connect(self.run_query) self.pushButton_generateQuery.clicked.connect(self.generate_query) self.textEdit_query.cursorPositionChanged.connect( self.highlighter.rehighlight) self.textEdit_query.cursorPositionChanged.connect( self.allow_nominatim_or_extent) self.pushButton_overpassTurbo.clicked.connect(open_overpass_turbo) self.buttonBox.button(QDialogButtonBox.Reset).clicked.connect( self.reset_form) self.query_type_updated()
def svgIconPath(self): return resources_path('QuickOSM.svg')
def icon(self): return QIcon(resources_path('QuickOSM.svg'))
def add_actions(layer, keys): """Add actions on layer. :param layer: The layer. :type layer: QgsVectorLayer :param keys: The list of keys in the layer. :type keys: list """ actions = layer.actions() title = 'OpenStreetMap Browser' osm_browser = QgsAction( QgsAction.OpenUrl, title, 'http://www.openstreetmap.org/browse/[% "osm_type" %]/[% "osm_id" %]', '', False, title, ACTIONS_VISIBILITY, '') actions.addAction(osm_browser) title = 'Mapillary' mapillary = QgsAction( QgsAction.GenericPython, title, ACTIONS_PATH + 'Actions.run("mapillary","[% "mapillary" %]")', resources_path('mapillary_logo.svg'), False, title, ACTIONS_VISIBILITY, '') actions.addAction(mapillary) title = 'JOSM' josm = QgsAction(QgsAction.GenericPython, title, ACTIONS_PATH + 'Actions.run("josm","[% "full_id" %]")', resources_path('josm_icon.svg'), False, title, ACTIONS_VISIBILITY, '') actions.addAction(josm) title = 'User default editor' default_editor = QgsAction( QgsAction.OpenUrl, title, 'http://www.openstreetmap.org/edit?[% "osm_type" %]=[% "osm_id" %]', '', False, title, ACTIONS_VISIBILITY, '') actions.addAction(default_editor) for link in ['url', 'website', 'wikipedia', 'wikidata', 'ref:UAI']: if link in keys: # Add an image to the action if available image = '' if link == 'wikipedia': image = resources_path('wikipedia.png') elif link == 'wikidata': image = resources_path('wikidata.png') elif link in ['url', 'website']: image = resources_path('external_link.png') link = link.replace(":", "_") generic = QgsAction(QgsAction.GenericPython, link, (ACTIONS_PATH + 'Actions.run("' + link + '","[% "' + link + '" %]")'), image, False, link, ACTIONS_VISIBILITY, '') actions.addAction(generic) if 'network' in keys and 'ref' in keys: sketch_line = QgsAction( QgsAction.GenericPython, 'Sketchline', (ACTIONS_PATH + 'Actions.run_sketch_line("[% "network" %]","[% "ref" %]")'), '', False, '', ACTIONS_VISIBILITY, '') actions.addAction(sketch_line)