def __init__(self, parent, controller): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.parent = parent self._controller = controller self.logger = Logger() self.app = AppInterface() self.setDockMode(True) self.setPanelTitle(QCoreApplication.translate("AllocateParcelsFieldDataCapturePanelWidget", "Allocate parcels")) self.parent.setWindowTitle(QCoreApplication.translate("AllocateParcelsFieldDataCapturePanelWidget", "Allocate parcels")) self.tbl_parcels.resizeColumnsToContents() self.txt_search.valueChanged.connect(self.search_value_changed) self.tbl_parcels.itemSelectionChanged.connect(self.selection_changed) self.btn_allocate.clicked.connect(self.call_allocate_parcels_to_receiver_panel) self.btn_configure_receivers.clicked.connect(self.configure_receivers_panel_requested) self.btn_show_summary.clicked.connect(self.split_data_for_receivers_panel_requested) self.chk_show_only_not_allocated.stateChanged.connect(self.chk_check_state_changed) self.btn_reallocate.clicked.connect(self.reallocate_clicked) self.connect_to_plot_selection(True) self.__parcel_data = dict() # {parcel_fid: (parcel_number, surveyor_name)} self.__selected_items = dict() # {parcel_fid: parcel_number}
def __init__(self, parent, controller, parcels_to_be_allocated): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.parent = parent self._controller = controller self.logger = Logger() # Main dicts to store parcels that are not yet allocated but were selected # from the previous panel and parcels that are already allocated in the DB self.__parcels_to_be_allocated = parcels_to_be_allocated # {parcel_fid: parcel_number} self.__parcels_already_allocated = dict( ) # {parcel_fid: parcel_number} self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate( "BaseAllocateParcelsToReceiverPanelWidget", "Allocate parcels to receiver")) self.panelAccepted.connect(self.panel_accepted) self.btn_save_allocation.clicked.connect(self.save_allocation) self.btn_discard_parcels.clicked.connect(self.discard_parcels) self.cbo_receiver.currentIndexChanged.connect(self.receiver_changed) self.__txt_already_allocated = QCoreApplication.translate( "BaseAllocateParcelsToReceiverPanelWidget", "{} already allocated") self.__txt_to_be_allocated = QCoreApplication.translate( "BaseAllocateParcelsToReceiverPanelWidget", "{} to be allocated") self.fill_table() self.fill_receivers() self.tbl_parcels.resizeColumnsToContents()
def __init__(self, parent, utils, filter_parcels=dict()): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.parent = parent self.utils = utils self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate( "ChangesAllParcelsPanelWidget", "Change detection for a set of parcels")) self.tbl_changes_all_parcels.setColumnWidth(0, 270) self.compared_parcels_data = dict() self.tbl_changes_all_parcels.itemDoubleClicked.connect( self.call_changes_per_parcel_panel) self.btn_select_all_listed_parcels.clicked.connect( partial(self.select_related_plots_listed, True)) self.tbl_changes_all_parcels.setContextMenuPolicy(Qt.CustomContextMenu) self.tbl_changes_all_parcels.customContextMenuRequested.connect( self.show_context_menu) # Remove selection in plot layers self.utils._layers[PLOT_TABLE][LAYER].removeSelection() self.utils._official_layers[PLOT_TABLE][LAYER].removeSelection() self.fill_table(filter_parcels)
def __init__(self, user, parent=None): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self._user = user self.parent = parent self.logger = Logger() self.session = STSession() self._current_widget = None self.home_widget = loadUi( get_ui_file_path('transitional_system/home_widget.ui'), QWidget()) self.tasks_widget = TasksWidget( user ) # No need to use parent, as the layout will call setParent automatically self.tasks_widget.task_panel_requested.connect(self.show_task_panel) self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("TransitionalSystemInitialPanelWidget", "Transitional System")) self.btn_home.clicked.connect(self.show_home_widget) self.btn_view_tasks.clicked.connect(self.show_tasks_widget) self.btn_logout.clicked.connect(self.logout_requested) # Now update controls to show an initial state to users self._update_user_info() self.show_tasks_widget()
def __init__(self, parent, utils, dict_parcels, types_change_detection): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.parent = parent self.utils = utils self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate( "ChangesAllParcelsPanelWidget", "Change detection for a set of parcels")) self.tbl_changes_all_parcels.setColumnWidth(0, 270) self.compared_parcels_data = dict() self.tbl_changes_all_parcels.itemDoubleClicked.connect( self.call_changes_per_parcel_panel) self.btn_select_all_listed_parcels.clicked.connect( partial(self.select_related_plots_listed, True)) self.tbl_changes_all_parcels.setContextMenuPolicy(Qt.CustomContextMenu) self.tbl_changes_all_parcels.customContextMenuRequested.connect( self.show_context_menu) self.panelAccepted.connect(self.deselect_plots) self.fill_table(dict_parcels, types_change_detection)
def __init__(self, parent, utils): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.parent = parent self.utils = utils self.setDockMode(True) self.setPanelTitle(QCoreApplication.translate("ParcelsChangesSummaryPanelWidget", "Summary of changes detected"))
def __init__(self, parent, utils, parcel_number=None, collected_parcel_t_id=None): QgsPanelWidget.__init__(self, None) self.setupUi(self) self.parent = parent self.utils = utils self.logger = Logger() self.app = AppInterface() self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("ChangesPerParcelPanelWidget", "Change detection per parcel")) self._current_supplies_substring = "" self._current_substring = "" self.utils.add_layers() self.fill_combos() # Remove selection in plot layers self.utils._layers[self.utils._db.names.LC_PLOT_T].removeSelection() self.utils._supplies_layers[ self.utils._supplies_db.names.GC_PLOT_T].removeSelection() # Map tool before activate map swipe tool self.init_map_tool = self.utils.canvas.mapTool() self.active_map_tool_before_custom = None self.btn_identify_plot.setIcon( QIcon(":/Asistente-LADM-COL/resources/images/spatial_unit.png")) self.btn_identify_plot.clicked.connect(self.btn_plot_toggled) # Create maptool self.maptool_identify = QgsMapToolIdentifyFeature(self.utils.canvas) # Set connections self.btn_alphanumeric_query.clicked.connect(self.alphanumeric_query) self.chk_show_all_plots.toggled.connect(self.show_all_plots) self.cbo_parcel_fields.currentIndexChanged.connect( self.search_field_updated) self.panelAccepted.connect(self.initialize_tools_and_layers) self.tbl_changes_per_parcel.itemDoubleClicked.connect( self.call_party_panel) self.initialize_field_values_line_edit() self.initialize_tools_and_layers() if parcel_number is not None: # Do a search! self.txt_alphanumeric_query.setValue(parcel_number) if collected_parcel_t_id is not None: # Search data for a duplicated parcel_number, so, take the t_id into account! self.search_data(parcel_number=parcel_number, collected_parcel_t_id=collected_parcel_t_id) else: self.search_data(parcel_number=parcel_number)
def __init__(self, controller, parent=None): QgsPanelWidget.__init__(self, None) self.setupUi(self) self.__controller = controller self.parent = parent self.app = AppInterface() self.logger = Logger() self.__mode = EnumQualityRulePanelMode.VALIDATE self.__selected_items_list = list() self.__icon_names = ['schema.png', 'points.png', 'lines.png', 'polygons.png', 'relationships.svg'] self.txt_search.addAction(QIcon(":/Asistente-LADM-COL/resources/images/search.png"), QLineEdit.LeadingPosition) self.setDockMode(True) self.setPanelTitle(QCoreApplication.translate("QualityRulesInitialPanelWidget", "Quality Rules")) self.tab.setTabEnabled(TAB_READ_INDEX, False) # TODO: Remove when implemented self.__restore_settings() # TODO: uncomment the following block when implemented self.lbl_presets.setEnabled(False) self.cbo_presets.setEnabled(False) self.btn_save_selection.setEnabled(False) self.btn_delete_selection.setEnabled(False) self.txt_search.textChanged.connect(self.__search_text_changed) self.btn_validate.clicked.connect(self.__validate_clicked) self.btn_read.clicked.connect(self.__read_clicked) self.btn_help.clicked.connect(self.__show_help) self.trw_qrs.itemSelectionChanged.connect(self.__selection_changed) self.tab.currentChanged.connect(self.__tab_changed) dir_selector = make_folder_selector(self.txt_dir_path, title=QCoreApplication.translate("QualityRulesInitialPanelWidget", "Select a folder to store quality errors"), parent=None, setting_property="qr_results_dir_path") self.btn_dir_path.clicked.connect(dir_selector) db_file_selector = make_file_selector(self.txt_db_path, title=QCoreApplication.translate("QualityRulesInitialPanelWidget", "Open GeoPackage database file with quality errors"), file_filter=QCoreApplication.translate("QualityRulesInitialPanelWidget", "GeoPackage Database (*.gpkg)"), setting_property="qr_db_file_path") self.btn_db_path.clicked.connect(db_file_selector) self.__tab_changed(self.tab.currentIndex()) # Direct call to initialize controls
def __init__(self, parent, utils, data): QgsPanelWidget.__init__(self, None) self.setupUi(self) self.parent = parent self.utils = utils # dict with 2 k:v pairs, one for collected data and one for official data # Values are dicts themselves, with the party info we compare (see PARTY_FIELDS_TO_COMPARE + right type) self.data = data self.setDockMode(True) # Set connections # self.panelAccepted.connect(self.initialize_tools_and_layers) if data is not None: # Do a search! self.fill_table()
def __init__(self, controller, mode, parent=None): QgsPanelWidget.__init__(self, None) self.setupUi(self) self.__controller = controller self.__mode = mode self.parent = parent self.logger = Logger() self.__selected_item = None # qr_key self.__icon_names = [ 'schema.png', 'points.png', 'lines.png', 'polygons.png', 'relationships.svg' ] self.__block_control_updates = False self.txt_search.addAction( QIcon(":/Asistente-LADM-COL/resources/images/search.png"), QLineEdit.LeadingPosition) self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("QualityRulesGeneralResultsPanelWidget", "Validation results")) self.trw_qrs.header().setStretchLastSection(False) self.trw_qrs.setColumnWidth(RESULT_COLUMN, 50) self.trw_qrs.header().setSectionResizeMode(0, QHeaderView.Stretch) self.pbr_total_progress.setValue(0) self.txt_search.textChanged.connect(self.__search_text_changed) self.btn_open_report.clicked.connect(self.__controller.open_report) self.btn_view_error_results.clicked.connect( self.__view_error_results_clicked) self.btn_help.clicked.connect(self.__show_help) self.trw_qrs.itemSelectionChanged.connect(self.__selection_changed) self.panelAccepted.connect(self.__reset) # To keep track of the connections to 'partial' slots, because we need to delete them when the panel is closed self.__partial_connections = list() # Load available rules for current role and current db models self.__load_available_rules() self.__enable_panel_controls( False ) # Panel controls should be enabled after all rules have validation results
def __init__(self, parent, controller): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.parent = parent self.logger = Logger() self._controller = controller self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("BaseConfigureReceiversPanelWidget", "Configure receivers")) self.panelAccepted.connect(self.panel_accepted) self.tbl_receivers.itemSelectionChanged.connect(self.selection_changed) self.btn_save.clicked.connect(self.save_receiver) self.btn_delete.clicked.connect(self.delete_receiver) self.btn_delete.setEnabled(False) self.fill_data() self.tbl_receivers.resizeColumnsToContents()
def __init__(self, parent, controller): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.parent = parent self._controller = controller self.logger = Logger() self.app = AppInterface() self.setDockMode(True) self.setPanelTitle(QCoreApplication.translate("BaseSplitDataForReceiversPanelWidget", "Convert to offline")) self.parent.setWindowTitle(QCoreApplication.translate("BaseSplitDataForReceiversPanelWidget", "Allocate parcels")) self.mQgsFileWidget.lineEdit().setPlaceholderText(QCoreApplication.translate("BaseSplitDataForReceiversPanelWidget", "Choose the output folder...")) self.mQgsFileWidget.setDefaultRoot(self.app.settings.export_dir_field_data) self.panelAccepted.connect(self.panel_accepted) self._controller.export_field_data_progress.connect(self.update_progress) self.btn_split_data.clicked.connect(self.export_field_data) self.fill_data()
def __init__(self, task_id, parent): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.session = STSession() self._task = self.session.task_manager.get_task(task_id) self.parent = parent self.logger = Logger() self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("TaskPanelWidget", "Task details")) self.trw_task_steps.itemDoubleClicked.connect(self.trigger_action) self.trw_task_steps.itemChanged.connect(self.update_step_controls) self.session.task_manager.task_started.connect(self.update_task) self.session.task_manager.task_canceled.connect(self.acceptPanel) self.session.task_manager.task_closed.connect(self.acceptPanel) self.btn_start_task.clicked.connect(self.start_task) self.btn_cancel_task.clicked.connect(self.cancel_task) self.btn_close_task.clicked.connect(self.close_task) self.initialize_gui()
def __init__(self, controller, parent=None): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.__controller = controller self.parent = parent self.logger = Logger() self.__selected_item = None # t_id of the qr error self.txt_search.addAction( QIcon(":/Asistente-LADM-COL/resources/images/search.png"), QLineEdit.LeadingPosition) self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("QualityRulesErrorResultsPanelWidget", "Errors")) self.tbw_errors.setColumnCount(4) self.tbw_errors.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.tbw_errors.horizontalHeader().setSectionResizeMode( CHECK_COLUMN, QHeaderView.ResizeToContents) self.tbw_errors.horizontalHeader().setSectionResizeMode( QRE_COLUMN, QHeaderView.ResizeToContents) # TODO: uncomment the following block when implemented self.btn_exception.setEnabled(False) self.btn_fix_error.setEnabled(False) self.txt_search.textChanged.connect(self.__search_text_changed) #self.btn_open_report.clicked.connect(self.__controller.open_report) #self.btn_view_error_results.clicked.connect(self.__view_error_results_clicked) self.btn_help.clicked.connect(self.__show_help) self.tbw_errors.itemSelectionChanged.connect(self.__selection_changed) # Set icon and QR name in the panel header qr = self.__controller.get_selected_qr() icon_names = [ 'schema.png', 'points.png', 'lines.png', 'polygons.png', 'relationships.svg' ] icon_name = icon_names[qr.type().value] icon = QIcon( ":/Asistente-LADM-COL/resources/images/{}".format(icon_name)) self.lbl_icon_type.setPixmap(icon.pixmap(QSize(24, 24))) self.lbl_icon_type.setToolTip( self.__controller.get_tr_string(qr.type())) self.lbl_qr_name.setText(qr.name()) self.lbl_qr_name.setToolTip(qr.id()) self.__column_labels = [ "", self.__controller.get_uuids_display_name(), QCoreApplication.translate("QualityRulesErrorResultsPanelWidget", "Error"), QCoreApplication.translate("QualityRulesErrorResultsPanelWidget", "Details") ] # Load available rules for current role and current db models self.__load_available_errors()