def __init__(self, parent=None): """Constructor.""" super().__init__(parent) self.setupUi(self) self.blocked = False self.previous_map_tool = None self.extent_tool = None for name in SERVICE_MANAGER.available_predefined_bounding_boxes(): extent = SERVICE_MANAGER.predefined_bounding_box(name) item = QListWidgetItem(extent['title']) item.setData(Qt.UserRole, name) item.setData(Qt.UserRole + 1, extent.get('read_only', False)) item.setData(Qt.UserRole + 2, extent.get('title', '')) item.setData(Qt.UserRole + 3, extent.get('boundingbox', [0, 0, 0, 0])[0]) item.setData(Qt.UserRole + 4, extent.get('boundingbox', [0, 0, 0, 0])[1]) item.setData(Qt.UserRole + 5, extent.get('boundingbox', [0, 0, 0, 0])[2]) item.setData(Qt.UserRole + 6, extent.get('boundingbox', [0, 0, 0, 0])[3]) self.region_list.addItem(item) self.region_list.currentItemChanged.connect(self._item_changed) self.button_add.clicked.connect(self._add_item) self.button_remove.clicked.connect(self._remove_item) self.edit_label.textEdited.connect(self._update_item) self.spin_min_long.valueChanged.connect(self._update_item) self.spin_max_long.valueChanged.connect(self._update_item) self.spin_min_lat.valueChanged.connect(self._update_item) self.spin_max_lat.valueChanged.connect(self._update_item) self.button_draw_on_map.clicked.connect(self.draw_rect_on_map)
def save_areas(self): previous = list(SERVICE_MANAGER.available_predefined_bounding_boxes()) for p in previous: if SERVICE_MANAGER.predefined_bounding_box(p).get('read_only'): continue SERVICE_MANAGER.remove_predefined_bounding_box(p) for i in range(self.region_list.count()): item = self.region_list.item(i) if item.data(Qt.UserRole + 1): # read only continue title = item.data(Qt.UserRole + 2) bounding_box = [ item.data(Qt.UserRole + 3), item.data(Qt.UserRole + 4), item.data(Qt.UserRole + 5), item.data(Qt.UserRole + 6) ] SERVICE_MANAGER.add_predefined_bounding_box( title, { 'title': title, 'boundingbox': bounding_box })
def _populated_predefined_areas(self): """ Populates the predefined area choices """ self.combo_predefined_area.clear() for name in SERVICE_MANAGER.available_predefined_bounding_boxes(): extent = SERVICE_MANAGER.predefined_bounding_box(name) self.combo_predefined_area.addItem(extent['title'], name)
def _use_predefined_area(self): """ Retrieves the selected predefined area details and updates the widget state accordingly """ if not self.radio_predefined_area.isChecked(): return selected_extent_id = self.combo_predefined_area.currentData() if selected_extent_id not in SERVICE_MANAGER.available_predefined_bounding_boxes( ): return extent = SERVICE_MANAGER.predefined_bounding_box( selected_extent_id)['boundingbox'] self.lat_min_spinbox.setValue(extent[1]) self.lat_max_spinbox.setValue(extent[3]) self.long_min_spinbox.setValue(extent[0]) self.long_max_spinbox.setValue(extent[2]) self.lat_max_checkbox.setChecked(True) self.long_max_checkbox.setChecked(True) self.lat_min_checkbox.setChecked(True) self.long_min_checkbox.setChecked(True)
def _update_service_widgets(self, service_type, service_id, filter_widget, filter_by_id_widget, fetch_by_url_widget, info_widget, remove_service_button, edit_service_button, rename_service_button, tab_widget): service_config = SERVICE_MANAGER.service_details(service_type, service_id) date_start = QDateTime.fromString( service_config['datestart'], Qt.ISODate ) default_date_start = QDateTime.fromString( service_config['default']['datestart'], Qt.ISODate ) if service_config['default'].get('datestart') else None # if the dateend is not set in the config.json set the date to NOW date_end = QDateTime.fromString( service_config['dateend'], Qt.ISODate ) if 'dateend' in service_config and service_config['dateend'] else None default_date_end = QDateTime.fromString( service_config['default']['dateend'], Qt.ISODate ) if service_config['default'].get('dateend') else None filter_widget.set_date_range_limits(date_start, date_end) filter_widget.set_current_date_range(default_date_start, default_date_end) if service_config['default'].get('boundingboxpredefined'): filter_widget.set_predefined_bounding_box(service_config['default'].get('boundingboxpredefined')) if service_config['default'].get('minimumlatitude'): filter_widget.set_min_latitude(service_config['default'].get('minimumlatitude')) if service_config['default'].get('maximumlatitude'): filter_widget.set_max_latitude(service_config['default'].get('maximumlatitude')) if service_config['default'].get('minimumlongitude'): filter_widget.set_min_longitude(service_config['default'].get('minimumlongitude')) if service_config['default'].get('maximumlongitude'): filter_widget.set_max_longitude(service_config['default'].get('maximumlongitude')) if service_config['default'].get('circlelatitude'): filter_widget.set_circle_latitude(service_config['default'].get('circlelatitude')) if service_config['default'].get('circlelongitude'): filter_widget.set_circle_longitude(service_config['default'].get('circlelongitude')) if service_config['default'].get('minimumcircleradius'): filter_widget.set_min_circle_radius(service_config['default'].get('minimumcircleradius')) if service_config['default'].get('maximumcircleradius'): filter_widget.set_max_circle_radius(service_config['default'].get('maximumcircleradius')) if service_config['default'].get('minimummagnitude'): filter_widget.set_min_magnitude(service_config['default'].get('minimummagnitude')) if service_config['default'].get('maximummagnitude'): filter_widget.set_max_magnitude(service_config['default'].get('maximummagnitude')) if service_config['default'].get('macromaxintensitygreater'): filter_widget.set_max_intensity_greater(service_config['default'].get('macromaxintensitygreater')) if service_config['default'].get('macromdpsgreaterthan'): filter_widget.set_mdps_greater_than(service_config['default'].get('macromdpsgreaterthan')) filter_widget.set_extent_limit(service_config.get('boundingbox', [-180, -90, 180, 90])) if service_type in [SERVICE_MANAGER.FDSNEVENT, SERVICE_MANAGER.MACROSEISMIC]: tab_widget.widget(1).setEnabled(service_config['settings'].get('queryeventid', False)) if service_config['default'].get('boundingboxpredefined'): box = SERVICE_MANAGER.predefined_bounding_box(service_config['default']['boundingboxpredefined'])[ 'boundingbox'] info_widget.set_service(service_type=service_type, service_id=service_id) filter_widget.set_service_id(service_id) filter_by_id_widget.set_service_id(service_id) if fetch_by_url_widget is not None: fetch_by_url_widget.set_service_id(service_id) remove_service_button.setEnabled(not service_config['read_only']) edit_service_button.setEnabled(not service_config['read_only']) rename_service_button.setEnabled(not service_config['read_only'])