예제 #1
0
    def add_row(self):
        """Add a new row to verhang table"""
        self.tableWidgetVerhang.insertRow(self.tableWidgetVerhang.rowCount())
        current_row = self.tableWidgetVerhang.rowCount() - 1

        # from column
        from_spinbox = QtWidgets.QDoubleSpinBox()
        from_spinbox.setMaximum(10000)
        from_spinbox.setSingleStep(50)
        from_spinbox.valueChanged.connect(self.from_spinbox_value_changed)
        self.tableWidgetVerhang.setCellWidget(current_row, 0, from_spinbox)

        # to column
        to_spinbox = QtWidgets.QDoubleSpinBox()
        to_spinbox.setMaximum(100000)
        to_spinbox.setSingleStep(50)
        to_spinbox.valueChanged.connect(self.to_spinbox_value_changed)
        self.tableWidgetVerhang.setCellWidget(current_row, 1, to_spinbox)

        # verhang column
        verhang_spinbox = QtWidgets.QDoubleSpinBox()
        verhang_spinbox.setMaximum(1)
        verhang_spinbox.setDecimals(4)
        verhang_spinbox.setSingleStep(0.001)
        verhang_spinbox.valueChanged.connect(
            self.verhang_spinbox_value_changed)
        self.tableWidgetVerhang.setCellWidget(current_row, 2, verhang_spinbox)

        self.update_verhang_table()
        self.validate_run()
    def setupUi(self, BulkVectorExportDialog):
        BulkVectorExportDialog.setObjectName(
            _fromUtf8("BulkVectorExportDialog"))
        BulkVectorExportDialog.resize(392, 141)
        self.buttonBox = QtWidgets.QDialogButtonBox(BulkVectorExportDialog)
        self.buttonBox.setGeometry(QtCore.QRect(220, 100, 161, 32))
        self.buttonBox.setWhatsThis(_fromUtf8(""))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel
                                          | QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setCenterButtons(True)
        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
        self.dirEdit = QtWidgets.QLineEdit(BulkVectorExportDialog)
        self.dirEdit.setGeometry(QtCore.QRect(120, 40, 231, 20))
        self.dirEdit.setObjectName(_fromUtf8("dirEdit"))
        self.label = QtWidgets.QLabel(BulkVectorExportDialog)
        self.label.setGeometry(QtCore.QRect(10, 40, 71, 16))
        self.label.setObjectName(_fromUtf8("label"))
        self.dirButton = QtWidgets.QPushButton(BulkVectorExportDialog)
        self.dirButton.setGeometry(QtCore.QRect(360, 40, 31, 21))
        self.dirButton.setObjectName(_fromUtf8("dirButton"))

        self.retranslateUi(BulkVectorExportDialog)
        self.buttonBox.accepted.connect(BulkVectorExportDialog.accept)
        self.buttonBox.rejected.connect(BulkVectorExportDialog.reject)
        QtCore.QMetaObject.connectSlotsByName(BulkVectorExportDialog)
예제 #3
0
    def setupUi(self, graphicsWindow, nom):
        graphicsWindow.setObjectName("graphicsWindow")
        graphicsWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(graphicsWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)
        self.graphicsView.setGeometry(QtCore.QRect(0, 0, 791, 551))
        self.graphicsView.setVerticalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.graphicsView.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.graphicsView.setBackgroundBrush(
            QtGui.QBrush(QtGui.QColor(182, 182, 182)))
        self.graphicsView.setObjectName("graphicsView")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(170, 110, 1000, 1200))
        self.widget.setObjectName("widget")
        graphicsWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(graphicsWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        graphicsWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(graphicsWindow)
        self.statusbar.setObjectName("statusbar")
        graphicsWindow.setStatusBar(self.statusbar)

        self.retranslateUi(graphicsWindow, nom)
        QtCore.QMetaObject.connectSlotsByName(graphicsWindow)
    def append_to_list(self, layer_type):
        layer_fields, table, final_table, required_fields = self.__find_layer_changed(
            layer_type)
        for i in table.selectedRanges():
            new_fields = [
                table.item(row, 0).text()
                for row in range(i.topRow(),
                                 i.bottomRow() + 1)
            ]

            for row in range(i.bottomRow(), i.topRow() - 1, -1):
                table.removeRow(row)

            counter = final_table.rowCount()
            for field in new_fields:
                final_table.setRowCount(counter + 1)
                item1 = QtWidgets.QTableWidgetItem(field)
                item1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
                final_table.setItem(counter, 0, item1)

                chb1 = QtWidgets.QCheckBox()
                chb1.setChecked(False)
                chb1.setEnabled(False)
                chb1.stateChanged.connect(self.keep_checked)
                final_table.setCellWidget(counter, 1, self.centers_item(chb1))

                cbb = QtWidgets.QComboBox()
                cbb.addItem(field)
                final_table.setCellWidget(counter, 2, self.centers_item(cbb))
                counter += 1
    def handle_dataset_list(
        self,
        dataset_list: typing.List[models.BriefDataset],
        pagination_info: models.GeonodePaginationInfo,
    ):
        """Handle incoming dataset list

        This method is called when the api client emits the `layer_list_received`
        signal. It expects to receive a list of brief dataset descriptions, as found
        on the remote GeoNode server.

        """

        self.handle_pagination(pagination_info)
        if len(dataset_list) > 0:
            scroll_container = QtWidgets.QWidget()
            layout = QtWidgets.QVBoxLayout()
            layout.setContentsMargins(1, 1, 1, 1)
            layout.setSpacing(1)
            for brief_dataset in dataset_list:
                search_result_widget = SearchResultWidget(
                    brief_dataset,
                    self.api_client,
                    data_source_widget=self,
                )
                layout.addWidget(search_result_widget)
                layout.setAlignment(search_result_widget, QtCore.Qt.AlignTop)
            scroll_container.setLayout(layout)
            self.scroll_area.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
            self.scroll_area.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
            self.scroll_area.setWidgetResizable(True)
            self.scroll_area.setWidget(scroll_container)
            self.message_bar.clearWidgets()
        self.search_finished.emit("")
예제 #6
0
 def initGui(self):
     """init actions plugin"""
     self.toolbar = self.iface.addToolBar(PC.PLUGIN["name"])
     self.action = PQtW.QAction(PQtG.QIcon(PC.PLUGIN["icon"]),
                                PC.PLUGIN["name"], self.iface.mainWindow())
     self.action.triggered.connect(self.run)
     self.toolbar.addAction(self.action)
     self.iface.addPluginToMenu(PC.PLUGIN["menulocation"], self.action)
     #add label to toolbar
     label = PQtW.QLabel()
     self.toolbar.addWidget(label)
     label.setText(PC.PLUGIN["toolbartext"])
     #init dropdown to switch floors
     self.projCombo = PQtW.QComboBox(self.iface.mainWindow())
     minBouwlaag = PC.PAND["minbouwlaag"]
     maxBouwlaag = PC.PAND["maxbouwlaag"]
     for i in range(maxBouwlaag - minBouwlaag + 1):
         if maxBouwlaag - i != 0:
             if maxBouwlaag - i == 1:
                 init_index = i
             self.projCombo.addItem(str(maxBouwlaag - i))
     self.projComboAction = self.toolbar.addWidget(self.projCombo)
     self.projCombo.setFixedWidth(100)
     self.projCombo.setMaxVisibleItems(30)
     #set intial index to floor 1
     self.projCombo.setCurrentIndex(init_index)
     #connect to set layer subset if the index is changed
     self.projCombo.currentIndexChanged.connect(
         self.set_layer_subset_toolbar)
     #init projectVariable to communicate from plugin to original drawing possibilities
     QC.QgsExpressionContextUtils.setProjectVariable(
         QC.QgsProject.instance(), 'actieve_bouwlaag', 1)
예제 #7
0
    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 __init__(self):
     self.mock = mock.MagicMock()
     self.widget = QtWidgets.QWidget()
     self.mainwindow = QtWidgets.QMainWindow(self.widget)
     self.mock.mainWindow.return_value = self.mainwindow
     self.mock.layers.return_value = list(
         QgsProject.instance().mapLayers().values())
예제 #9
0
    def test_calc_selected_dont_overwrite(self, mock_selected_obsids,
                                          mock_messagebar):
        mock_selected_obsids.return_value = ['rb1', 'rb2']
        db_utils.sql_alter_db(
            '''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb1', 1)''')
        db_utils.sql_alter_db(
            '''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb1', 222, '2005-01-01 00:00:00')'''
        )
        db_utils.sql_alter_db(
            '''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb2', 4)''')
        db_utils.sql_alter_db(
            '''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb2', 444, '2005-01-01 00:00:00')'''
        )
        db_utils.sql_alter_db(
            '''INSERT into w_levels (obsid, meas, level_masl, date_time) VALUES ('rb2', 555, 667, '2005-01-02 00:00:00')'''
        )
        self.calclvl.FromDateTime = QtWidgets.QDateTimeEdit()
        self.calclvl.FromDateTime.setDateTime(
            datestring_to_date('2000-01-01 00:00:00'))
        self.calclvl.ToDateTime = QtWidgets.QDateTimeEdit()
        self.calclvl.ToDateTime.setDateTime(
            datestring_to_date('2010-01-01 00:00:00'))
        self.calclvl.checkBox_overwrite_prev.setChecked(False)
        self.calclvl.calcselected()
        #self.checkBox_skipnulls

        test_string = utils_for_tests.create_test_string(
            db_utils.sql_load_fr_db(
                'SELECT obsid, date_time, meas, h_toc, level_masl FROM w_levels ORDER BY obsid, date_time'
            ))
        reference_string = '(True, [(rb1, 2005-01-01 00:00:00, 222.0, 1.0, -221.0), (rb2, 2005-01-01 00:00:00, 444.0, 4.0, -440.0), (rb2, 2005-01-02 00:00:00, 555.0, None, 667.0)])'
        print(str(mock_messagebar.mock_calls))
        print(test_string)
        assert test_string == reference_string
    def populateTable(self, table, usersList):
        if table == 'users':
            table = self.usertabel
        else:
            table = self.groupstabel

        tableRowCount = len(usersList)
        table.setRowCount(tableRowCount)

        for row in range(tableRowCount):
            user = usersList[row]
            table.setVerticalHeaderItem(
                row, QtGui.QTableWidgetItem(user['displayTitle']))
            permissions = user['permissions']
            permList = ['Read', 'Update', 'Delete']
            if not permissions:
                for x in permList:
                    item = QtGui.QTableWidgetItem(x)
                    item.setCheckState(Qt.Unchecked)
                    table.setItem(row, permList.index(x), item)
            else:
                for x in permList:
                    item = QtGui.QTableWidgetItem(x)
                    if x.upper() in permissions['permissions']:
                        item.setCheckState(Qt.Checked)
                    else:
                        item.setCheckState(Qt.Unchecked)
                    table.setItem(row, permList.index(x), item)
예제 #11
0
    def add_raster_to_table_list(self, raster_layer, upper=False, lower=False):
        if self.pixel_size[0] == '0' and raster_layer is not None:

            self.pixel_size = get_pixel_size(
                self.mcboRasterLayer.currentLayer())

            #                            'of {} {}'.format(*self.pixel_size[:2]))

        # get list of objects to update
        tab_obj_list = []
        if upper:
            tab_obj_list.append(self.tabUpper)
        if lower:
            tab_obj_list.append(self.tabLower)

        for ea_tab in tab_obj_list:
            # find out if it is already there.
            if ea_tab.findItems(raster_layer.id(), QtCore.Qt.MatchExactly):
                continue

            rowPosition = ea_tab.rowCount()
            ea_tab.insertRow(rowPosition)

            # Save the id of the layer to a column used to get a layer object later on.
            # adapted from
            # https://gis.stackexchange.com/questions/165415/activating-layer-by-its-name-in-pyqgis
            ea_tab.setItem(rowPosition, 0,
                           QtWidgets.QTableWidgetItem(raster_layer.id()))
            ea_tab.setItem(rowPosition, 1,
                           QtWidgets.QTableWidgetItem(raster_layer.name()))

        self.setMapLayers()
예제 #12
0
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 67)
        self.gridLayout = QtWidgets.QGridLayout(Form)
        self.gridLayout.setObjectName("gridLayout")
        self.label_start = QtWidgets.QLabel(Form)
        self.label_start.setObjectName("label_start")
        self.gridLayout.addWidget(self.label_start, 0, 0, 1, 1)
        self.label_end = QtWidgets.QLabel(Form)
        self.label_end.setObjectName("label_end")
        self.gridLayout.addWidget(self.label_end, 0, 1, 1, 1)
        self.date_start = gui.QgsDateTimeEdit(Form)
        self.date_start.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1970, 1, 1), QtCore.QTime(0, 0, 0)))
        self.date_start.setMinimumDate(QtCore.QDate(1970, 1, 1))
        self.date_start.setCurrentSection(QtWidgets.QDateTimeEdit.YearSection)
        self.date_start.setTimeSpec(QtCore.Qt.UTC)
        self.date_start.setObjectName("date_start")
        self.gridLayout.addWidget(self.date_start, 1, 0, 1, 1)
        self.date_end = gui.QgsDateTimeEdit(Form)
        self.date_end.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1970, 1, 1), QtCore.QTime(0, 0, 0)))
        self.date_end.setMinimumDate(QtCore.QDate(1970, 1, 1))
        self.date_end.setCurrentSection(QtWidgets.QDateTimeEdit.YearSection)
        self.date_end.setObjectName("date_end")
        self.gridLayout.addWidget(self.date_end, 1, 1, 1, 1)

        self.date_start.clear()
        self.date_end.clear()

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
예제 #13
0
 def centers_item(self, item):
     cell_widget = QtWidgets.QWidget()
     lay_out = QtWidgets.QHBoxLayout(cell_widget)
     lay_out.addWidget(item)
     lay_out.setAlignment(Qt.AlignCenter)
     lay_out.setContentsMargins(0, 0, 0, 0)
     cell_widget.setLayout(lay_out)
     return cell_widget
    def __addRowToGridLayout(self):
        if len(self.__vfkLineEdits) >= 5:
            self.__maximumLineEditsReached()
            return

        # update label
        self.label.setText('VFK soubory:')

        # new layout
        horizontalLayout = QtWidgets.QHBoxLayout()

        # create new objects
        self.__browseButtons['browseButton_{}'.format(
            len(self.__vfkLineEdits) +
            1)] = QtWidgets.QPushButton(u"Procházet")
        self.__vfkLineEdits['vfkLineEdit_{}'.format(
            len(self.__vfkLineEdits) + 1)] = QtWidgets.QLineEdit()

        horizontalLayout.addWidget(self.__vfkLineEdits['vfkLineEdit_{}'.format(
            len(self.__vfkLineEdits))])
        horizontalLayout.addWidget(
            self.__browseButtons['browseButton_{}'.format(
                len(self.__vfkLineEdits))])

        # number of lines in gridLayout
        rows_count = self.gridLayout_12.rowCount(
        )  # count of rows in gridLayout

        # export objects from gridLayout
        item_label = self.gridLayout_12.itemAtPosition(rows_count - 3, 0)
        item_par = self.gridLayout_12.itemAtPosition(rows_count - 3, 1)
        item_bud = self.gridLayout_12.itemAtPosition(rows_count - 2, 1)
        item_settings = self.gridLayout_12.itemAtPosition(rows_count - 1, 0)
        item_rewrite_db = self.gridLayout_12.itemAtPosition(rows_count - 1, 1)

        # remove objects from gridLayout
        self.gridLayout_12.removeItem(
            self.gridLayout_12.itemAtPosition(rows_count - 3, 0))
        self.gridLayout_12.removeItem(
            self.gridLayout_12.itemAtPosition(rows_count - 3, 1))
        self.gridLayout_12.removeItem(
            self.gridLayout_12.itemAtPosition(rows_count - 2, 1))
        self.gridLayout_12.removeItem(
            self.gridLayout_12.itemAtPosition(rows_count - 1, 0))
        self.gridLayout_12.removeItem(
            self.gridLayout_12.itemAtPosition(rows_count - 1, 1))

        # re-build gridLayout
        self.gridLayout_12.addLayout(horizontalLayout, rows_count - 3, 1)
        self.gridLayout_12.addItem(item_label, rows_count - 2, 0)
        self.gridLayout_12.addItem(item_par, rows_count - 2, 1)
        self.gridLayout_12.addItem(item_bud, rows_count - 1, 1)
        self.gridLayout_12.addItem(item_settings, rows_count, 0)
        self.gridLayout_12.addItem(item_rewrite_db, rows_count, 1)

        self.__browseButtons['browseButton_{}'.format(len(self.__vfkLineEdits))].clicked.\
            connect(lambda: self.browseButton_clicked(
                int('{}'.format(len(self.__vfkLineEdits)))))
    def add_aggregation(self, *args, aggregation: Aggregation = DEFAULT_AGGREGATION):
        """Add a new row to tableWidgetAggregations, always last row"""
        self.tableWidgetAggregations.insertRow(self.tableWidgetAggregations.rowCount())
        current_row = self.tableWidgetAggregations.rowCount() - 1

        # variable column
        variable_combobox = QtWidgets.QComboBox()
        for i, variable in enumerate(AGGREGATION_VARIABLES):
            variable_combobox.addItem(VT_NAMES[variable.var_type] + ': ' + variable.long_name)
            variable_combobox.setItemData(i, variable)
        idx = variable_combobox.findText(aggregation.variable.long_name, Qt.MatchEndsWith)
        variable_combobox.setCurrentIndex(idx)
        variable_combobox.currentTextChanged.connect(self.variable_combobox_text_changed)
        self.tableWidgetAggregations.setCellWidget(current_row, 0, variable_combobox)

        # sign column
        direction_combobox = QtWidgets.QComboBox()
        counter = 0
        for s in AGGREGATION_SIGNS:
            direction_combobox.addItem(s.long_name)
            direction_combobox.setItemData(counter, s)
            counter += 1
        direction_combobox.setCurrentText(aggregation.sign.long_name)
        self.tableWidgetAggregations.setCellWidget(current_row, 1, direction_combobox)
        direction_combobox.currentTextChanged.connect(self.direction_combobox_text_changed)

        # method column
        method_combobox = QtWidgets.QComboBox()
        for i, method in enumerate(AGGREGATION_METHODS):
            method_combobox.addItem(method.long_name)
            method_combobox.setItemData(i, method)
        method_combobox.setCurrentText(aggregation.method.long_name)
        self.tableWidgetAggregations.setCellWidget(current_row, 2, method_combobox)
        method_combobox.currentTextChanged.connect(self.method_combobox_text_changed)

        # threshold column
        threshold_widget = QtWidgets.QDoubleSpinBox()
        threshold_widget.setRange(sys.float_info.min, sys.float_info.max)
        self.tableWidgetAggregations.setCellWidget(current_row, 3, threshold_widget)
        method = method_combobox.itemData(method_combobox.currentIndex())
        self.set_threshold_widget(row=current_row, method=method)
        if aggregation.threshold is not None:
            threshold_widget.setValue(aggregation.threshold)
        threshold_widget.valueChanged.connect(self.threshold_value_changed)

        # units column
        units_combobox = QtWidgets.QComboBox()
        self.tableWidgetAggregations.setCellWidget(current_row, 4, units_combobox)
        self.set_units_widget(row=current_row,
                              variable=variable_combobox.itemData(variable_combobox.currentIndex()),
                              method=method
                              )
        # TODO: dit nu nu lastig te setten obv aggregation, omdat die wel een attribuut multiplier heeft,
        #  maar niet een attribuut units. laat ik nu even voor wat het is
        units_combobox.currentTextChanged.connect(self.units_combobox_text_changed)
        self.update_demanded_aggregations()
        self.set_styling_tab()
        self.validate()
예제 #16
0
 def on_workspaceComboBox_currentIndexChanged(self):
     self.clearLayout()
     workspace = self.getCurrentWorkspace()
     for parameter in [x for x in workspace['parametros'] if x != 'LOG_FILE']:
         newLabel = QtWidgets.QLabel(parameter)
         self.verticalLayout_2.addWidget(newLabel)
         newLineEdit = QtWidgets.QLineEdit()
         self.interfaceDict[parameter] = newLineEdit
         self.verticalLayout_2.addWidget(newLineEdit)
    def changed_layer(self, layer_type):
        try:
            layer_fields, table, final_table, required_fields = self.__find_layer_changed(
                layer_type)
            table.clearContents()
            table.setRowCount(0)
            # We create the comboboxes that will hold the definitions for all the fields that are mandatory for
            # creating the appropriate triggers on the SQLite file
            if layer_fields is not None:
                fields = [field.name() for field in layer_fields]
                counter = 0
                for field in fields:
                    table.setRowCount(counter + 1)
                    item1 = QtWidgets.QTableWidgetItem(field)
                    item1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
                    table.setItem(counter, 0, item1)
                    counter += 1
                self.counter[layer_type] = counter

            final_table.clearContents()
            final_table.setRowCount(0)

            counter = 0
            if layer_type == "links":
                init_fields = [
                    x for x in required_fields
                    if x not in Network.req_link_flds
                ]
            else:
                init_fields = [
                    x for x in required_fields
                    if x not in Network.req_node_flds
                ]

            for rf in required_fields:
                final_table.setRowCount(counter + 1)

                item1 = QtWidgets.QTableWidgetItem(rf)
                item1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
                final_table.setItem(counter, 0, item1)

                chb1 = QtWidgets.QCheckBox()
                if rf in init_fields:
                    chb1.setChecked(True)
                    chb1.stateChanged.connect(
                        partial(self.set_field_to_default, layer_type))
                else:
                    chb1.setChecked(True)
                    chb1.stateChanged.connect(
                        partial(self.set_field_to_default, layer_type))
                    chb1.setChecked(False)
                    chb1.setEnabled(False)
                final_table.setCellWidget(counter, 1, self.centers_item(chb1))
                counter += 1
        except:
            pass
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(261, 171)
        self.comboBox = QtWidgets.QComboBox(Dialog)
        self.comboBox.setGeometry(QtCore.QRect(10, 10, 241, 22))
        self.comboBox.setObjectName("comboBox")
        self.choose = QtWidgets.QAction(Dialog)
        self.choose.setObjectName("choose")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
예제 #19
0
 def progressdialog(self, progress):
     pdialog = PQtW.QProgressDialog()
     pdialog.setWindowTitle("Progress")
     pdialog.setLabelText("Voortgang van importeren:")
     pbar = PQtW.QProgressBar(pdialog)
     pbar.setTextVisible(True)
     pbar.setValue(progress)
     pdialog.setBar(pbar)
     pdialog.setMinimumWidth(300)
     pdialog.show()
     return pdialog, pbar
예제 #20
0
    def setupUi(self, Clone):
        Clone.setObjectName(_fromUtf8("Clone"))
        Clone.resize(375, 210)
        self.gridlayout = QtWidgets.QGridLayout(Clone)
        self.gridlayout.setObjectName(_fromUtf8("gridlayout"))
        self.vboxlayout = QtWidgets.QVBoxLayout()
        self.vboxlayout.setObjectName(_fromUtf8("vboxlayout"))
        spacerItem = QtWidgets.QSpacerItem(
            20, 20, QtWidgets.QSizePolicy.Minimum,
            QtWidgets.QSizePolicy.MinimumExpanding)
        self.vboxlayout.addItem(spacerItem)
        self.label = QtWidgets.QLabel(Clone)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setObjectName(_fromUtf8("label"))
        self.vboxlayout.addWidget(self.label)
        self.lineDsn = QtWidgets.QLineEdit(Clone)
        self.lineDsn.setMouseTracking(False)
        self.lineDsn.setInputMask(_fromUtf8(""))
        self.lineDsn.setMaxLength(10)
        self.lineDsn.setFrame(True)
        self.lineDsn.setObjectName(_fromUtf8("lineDsn"))
        self.vboxlayout.addWidget(self.lineDsn)
        self.label_3 = QtWidgets.QLabel(Clone)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.vboxlayout.addWidget(self.label_3)
        self.comboDsn = QtWidgets.QComboBox(Clone)
        self.comboDsn.setObjectName(_fromUtf8("comboDsn"))
        self.vboxlayout.addWidget(self.comboDsn)
        self.gridlayout.addLayout(self.vboxlayout, 0, 0, 1, 1)
        self.buttonBox = QtWidgets.QDialogButtonBox(Clone)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel
                                          | QtWidgets.QDialogButtonBox.NoButton
                                          | QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setCenterButtons(True)
        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
        self.gridlayout.addWidget(self.buttonBox, 2, 0, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(
            20, 20, QtWidgets.QSizePolicy.Minimum,
            QtWidgets.QSizePolicy.MinimumExpanding)
        self.gridlayout.addItem(spacerItem1, 1, 0, 1, 1)

        self.retranslateUi(Clone)
        self.buttonBox.accepted.connect(Clone.accept)
        self.buttonBox.rejected.connect(Clone.reject)
        QMetaObject.connectSlotsByName(Clone)
        Clone.setTabOrder(self.lineDsn, self.comboDsn)
        Clone.setTabOrder(self.comboDsn, self.buttonBox)
예제 #21
0
 def initUI(self):
     lo = QtWidgets.QFormLayout()
     lo.addRow(QtWidgets.QLabel("Drop something here:"))
     l1 = QtWidgets.QLabel("")
     l2 = QtWidgets.QLabel("")
     dropspace = QpalsDropTextbox()
     lo.addRow(dropspace)
     lo.addRow(l1)
     lo.addRow(l2)
     self.setLayout(lo)
     self.setWindowTitle("Hallo Alina")
예제 #22
0
 def listCRS(self, txt=''):
     crs = self.model.listCRS(txt)
     self.conf.tableCRS.clearContents()
     k = 0
     for x in crs:
         self.conf.tableCRS.insertRow(self.conf.tableCRS.rowCount())
         self.conf.tableCRS.setItem(k, 0,
                                    QtWidgets.QTableWidgetItem(str(x[1])))
         self.conf.tableCRS.setItem(k, 1,
                                    QtWidgets.QTableWidgetItem(str(x[0])))
         k += 1
예제 #23
0
def getTitleBar():
    """create titlebar for dockwidget"""
    titleBar = PQtW.QWidget()
    layout = PQtW.QHBoxLayout()
    font = QFont("Arial", 10, QFont.Bold)
    label = create_label(PLUGIN["name"], layout, font)
    btnFloat = create_pushbutton("Icon", PLUGIN["floaticon"], layout, 20)
    btnHelp = create_pushbutton("Icon", PLUGIN["helpicon"], layout, 20)
    titleBar.setLayout(layout)
    titleBar.setWindowFlag(Qt.WindowMaximizeButtonHint, True)
    return btnHelp, btnFloat, titleBar
예제 #24
0
    def setup_class_table(self, classes):
        default_codes = sorted(
            [c['Initial_Code'] for c in self.default_classes])
        input_codes = sorted([c['Initial_Code'] for c in classes])
        new_codes = [c for c in input_codes if c not in default_codes]
        missing_codes = [c for c in default_codes if c not in input_codes]
        if len(new_codes) > 0:
            QtWidgets.QMessageBox.warning(
                None, self.tr("Warning"),
                self.
                tr(u"Some of the class codes ({}) in the definition file do not appear in the chosen data file."
                   .format(', '.join([str(c) for c in new_codes]), None)))
        if len(missing_codes) > 0:
            QtWidgets.QMessageBox.warning(
                None, self.tr("Warning"),
                self.
                tr(u"Some of the class codes ({}) in the data file do not appear in the chosen definition file."
                   .format(', '.join([str(c) for c in missing_codes]), None)))

        # Setup a new classes list with the new class codes for all classes
        # included in default calsses, and and any other class codes that are
        # missing added from the default class list
        classes = [c for c in classes if c['Initial_Code'] in default_codes]
        classes.extend([
            c for c in self.default_classes
            if c['Initial_Code'] not in input_codes
        ])

        table_model = LCAggTableModel(classes, parent=self)
        proxy_model = QtWidgets.QSortFilterProxyModel()
        proxy_model.setSourceModel(table_model)
        self.remap_view.setModel(proxy_model)

        # Add selector in cell
        for row in range(0, len(classes)):
            lc_classes = QtWidgets.QComboBox()
            lc_classes.currentIndexChanged.connect(self.lc_class_combo_changed)
            # Add the classes in order of their codes
            lc_classes.addItems(
                sorted(list(self.final_classes.keys()),
                       key=lambda k: self.final_classes[k]))
            ind = lc_classes.findText(classes[row]['Final_Label'])
            if ind != -1:
                lc_classes.setCurrentIndex(ind)
            self.remap_view.setIndexWidget(
                proxy_model.index(row,
                                  self.remap_view.model().columnCount() - 1),
                lc_classes)

        self.remap_view.setSelectionBehavior(
            QtWidgets.QAbstractItemView.SelectRows)
        self.remap_view.setColumnWidth(1, 450)
        self.remap_view.horizontalHeader().setStretchLastSection(True)
        return True
예제 #25
0
 def __init__(self, llegenda, nom='Llegenda', vertical=True):
     super().__init__()
     self.llegenda = llegenda
     self.items = dict()
     self.botons = dict()
     self.setWindowTitle(nom)
     if vertical:
         self.setLayout(qgWdg.QVBoxLayout())
     else:
         self.setLayout(qgWdg.QHBoxLayout())
     self.funcioFiltre = None
     self.funcioBoto = None
    def _initStats(self, statsWidget=False):
        """Initialize statistics tab.

        :param statsWidget: True to create plot widget otherwise info
        QLabel is displayed
        """
        # use grid layout
        if not hasattr(self, "_statsLayout"):
            self._statsLayout = QtWidgets.QGridLayout(self.groupStats)

        if not hasattr(self, "_statsWidget"):
            self._statsWidget = SafecastStats(self.groupStats)
            self._statsWidget.setHeaderHidden(True)

        if not hasattr(self, "_statsLabel"):
            self._statsLabel = QtWidgets.QLabel(
                self.
                tr("Load or select Safecast layer in order to display ader statistics."
                   ), self.groupStats)
            self._statsLabel.setWordWrap(True)
            self._statsSpacer = QtWidgets.QSpacerItem(
                20, 40, QtWidgets.QSizePolicy.Minimum,
                QtWidgets.QSizePolicy.Expanding)

            self._statsLayout.addWidget(self._statsLabel)
            self._statsLayout.addItem(self._statsSpacer)
            self._statsWidget.setVisible(False)
            self._statsVisible = False
            return  # initialization done

        if statsWidget and not self._statsVisible:
            # remove info label & spacer from layout
            self._statsLabel.setVisible(False)
            self._statsLayout.removeWidget(self._statsLabel)
            self._statsLayout.removeItem(self._statsSpacer)
            # add stats widget into layout
            self._statsWidget.setVisible(True)
            self._statsLayout.addWidget(self._statsWidget)
            self._statsVisible = True

            self.groupStats.adjustSize()

        elif not statsWidget and self._statsVisible:
            # remove plot widget from layout
            self._statsWidget.setVisible(False)
            self._plotLayout.removeWidget(self._statsWidget)
            self._statsVisible = False
            # add info label & spacer into layout
            self._statsLabel.setVisible(True)
            self._statsLayout.addWidget(self._statsLabel)
            self._statsLayout.addItem(self._statsSpacer)
            # set group tile
            self.groupStats.setTitle(self.tr("Statistics"))
    def _initPlot(self, plotWidget=False):
        """Initialize plot tab.

        :param plotWidget: True to create plot widget otherwise info
        QLabel is displayed
        """
        # use grid layout if not defined
        if not hasattr(self, "_plotLayout"):
            self._plotLayout = QtWidgets.QGridLayout(self.groupPlot)

        # create new plot widget
        if not hasattr(self, "_plotWidget") and not plotMsg:
            self._plotWidget = SafecastPlot(self.groupPlot)
            self._plotWidget.setVisible(False)

        if not hasattr(self, "_plotLabel"):
            self._plotLabel = QtWidgets.QLabel(
                self.
                tr("Load or select Safecast layer in order to display ader plot."
                   ) if not plotMsg else plotMsg, self.groupPlot)
            self._plotLabel.setWordWrap(True)
            self._plotSpacer = QtWidgets.QSpacerItem(
                20, 40, QtWidgets.QSizePolicy.Minimum,
                QtWidgets.QSizePolicy.Expanding)

            self._plotLayout.addWidget(self._plotLabel)
            self._plotLayout.addItem(self._plotSpacer)
            self._plotVisible = False
            return  # initialization done

        if plotWidget and not self._plotVisible:
            # remove info label & spacer from layout
            self._plotLabel.setVisible(False)
            self._plotLayout.removeWidget(self._plotLabel)
            self._plotLayout.removeItem(self._plotSpacer)
            # add plot widget into layout
            self._plotWidget.setVisible(True)
            self._plotLayout.addWidget(self._plotWidget)
            self._plotVisible = True

            self.groupPlot.adjustSize()

        elif not plotWidget and self._plotVisible:
            # remove plot widget from layout
            self._plotWidget.setVisible(False)
            self._plotLayout.removeWidget(self._plotLabel)
            self._plotVisible = False
            # add info label & spacer into layout
            self._plotLabel.setVisible(True)
            self._plotLayout.addWidget(self._plotLabel)
            self._plotLayout.addItem(self._plotSpacer)
            # set group tile
            self.groupPlot.setTitle(self.tr("Plot"))
예제 #28
0
파일: QpalsWSM.py 프로젝트: lwiniwar/qpals
    def createSec(self):
        odmpath = self.odmText.text()
        axispath = self.axisText.text()
        if not os.path.exists(odmpath):
            QtWidgets.QMessageBox("Error", "Odm file not found.")
            return
        if not os.path.exists(axispath):
            QtWidgets.QMessageBox("Error", "Axis file not found.")
            return
        outpath = QtWidgets.QFileDialog.getSaveFileName(
            caption="Select output file", filter="*.qpalsWSM")
        if isinstance(outpath, tuple):
            outpath = outpath[0]
        self.WSMProj.odmpath = odmpath
        self.WSMProj.axispath = axispath
        self.WSMProj.savepath = outpath[0]
        self.WSMProj.overlap = self.overlapSpin.value()
        self.WSMProj.depth = self.depthSpin.value()
        self.WSMProj.width = self.widthSpin.value()
        self.WSMProj.attr = self.attrSel.currentText()

        self.prjBox.setEnabled(False)
        module = QpalsModuleBase.QpalsModuleBase(execName=os.path.join(
            self.project.opalspath, "opalsSection.exe"),
                                                 QpalsProject=self.project)
        infile = QpalsParameter('inFile', odmpath, None, None, None, None,
                                None)
        axisfile = QpalsParameter('axisFile', axispath, None, None, None, None,
                                  None)
        attribute = QpalsParameter('attribute', self.attrSel.currentText(),
                                   None, None, None, None, None)
        overlap = QpalsParameter('overlap',
                                 str(self.overlapSpin.value() / 100), None,
                                 None, None, None, None)
        thickness = QpalsParameter(
            'patchSize',
            '%s;%s' % (self.widthSpin.value(), self.depthSpin.value()), None,
            None, None, None, None)

        outParamFileH = tempfile.NamedTemporaryFile(suffix='.xml', delete=True)
        self.outParamFile = outParamFileH.name
        outParamFileH.close()
        outParamFileParam = QpalsParameter('outParamFile', self.outParamFile,
                                           None, None, None, None, None)
        module.params += [
            infile, axisfile, thickness, attribute, overlap, outParamFileParam
        ]
        thread, worker = module.run_async(status=self.update_status,
                                          on_finish=self.parse_output,
                                          on_error=self.sec_error)
        self.threads.append(thread)
        self.workers.append(worker)
예제 #29
0
    def test_calcall(self, mock_messagebar):
        db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb1', 1)''')
        db_utils.sql_alter_db('''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb1', 222, '2005-01-01 00:00:00')''')
        self.calclvl.FromDateTime = QtWidgets.QDateTimeEdit()
        self.calclvl.FromDateTime.setDateTime(datestring_to_date('2000-01-01 00:00:00'))
        self.calclvl.ToDateTime = QtWidgets.QDateTimeEdit()
        self.calclvl.ToDateTime.setDateTime(datestring_to_date('2010-01-01 00:00:00'))
        self.calclvl.calcall()

        test_string = utils_for_tests.create_test_string(
            db_utils.sql_load_fr_db('SELECT obsid, date_time, meas, h_toc, level_masl FROM w_levels'))
        reference_string = '(True, [(rb1, 2005-01-01 00:00:00, 222.0, 1.0, -221.0)])'
        assert test_string == reference_string
 def addFoundItem(self, layer, feature, attrname, value):
     '''We found an item so add it to the found list.'''
     self.resultsTable.insertRow(self.found)
     self.results.append([layer, feature])
     self.resultsTable.setItem(self.found, 0,
                               QtWidgets.QTableWidgetItem(value))
     self.resultsTable.setItem(self.found, 1,
                               QtWidgets.QTableWidgetItem(layer.name()))
     self.resultsTable.setItem(self.found, 2,
                               QtWidgets.QTableWidgetItem(attrname))
     self.resultsTable.setItem(
         self.found, 3, QtWidgets.QTableWidgetItem(str(feature.id())))
     self.found += 1