def set_widgets(self): """Set widgets on the Impact Functions Table 2 tab.""" self.tblFunctions2.clear() hazard, exposure, _, _ = self.parent.\ selected_impact_function_constraints() hazard_layer_geometries = get_allowed_geometries( layer_purpose_hazard['key']) exposure_layer_geometries = get_allowed_geometries( layer_purpose_exposure['key']) self.lblSelectFunction2.setText(select_function_constraints2_question % (hazard['name'], exposure['name'])) self.tblFunctions2.setColumnCount(len(hazard_layer_geometries)) self.tblFunctions2.setRowCount(len(exposure_layer_geometries)) self.tblFunctions2.setHorizontalHeaderLabels( [i['name'].capitalize() for i in hazard_layer_geometries]) for i in range(len(exposure_layer_geometries)): item = QtWidgets.QTableWidgetItem() item.setText(exposure_layer_geometries[i]['name'].capitalize()) item.setTextAlignment(QtCore.Qt.AlignCenter) self.tblFunctions2.setVerticalHeaderItem(i, item) self.tblFunctions2.horizontalHeader().setSectionResizeMode( QtWidgets.QHeaderView.Stretch) self.tblFunctions2.verticalHeader().setSectionResizeMode( QtWidgets.QHeaderView.Stretch) active_items = [] for column in range(len(hazard_layer_geometries)): for row in range(len(exposure_layer_geometries)): hazard_geometry = hazard_layer_geometries[column] exposure_geometry = exposure_layer_geometries[row] item = QtWidgets.QTableWidgetItem() hazard_geometry_allowed = hazard_geometry['key'] in hazard[ 'allowed_geometries'] exposure_geometry_allowed = (exposure_geometry['key'] in exposure['allowed_geometries']) if hazard_geometry_allowed and exposure_geometry_allowed: background_color = available_option_color active_items += [item] else: background_color = unavailable_option_color item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEnabled) item.setFlags(item.flags() & ~QtCore.Qt.ItemIsSelectable) item.setBackground(QtGui.QBrush(background_color)) item.setFont(big_font) item.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignHCenter) item.setData(RoleHazard, hazard) item.setData(RoleExposure, exposure) item.setData(RoleHazardConstraint, hazard_geometry) item.setData(RoleExposureConstraint, exposure_geometry) self.tblFunctions2.setItem(row, column, item) # Automatically select one item... if len(active_items) == 1: active_items[0].setSelected(True) # set focus, as the inactive selection style is gray self.tblFunctions2.setFocus()
def test_get_allowed_geometries(self): """Test get_allowed_geometries""" allowed_geometries = get_allowed_geometries( layer_purpose_hazard['key']) expected = [layer_geometry_polygon, layer_geometry_raster] self.assertEqual(allowed_geometries, expected) allowed_geometries = get_allowed_geometries( layer_purpose_exposure['key']) expected = [ layer_geometry_point, layer_geometry_line, layer_geometry_polygon, layer_geometry_raster ] self.assertEqual(allowed_geometries, expected)
def test_get_allowed_geometries(self): """Test get_allowed_geometries""" allowed_geometries = get_allowed_geometries( layer_purpose_hazard['key']) expected = [ layer_geometry_polygon, layer_geometry_raster ] self.assertEqual(allowed_geometries, expected) allowed_geometries = get_allowed_geometries( layer_purpose_exposure['key']) expected = [ layer_geometry_point, layer_geometry_line, layer_geometry_polygon, layer_geometry_raster ] self.assertEqual(allowed_geometries, expected)
def test_analysis_wizard(self): """Test Analysis Wizard.""" dialog = WizardDialog(iface=IFACE) dialog.dock = self.dock dialog.set_function_centric_mode() QgsProject.instance().removeAllMapLayers() number_of_column = len(hazard_all) volcano_layer = load_test_vector_layer( 'hazard', 'volcano_krb.shp', clone=True) structure_layer = load_test_vector_layer( 'exposure', 'buildings.gpkg', clone=True) test_layers = [volcano_layer, structure_layer] QgsProject.instance().addMapLayers(test_layers) # Need to set the layers manually to map canvas. See: # https://gist.github.com/ismailsunni/dd2c30a38cef0147bd0dc8d6ba1aeac6 qgs_map_canvas_layers = test_layers CANVAS.setLayers(qgs_map_canvas_layers) count = len(dialog.iface.mapCanvas().layers()) self.assertEqual(count, len(test_layers)) # step_fc_functions1: test function matrix dimensions col_count = dialog.step_fc_functions1.tblFunctions1.columnCount() self.assertEqual(col_count, number_of_column) row_count = dialog.step_fc_functions1.tblFunctions1.rowCount() self.assertEqual(row_count, len(exposure_all)) # Select Volcano vs Structure volcano_index = hazard_all.index(hazard_volcano) structure_index = exposure_all.index(exposure_structure) dialog.step_fc_functions1.tblFunctions1.setCurrentCell( structure_index, volcano_index) selected_hazard = dialog.step_fc_functions1.selected_value( layer_purpose_hazard['key']) selected_exposure = dialog.step_fc_functions1.selected_value( layer_purpose_exposure['key']) self.assertEqual(selected_hazard, hazard_volcano) self.assertEqual(selected_exposure, exposure_structure) # step_fc_functions1: press next dialog.pbnNext.click() # step_fc_functions2 # Check in the correct step self.check_current_step(dialog.step_fc_functions2) hazard_polygon_index = get_allowed_geometries( layer_purpose_hazard['key']).index(layer_geometry_polygon) exposure_polygon_index = get_allowed_geometries( layer_purpose_exposure['key']).index(layer_geometry_polygon) dialog.step_fc_functions2.tblFunctions2.setCurrentCell( exposure_polygon_index, hazard_polygon_index) selected_hazard_geometry = dialog.step_fc_functions2.selected_value( layer_purpose_hazard['key']) selected_exposure_geometry = dialog.step_fc_functions2.selected_value( layer_purpose_exposure['key']) self.assertEqual(selected_hazard_geometry, layer_geometry_polygon) self.assertEqual(selected_exposure_geometry, layer_geometry_polygon) # step_fc_functions2: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_hazlayer_origin) # step hazard origin: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_hazlayer_from_canvas) # Check the number of layer in the list self.assertEqual( dialog.step_fc_hazlayer_from_canvas.lstCanvasHazLayers.count(), 1) # step hazard from canvas: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_explayer_origin) # step exposure origin: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_explayer_from_canvas) # Check the number of layer in the list self.assertEqual( dialog.step_fc_explayer_from_canvas.lstCanvasExpLayers.count(), 1) # step exposure from canvas: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_agglayer_origin) # Check no aggregation dialog.step_fc_agglayer_origin.rbAggLayerNoAggregation.setChecked(True) # step aggregation origin: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_summary) # step extent: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_analysis)
def test_analysis_wizard(self): """Test Analysis Wizard.""" dialog = WizardDialog(iface=IFACE) dialog.dock = self.dock dialog.set_function_centric_mode() QgsMapLayerRegistry.instance().removeAllMapLayers() number_of_column = len(hazard_all) volcano_layer = load_test_vector_layer( 'hazard', 'volcano_krb.shp', clone=True) structure_layer = load_test_vector_layer( 'exposure', 'buildings.shp', clone=True) test_layers = [volcano_layer, structure_layer] QgsMapLayerRegistry.instance().addMapLayers(test_layers) # Need to set the layers manually to map canvas. See: # https://gist.github.com/ismailsunni/dd2c30a38cef0147bd0dc8d6ba1aeac6 qgs_map_canvas_layers = [QgsMapCanvasLayer(x) for x in test_layers] CANVAS.setLayerSet(qgs_map_canvas_layers) count = len(dialog.iface.mapCanvas().layers()) self.assertEqual(count, len(test_layers)) # step_fc_functions1: test function matrix dimensions col_count = dialog.step_fc_functions1.tblFunctions1.columnCount() self.assertEqual(col_count, number_of_column) row_count = dialog.step_fc_functions1.tblFunctions1.rowCount() self.assertEqual(row_count, len(exposure_all)) # Select Volcano vs Structure volcano_index = hazard_all.index(hazard_volcano) structure_index = exposure_all.index(exposure_structure) dialog.step_fc_functions1.tblFunctions1.setCurrentCell( structure_index, volcano_index) selected_hazard = dialog.step_fc_functions1.selected_value( layer_purpose_hazard['key']) selected_exposure = dialog.step_fc_functions1.selected_value( layer_purpose_exposure['key']) self.assertEqual(selected_hazard, hazard_volcano) self.assertEqual(selected_exposure, exposure_structure) # step_fc_functions1: press next dialog.pbnNext.click() # step_fc_functions2 # Check in the correct step self.check_current_step(dialog.step_fc_functions2) hazard_polygon_index = get_allowed_geometries( layer_purpose_hazard['key']).index(layer_geometry_polygon) exposure_polygon_index = get_allowed_geometries( layer_purpose_exposure['key']).index(layer_geometry_polygon) dialog.step_fc_functions2.tblFunctions2.setCurrentCell( exposure_polygon_index, hazard_polygon_index) selected_hazard_geometry = dialog.step_fc_functions2.selected_value( layer_purpose_hazard['key']) selected_exposure_geometry = dialog.step_fc_functions2.selected_value( layer_purpose_exposure['key']) self.assertEqual(selected_hazard_geometry, layer_geometry_polygon) self.assertEqual(selected_exposure_geometry, layer_geometry_polygon) # step_fc_functions2: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_hazlayer_origin) # step hazard origin: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_hazlayer_from_canvas) # Check the number of layer in the list self.assertEqual( dialog.step_fc_hazlayer_from_canvas.lstCanvasHazLayers.count(), 1) # step hazard from canvas: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_explayer_origin) # step exposure origin: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_explayer_from_canvas) # Check the number of layer in the list self.assertEqual( dialog.step_fc_explayer_from_canvas.lstCanvasExpLayers.count(), 1) # step exposure from canvas: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_agglayer_origin) # Check no aggregation dialog.step_fc_agglayer_origin.rbAggLayerNoAggregation.setChecked(True) # step aggregation origin: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_summary) # step extent: press next dialog.pbnNext.click() # Check in the correct step self.check_current_step(dialog.step_fc_analysis)
def set_widgets(self): """Set widgets on the Impact Functions Table 2 tab.""" self.tblFunctions2.clear() hazard, exposure, _, _ = self.parent.\ selected_impact_function_constraints() hazard_layer_geometries = get_allowed_geometries( layer_purpose_hazard['key']) exposure_layer_geometries = get_allowed_geometries( layer_purpose_exposure['key']) self.lblSelectFunction2.setText( select_function_constraints2_question % ( hazard['name'], exposure['name'])) self.tblFunctions2.setColumnCount(len(hazard_layer_geometries)) self.tblFunctions2.setRowCount(len(exposure_layer_geometries)) self.tblFunctions2.setHorizontalHeaderLabels( [i['name'].capitalize() for i in hazard_layer_geometries]) for i in range(len(exposure_layer_geometries)): item = QtGui.QTableWidgetItem() item.setText(exposure_layer_geometries[i]['name'].capitalize()) item.setTextAlignment(QtCore.Qt.AlignCenter) self.tblFunctions2.setVerticalHeaderItem(i, item) self.tblFunctions2.horizontalHeader().setResizeMode( QtGui.QHeaderView.Stretch) self.tblFunctions2.verticalHeader().setResizeMode( QtGui.QHeaderView.Stretch) active_items = [] for column in range(len(hazard_layer_geometries)): for row in range(len(exposure_layer_geometries)): hazard_geometry = hazard_layer_geometries[column] exposure_geometry = exposure_layer_geometries[row] item = QtGui.QTableWidgetItem() hazard_geometry_allowed = hazard_geometry['key'] in hazard[ 'allowed_geometries'] exposure_geometry_allowed = ( exposure_geometry['key'] in exposure[ 'allowed_geometries']) if hazard_geometry_allowed and exposure_geometry_allowed: background_color = available_option_color active_items += [item] else: background_color = unavailable_option_color item.setFlags(item.flags() & ~QtCore.Qt.ItemIsEnabled) item.setFlags(item.flags() & ~QtCore.Qt.ItemIsSelectable) item.setBackground(QtGui.QBrush(background_color)) item.setFont(big_font) item.setTextAlignment( QtCore.Qt.AlignCenter | QtCore.Qt.AlignHCenter) item.setData(RoleHazard, hazard) item.setData(RoleExposure, exposure) item.setData(RoleHazardConstraint, hazard_geometry) item.setData(RoleExposureConstraint, exposure_geometry) self.tblFunctions2.setItem(row, column, item) # Automatically select one item... if len(active_items) == 1: active_items[0].setSelected(True) # set focus, as the inactive selection style is gray self.tblFunctions2.setFocus()