def set_organisation_logo(self): """Auto-connect slot activated when org logo checkbox is toggled.""" settings = QtCore.QSettings() if self.custom_org_logo_checkbox.isChecked(): # Use previous org logo path path = settings.value('inasafe/organisation_logo_path', default_organisation_logo_path(), type=str) else: # Set organisation path line edit to default one path = default_organisation_logo_path() self.leOrganisationLogoPath.setText(path)
def set_organisation_logo(self): """Auto-connect slot activated when org logo checkbox is toggled.""" settings = QtCore.QSettings() if self.custom_org_logo_checkbox.isChecked(): # Use previous org logo path path = settings.value( 'inasafe/organisation_logo_path', default_organisation_logo_path(), type=str) else: # Set organisation path line edit to default one path = default_organisation_logo_path() self.leOrganisationLogoPath.setText(path)
def __init__(self, iface, template, layer): """Constructor for the Composition Report class. :param iface: Reference to the QGIS iface object. :type iface: QgsAppInterface :param template: The QGIS template path. :type template: str """ LOGGER.debug('InaSAFE Impact Report class initialised') self._iface = iface self._template = template self._layer = layer self._extent = self._iface.mapCanvas().extent() self._page_dpi = 300.0 self._safe_logo = resources_path( 'img', 'logos', 'inasafe-logo-url.svg') self._organisation_logo = default_organisation_logo_path() self._north_arrow = default_north_arrow_path() self._disclaimer = disclaimer() # For QGIS < 2.4 compatibility # QgsMapSettings is added in 2.4 if qgis_version() < 20400: map_settings = self._iface.mapCanvas().mapRenderer() else: map_settings = self._iface.mapCanvas().mapSettings() self._template_composition = TemplateComposition( template_path=self.template, map_settings=map_settings) self._keyword_io = KeywordIO()
def __init__(self, iface, template, layer): """Constructor for the Composition Report class. :param iface: Reference to the QGIS iface object. :type iface: QgsAppInterface :param template: The QGIS template path. :type template: str """ LOGGER.debug('InaSAFE Impact Report class initialised') self._iface = iface self._template = template self._layer = layer self._extent = self._iface.mapCanvas().extent() self._page_dpi = 300.0 self._safe_logo = resources_path( 'img', 'logos', 'inasafe-logo-url.svg') self._organisation_logo = default_organisation_logo_path() self._north_arrow = default_north_arrow_path() self._disclaimer = disclaimer() # For QGIS < 2.4 compatibility # QgsMapSettings is added in 2.4 if qgis_version() < 20400: map_settings = self._iface.mapCanvas().mapRenderer() else: map_settings = self._iface.mapCanvas().mapSettings() self._template_composition = TemplateComposition( template_path=self.template, map_settings=map_settings) self._keyword_io = KeywordIO()
def organisation_logo(self, logo): """Set image that will be used as organisation logo in reports. :param logo: Path to the organisation logo image. :type logo: str """ if isinstance(logo, str) and os.path.exists(logo): self._organisation_logo = logo else: self._organisation_logo = default_organisation_logo_path()
def organisation_logo(self, logo): """Set image that will be used as organisation logo in reports. :param logo: Path to the organisation logo image. :type logo: str """ if isinstance(logo, str) and os.path.exists(logo): self._organisation_logo = logo else: self._organisation_logo = default_organisation_logo_path()
def read_settings(self): """Restore settings from QSettings. Do this on init and after changing options in the options dialog. """ settings = QSettings() flag = bool(settings.value( 'inasafe/showRubberBands', False, type=bool)) self.extent.show_rubber_bands = flag try: extent = settings.value('inasafe/analysis_extent', '', type=str) crs = settings.value('inasafe/analysis_extent_crs', '', type=str) except TypeError: # Any bogus stuff in settings and we just clear them extent = '' crs = '' if extent != '' and crs != '': extent = extent_string_to_array(extent) try: self.extent.user_extent = QgsRectangle(*extent) self.extent.user_extent_crs = QgsCoordinateReferenceSystem(crs) self.extent.show_user_analysis_extent() except TypeError: self.extent.user_extent = None self.extent.user_extent_crs = None flag = settings.value( 'inasafe/useThreadingFlag', False, type=bool) self.run_in_thread_flag = flag flag = settings.value( 'inasafe/setZoomToImpactFlag', True, type=bool) self.zoom_to_impact_flag = flag # whether exposure layer should be hidden after model completes flag = settings.value( 'inasafe/setHideExposureFlag', False, type=bool) self.hide_exposure_flag = flag # whether to 'hard clip' layers (e.g. cut buildings in half if they # lie partially in the AOI self.clip_hard = settings.value('inasafe/clip_hard', False, type=bool) # whether to show or not postprocessing generated layers self.show_intermediate_layers = settings.value( 'inasafe/show_intermediate_layers', False, type=bool) # whether to show or not dev only options self.developer_mode = settings.value( 'inasafe/developer_mode', False, type=bool) # whether to show or not a custom Logo self.organisation_logo_path = settings.value( 'inasafe/organisation_logo_path', default_organisation_logo_path(), type=str) flag = bool(settings.value( 'inasafe/showOrganisationLogoInDockFlag', True, type=bool))
def restore_state(self): """Reinstate the options based on the user's stored session info. """ settings = QtCore.QSettings() # flag = settings.value( # 'inasafe/useThreadingFlag', False) # hack set use thread to false see #557 flag = False self.cbxUseThread.setChecked(flag) flag = bool( settings.value('inasafe/visibleLayersOnlyFlag', True, type=bool)) self.cbxVisibleLayersOnly.setChecked(flag) flag = bool( settings.value('inasafe/set_layer_from_title_flag', True, type=bool)) self.cbxSetLayerNameFromTitle.setChecked(flag) flag = bool( settings.value('inasafe/setZoomToImpactFlag', True, type=bool)) self.cbxZoomToImpact.setChecked(flag) # whether exposure layer should be hidden after model completes flag = bool( settings.value('inasafe/setHideExposureFlag', False, type=bool)) self.cbxHideExposure.setChecked(flag) flag = bool(settings.value('inasafe/clip_to_viewport', True, type=bool)) self.cbxClipToViewport.setChecked(flag) flag = bool(settings.value('inasafe/clip_hard', False, type=bool)) self.cbxClipHard.setChecked(flag) flag = bool(settings.value('inasafe/useSentry', False, type=bool)) self.cbxUseSentry.setChecked(flag) flag = bool( settings.value('inasafe/show_intermediate_layers', False, type=bool)) self.cbxShowPostprocessingLayers.setChecked(flag) ratio = self.defaults['FEMALE_RATIO'] self.dsbFemaleRatioDefault.setValue(ratio) path = settings.value('inasafe/keywordCachePath', self.keyword_io.default_keyword_db_path(), type=str) self.leKeywordCachePath.setText(path) flag = bool( settings.value('inasafe/template_warning_verbose', True, type=bool)) self.template_warning_checkbox.setChecked(flag) # Restore Organisation Logo Path org_logo_path = settings.value('inasafe/organisation_logo_path', default_organisation_logo_path(), type=str) custom_org_logo_flag = (org_logo_path != default_organisation_logo_path()) self.custom_org_logo_checkbox.setChecked(custom_org_logo_flag) self.leOrganisationLogoPath.setText(org_logo_path) user_directory_path = settings.value('inasafe/defaultUserDirectory', temp_dir('impacts'), type=str) custom_user_directory_flag = (user_directory_path != temp_dir('impacts')) self.custom_UseUserDirectory_checkbox.setChecked( custom_user_directory_flag) self.splitter_user_directory.setEnabled(custom_user_directory_flag) self.leUserDirectoryPath.setText(user_directory_path) # Restore Show Organisation Logo in Dock Flag flag = bool( settings.value('inasafe/showOrganisationLogoInDockFlag', True, type=bool)) self.organisation_on_dock_checkbox.setChecked(flag) # Restore North Arrow Image Path north_arrow_path = settings.value('inasafe/north_arrow_path', default_north_arrow_path(), type=str) custom_north_arrow_flag = (north_arrow_path != default_north_arrow_path()) self.custom_north_arrow_checkbox.setChecked(custom_north_arrow_flag) self.leNorthArrowPath.setText(north_arrow_path) # Restore Report Template Directory Path report_template_dir = settings.value('inasafe/reportTemplatePath', '', type=str) custom_templates_dir_flag = (report_template_dir != '') self.custom_templates_dir_checkbox.setChecked( custom_templates_dir_flag) self.leReportTemplatePath.setText(report_template_dir) # Restore Disclaimer org_disclaimer = settings.value('inasafe/reportDisclaimer', disclaimer(), type=str) custom_org_disclaimer_flag = (org_disclaimer != disclaimer()) self.custom_org_disclaimer_checkbox.setChecked( custom_org_disclaimer_flag) self.txtDisclaimer.setPlainText(org_disclaimer) flag = bool(settings.value('inasafe/developer_mode', False, type=bool)) self.cbxDevMode.setChecked(flag) flag = bool( settings.value('inasafe/use_native_zonal_stats', False, type=bool)) self.cbxNativeZonalStats.setChecked(flag) # Restore ISO19115 metadata tab value = self.defaults['ISO19115_ORGANIZATION'] self.iso19115_organization_le.setText(value) value = self.defaults['ISO19115_URL'] self.iso19115_url_le.setText(value) value = self.defaults['ISO19115_EMAIL'] self.iso19115_email_le.setText(value) value = self.defaults['ISO19115_TITLE'] self.iso19115_title_le.setText(value) value = self.defaults['ISO19115_LICENSE'] self.iso19115_license_le.setText(value)
def restore_state(self): """Reinstate the options based on the user's stored session info. """ settings = QtCore.QSettings() # flag = settings.value( # 'inasafe/useThreadingFlag', False) # hack set use thread to false see #557 flag = False self.cbxUseThread.setChecked(flag) flag = bool(settings.value( 'inasafe/visibleLayersOnlyFlag', True, type=bool)) self.cbxVisibleLayersOnly.setChecked(flag) flag = bool(settings.value( 'inasafe/set_layer_from_title_flag', True, type=bool)) self.cbxSetLayerNameFromTitle.setChecked(flag) flag = bool(settings.value( 'inasafe/setZoomToImpactFlag', True, type=bool)) self.cbxZoomToImpact.setChecked(flag) # whether exposure layer should be hidden after model completes flag = bool(settings.value( 'inasafe/setHideExposureFlag', False, type=bool)) self.cbxHideExposure.setChecked(flag) flag = bool(settings.value( 'inasafe/clip_to_viewport', True, type=bool)) self.cbxClipToViewport.setChecked(flag) flag = bool(settings.value( 'inasafe/clip_hard', False, type=bool)) self.cbxClipHard.setChecked(flag) flag = bool(settings.value( 'inasafe/useSentry', False, type=bool)) self.cbxUseSentry.setChecked(flag) flag = bool(settings.value( 'inasafe/show_intermediate_layers', False, type=bool)) self.cbxShowPostprocessingLayers.setChecked(flag) ratio = self.defaults['FEMALE_RATIO'] self.dsbFemaleRatioDefault.setValue(ratio) path = settings.value( 'inasafe/keywordCachePath', self.keyword_io.default_keyword_db_path(), type=str) self.leKeywordCachePath.setText(path) flag = bool(settings.value( 'inasafe/template_warning_verbose', True, type=bool)) self.template_warning_checkbox.setChecked(flag) # Restore Organisation Logo Path org_logo_path = settings.value( 'inasafe/organisation_logo_path', default_organisation_logo_path(), type=str) custom_org_logo_flag = ( org_logo_path != default_organisation_logo_path()) self.custom_org_logo_checkbox.setChecked(custom_org_logo_flag) self.leOrganisationLogoPath.setText(org_logo_path) # Restore Show Organisation Logo in Dock Flag flag = bool(settings.value( 'inasafe/showOrganisationLogoInDockFlag', True, type=bool)) self.organisation_on_dock_checkbox.setChecked(flag) # Restore North Arrow Image Path north_arrow_path = settings.value( 'inasafe/north_arrow_path', default_north_arrow_path(), type=str) custom_north_arrow_flag = ( north_arrow_path != default_north_arrow_path()) self.custom_north_arrow_checkbox.setChecked(custom_north_arrow_flag) self.leNorthArrowPath.setText(north_arrow_path) # Restore Report Template Directory Path report_template_dir = settings.value( 'inasafe/reportTemplatePath', '', type=str) custom_templates_dir_flag = (report_template_dir != '') self.custom_templates_dir_checkbox.setChecked( custom_templates_dir_flag) self.leReportTemplatePath.setText(report_template_dir) # Restore Disclaimer org_disclaimer = settings.value( 'inasafe/reportDisclaimer', disclaimer(), type=str) custom_org_disclaimer_flag = (org_disclaimer != disclaimer()) self.custom_org_disclaimer_checkbox.setChecked( custom_org_disclaimer_flag) self.txtDisclaimer.setPlainText(org_disclaimer) flag = bool( settings.value('inasafe/developer_mode', False, type=bool)) self.cbxDevMode.setChecked(flag) flag = bool( settings.value('inasafe/use_native_zonal_stats', False, type=bool)) self.cbxNativeZonalStats.setChecked(flag) # Restore ISO19115 metadata tab value = self.defaults['ISO19115_ORGANIZATION'] self.iso19115_organization_le.setText(value) value = self.defaults['ISO19115_URL'] self.iso19115_url_le.setText(value) value = self.defaults['ISO19115_EMAIL'] self.iso19115_email_le.setText(value) value = self.defaults['ISO19115_TITLE'] self.iso19115_title_le.setText(value) value = self.defaults['ISO19115_LICENSE'] self.iso19115_license_le.setText(value)
def read_settings(self): """Restore settings from QSettings. Do this on init and after changing options in the options dialog. """ settings = QSettings() flag = bool(settings.value('inasafe/showRubberBands', False, type=bool)) self.extent.show_rubber_bands = flag try: extent = settings.value('inasafe/analysis_extent', '', type=str) crs = settings.value('inasafe/analysis_extent_crs', '', type=str) except TypeError: # Any bogus stuff in settings and we just clear them extent = '' crs = '' if extent != '' and crs != '': extent = extent_string_to_array(extent) try: self.extent.user_extent = QgsRectangle(*extent) self.extent.user_extent_crs = QgsCoordinateReferenceSystem(crs) self.extent.show_user_analysis_extent() except TypeError: self.extent.user_extent = None self.extent.user_extent_crs = None flag = settings.value('inasafe/useThreadingFlag', False, type=bool) self.run_in_thread_flag = flag flag = settings.value('inasafe/setZoomToImpactFlag', True, type=bool) self.zoom_to_impact_flag = flag # whether exposure layer should be hidden after model completes flag = settings.value('inasafe/setHideExposureFlag', False, type=bool) self.hide_exposure_flag = flag # whether to 'hard clip' layers (e.g. cut buildings in half if they # lie partially in the AOI self.clip_hard = settings.value('inasafe/clip_hard', False, type=bool) # whether to show or not postprocessing generated layers self.show_intermediate_layers = settings.value( 'inasafe/show_intermediate_layers', False, type=bool) # whether to show or not dev only options self.developer_mode = settings.value('inasafe/developer_mode', False, type=bool) # whether to show or not a custom Logo self.organisation_logo_path = settings.value( 'inasafe/organisation_logo_path', default_organisation_logo_path(), type=str) flag = bool( settings.value('inasafe/showOrganisationLogoInDockFlag', True, type=bool))
def test_default_organisation_logo_path(self): """Verify the call to default organisation logo path works. """ # Check if it exists org_logo_path = QFile(default_organisation_logo_path()) self.assertTrue(QFile.exists(org_logo_path))
def test_default_organisation_logo_path(self): """Verify the call to default organisation logo path works. """ # Check if it exists org_logo_path = QFile(default_organisation_logo_path()) self.assertTrue(QFile.exists(org_logo_path))