コード例 #1
0
    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)
コード例 #2
0
    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
                })
コード例 #3
0
 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)
コード例 #4
0
    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)
コード例 #5
0
    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'])