def __init__(self, parent, db_action_type): DbConfigPanel.__init__(self, parent, db_action_type) lbl_db_file = QLabel(self.tr("Database File")) self.gpkg_file_line_edit = QLineEdit() self.gpkg_file_browse_button = QToolButton() self.gpkg_file_browse_button.setText('…') self.gpkg_file_browse_button.setToolTip( self.tr("Browse GeoPackage files")) layout = QGridLayout(self) layout.addWidget(lbl_db_file, 0, 0) layout.addWidget(self.gpkg_file_line_edit, 0, 1) layout.addWidget(self.gpkg_file_browse_button, 0, 2) # validators self.validators = Validators() self.gpkgSaveFileValidator = FileValidator(pattern='*.gpkg', allow_non_existing=True) self.gpkgOpenFileValidator = FileValidator(pattern='*.gpkg') self.gpkg_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.gpkg_file_line_edit.textChanged.connect( self.notify_fields_modified)
def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi(self) QgsGui.instance().enableAutoGeometryRestore(self) self.toml_file_key = None self.buttonBox.accepted.disconnect() self.buttonBox.accepted.connect(self.accepted) self.buttonBox.rejected.disconnect() self.buttonBox.rejected.connect(self.rejected) self.toml_file_browse_button.clicked.connect( make_file_selector( self.toml_file_line_edit, title=self.tr('Open Extra Model Information File (*.toml)'), file_filter=self.tr('Extra Model Info File (*.toml *.TOML)'))) self.pre_script_file_browse_button.clicked.connect( make_file_selector( self.pre_script_file_line_edit, title=self.tr('SQL script to run before (*.sql)'), file_filter=self.tr('SQL script to run before (*.sql *.SQL)'))) self.post_script_file_browse_button.clicked.connect( make_file_selector( self.post_script_file_line_edit, title=self.tr('SQL script to run after (*.sql)'), file_filter=self.tr('SQL script to run after (*.sql *.SQL)'))) self.validators = Validators() self.file_validator = FileValidator( pattern=['*.' + ext for ext in self.ValidExtensions], allow_empty=True) self.toml_file_line_edit.setValidator(self.file_validator) self.sql_file_validator = FileValidator( pattern=['*.' + ext for ext in self.SQLValidExtensions], allow_empty=True) self.pre_script_file_line_edit.setValidator(self.sql_file_validator) self.post_script_file_line_edit.setValidator(self.sql_file_validator) self.restore_configuration() self.toml_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.toml_file_line_edit.textChanged.emit( self.toml_file_line_edit.text()) self.pre_script_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.pre_script_file_line_edit.textChanged.emit( self.pre_script_file_line_edit.text()) self.post_script_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.post_script_file_line_edit.textChanged.emit( self.post_script_file_line_edit.text()) self.bar = QgsMessageBar() self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.layout().addWidget(self.bar, 0, 0, Qt.AlignTop)
def __init__(self, parent, title): QWizardPage.__init__(self, parent) self.workflow_wizard = parent self.setupUi(self) self.setTitle(title) self.file_browse_button.clicked.connect( make_file_selector( self.input_line_edit, title=self.tr( "Open Interlis Model, Transfer or Catalogue File"), file_filter=self. tr("Interlis Model / Transfer / Catalogue File (*.ili *.xtf *.itf *.XTF *.ITF *.xml *.XML *.xls *.XLS *.xlsx *.XLSX)" ), )) self.fileValidator = FileValidator( pattern=["*." + ext for ext in self.ValidExtensions], allow_empty=False) self.ilicache = IliCache( self.workflow_wizard.import_schema_configuration.base_configuration ) self.model_delegate = ModelCompleterDelegate() self._refresh_ili_models_cache() self.input_line_edit.setPlaceholderText( self.tr("[Browse for file or search model from repository]")) # very unhappy about this behavior, but okay for prototype self.first_time_punched = False self.input_line_edit.punched.connect(self._first_time_punch) self.source_list_view.setModel(self.workflow_wizard.source_model) self.add_button.clicked.connect(self._add_row) self.remove_button.clicked.connect(self._remove_selected_rows) self.add_button.setEnabled(self._valid_source()) self.input_line_edit.textChanged.connect( lambda: self.add_button.setEnabled(self._valid_source())) self.remove_button.setEnabled(self._valid_selection()) self.source_list_view.clicked.connect( lambda: self.remove_button.setEnabled(self._valid_selection())) self.add_button.setIcon( QgsApplication.getThemeIcon("/symbologyAdd.svg")) self.remove_button.setIcon( QgsApplication.getThemeIcon("/symbologyRemove.svg")) self.source_list_view.files_dropped.connect( self.workflow_wizard.append_dropped_files)
def __init__(self, parent, db_action_type): DbConfigPanel.__init__(self, parent, db_action_type) self.setupUi(self) # validators self.validators = Validators() self.gpkgSaveFileValidator = FileValidator(pattern='*.gpkg', allow_non_existing=True) self.gpkgOpenFileValidator = FileValidator(pattern='*.gpkg') self.gpkg_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.gpkg_file_line_edit.textChanged.connect( self.notify_fields_modified)
def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi(self) QgsGui.instance().enableAutoGeometryRestore(self) self.toml_file_key = None self.buttonBox.accepted.disconnect() self.buttonBox.accepted.connect(self.accepted) self.buttonBox.rejected.disconnect() self.buttonBox.rejected.connect(self.rejected) self.toml_file_browse_button.clicked.connect( make_file_selector( self.toml_file_line_edit, title=self.tr('Open Extra Model Information File (*.toml)'), file_filter=self.tr('Extra Model Info File (*.toml *.TOML)'))) self.validators = Validators() self.fileValidator = FileValidator( pattern=['*.' + ext for ext in self.ValidExtensions], allow_empty=True) self.toml_file_line_edit.setValidator(self.fileValidator) self.restore_configuration() self.toml_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.toml_file_line_edit.textChanged.emit( self.toml_file_line_edit.text())
def __init__(self, configuration, parent=None): QDialog.__init__(self, parent) self.setupUi(self) self.configuration = configuration self.db_simple_factory = DbSimpleFactory() self.pg_user_line_edit.setText(configuration.super_pg_user) self.pg_password_line_edit.setText(configuration.super_pg_password) self.custom_model_directories_line_edit.setText( configuration.custom_model_directories) self.custom_model_directories_box.setChecked( configuration.custom_model_directories_enabled) self.java_path_line_edit.setText(configuration.java_path) self.java_path_search_button.clicked.connect( qt_utils.make_file_selector(self.java_path_line_edit, self.tr('Select Java application'), self.tr('java (*)'))) self.java_path_line_edit.setValidator( FileValidator(is_executable=True, allow_empty=True)) self.validators = Validators() self.java_path_line_edit.textChanged.connect( self.validators.validate_line_edits) self.ili2db_logfile_path.setText(configuration.logfile_path) self.ili2db_logfile_search_button.clicked.connect( qt_utils.make_save_file_selector(self.ili2db_logfile_path, self.tr('Select log file'), self.tr('Text files (*.txt)'))) self.ili2db_enable_debugging.setChecked( self.configuration.debugging_enabled) self.buttonBox.accepted.connect(self.accepted) self.buttonBox.helpRequested.connect(self.help_requested) self.custom_models_dir_button.clicked.connect( self.show_custom_model_dir) for db_id in self.db_simple_factory.get_db_list(False): db_id |= DbIliMode.ili self.ili2db_tool_combobox.addItem(db_id.name, db_id) self.ili2db_action_combobox.addItem(self.tr('Schema Import'), 'schemaimport') self.ili2db_action_combobox.addItem(self.tr('Data Import'), 'import') self.ili2db_action_combobox.addItem(self.tr('Data Export'), 'export') self.ili2db_tool_combobox.currentIndexChanged.connect( self.ili2db_command_reload) self.ili2db_action_combobox.currentIndexChanged.connect( self.ili2db_command_reload) self.ili2db_command_reload() settings = QSettings() drop_mode = DropMode[settings.value('QgisModelBaker/drop_mode', DropMode.ASK.name, str)] self.chk_dontask_to_handle_dropped_files.setEnabled( drop_mode != DropMode.ASK) self.chk_dontask_to_handle_dropped_files.setChecked( drop_mode != DropMode.ASK)
def __init__(self, parent, db_action_type): DbConfigPanel.__init__(self, parent, db_action_type) self.setupUi(self) # validators self.validators = Validators() self.gpkgSaveFileValidator = FileValidator( pattern=['*.' + ext for ext in self.ValidExtensions], allow_non_existing=True) self.gpkgOpenFileValidator = FileValidator( pattern=['*.' + ext for ext in self.ValidExtensions], allow_non_existing=( self._db_action_type == DbActionType.IMPORT_DATA)) self.gpkg_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.gpkg_file_line_edit.textChanged.connect( self.notify_fields_modified)
def __init__(self, parent, title): QWizardPage.__init__(self, parent) self.workflow_wizard = parent self.setupUi(self) self.setTitle(title) self.filter_data_panel = FilterDataPanel(self.workflow_wizard) self.filter_layout.addWidget(self.filter_data_panel) self.is_complete = False self.xtf_file_browse_button.clicked.connect( make_save_file_selector( self.xtf_file_line_edit, title=self.tr("Save in XTF Transfer File"), file_filter=self. tr("XTF Transfer File (*.xtf *XTF);;Interlis 1 Transfer File (*.itf *ITF);;XML (*.xml *XML);;GML (*.gml *GML)" ), extension=".xtf", extensions=["." + ext for ext in self.ValidExtensions], )) self.validators = Validators() fileValidator = FileValidator( pattern=["*." + ext for ext in self.ValidExtensions], allow_non_existing=True, ) self.xtf_file_line_edit.setValidator(fileValidator) self.xtf_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.xtf_file_line_edit.textChanged.connect( self._set_current_export_target) self.xtf_file_line_edit.textChanged.emit( self.xtf_file_line_edit.text())
def __init__(self, base_config, parent=None): QDialog.__init__(self, parent) self.setupUi(self) self.db_simple_factory = DbSimpleFactory() QgsGui.instance().enableAutoGeometryRestore(self) self.buttonBox.accepted.disconnect() self.buttonBox.clear() self.buttonBox.addButton(QDialogButtonBox.Cancel) self.buttonBox.addButton(QDialogButtonBox.Help) self.buttonBox.helpRequested.connect(self.help_requested) self.export_text = self.tr("Export") self.set_button_to_export_action = QAction(self.export_text, None) self.set_button_to_export_action.triggered.connect( self.set_button_to_export) self.export_without_validation_text = self.tr( "Export without validation") self.set_button_to_export_without_validation_action = QAction( self.export_without_validation_text, None) self.set_button_to_export_without_validation_action.triggered.connect( self.set_button_to_export_without_validation) self.edit_command_action = QAction(self.tr("Edit ili2db command"), None) self.edit_command_action.triggered.connect(self.edit_command) self.export_tool_button.addAction( self.set_button_to_export_without_validation_action) self.export_tool_button.addAction(self.edit_command_action) self.export_tool_button.setText(self.export_text) self.export_tool_button.clicked.connect(self.accepted) self.xtf_file_browse_button.clicked.connect( make_save_file_selector( self.xtf_file_line_edit, title=self.tr("Save in XTF Transfer File"), file_filter=self. tr("XTF Transfer File (*.xtf *XTF);;Interlis 1 Transfer File (*.itf *ITF);;XML (*.xml *XML);;GML (*.gml *GML)" ), extension=".xtf", extensions=["." + ext for ext in self.ValidExtensions], )) self.xtf_file_browse_button.clicked.connect( self.xtf_browser_opened_to_true) self.xtf_browser_was_opened = False self.type_combo_box.clear() self._lst_panel = dict() for db_id in self.db_simple_factory.get_db_list(False): self.type_combo_box.addItem(displayDbIliMode[db_id], db_id) db_factory = self.db_simple_factory.create_factory(db_id) item_panel = db_factory.get_config_panel(self, DbActionType.EXPORT) self._lst_panel[db_id] = item_panel self.db_layout.addWidget(item_panel) self.validators = Validators() fileValidator = FileValidator( pattern=["*." + ext for ext in self.ValidExtensions], allow_non_existing=True, ) self.xtf_file_line_edit.setValidator(fileValidator) self.xtf_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.xtf_file_line_edit.textChanged.connect( self.xtf_browser_opened_to_false) self.xtf_file_line_edit.textChanged.emit( self.xtf_file_line_edit.text()) # Reset to export as default text self.xtf_file_line_edit.textChanged.connect(self.set_button_to_export) # refresh the models on changing values but avoid massive db connects by timer self.refreshTimer = QTimer() self.refreshTimer.setSingleShot(True) self.refreshTimer.timeout.connect(self.refresh_models) for key, value in self._lst_panel.items(): value.notify_fields_modified.connect( self.request_for_refresh_models) self.validate_data = True # validates exported data by default, We use --disableValidation when is False self.base_configuration = base_config self.restore_configuration() self.export_models_model = ExportModels() self.export_models_view.setModel(self.export_models_model) self.export_models_view.clicked.connect(self.export_models_model.check) self.export_models_view.space_pressed.connect( self.export_models_model.check) self.request_for_refresh_models() self.type_combo_box.currentIndexChanged.connect(self.type_changed) self.bar = QgsMessageBar() self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.txtStdout.setLayout(QGridLayout()) self.txtStdout.layout().setContentsMargins(0, 0, 0, 0) self.txtStdout.layout().addWidget(self.bar, 0, 0, Qt.AlignTop)
def __init__(self, iface, base_config, parent=None): QDialog.__init__(self, parent) self.setupUi(self) self.iface = iface self.db_simple_factory = DbSimpleFactory() QgsGui.instance().enableAutoGeometryRestore(self) self.buttonBox.accepted.disconnect() self.buttonBox.accepted.connect(self.accepted) self.buttonBox.clear() self.buttonBox.addButton(QDialogButtonBox.Cancel) create_button = self.buttonBox.addButton(self.tr('Create'), QDialogButtonBox.AcceptRole) create_button.setDefault(True) self.ili_file_browse_button.clicked.connect( make_file_selector( self.ili_file_line_edit, title=self.tr('Open Interlis Model'), file_filter=self.tr('Interlis Model File (*.ili *.ILI)'))) self.buttonBox.addButton(QDialogButtonBox.Help) self.buttonBox.helpRequested.connect(self.help_requested) self.crs = QgsCoordinateReferenceSystem() self.ili2db_options = Ili2dbOptionsDialog() self.ili2db_options_button.clicked.connect(self.ili2db_options.open) self.ili2db_options.finished.connect(self.fill_toml_file_info_label) self.multiple_models_dialog = MultipleModelsDialog(self) self.multiple_models_button.clicked.connect( self.multiple_models_dialog.open) self.multiple_models_dialog.accepted.connect( self.fill_models_line_edit) self.type_combo_box.clear() self._lst_panel = dict() for db_id in self.db_simple_factory.get_db_list(True): self.type_combo_box.addItem(displayDbIliMode[db_id], db_id) for db_id in self.db_simple_factory.get_db_list(False): db_factory = self.db_simple_factory.create_factory(db_id) item_panel = db_factory.get_config_panel(self, DbActionType.GENERATE) self._lst_panel[db_id] = item_panel self.db_layout.addWidget(item_panel) self.type_combo_box.currentIndexChanged.connect(self.type_changed) self.txtStdout.anchorClicked.connect(self.link_activated) self.crsSelector.crsChanged.connect(self.crs_changed) self.base_configuration = base_config self.bar = QgsMessageBar() self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.txtStdout.setLayout(QGridLayout()) self.txtStdout.layout().setContentsMargins(0, 0, 0, 0) self.txtStdout.layout().addWidget(self.bar, 0, 0, Qt.AlignTop) self.validators = Validators() nonEmptyValidator = NonEmptyStringValidator() fileValidator = FileValidator( pattern=['*.' + ext for ext in self.ValidExtensions], allow_empty=True) self.restore_configuration() self.ili_models_line_edit.setValidator(nonEmptyValidator) self.ili_file_line_edit.setValidator(fileValidator) self.ili_models_line_edit.textChanged.connect( self.validators.validate_line_edits) self.ili_models_line_edit.textChanged.emit( self.ili_models_line_edit.text()) self.ili_models_line_edit.textChanged.connect(self.on_model_changed) self.ili_models_line_edit.textChanged.connect( self.complete_models_completer) self.ili_models_line_edit.punched.connect( self.complete_models_completer) self.ilicache = IliCache(self.base_configuration) self.refresh_ili_cache() self.ili_models_line_edit.setPlaceholderText( self.tr('[Search model from repository]')) self.ili_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.ili_file_line_edit.textChanged.connect(self.ili_file_changed) self.ili_file_line_edit.textChanged.emit( self.ili_file_line_edit.text())
def __init__(self, iface, base_config, parent=None): QDialog.__init__(self, parent) self.iface = iface self.setupUi(self) QgsGui.instance().enableAutoGeometryRestore(self) self.db_simple_factory = DbSimpleFactory() self.buttonBox.accepted.disconnect() self.buttonBox.clear() self.buttonBox.addButton(QDialogButtonBox.Cancel) self.buttonBox.addButton(QDialogButtonBox.Help) self.buttonBox.helpRequested.connect(self.help_requested) self.import_text = self.tr("Import Data") self.set_button_to_import_action = QAction(self.import_text, None) self.set_button_to_import_action.triggered.connect( self.set_button_to_import) self.import_without_validation_text = self.tr( "Import without validation") self.set_button_to_import_without_validation_action = QAction( self.import_without_validation_text, None) self.set_button_to_import_without_validation_action.triggered.connect( self.set_button_to_import_without_validation) self.edit_command_action = QAction(self.tr("Edit ili2db command"), None) self.edit_command_action.triggered.connect(self.edit_command) self.import_tool_button.addAction( self.set_button_to_import_without_validation_action) self.import_tool_button.addAction(self.edit_command_action) self.import_tool_button.setText(self.import_text) self.import_tool_button.clicked.connect(self.accepted) self.xtf_file_browse_button.clicked.connect( make_file_selector( self.xtf_file_line_edit, title=self.tr("Open Transfer or Catalog File"), file_filter=self. tr("Transfer File (*.xtf *.itf *.XTF *.ITF);;Catalogue File (*.xml *.XML *.xls *.XLS *.xlsx *.XLSX)" ), )) self.type_combo_box.clear() self._lst_panel = dict() for db_id in self.db_simple_factory.get_db_list(False): self.type_combo_box.addItem(displayDbIliMode[db_id], db_id) db_factory = self.db_simple_factory.create_factory(db_id) item_panel = db_factory.get_config_panel(self, DbActionType.IMPORT_DATA) self._lst_panel[db_id] = item_panel self.db_layout.addWidget(item_panel) self.type_combo_box.currentIndexChanged.connect(self.type_changed) self.ili2db_options = Ili2dbOptionsDialog(self, False) self.ili2db_options_button.clicked.connect(self.ili2db_options.open) self.ili2db_options.finished.connect(self.fill_toml_file_info_label) self.multiple_models_dialog = MultipleModelsDialog(self) self.multiple_models_button.clicked.connect( self.multiple_models_dialog.open) self.multiple_models_dialog.accepted.connect( self.fill_models_line_edit) self.validate_data = True # validates imported data by default, We use --disableValidation when is False self.base_configuration = base_config self.restore_configuration() self.validators = Validators() fileValidator = FileValidator( pattern=["*." + ext for ext in self.ValidExtensions]) self.xtf_file_line_edit.setValidator(fileValidator) self.ili_models_line_edit.setPlaceholderText( self.tr("[Search model in repository]")) self.ili_models_line_edit.textChanged.connect( self.complete_models_completer) self.ili_models_line_edit.punched.connect( self.complete_models_completer) self.xtf_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.xtf_file_line_edit.textChanged.emit( self.xtf_file_line_edit.text()) # Reset to import as default text self.xtf_file_line_edit.textChanged.connect(self.set_button_to_import) settings = QSettings() ilifile = settings.value("QgisModelBaker/ili2db/ilifile") self.ilicache = IliCache(base_config, ilifile or None) self.update_models_completer() self.ilicache.refresh() self.bar = QgsMessageBar() self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.txtStdout.setLayout(QGridLayout()) self.txtStdout.layout().setContentsMargins(0, 0, 0, 0) self.txtStdout.layout().addWidget(self.bar, 0, 0, Qt.AlignTop)
def __init__(self, base_config, parent=None): QDialog.__init__(self, parent) self.setupUi(self) QgsGui.instance().enableAutoGeometryRestore(self) self.db_simple_factory = DbSimpleFactory() self.buttonBox.accepted.disconnect() self.buttonBox.accepted.connect(self.accepted) self.buttonBox.clear() self.buttonBox.addButton(QDialogButtonBox.Cancel) self.buttonBox.addButton(self.tr('Import Data'), QDialogButtonBox.AcceptRole) self.buttonBox.addButton(QDialogButtonBox.Help) self.buttonBox.helpRequested.connect(self.help_requested) self.xtf_file_browse_button.clicked.connect( make_file_selector( self.xtf_file_line_edit, title=self.tr('Open Transfer or Catalog File'), file_filter=self. tr('Transfer File (*.xtf *.itf);;Catalogue File (*.xml *.xls *.xlsx)' ))) self.type_combo_box.clear() self._lst_panel = dict() for db_id in self.db_simple_factory.get_db_list(False): self.type_combo_box.addItem(displayDbIliMode[db_id], db_id) db_factory = self.db_simple_factory.create_factory(db_id) item_panel = db_factory.get_config_panel(self, DbActionType.IMPORT_DATA) self._lst_panel[db_id] = item_panel self.db_layout.addWidget(item_panel) self.type_combo_box.currentIndexChanged.connect(self.type_changed) self.ili2db_options = Ili2dbOptionsDialog() self.ili2db_options_button.clicked.connect(self.ili2db_options.open) self.ili2db_options.finished.connect(self.fill_toml_file_info_label) self.multiple_models_dialog = MultipleModelsDialog(self) self.multiple_models_button.clicked.connect( self.multiple_models_dialog.open) self.multiple_models_dialog.accepted.connect( self.fill_models_line_edit) self.base_configuration = base_config self.restore_configuration() self.validators = Validators() fileValidator = FileValidator( pattern=['*.xtf', '*.itf', '*.pdf', '*.xml', '*.xls', '*.xlsx']) self.xtf_file_line_edit.setValidator(fileValidator) self.ili_models_line_edit.setPlaceholderText( self.tr('[Search model in repository]')) self.ili_models_line_edit.textChanged.connect( self.complete_models_completer) self.ili_models_line_edit.punched.connect( self.complete_models_completer) self.xtf_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.xtf_file_line_edit.textChanged.emit( self.xtf_file_line_edit.text()) settings = QSettings() ilifile = settings.value('QgisModelBaker/ili2db/ilifile') self.ilicache = IliCache(base_config, ilifile or None) self.update_models_completer() self.ilicache.refresh()
def __init__(self, base_config, parent=None): QDialog.__init__(self, parent) self.setupUi(self) self.db_simple_factory = DbSimpleFactory() QgsGui.instance().enableAutoGeometryRestore(self) self.buttonBox.accepted.disconnect() self.buttonBox.clicked.connect(self.button_box_clicked) self.buttonBox.clear() self.buttonBox.addButton(QDialogButtonBox.Cancel) self.export_button_name = self.tr('Export') self.export_without_validate_button_name = self.tr( 'Export without validation') self.buttonBox.addButton(self.export_button_name, QDialogButtonBox.AcceptRole) self.buttonBox.addButton(QDialogButtonBox.Help) self.buttonBox.helpRequested.connect(self.help_requested) self.xtf_file_browse_button.clicked.connect( make_save_file_selector( self.xtf_file_line_edit, title=self.tr('Save in XTF Transfer File'), file_filter=self. tr('XTF Transfer File (*.xtf *XTF);;Interlis 1 Transfer File (*.itf *ITF);;XML (*.xml *XML);;GML (*.gml *GML)' ), extensions=['.' + ext for ext in self.ValidExtensions])) self.xtf_file_browse_button.clicked.connect( self.xtf_browser_opened_to_true) self.xtf_browser_was_opened = False self.type_combo_box.clear() self._lst_panel = dict() for db_id in self.db_simple_factory.get_db_list(False): self.type_combo_box.addItem(displayDbIliMode[db_id], db_id) db_factory = self.db_simple_factory.create_factory(db_id) item_panel = db_factory.get_config_panel(self, DbActionType.EXPORT) self._lst_panel[db_id] = item_panel self.db_layout.addWidget(item_panel) self.validators = Validators() fileValidator = FileValidator( pattern=['*.' + ext for ext in self.ValidExtensions], allow_non_existing=True) self.xtf_file_line_edit.setValidator(fileValidator) self.xtf_file_line_edit.textChanged.connect( self.validators.validate_line_edits) self.xtf_file_line_edit.textChanged.connect( self.xtf_browser_opened_to_false) self.xtf_file_line_edit.textChanged.emit( self.xtf_file_line_edit.text()) # Remove export without validate button when xtf change self.xtf_file_line_edit.textChanged.connect( self.remove_export_without_validate_button) #refresh the models on changing values but avoid massive db connects by timer self.refreshTimer = QTimer() self.refreshTimer.setSingleShot(True) self.refreshTimer.timeout.connect(self.refresh_models) for key, value in self._lst_panel.items(): value.notify_fields_modified.connect( self.request_for_refresh_models) self.validate_data = True # validates exported data by default, We use --disableValidation when is False self.base_configuration = base_config self.restore_configuration() self.export_models_model = ExportModels() self.refresh_models() self.type_combo_box.currentIndexChanged.connect(self.type_changed)
def __init__(self, parent=None, remove_create_tid_group=True): """ remove_create_tid_group is to remove the "Create Import Tid" setting because on Schema Import it does nothing (legacy issues). After removing the single dialog for data import, this setting can be removed completely from the GUI. """ QDialog.__init__(self, parent) self.setupUi(self) QgsGui.instance().enableAutoGeometryRestore(self) self.toml_file_key = None self.buttonBox.accepted.disconnect() self.buttonBox.accepted.connect(self.accepted) self.buttonBox.rejected.disconnect() self.buttonBox.rejected.connect(self.rejected) self.toml_file_browse_button.clicked.connect( make_file_selector( self.toml_file_line_edit, title=self.tr("Open Extra Model Information File (*.toml)"), file_filter=self.tr("Extra Model Info File (*.toml *.TOML)"), ) ) self.pre_script_file_browse_button.clicked.connect( make_file_selector( self.pre_script_file_line_edit, title=self.tr("SQL script to run before (*.sql)"), file_filter=self.tr("SQL script to run before (*.sql *.SQL)"), ) ) self.post_script_file_browse_button.clicked.connect( make_file_selector( self.post_script_file_line_edit, title=self.tr("SQL script to run after (*.sql)"), file_filter=self.tr("SQL script to run after (*.sql *.SQL)"), ) ) self.validators = Validators() self.file_validator = FileValidator( pattern=["*." + ext for ext in self.ValidExtensions], allow_empty=True ) self.toml_file_line_edit.setValidator(self.file_validator) self.sql_file_validator = FileValidator( pattern=["*." + ext for ext in self.SQLValidExtensions], allow_empty=True ) self.pre_script_file_line_edit.setValidator(self.sql_file_validator) self.post_script_file_line_edit.setValidator(self.sql_file_validator) self.restore_configuration() self.toml_file_line_edit.textChanged.connect( self.validators.validate_line_edits ) self.toml_file_line_edit.textChanged.emit(self.toml_file_line_edit.text()) self.pre_script_file_line_edit.textChanged.connect( self.validators.validate_line_edits ) self.pre_script_file_line_edit.textChanged.emit( self.pre_script_file_line_edit.text() ) self.post_script_file_line_edit.textChanged.connect( self.validators.validate_line_edits ) self.post_script_file_line_edit.textChanged.emit( self.post_script_file_line_edit.text() ) self.create_import_tid_groupbox.setHidden(remove_create_tid_group) self.bar = QgsMessageBar() self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.layout().addWidget(self.bar, 0, 0, Qt.AlignTop)
class ImportSourceSelectionPage(QWizardPage, PAGE_UI): ValidExtensions = gui_utils.IliExtensions + gui_utils.TransferExtensions def __init__(self, parent, title): QWizardPage.__init__(self, parent) self.workflow_wizard = parent self.setupUi(self) self.setTitle(title) self.file_browse_button.clicked.connect( make_file_selector( self.input_line_edit, title=self.tr( "Open Interlis Model, Transfer or Catalogue File"), file_filter=self. tr("Interlis Model / Transfer / Catalogue File (*.ili *.xtf *.itf *.XTF *.ITF *.xml *.XML *.xls *.XLS *.xlsx *.XLSX)" ), )) self.fileValidator = FileValidator( pattern=["*." + ext for ext in self.ValidExtensions], allow_empty=False) self.ilicache = IliCache( self.workflow_wizard.import_schema_configuration.base_configuration ) self.model_delegate = ModelCompleterDelegate() self._refresh_ili_models_cache() self.input_line_edit.setPlaceholderText( self.tr("[Browse for file or search model from repository]")) # very unhappy about this behavior, but okay for prototype self.first_time_punched = False self.input_line_edit.punched.connect(self._first_time_punch) self.source_list_view.setModel(self.workflow_wizard.source_model) self.add_button.clicked.connect(self._add_row) self.remove_button.clicked.connect(self._remove_selected_rows) self.add_button.setEnabled(self._valid_source()) self.input_line_edit.textChanged.connect( lambda: self.add_button.setEnabled(self._valid_source())) self.remove_button.setEnabled(self._valid_selection()) self.source_list_view.clicked.connect( lambda: self.remove_button.setEnabled(self._valid_selection())) self.add_button.setIcon( QgsApplication.getThemeIcon("/symbologyAdd.svg")) self.remove_button.setIcon( QgsApplication.getThemeIcon("/symbologyRemove.svg")) self.source_list_view.files_dropped.connect( self.workflow_wizard.append_dropped_files) def nextId(self): self._disconnect_punch_slots() return self.workflow_wizard.next_id() def _first_time_punch(self): # might be nicer self.input_line_edit.punched.disconnect(self._first_time_punch) self.input_line_edit.textChanged.emit(self.input_line_edit.text()) self.input_line_edit.textChanged.connect( self._complete_models_completer) self.input_line_edit.punched.connect(self._complete_models_completer) self.first_time_punched = True def _disconnect_punch_slots(self): # might be nicer if self.first_time_punched: self.input_line_edit.textChanged.disconnect( self._complete_models_completer) self.input_line_edit.punched.disconnect( self._complete_models_completer) self.input_line_edit.punched.connect(self._first_time_punch) self.first_time_punched = False def _refresh_ili_models_cache(self): self.ilicache.new_message.connect( self.workflow_wizard.log_panel.show_message) self.ilicache.refresh() self.update_models_completer() def _complete_models_completer(self): if self.input_line_edit.hasFocus(): if not self.input_line_edit.text(): self.input_line_edit.completer().setCompletionMode( QCompleter.UnfilteredPopupCompletion) self.input_line_edit.completer().complete() else: match_contains = (self.input_line_edit.completer( ).completionModel().match( self.input_line_edit.completer().completionModel().index( 0, 0), Qt.DisplayRole, self.input_line_edit.text(), -1, Qt.MatchContains, )) if len(match_contains) > 1: self.input_line_edit.completer().setCompletionMode( QCompleter.PopupCompletion) self.input_line_edit.completer().complete() def _valid_source(self): match_contains = ( self.input_line_edit.completer().completionModel().match( self.input_line_edit.completer().completionModel().index(0, 0), Qt.DisplayRole, self.input_line_edit.text(), -1, Qt.MatchExactly, )) return (len(match_contains) == 1 or self.fileValidator.validate( self.input_line_edit.text(), 0)[0] == QValidator.Acceptable) def _valid_selection(self): return bool(self.source_list_view.selectedIndexes()) def update_models_completer(self): completer = QCompleter(self.ilicache.model, self.input_line_edit) completer.setCaseSensitivity(Qt.CaseInsensitive) completer.setFilterMode(Qt.MatchContains) completer.popup().setItemDelegate(self.model_delegate) self.input_line_edit.setCompleter(completer) def _add_row(self): source = self.input_line_edit.text() self.workflow_wizard.add_source( source, self.tr("Added by user over the wizard.")) self.input_line_edit.clearFocus() self.input_line_edit.clear() def _remove_selected_rows(self): indices = self.source_list_view.selectionModel().selectedIndexes() self.source_list_view.model().remove_sources(indices) self.remove_button.setEnabled(self._valid_selection())