Пример #1
0
import sys

from PyQt5.QtWidgets import QApplication, QFormLayout, QLabel, QLineEdit, QWidget

app = QApplication(sys.argv)

window = QWidget()
window.setWindowTitle("FORM")

layout = QFormLayout()
layout.addRow(QLabel("Name"), QLineEdit())

window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Пример #2
0
    def create_form(self, active_object_data: tuple):

        active_object, (name, tp) = active_object_data
        self.name_of_editable_obj = name
        assert tp is _Frame

        def accept():
            try:
                active_object.pose.x = float(edit_obj['x'].text())
                active_object.pose.y = float(edit_obj['y'].text())
                active_object.pose.yaw = float(
                    np.deg2rad(float(edit_obj['yaw'].text())))
                new_type = None
                print(f"ACCEPT: {cam_obj}")
                for key in editable_values:
                    print("Key - ", key)
                    if key in [
                            "width", "height", "framerate",
                            "distortion_parameters", "camera_matrix"
                    ]:  # cam obj
                        if key in ["width", "height", "framerate"]:
                            cam_obj[key] = int(edit_obj[key].text().split()[0])
                        elif key == "distortion_parameters":
                            if not cam_obj.distortion_parameters:
                                cam_obj["distortion_parameters"] = []

                            if self.distortion_view_one_string_mode:
                                dk = edit_obj[f"distortion_parameters"].text(
                                ).replace(" ", "").split(",")
                                for idx, val in enumerate(dk):
                                    val = float(val)
                                    if len(cam_obj.distortion_parameters) < 5:
                                        cam_obj.distortion_parameters.append(
                                            val)
                                    else:
                                        cam_obj.distortion_parameters[
                                            idx] = val
                            else:
                                for idx in range(5):
                                    val = float(edit_obj[
                                        f"distortion_parameters_{idx}"].text().
                                                split()[0])
                                    if len(cam_obj.distortion_parameters) < 5:
                                        cam_obj.distortion_parameters.append(
                                            val)
                                    else:
                                        cam_obj.distortion_parameters[
                                            idx] = val
                        elif key == "camera_matrix":
                            if not cam_obj.camera_matrix:
                                cam_obj["camera_matrix"] = []
                            if not cam_obj.camera_matrix:
                                for _ in range(3):
                                    cam_obj.camera_matrix.append([])
                            for row in range(3):
                                for col in range(3):
                                    val = float(
                                        edit_obj[f"camera_matrix_{row}_{col}"].
                                        text().split()[0])
                                    if len(cam_obj.camera_matrix[row]) < 3:
                                        cam_obj.camera_matrix[row].append(val)
                                    else:
                                        cam_obj.camera_matrix[row][col] = val
                            print('MATRIX1   ', cam_obj.camera_matrix)
                    else:
                        new_value = edit_obj[key].text().split()[0]
                        if key == 'id' and len(
                                edit_obj[key].text().split()) > 1:
                            new_type = edit_obj[key].text().split()[1][1:-1]
                        if key == 'type' and new_type:
                            obj[key] = get_canonical_sign_name(
                                new_type)  # new_type
                            continue
                        if new_value.isdigit():
                            new_value = int(new_value)
                        try:
                            if isinstance(new_value, str):
                                new_value = float(new_value)
                        except ValueError:
                            pass
                        print(f"New value {new_value} for key {key}")
                        obj[key] = new_value
            except Exception as e:
                msg = QMessageBox()
                msg.setIcon(QMessageBox.Critical)
                msg.setText(str(e))
                msg.setWindowTitle("Error")
                msg.exec_()
            dialog.close()
            self.mapviewer.scene().update()
            self.update_layer_tree()

        def reject():
            dialog.close()

        # work version
        info_object = self.dm.get_objects_by_name(name)
        del info_object[(name, tp)]
        _, type_object = list(info_object.keys())[0]
        obj = info_object[(name, type_object)]
        cam_obj = None

        dialog = QtWidgets.QDialog(self)
        dialog.setWindowTitle('Change attribute of object')
        # buttonbox
        buttonBox = QtWidgets.QDialogButtonBox(
            QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel)
        buttonBox.accepted.connect(accept)
        buttonBox.rejected.connect(reject)
        # form
        formGroupBox = QGroupBox("Change attribute's object: {}".format(""))

        layout = QFormLayout()
        # editable_attrs = active_object.get_editable_attrs()
        edit_obj = {}
        combo_id = QComboBox(self)

        def change_combo_id(value):
            combo_id.clear()
            combo_id.addItems([
                "{}/{}".format(i.id, i.type)
                for i in self.duckietown_types_apriltags[value]
            ])
            combo_id.setEditText(str(
                self.duckietown_types_apriltags[value][0]))

        def change_type_from_combo(value: str):
            if 'type' in edit_obj:
                edit_obj['type'].setText(value.split()[1][1:-1])

        x_edit = QLineEdit(str(active_object.pose.x))
        y_edit = QLineEdit(str(active_object.pose.y))
        yaw_edit = QLineEdit(str(np.rad2deg(active_object.pose.yaw)))
        edit_obj['x'] = x_edit
        edit_obj['y'] = y_edit
        edit_obj['yaw'] = yaw_edit
        layout.addRow(QLabel("{}.X".format("pose")), x_edit)
        layout.addRow(QLabel("{}.Y".format("pose")), y_edit)
        layout.addRow(QLabel("{}.yaw".format("pose")), yaw_edit)

        editable_values = obj.dict()
        print('ATTR SHOW: ', editable_values, name)

        for attr_name in sorted(editable_values.keys()):
            attr = editable_values[attr_name]
            new_edit = QLineEdit(str(attr))

            edit_obj[attr_name] = new_edit

            if "vehicle" not in name and attr_name == 'id':
                type_id = list(self.duckietown_types_apriltags.keys())[0]
                for type_sign in self.duckietown_types_apriltags.keys():
                    try:
                        if int(attr
                               ) in self.duckietown_types_apriltags[type_sign]:
                            type_id = type_sign
                            break
                    except:
                        pass
                if "sign" not in name:
                    for type_tag in self.duckietown_types_apriltags:
                        combo_id.addItems([
                            "{}".format(i.id)
                            for i in self.duckietown_types_apriltags[type_tag]
                        ])
                else:
                    combo_id.addItems([
                        "{} ({})".format(i.id, i.type)
                        for i in self.duckietown_types_apriltags[type_id]
                    ])
                combo_id.setLineEdit(new_edit)
                new_edit.setReadOnly(True)
                combo_id.setEditText(str(attr))
                combo_id.currentTextChanged.connect(change_type_from_combo)
                layout.addRow(QLabel(attr_name), combo_id)
            elif attr_name == 'id':
                new_edit.setReadOnly(True)
                layout.addRow(QLabel("{}".format(attr_name)), new_edit)
            elif attr_name == "type":
                new_edit.setReadOnly(True)
                layout.addRow(QLabel("{}".format(attr_name)), new_edit)
            else:
                layout.addRow(QLabel("{}".format(attr_name)), new_edit)

        if "vehicle" in name:
            cam = self.dm.get_objects_by_name(name + "/camera")
            cam_obj: _Camera = cam[list(cam.keys())[0]]
            editable_values.update(cam_obj.dict())
            print("Camera info ", type(cam), cam.keys(),
                  list(cam.keys())[0], cam)
            print(cam_obj)
            layout.addRow(QHLine())

            width_camera_edit = QLineEdit(str(cam_obj.width))
            height_camera_edit = QLineEdit(str(cam_obj.height))
            framerate_camera_edit = QLineEdit(str(cam_obj.framerate))
            edit_obj.update({
                "width": width_camera_edit,
                "height": height_camera_edit,
                "framerate": framerate_camera_edit
            })
            layout.addRow(QLabel("{}.width".format("camera")),
                          width_camera_edit)
            layout.addRow(QLabel("{}.height".format("camera")),
                          height_camera_edit)
            layout.addRow(QLabel("{}.framerate".format("camera")),
                          framerate_camera_edit)

            layout.addRow(QLabel("Camera Matrix"))
            grid_matrix = QGridLayout()
            grid_matrix.setColumnStretch(1, 4)
            grid_matrix.setColumnStretch(2, 4)
            for row in range(3):
                for col in range(3):
                    if cam_obj.camera_matrix:
                        # TODO: NEED TO TEST
                        grid_line_edit = QLineEdit(
                            str(cam_obj.camera_matrix[row][col]))
                    else:
                        grid_line_edit = QLineEdit("0")
                    edit_obj[f"camera_matrix_{row}_{col}"] = grid_line_edit
                    grid_matrix.addWidget(grid_line_edit, row, col)

            layout.addRow(grid_matrix)
            grid_distortion = QGridLayout()
            grid_distortion.setColumnStretch(1, 4)
            grid_distortion.setColumnStretch(2, 4)
            layout.addRow(QLabel("Camera Distortion: [k1, k2, p1, p2, k3]"))
            for idx in range(5):
                if cam_obj.distortion_parameters:
                    grid_line_edit = QLineEdit(
                        str(cam_obj.distortion_parameters[idx]))
                else:
                    grid_line_edit = QLineEdit("0")
                edit_obj[f"distortion_parameters_{idx}"] = grid_line_edit
                grid_distortion.addWidget(grid_line_edit, 0, idx)

            layout.addRow(grid_distortion)

        layout.addRow(QHLine())
        combo_groups = QComboBox(self)
        ##### DEV FOR GROUP ####
        groups = ["No chosen"]
        for ((nm, _), group) in self.dm.groups:
            groups.append(f"{nm} [{group.description}]")
            print(nm, group.description)
        combo_groups.addItems([i for i in groups])

        combo_groups.setEditText("Choose group")
        combo_groups.currentTextChanged.connect(self.change_active_group)
        layout.addRow(QLabel("Choose group"), combo_groups)
        add_group = QPushButton("Add in group", self)
        add_group.clicked.connect(self.add_group_triggered)
        del_group = QPushButton("Del in group", self)
        del_group.clicked.connect(self.del_group_triggered)
        hl = QHBoxLayout()
        hl.addWidget(add_group)
        hl.addWidget(del_group)
        layout.addRow(hl)
        ########################
        formGroupBox.setLayout(layout)
        # layout
        mainLayout = QVBoxLayout()
        mainLayout.addWidget(formGroupBox)
        mainLayout.addWidget(buttonBox)
        dialog.setLayout(mainLayout)
        dialog.exec_()
Пример #3
0
    def __init__(self, parent, worker, config, configfile):
        QDialog.__init__(self, parent)

        self.worker = worker
        self.config = config
        self.configfile = configfile
        self.setStyleSheet("QGroupBox { font-weight: bold; } ")
        self.setWindowTitle('Settings')
        layout = QGridLayout()

        # Categories
        self.category_list = QListWidget()
        category_media = QListWidgetItem(getIcon('media-playback-start'),
                                         'Media', self.category_list)
        category_sync = QListWidgetItem(getIcon('view-refresh'), 'Sync',
                                        self.category_list)
        category_ui = QListWidgetItem(getIcon('window-new'), 'User Interface',
                                      self.category_list)
        category_theme = QListWidgetItem(getIcon('applications-graphics'),
                                         'Theme', self.category_list)
        self.category_list.setSelectionMode(QAbstractItemView.SingleSelection)
        self.category_list.setCurrentRow(0)
        self.category_list.setMaximumWidth(
            self.category_list.sizeHintForColumn(0) + 15)
        self.category_list.setFocus()
        self.category_list.currentItemChanged.connect(self.s_switch_page)

        # Media tab
        page_media = QWidget()
        page_media_layout = QVBoxLayout()
        page_media_layout.setAlignment(QtCore.Qt.AlignTop)

        # Group: Media settings
        g_media = QGroupBox('Media settings')
        g_media.setFlat(True)
        g_media_layout = QFormLayout()
        self.tracker_enabled = QCheckBox()
        self.tracker_enabled.toggled.connect(self.tracker_type_change)

        self.tracker_type = QComboBox()
        for (n, label) in utils.available_trackers:
            self.tracker_type.addItem(label, n)
        self.tracker_type.currentIndexChanged.connect(self.tracker_type_change)

        self.tracker_interval = QSpinBox()
        self.tracker_interval.setRange(5, 1000)
        self.tracker_interval.setMaximumWidth(60)
        self.tracker_process = QLineEdit()
        self.tracker_update_wait = QSpinBox()
        self.tracker_update_wait.setRange(0, 1000)
        self.tracker_update_wait.setMaximumWidth(60)
        self.tracker_update_close = QCheckBox()
        self.tracker_update_prompt = QCheckBox()
        self.tracker_not_found_prompt = QCheckBox()
        self.tracker_ignore_not_next = QCheckBox()

        g_media_layout.addRow('Enable tracker', self.tracker_enabled)
        g_media_layout.addRow('Tracker type', self.tracker_type)
        g_media_layout.addRow('Tracker interval (seconds)',
                              self.tracker_interval)
        g_media_layout.addRow('Process name (regex)', self.tracker_process)
        g_media_layout.addRow('Wait before updating (seconds)',
                              self.tracker_update_wait)
        g_media_layout.addRow('Wait until the player is closed',
                              self.tracker_update_close)
        g_media_layout.addRow('Ask before updating',
                              self.tracker_update_prompt)
        g_media_layout.addRow('Ask to add new shows',
                              self.tracker_not_found_prompt)
        g_media_layout.addRow('Ignore if not next episode',
                              self.tracker_ignore_not_next)

        g_media.setLayout(g_media_layout)

        # Group: Plex settings
        g_plex = QGroupBox('Plex Media Server')
        g_plex.setFlat(True)
        self.plex_host = QLineEdit()
        self.plex_port = QLineEdit()
        self.plex_user = QLineEdit()
        self.plex_passw = QLineEdit()
        self.plex_passw.setEchoMode(QLineEdit.Password)
        self.plex_obey_wait = QCheckBox()

        g_plex_layout = QGridLayout()
        g_plex_layout.addWidget(QLabel('Host and Port'), 0, 0, 1, 1)
        g_plex_layout.addWidget(self.plex_host, 0, 1, 1, 1)
        g_plex_layout.addWidget(self.plex_port, 0, 2, 1, 2)
        g_plex_layout.addWidget(QLabel('Use "wait before updating" time'), 1,
                                0, 1, 1)
        g_plex_layout.addWidget(self.plex_obey_wait, 1, 2, 1, 1)
        g_plex_layout.addWidget(QLabel('myPlex login (claimed server)'), 2, 0,
                                1, 1)
        g_plex_layout.addWidget(self.plex_user, 2, 1, 1, 1)
        g_plex_layout.addWidget(self.plex_passw, 2, 2, 1, 2)

        g_plex.setLayout(g_plex_layout)

        # Group: Library
        g_playnext = QGroupBox('Library')
        g_playnext.setFlat(True)
        self.player = QLineEdit()
        self.player_browse = QPushButton('Browse...')
        self.player_browse.clicked.connect(self.s_player_browse)
        lbl_searchdirs = QLabel('Media directories')
        lbl_searchdirs.setAlignment(QtCore.Qt.AlignTop)
        self.searchdirs = QListWidget()
        self.searchdirs_add = QPushButton('Add...')
        self.searchdirs_add.clicked.connect(self.s_searchdirs_add)
        self.searchdirs_remove = QPushButton('Remove')
        self.searchdirs_remove.clicked.connect(self.s_searchdirs_remove)
        self.searchdirs_buttons = QVBoxLayout()
        self.searchdirs_buttons.setAlignment(QtCore.Qt.AlignTop)
        self.searchdirs_buttons.addWidget(self.searchdirs_add)
        self.searchdirs_buttons.addWidget(self.searchdirs_remove)
        self.searchdirs_buttons.addWidget(QSplitter())
        self.library_autoscan = QCheckBox()
        self.scan_whole_list = QCheckBox()
        self.library_full_path = QCheckBox()

        g_playnext_layout = QGridLayout()
        g_playnext_layout.addWidget(QLabel('Player'), 0, 0, 1, 1)
        g_playnext_layout.addWidget(self.player, 0, 1, 1, 1)
        g_playnext_layout.addWidget(self.player_browse, 0, 2, 1, 1)
        g_playnext_layout.addWidget(lbl_searchdirs, 1, 0, 1, 1)
        g_playnext_layout.addWidget(self.searchdirs, 1, 1, 1, 1)
        g_playnext_layout.addLayout(self.searchdirs_buttons, 1, 2, 1, 1)
        g_playnext_layout.addWidget(QLabel('Rescan Library at startup'), 2, 0,
                                    1, 2)
        g_playnext_layout.addWidget(self.library_autoscan, 2, 2, 1, 1)
        g_playnext_layout.addWidget(QLabel('Scan through whole list'), 3, 0, 1,
                                    2)
        g_playnext_layout.addWidget(self.scan_whole_list, 3, 2, 1, 1)
        g_playnext_layout.addWidget(
            QLabel('Take subdirectory name into account'), 4, 0, 1, 2)
        g_playnext_layout.addWidget(self.library_full_path, 4, 2, 1, 1)

        g_playnext.setLayout(g_playnext_layout)

        # Media form
        page_media_layout.addWidget(g_media)
        page_media_layout.addWidget(g_plex)
        page_media_layout.addWidget(g_playnext)
        page_media.setLayout(page_media_layout)

        # Sync tab
        page_sync = QWidget()
        page_sync_layout = QVBoxLayout()
        page_sync_layout.setAlignment(QtCore.Qt.AlignTop)

        # Group: Autoretrieve
        g_autoretrieve = QGroupBox('Autoretrieve')
        g_autoretrieve.setFlat(True)
        self.autoretrieve_off = QRadioButton('Disabled')
        self.autoretrieve_always = QRadioButton('Always at start')
        self.autoretrieve_days = QRadioButton('After n days')
        self.autoretrieve_days.toggled.connect(self.s_autoretrieve_days)
        self.autoretrieve_days_n = QSpinBox()
        self.autoretrieve_days_n.setRange(1, 100)
        g_autoretrieve_layout = QGridLayout()
        g_autoretrieve_layout.setColumnStretch(0, 1)
        g_autoretrieve_layout.addWidget(self.autoretrieve_off, 0, 0, 1, 1)
        g_autoretrieve_layout.addWidget(self.autoretrieve_always, 1, 0, 1, 1)
        g_autoretrieve_layout.addWidget(self.autoretrieve_days, 2, 0, 1, 1)
        g_autoretrieve_layout.addWidget(self.autoretrieve_days_n, 2, 1, 1, 1)
        g_autoretrieve.setLayout(g_autoretrieve_layout)

        # Group: Autosend
        g_autosend = QGroupBox('Autosend')
        g_autosend.setFlat(True)
        self.autosend_off = QRadioButton('Disabled')
        self.autosend_always = QRadioButton('Immediately after every change')
        self.autosend_minutes = QRadioButton('After n minutes')
        self.autosend_minutes.toggled.connect(self.s_autosend_minutes)
        self.autosend_minutes_n = QSpinBox()
        self.autosend_minutes_n.setRange(1, 1000)
        self.autosend_size = QRadioButton('After the queue reaches n items')
        self.autosend_size.toggled.connect(self.s_autosend_size)
        self.autosend_size_n = QSpinBox()
        self.autosend_size_n.setRange(2, 20)
        self.autosend_at_exit = QCheckBox('At exit')
        g_autosend_layout = QGridLayout()
        g_autosend_layout.setColumnStretch(0, 1)
        g_autosend_layout.addWidget(self.autosend_off, 0, 0, 1, 1)
        g_autosend_layout.addWidget(self.autosend_always, 1, 0, 1, 1)
        g_autosend_layout.addWidget(self.autosend_minutes, 2, 0, 1, 1)
        g_autosend_layout.addWidget(self.autosend_minutes_n, 2, 1, 1, 1)
        g_autosend_layout.addWidget(self.autosend_size, 3, 0, 1, 1)
        g_autosend_layout.addWidget(self.autosend_size_n, 3, 1, 1, 1)
        g_autosend_layout.addWidget(self.autosend_at_exit, 4, 0, 1, 1)
        g_autosend.setLayout(g_autosend_layout)

        # Group: Extra
        g_extra = QGroupBox('Additional options')
        g_extra.setFlat(True)
        self.auto_status_change = QCheckBox('Change status automatically')
        self.auto_status_change.toggled.connect(self.s_auto_status_change)
        self.auto_status_change_if_scored = QCheckBox(
            'Change status automatically only if scored')
        self.auto_date_change = QCheckBox(
            'Change start and finish dates automatically')
        g_extra_layout = QVBoxLayout()
        g_extra_layout.addWidget(self.auto_status_change)
        g_extra_layout.addWidget(self.auto_status_change_if_scored)
        g_extra_layout.addWidget(self.auto_date_change)
        g_extra.setLayout(g_extra_layout)

        # Sync layout
        page_sync_layout.addWidget(g_autoretrieve)
        page_sync_layout.addWidget(g_autosend)
        page_sync_layout.addWidget(g_extra)
        page_sync.setLayout(page_sync_layout)

        # UI tab
        page_ui = QWidget()
        page_ui_layout = QFormLayout()
        page_ui_layout.setAlignment(QtCore.Qt.AlignTop)

        # Group: Icon
        g_icon = QGroupBox('Notification Icon')
        g_icon.setFlat(True)
        self.tray_icon = QCheckBox('Show tray icon')
        self.tray_icon.toggled.connect(self.s_tray_icon)
        self.close_to_tray = QCheckBox('Close to tray')
        self.start_in_tray = QCheckBox('Start minimized to tray')
        self.tray_api_icon = QCheckBox('Use API icon as tray icon')
        self.notifications = QCheckBox(
            'Show notification when tracker detects new media')
        g_icon_layout = QVBoxLayout()
        g_icon_layout.addWidget(self.tray_icon)
        g_icon_layout.addWidget(self.close_to_tray)
        g_icon_layout.addWidget(self.start_in_tray)
        g_icon_layout.addWidget(self.tray_api_icon)
        g_icon_layout.addWidget(self.notifications)
        g_icon.setLayout(g_icon_layout)

        # Group: Window
        g_window = QGroupBox('Window')
        g_window.setFlat(True)
        self.remember_geometry = QCheckBox('Remember window size and position')
        self.remember_columns = QCheckBox('Remember column layouts and widths')
        self.columns_per_api = QCheckBox(
            'Use different visible columns per API')
        g_window_layout = QVBoxLayout()
        g_window_layout.addWidget(self.remember_geometry)
        g_window_layout.addWidget(self.remember_columns)
        g_window_layout.addWidget(self.columns_per_api)
        g_window.setLayout(g_window_layout)

        # Group: Lists
        g_lists = QGroupBox('Lists')
        g_lists.setFlat(True)
        self.filter_bar_position = QComboBox()
        filter_bar_positions = [(FilterBar.PositionHidden, 'Hidden'),
                                (FilterBar.PositionAboveLists, 'Above lists'),
                                (FilterBar.PositionBelowLists, 'Below lists')]
        for (n, label) in filter_bar_positions:
            self.filter_bar_position.addItem(label, n)
        self.inline_edit = QCheckBox('Enable in-line editing')
        g_lists_layout = QFormLayout()
        g_lists_layout.addRow('Filter bar position:', self.filter_bar_position)
        g_lists_layout.addRow(self.inline_edit)
        g_lists.setLayout(g_lists_layout)

        # UI layout
        page_ui_layout.addWidget(g_icon)
        page_ui_layout.addWidget(g_window)
        page_ui_layout.addWidget(g_lists)
        page_ui.setLayout(page_ui_layout)

        # Theming tab
        page_theme = QWidget()
        page_theme_layout = QFormLayout()
        page_theme_layout.setAlignment(QtCore.Qt.AlignTop)

        # Group: Episode Bar
        g_ep_bar = QGroupBox('Episode Bar')
        g_ep_bar.setFlat(True)
        self.ep_bar_style = QComboBox()
        ep_bar_styles = [(ShowsTableDelegate.BarStyleBasic, 'Basic'),
                         (ShowsTableDelegate.BarStyle04, 'Trackma'),
                         (ShowsTableDelegate.BarStyleHybrid, 'Hybrid')]
        for (n, label) in ep_bar_styles:
            self.ep_bar_style.addItem(label, n)
        self.ep_bar_style.currentIndexChanged.connect(self.s_ep_bar_style)
        self.ep_bar_text = QCheckBox('Show text label')
        g_ep_bar_layout = QFormLayout()
        g_ep_bar_layout.addRow('Style:', self.ep_bar_style)
        g_ep_bar_layout.addRow(self.ep_bar_text)
        g_ep_bar.setLayout(g_ep_bar_layout)

        # Group: Colour scheme
        g_scheme = QGroupBox('Color Scheme')
        g_scheme.setFlat(True)
        col_tabs = [('rows', '&Row highlights'),
                    ('progress', '&Progress widget')]
        self.colors = {}
        self.colors['rows'] = [('is_playing', 'Playing'),
                               ('is_queued', 'Queued'),
                               ('new_episode', 'New Episode'),
                               ('is_airing', 'Airing'),
                               ('not_aired', 'Unaired')]
        self.colors['progress'] = [('progress_bg', 'Background'),
                                   ('progress_fg', 'Watched bar'),
                                   ('progress_sub_bg', 'Aired episodes'),
                                   ('progress_sub_fg', 'Stored episodes'),
                                   ('progress_complete', 'Complete')]
        self.color_buttons = []
        self.syscolor_buttons = []
        g_scheme_layout = QGridLayout()
        tw_scheme = QTabWidget()
        for (key, tab_title) in col_tabs:
            page = QFrame()
            page_layout = QGridLayout()
            col = 0
            # Generate widgets from the keys and values
            for (key, label) in self.colors[key]:
                self.color_buttons.append(QPushButton())
                # self.color_buttons[-1].setStyleSheet('background-color: ' + getColor(self.config['colors'][key]).name())
                self.color_buttons[-1].setFocusPolicy(QtCore.Qt.NoFocus)
                self.color_buttons[-1].clicked.connect(
                    self.s_color_picker(key, False))
                self.syscolor_buttons.append(QPushButton('System Colors'))
                self.syscolor_buttons[-1].clicked.connect(
                    self.s_color_picker(key, True))
                page_layout.addWidget(QLabel(label), col, 0, 1, 1)
                page_layout.addWidget(self.color_buttons[-1], col, 1, 1, 1)
                page_layout.addWidget(self.syscolor_buttons[-1], col, 2, 1, 1)
                col += 1
            page.setLayout(page_layout)
            tw_scheme.addTab(page, tab_title)
        g_scheme_layout.addWidget(tw_scheme)
        g_scheme.setLayout(g_scheme_layout)

        # UI layout
        page_theme_layout.addWidget(g_ep_bar)
        page_theme_layout.addWidget(g_scheme)
        page_theme.setLayout(page_theme_layout)

        # Content
        self.contents = QStackedWidget()
        for page in (page_media, page_sync, page_ui, page_theme):
            scrollable_page = QScrollArea()
            scrollable_page.setWidgetResizable(True)
            scrollable_page.setWidget(page)
            self.contents.addWidget(scrollable_page)

        if pyqt_version != 5:
            self.contents.layout().setMargin(0)

        # Bottom buttons
        bottombox = QDialogButtonBox(QDialogButtonBox.Ok
                                     | QDialogButtonBox.Apply
                                     | QDialogButtonBox.Cancel)
        bottombox.accepted.connect(self.s_save)
        bottombox.button(QDialogButtonBox.Apply).clicked.connect(self._save)
        bottombox.rejected.connect(self.reject)

        # Main layout finish
        layout.addWidget(self.category_list, 0, 0, 1, 1)
        layout.addWidget(self.contents, 0, 1, 1, 1)
        layout.addWidget(bottombox, 1, 0, 1, 2)
        layout.setColumnStretch(1, 1)

        self._load()
        self.update_colors()

        self.setLayout(layout)
Пример #4
0
    def addComponents(self):
        """
        sets the mainLayout for this class and adds components into it.
        :return: 

        """

        # mainLayout
        self.mainLayout = QVBoxLayout()
        self.setLayout(self.mainLayout)
        # title
        self.lblTitle = QLabel("Simple Converter")
        self.mainLayout.addWidget(self.lblTitle)

        # comboCategoryChooser
        self.lblCategoryChooser = QLabel("Choose A Category...")
        self.comboCategoryChooser = QComboBox()
        self.comboCategoryChooser.addItems(["Volumes",
            "Distances",
            "Weights",
            "Temperatures",
            "Areas" ,
            "Times"
        ])

        self.mainLayout.addWidget(self.lblCategoryChooser)
        self.mainLayout.addWidget(self.comboCategoryChooser)


        # control
        self.controlWidget = QWidget()
        self.controlLayout = QHBoxLayout()
        self.controlWidget.setLayout(self.controlLayout)
        self.mainLayout.addWidget(self.controlWidget)

        # comboFrom
        self.widgetFrom = QWidget()
        self.layoutFrom = QFormLayout()
        self.widgetFrom.setLayout(self.layoutFrom)
        self.controlLayout.addWidget(self.widgetFrom)
        # label , combo  and lineEdit
        self.lblFrom = QLabel("From")
        self.comboFrom = QComboBox()
        self.editFrom = QLineEdit()
        self.layoutFrom.addRow(self.lblFrom, self.comboFrom)
        self.layoutFrom.addRow(QLabel(), self.editFrom)
        self.comboFrom.addItems(self.data[self.comboCategoryChooser.currentText()])

        # comboTo
        self.widgetTo = QWidget()
        self.layoutTo = QFormLayout()
        self.widgetTo.setLayout(self.layoutTo)
        self.controlLayout.addWidget(self.widgetTo)
        # label , combo  and lineEdit
        self.lblTo = QLabel("To")
        self.comboTo = QComboBox()
        self.editTo = QLineEdit()
        self.layoutTo.addRow(self.lblTo, self.comboTo)
        self.layoutTo.addRow(QLabel(), self.editTo)
        self.comboTo.addItems(self.data[self.comboCategoryChooser.currentText()])


        # buttons
        self.widgetButtons = QWidget()
        self.layoutButtons = QHBoxLayout()
        self.widgetButtons.setLayout(self.layoutButtons)
        self.mainLayout.addWidget(self.widgetButtons)
        # btnConvert, btnReset
        self.btnConvert = QPushButton("Convert")
        self.btnReset = QPushButton("Reset")
        self.layoutButtons.addWidget(self.btnConvert)
        self.layoutButtons.addWidget(self.btnReset)
Пример #5
0
    def __init__(self, main):
        """
        Class to provide all methods to insert movie in database.

        :param main: Reference for main windows.
        """
        super(InsertMovie, self).__init__()

        self.session = DB.get_session()
        self.movie = None
        self.cb_categories = []
        self.main = main

        windows_title = texts.insert + ' ' + texts.movie_p
        self.setWindowTitle(windows_title)
        width = int(0.95 * main.frameSize().width())
        height = int(0.8 * main.frameSize().height())
        self.setGeometry(0, 0, width, height)
        self.tb_width = (0.5 * width) - 50

        self.subwindow = QWidget()
        p = self.palette()
        p.setColor(self.backgroundRole(), QColor(230, 230, 250))
        self.setPalette(p)
        self.setWidget(self.subwindow)

        self.vbox_main = QVBoxLayout(self.subwindow)

        # Search in IMDB
        self.pb_search_confirm_imdb = pb_create(texts.pb_imdb_search_confirm,
                                                height=25,
                                                width=200)
        self.pb_search_confirm_imdb.setToolTip(texts.imdb_search_tt)
        self.pb_search_confirm_imdb.setShortcut('CTRL+Alt+I')
        self.pb_search_confirm_imdb.clicked.connect(self.search_confirmed_imdb)

        self.pb_search_confirm_ad = pb_create(texts.pb_ad_search_confirm,
                                              height=25,
                                              width=300)
        self.pb_search_confirm_ad.setToolTip(texts.ad_search_tt)
        self.pb_search_confirm_ad.setShortcut('CTRL+Alt+D')
        self.pb_search_confirm_ad.clicked.connect(self.search_confirmed_ad)

        self.lb_imdb_url = QLabel(texts.lb_search_imdb)
        self.lb_imdb_url.setEnabled(False)
        self.lb_imdb_url.setHidden(True)
        self.le_imdb_url = le_create(tooltip=texts.imdb_search_tt)
        self.le_imdb_url.setEnabled(False)
        self.le_imdb_url.setHidden(True)

        self.lb_ad_url = QLabel(texts.lb_search_ad)
        self.lb_ad_url.setEnabled(False)
        self.lb_ad_url.setHidden(True)
        self.le_ad_url = le_create(tooltip=texts.ad_search_tt)

        self.le_ad_url.setEnabled(False)
        self.le_ad_url.setHidden(True)

        self.pb_search_imdb = pb_create(texts.pb_imdb_ad_search,
                                        height=25,
                                        width=200)
        self.pb_search_imdb.clicked.\
            connect(lambda type: self.set_movie_scrapping('imdb'))
        self.pb_search_imdb.setShortcut('CTRL+Shift+I')
        self.pb_search_imdb.setEnabled(False)
        self.pb_search_imdb.setHidden(True)

        self.pb_search_ad = pb_create(texts.pb_imdb_ad_search,
                                      height=25,
                                      width=200)
        self.pb_search_ad.clicked.connect(
            lambda type: self.set_movie_scrapping('ad'))
        self.pb_search_ad.setShortcut('CTRL+Shift+A')
        self.pb_search_ad.setEnabled(False)
        self.pb_search_ad.setHidden(True)

        self.hbox_search = hbox_create([
            self.pb_search_confirm_imdb, self.lb_imdb_url, self.le_imdb_url,
            self.pb_search_confirm_ad, self.lb_ad_url, self.le_ad_url
        ])
        self.hbox_search.setContentsMargins(20, 10, 20, 0)

        self.hbox_pb_search = hbox_create([])
        self.hbox_pb_search.setContentsMargins(20, 0, 20, 0)

        self.line = line_h_create('2px', '#000000')

        self.vbox_main.addLayout(self.hbox_search)
        self.vbox_main.addLayout(self.hbox_pb_search)
        self.vbox_main.addWidget(self.line)

        # Form Layout 1
        self.fm_1 = QFormLayout()
        self.fm_1.setContentsMargins(20, 20, 20, 20)
        self.fm_1.setSpacing(10)

        # Title
        self.lb_title = QLabel(texts.title_s)
        self.le_title = le_create(255)
        self.fm_1.setWidget(0, QFormLayout.LabelRole, self.lb_title)
        self.fm_1.setWidget(0, QFormLayout.FieldRole, self.le_title)

        # Year
        self.lb_year = QLabel(texts.year_s)
        self.le_year = le_create(4)
        self.fm_1.setWidget(1, QFormLayout.LabelRole, self.lb_year)
        self.fm_1.setWidget(1, QFormLayout.FieldRole, self.le_year)

        # Media
        self.lb_media = QLabel(texts.media_s)
        media = db_select_all(self.session, Media)
        self.cb_media = cb_create()
        populate_combobox(self.cb_media, media)
        self.fm_1.setWidget(2, QFormLayout.LabelRole, self.lb_media)
        self.fm_1.setWidget(2, QFormLayout.FieldRole, self.cb_media)

        # Category 1
        category = db_select_all(self.session, Category)
        self.lb_category_1 = QLabel(texts.category_1)
        self.cb_category_1 = cb_create()
        populate_combobox(self.cb_category_1, category)
        self.fm_1.setWidget(3, QFormLayout.LabelRole, self.lb_category_1)
        self.fm_1.setWidget(3, QFormLayout.FieldRole, self.cb_category_1)

        # Box
        box = db_select_all(self.session, Box)
        self.lb_box = QLabel(texts.box)
        self.cb_box = cb_create()
        populate_combobox(self.cb_box, box)
        self.fm_1.setWidget(4, QFormLayout.LabelRole, self.lb_box)
        self.fm_1.setWidget(4, QFormLayout.FieldRole, self.cb_box)

        # Poster
        self.lb_poster = QLabel(texts.poster)
        self.le_poster = le_create(255)
        self.fm_1.setWidget(5, QFormLayout.LabelRole, self.lb_poster)
        self.fm_1.setWidget(5, QFormLayout.FieldRole, self.le_poster)

        # Form Layout 2
        self.fm_2 = QFormLayout()
        self.fm_2.setContentsMargins(20, 20, 20, 20)
        self.fm_2.setSpacing(10)

        # Original Title
        self.lb_original_title = QLabel(texts.original_title_s)
        self.le_original_title = le_create(255)
        self.fm_2.setWidget(0, QFormLayout.LabelRole, self.lb_original_title)
        self.fm_2.setWidget(0, QFormLayout.FieldRole, self.le_original_title)

        # Director
        director = db_select_all(self.session, Director)
        self.lb_director = QLabel(texts.director_s)
        self.cb_director = cb_create()
        populate_combobox(self.cb_director, director)
        self.fm_2.setWidget(1, QFormLayout.LabelRole, self.lb_director)
        self.fm_2.setWidget(1, QFormLayout.FieldRole, self.cb_director)

        self.lb_time = QLabel(texts.lb_time)
        self.le_time = le_create(10, texts.time_tt)
        self.fm_2.setWidget(2, QFormLayout.LabelRole, self.lb_time)
        self.fm_2.setWidget(2, QFormLayout.FieldRole, self.le_time)

        # Category 2
        category = db_select_all(self.session, Category)
        self.lb_category_2 = QLabel(texts.category_1)
        self.cb_category_2 = cb_create()
        populate_combobox(self.cb_category_2, category)
        self.fm_2.setWidget(3, QFormLayout.LabelRole, self.lb_category_2)
        self.fm_2.setWidget(3, QFormLayout.FieldRole, self.cb_category_2)

        # KeyWord
        keyword = db_select_all(self.session, Keyword)
        self.lb_keyword = QLabel(texts.keyword)
        self.cb_keyword = cb_create()
        populate_combobox(self.cb_keyword, keyword)
        self.fm_2.setWidget(4, QFormLayout.LabelRole, self.lb_keyword)
        self.fm_2.setWidget(4, QFormLayout.FieldRole, self.cb_keyword)

        # Web URL
        self.lb_web_url = QLabel(texts.lb_url)
        self.le_web_url = le_create(255)
        self.fm_2.setWidget(5, QFormLayout.LabelRole, self.lb_web_url)
        self.fm_2.setWidget(5, QFormLayout.FieldRole, self.le_web_url)

        # Horizontal Layout for Frame layout
        self.hbox_fms = hbox_create([])
        self.hbox_fms.addLayout(self.fm_1)
        self.hbox_fms.addLayout(self.fm_2)

        self.vbox_main.addLayout(self.hbox_fms)

        # Cast Summary
        self.hbox_summary_cast = hbox_create([])
        self.hbox_summary_cast.setContentsMargins(20, 0, 20, 0)
        self.vbox_summary = QVBoxLayout()

        # Summary
        self.lb_summary = QLabel(texts.summary_s)
        self.le_summary = QTextEdit()
        self.vbox_summary.addWidget(self.lb_summary)
        self.vbox_summary.addWidget(self.le_summary)
        self.vbox_summary.setSpacing(20)
        self.hbox_summary_cast.addLayout(self.vbox_summary)
        self.hbox_summary_cast.setSpacing(20)

        # Cast Label Button
        self.vbox_cast = QVBoxLayout()

        self.lb_cast = QLabel(texts.cast_s)
        self.pb_add_row = QPushButton('+')
        self.pb_add_row.setToolTip(texts.pb_add_row_tt)
        self.pb_add_row.clicked.connect(self.table_add_rows)
        self.pb_add_row.setShortcut('Ctrl+T')

        self.hbox_cast = hbox_create([self.lb_cast, self.pb_add_row])
        spacer = QSpacerItem(40, 20, QSizePolicy.Expanding,
                             QSizePolicy.Minimum)
        self.hbox_cast.addItem(spacer)

        self.vbox_cast.addLayout(self.hbox_cast)

        # Cast Table
        self.table = QTableWidget()
        self.table.setColumnCount(4)

        self.headers = [
            texts.actor_s,
            texts.character_s,
            texts.order,
            texts.star.capitalize(),
        ]
        self.table.setHorizontalHeaderLabels(self.headers)

        self.table.setColumnWidth(0, 0.30 * self.tb_width)
        self.table.setColumnWidth(1, 0.40 * self.tb_width)
        self.table.setColumnWidth(2, 0.15 * self.tb_width)
        self.table.setColumnWidth(3, 0.15 * self.tb_width)

        self.rows = 0
        self.cb_actor = []
        self.cb_character = []
        self.le_order = []
        self.chbox_star = []
        self.table_add_rows()

        self.vbox_cast.addWidget(self.table)
        self.hbox_summary_cast.addLayout(self.vbox_cast)

        self.vbox_main.addLayout(self.hbox_summary_cast)

        # Buttons Save Clear
        self.grid_layout = QGridLayout()
        self.grid_layout.setContentsMargins(10, 10, 10, 10)
        self.grid_layout.setSpacing(10)

        self.pb_save = pb_create(texts.pb_save, height=40)
        self.pb_save.clicked.connect(self.insert_movie)
        self.pb_save.setShortcut('Ctrl+S')
        self.grid_layout.addWidget(self.pb_save, 0, 0, 1, 1)

        self.pb_clear = pb_create(texts.pb_clear, height=40)
        self.pb_clear.clicked.connect(self.clear)
        self.pb_clear.setShortcut('Ctrl+L')
        self.grid_layout.addWidget(self.pb_clear, 0, 1, 1, 1)

        self.pb_help = pb_create(texts.pb_help, height=40)
        self.pb_help.clicked.connect(self.help)
        self.pb_help.setShortcut('Ctrl+H')
        self.grid_layout.addWidget(self.pb_help, 0, 2, 1, 1)

        self.pb_leave = pb_create(texts.pb_leave, height=40)
        self.pb_leave.clicked.connect(self.close)
        self.pb_leave.setShortcut('Ctrl+Q')
        self.grid_layout.addWidget(self.pb_leave, 0, 3, 1, 1)

        self.vbox_main.addLayout(self.grid_layout)

        # Tab Order
        self.le_title.setFocus()
        self.setTabOrder(self.le_title, self.le_original_title)
        self.setTabOrder(self.le_original_title, self.le_year)
        self.setTabOrder(self.le_year, self.cb_director)
        self.setTabOrder(self.cb_media, self.le_time)
        self.setTabOrder(self.le_time, self.cb_category_1)
        self.setTabOrder(self.cb_category_1, self.cb_category_2)
        self.setTabOrder(self.cb_category_2, self.cb_box)
        self.setTabOrder(self.cb_box, self.cb_keyword)
        self.setTabOrder(self.cb_keyword, self.le_poster)
        self.setTabOrder(self.le_poster, self.le_web_url)
        self.setTabOrder(self.le_web_url, self.le_summary)
Пример #6
0
# layout1.addWidget(QPushButton('Bottom'))
# window.setLayout(layout1)


# QGridLayout manager
# layout2 = QGridLayout()
# layout2.addWidget(QPushButton('Button (0, 0)'), 0, 0)
# layout2.addWidget(QPushButton('Button (0, 1)'), 0, 1)
# layout2.addWidget(QPushButton('Button (0, 2)'), 0, 2)
# layout2.addWidget(QPushButton('Button (1, 0)'), 1, 0)
# layout2.addWidget(QPushButton('Button (1, 1)'), 1, 1)
# layout2.addWidget(QPushButton('Button (1, 2)'), 1, 2)
# layout2.addWidget(QPushButton('Button (2, 0)'), 2, 0)
# layout2.addWidget(QPushButton('Button (2, 1) = 2 Columns Span'), 2, 1, 1, 2)
# window.setLayout(layout2)


# QFormLayout manager
layout3 = QFormLayout()
layout3.addRow('Name:', QLineEdit())
layout3.addRow('Age:', QLineEdit())
layout3.addRow('Job:', QLineEdit())
layout3.addRow('Hobbies:', QLineEdit())
window.setLayout(layout3)


# show your application's GUI
window.show()

# run your application's event loop (or main loop)
sys.exit(app.exec_())
Пример #7
0
 def initRewardsForm(self):
     self.collateralHidden = True
     self.rewardsForm = QGroupBox()
     self.rewardsForm.setTitle("Transfer Rewards")
     layout = QFormLayout()
     layout.setContentsMargins(10, 10, 10, 10)
     layout.setSpacing(13)
     layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow)
     ##--- ROW 1
     hBox = QHBoxLayout()
     self.mnSelect = QComboBox()
     self.mnSelect.setToolTip("Select Masternode")
     hBox.addWidget(self.mnSelect)
     self.btn_ReloadUTXOs = QPushButton()
     self.btn_ReloadUTXOs.setToolTip("Reload UTXOs")
     refresh_icon = QIcon(os.path.join(self.imgDir, 'icon_refresh.png'))
     self.btn_ReloadUTXOs.setIcon(refresh_icon)
     hBox.addWidget(self.btn_ReloadUTXOs)
     hBox.addStretch(1)
     label = QLabel("Total Address Balance")
     label.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
     hBox.addWidget(label)
     self.addrAvailLine = QLabel()
     self.addrAvailLine.setToolTip("PIVX Address total balance")
     self.addrAvailLine.setText("--")
     hBox.addWidget(self.addrAvailLine)
     self.btn_toggleCollateral = QPushButton("Show Collateral")
     hBox.addWidget(self.btn_toggleCollateral)
     layout.addRow(QLabel("Masternode"), hBox)
     ## --- ROW 2: REWARDS
     self.rewardsList = QVBoxLayout()
     self.rewardsList.statusLabel = QLabel()
     self.rewardsList.statusLabel.setMinimumWidth(116)
     self.resetStatusLabel('<b style="color:red">Reload Rewards</b>')
     self.rewardsList.addWidget(self.rewardsList.statusLabel)
     self.rewardsList.box = QTableWidget()
     self.rewardsList.box.setMinimumHeight(140)
     #self.rewardsList.box.setMaximumHeight(140)
     self.rewardsList.box.setHorizontalScrollBarPolicy(
         Qt.ScrollBarAlwaysOff)
     self.rewardsList.box.setSelectionMode(QAbstractItemView.MultiSelection)
     self.rewardsList.box.setSelectionBehavior(QAbstractItemView.SelectRows)
     self.rewardsList.box.setShowGrid(True)
     self.rewardsList.box.setColumnCount(4)
     self.rewardsList.box.setRowCount(0)
     self.rewardsList.box.horizontalHeader().setSectionResizeMode(
         2, QHeaderView.Stretch)
     self.rewardsList.box.verticalHeader().hide()
     item = QTableWidgetItem()
     item.setText("PIVs")
     item.setTextAlignment(Qt.AlignCenter)
     self.rewardsList.box.setHorizontalHeaderItem(0, item)
     item = QTableWidgetItem()
     item.setText("Confirmations")
     item.setTextAlignment(Qt.AlignCenter)
     self.rewardsList.box.setHorizontalHeaderItem(1, item)
     item = QTableWidgetItem()
     item.setText("TX Hash")
     item.setTextAlignment(Qt.AlignCenter)
     self.rewardsList.box.setHorizontalHeaderItem(2, item)
     item = QTableWidgetItem()
     item.setText("TX Output N")
     item.setTextAlignment(Qt.AlignCenter)
     self.rewardsList.box.setHorizontalHeaderItem(3, item)
     item = QTableWidgetItem()
     self.rewardsList.addWidget(self.rewardsList.box)
     layout.addRow(self.rewardsList)
     ##--- ROW 3
     hBox2 = QHBoxLayout()
     self.btn_selectAllRewards = QPushButton("Select All")
     self.btn_selectAllRewards.setToolTip("Select all available UTXOs")
     hBox2.addWidget(self.btn_selectAllRewards)
     self.btn_deselectAllRewards = QPushButton("Deselect all")
     self.btn_deselectAllRewards.setToolTip("Deselect current selection")
     hBox2.addWidget(self.btn_deselectAllRewards)
     hBox2.addWidget(QLabel("Selected rewards"))
     self.selectedRewardsLine = QLabel()
     self.selectedRewardsLine.setMinimumWidth(200)
     self.selectedRewardsLine.setStyleSheet("color: purple")
     self.selectedRewardsLine.setToolTip("PIVX to move away")
     hBox2.addWidget(self.selectedRewardsLine)
     hBox2.addStretch(1)
     self.swiftxCheck = QCheckBox()
     self.swiftxCheck.setToolTip(
         "check for SwiftX instant transaction (flat fee rate of 0.01 PIV)")
     hBox2.addWidget(QLabel("Use SwiftX"))
     hBox2.addWidget(self.swiftxCheck)
     layout.addRow(hBox2)
     ##--- ROW 4
     hBox3 = QHBoxLayout()
     self.destinationLine = QLineEdit()
     self.destinationLine.setToolTip("PIVX address to transfer rewards to")
     hBox3.addWidget(self.destinationLine)
     hBox3.addWidget(QLabel("Fee"))
     self.feeLine = QDoubleSpinBox()
     self.feeLine.setDecimals(8)
     self.feeLine.setPrefix("PIV  ")
     self.feeLine.setToolTip("Insert a small fee amount")
     self.feeLine.setFixedWidth(150)
     self.feeLine.setSingleStep(0.001)
     hBox3.addWidget(self.feeLine)
     self.btn_sendRewards = QPushButton("Send")
     hBox3.addWidget(self.btn_sendRewards)
     layout.addRow(QLabel("Destination Address"), hBox3)
     ##--- ROW 5
     hBox4 = QHBoxLayout()
     hBox4.addStretch(1)
     self.loadingLine = QLabel(
         "<b style='color:red'>Preparing TX.</b> Completed: ")
     self.loadingLinePercent = QProgressBar()
     self.loadingLinePercent.setMaximumWidth(200)
     self.loadingLinePercent.setMaximumHeight(10)
     self.loadingLinePercent.setRange(0, 100)
     hBox4.addWidget(self.loadingLine)
     hBox4.addWidget(self.loadingLinePercent)
     self.loadingLine.hide()
     self.loadingLinePercent.hide()
     layout.addRow(hBox4)
     #--- Set Layout
     self.rewardsForm.setLayout(layout)
     #--- ROW 5
     self.btn_Cancel = QPushButton("Clear/Reload")
    def init_controls(self):
        form = QFormLayout()
        self.vbox.addLayout(form)

        # self.init_description(form)
        self.diaphragm_widget(form)
Пример #9
0
    def inicializar_tab_datos_contacto(self):
        layout = QFormLayout()
        layout.addRow('Correo-e:', QLineEdit())
        layout.addRow('Dirección:', QLineEdit())

        self.tab_datos_contacto.setLayout(layout)
Пример #10
0
    def form(self):

        # layout:QFormLayout
        layout = QFormLayout()

        # qIntegerSpinBoxUserID:QSpinBox
        self.qIntegerSpinBoxUserID = QSpinBox();
        self.qIntegerSpinBoxUserID.setValue(self.userID)
        self.qIntegerSpinBoxUserID.setMinimum(0)
        self.qIntegerSpinBoxUserID.setMaximum(len(self.users))
        self.qIntegerSpinBoxUserID.setSingleStep(1)
        self.qIntegerSpinBoxUserID.valueChanged.connect(self.clickUser1)
        layout.addRow(QLabel("User ID:"), self.qIntegerSpinBoxUserID)

        # qIntegerSpinBoxDimensionX:QSpinBox
        self.qIntegerSpinBoxDimensionX = QSpinBox();
        self.qIntegerSpinBoxDimensionX.setValue(self.dimensionX)
        self.qIntegerSpinBoxDimensionX.setMinimum(0)
        self.qIntegerSpinBoxDimensionX.setMaximum(3)
        self.qIntegerSpinBoxDimensionX.setSingleStep(1)
        self.qIntegerSpinBoxDimensionX.valueChanged.connect(self.clickUser1)
        layout.addRow(QLabel("Dimension X:"), self.qIntegerSpinBoxDimensionX)

        # qIntegerSpinBoxDimensionY:QSpinBox
        self.qIntegerSpinBoxDimensionY = QSpinBox();
        self.qIntegerSpinBoxDimensionY.setValue(self.dimensionY)
        self.qIntegerSpinBoxDimensionY.setMinimum(0)
        self.qIntegerSpinBoxDimensionY.setMaximum(3)
        self.qIntegerSpinBoxDimensionY.setSingleStep(1)
        self.qIntegerSpinBoxDimensionY.valueChanged.connect(self.clickUser1)
        layout.addRow(QLabel("Dimension Y:"), self.qIntegerSpinBoxDimensionY)

        # self.qTextEditUser:QTextEdit
        self.qTextEditUser = QTextEdit()
        for uLineI in self.users[self.userID].exportAsList():
          self.qTextEditUser.append(str(uLineI))
        self.qTextEditUser.verticalScrollBar().setValue(self.qTextEditUser.verticalScrollBar().minimum())
        #self.qTextEditUser.setReadOnly(True)
        layout.addRow("User Profile Model Def.", self.qTextEditUser)

        # qDoubleSpinBoxWeightX:QDoubleSpinBox
        self.qDoubleSpinBoxWeightX = QDoubleSpinBox();
        self.qDoubleSpinBoxWeightX.setValue(self.wx)
        self.qDoubleSpinBoxWeightX.setMinimum(0.05)
        self.qDoubleSpinBoxWeightX.setMaximum(0.95)
        self.qDoubleSpinBoxWeightX.setSingleStep(0.05)
        self.qDoubleSpinBoxWeightX.valueChanged.connect(self.clickUser1)
        layout.addRow(QLabel("Weight X:"), self.qDoubleSpinBoxWeightX)

        # qDoubleSpinBoxContourLine:QDoubleSpinBox
        self.qDoubleSpinBoxContourLine = QDoubleSpinBox();
        self.qDoubleSpinBoxContourLine.setValue(self.aggrLevel)
        self.qDoubleSpinBoxContourLine.setMinimum(0.05)
        self.qDoubleSpinBoxContourLine.setMaximum(0.95)
        self.qDoubleSpinBoxContourLine.setSingleStep(0.05)
        self.qDoubleSpinBoxContourLine.valueChanged.connect(self.clickUser1)
        layout.addRow(QLabel("Contour Line:"), self.qDoubleSpinBoxContourLine)

#        # button:QPushButton
#        button = QtWidgets.QPushButton('Show')
#        button.clicked.connect(self.clickUser1)
#        layout.addWidget(button)

        # qGroupBox:QGroupBox
        qGroupBox = QGroupBox("User definition")
        qGroupBox.setLayout(layout)

        self.layout.addWidget(qGroupBox)
Пример #11
0
 def __init__(self, engine):
     super(ConfigWindow, self).__init__()
     self.setupUi(self)
     self._engine = engine
     machine_options = {
         'Keyboard': KeyboardOption,
         'Treal': NopeOption,
     }
     machines = {
         machine: _(machine)
         for machine in engine.list_plugins('machine')
     }
     mappings = (
         (_('Interface'), (
             ConfigOption(_('Start minimized:'), 'start_minimized', BooleanOption,
                          _('Minimize the main window to systray on startup.')),
             ConfigOption(_('Show paper tape:'), 'show_stroke_display', BooleanOption,
                          _('Open the paper tape on startup.')),
             ConfigOption(_('Show suggestions:'), 'show_suggestions_display', BooleanOption,
                          _('Open the suggestions dialog on startup.')),
             ConfigOption(_('Add translation dialog opacity:'), 'translation_frame_opacity',
                          partial(IntOption, maximum=100, minimum=0),
                          _('Set the translation dialog opacity:\n'
                            '- 0 makes the dialog invisible\n'
                            '- 100 is fully opaque')),
         )),
         (_('Logging'), (
             ConfigOption(_('Log file:'), 'log_file_name',
                          partial(FileOption,
                                  _('Select a log file'),
                                  _('Log files') + ' (*.log)'),
                          _('File to use for logging strokes/translations.')),
             ConfigOption(_('Log strokes:'), 'enable_stroke_logging', BooleanOption,
                          _('Save strokes to the logfile.')),
             ConfigOption(_('Log translations:'), 'enable_translation_logging', BooleanOption,
                          _('Save translations to the logfile.')),
         )),
         (_('Machine'), (
             ConfigOption(_('Type:'), 'machine_type', partial(ChoiceOption, choices=machines),
                          dependents=(
                              ('machine_specific_options', engine.machine_specific_options),
                              ('system_keymap', lambda v: self._update_keymap(machine_type=v)),
                          )),
             ConfigOption(_('Options:'), 'machine_specific_options',
                          lambda *args: machine_options.get(self._config['machine_type'],
                                                            SerialOption)(*args)),
             ConfigOption(_('Keymap:'), 'system_keymap', KeymapOption),
         )),
         (_('Output'), (
             ConfigOption(_('Enable at start:'), 'auto_start', BooleanOption,
                          _('Enable output on startup.')),
             ConfigOption(_('Start attached:'), 'start_attached', BooleanOption,
                          _('Disable preceding space on first output.\n'
                            '\n'
                            'This option is only applicable when spaces are placed before.')),
             ConfigOption(_('Start capitalized:'), 'start_capitalized', BooleanOption,
                          _('Capitalize the first word.')),
             ConfigOption(_('Space placement:'), 'space_placement',
                          partial(ChoiceOption, choices={
                              'Before Output': _('Before Output'),
                              'After Output': _('After Output'),
                          }),
                          _('Set automatic space placement: before or after each word.')),
             ConfigOption(_('Undo levels:'), 'undo_levels',
                          partial(IntOption,
                                  maximum=10000,
                                  minimum=MINIMUM_OUTPUT_CONFIG_UNDO_LEVELS),
                          _('Set how many preceding strokes can be undone.\n'
                            '\n'
                            'Note: the effective value will take into account the\n'
                            'dictionaries entry with the maximum number of strokes.')),
         )),
         (_('System'), (
             ConfigOption(_('Type'), 'system_name',
                          partial(ChoiceOption, choices={
                              name: name
                              for name in engine.list_plugins('system')
                          }),
                          dependents=(
                              ('system_keymap', lambda v: self._update_keymap(system_name=v)),
                          )),
         )),
     )
     # Only keep supported options, to avoid messing with things like
     # dictionaries, that are handled by another (possibly concurrent)
     # dialog.
     supported_options = set()
     for section, option_list in mappings:
         supported_options.update(option.option_name for option in option_list)
     self._config = {
         name: value
         for name, value in engine.config.items()
         if name in supported_options
     }
     # Create and fill tabs.
     options = {}
     for section, option_list in mappings:
         layout = QFormLayout()
         for option in option_list:
             widget = self._create_option_widget(option)
             options[option.option_name] = option
             option.tab_index = self.tabs.count()
             option.layout = layout
             option.widget = widget
             label = QLabel(option.display_name)
             label.setToolTip(option.help_text)
             layout.addRow(label, widget)
         frame = QFrame()
         frame.setLayout(layout)
         scroll_area = QScrollArea()
         scroll_area.setWidgetResizable(True)
         scroll_area.setWidget(frame)
         self.tabs.addTab(scroll_area, section)
     # Update dependents.
     for option in options.values():
         option.dependents = [
             (options[option_name], update_fn)
             for option_name, update_fn in option.dependents
         ]
     buttons = self.findChild(QWidget, 'buttons')
     buttons.button(QDialogButtonBox.Ok).clicked.connect(self.on_apply)
     buttons.button(QDialogButtonBox.Apply).clicked.connect(self.on_apply)
     self.restore_state()
     self.finished.connect(self.save_state)
Пример #12
0
    def initUI(self):
        pg.setConfigOption('background', 'w')
        self.setWindowTitle('PyMFDFA')
        self.setWindowIcon(QIcon("Icons\multifractal.ico"))
        ##################################################################
        ### Barra de Herramientas
        ##################################################################
        self.barra_estado = QStatusBar()
        self.setStatusBar(self.barra_estado)

        barra_herr = QToolBar("Toolbar")
        self.addToolBar(barra_herr)

        barra_menu = QMenuBar()
        self.setMenuBar(barra_menu)

        abrir_action = QAction(QIcon('Icons/open.png'), 'Load Signal', self)
        abrir_action.setToolTip('Load Signal')
        abrir_action.setStatusTip('Load signal to segment')
        abrir_action.triggered.connect(self.cargarSenial)
        barra_herr.addAction(abrir_action)
        barra_herr.addSeparator()

        DFA_action = QAction(QIcon('Icons/DFA.ico'),
                             'Detrended Analysis Fluctuation', self)
        DFA_action.setToolTip('Detrended Analysis Fluctuation')
        DFA_action.setStatusTip('Detrended Analysis Fluctuation')
        DFA_action.triggered.connect(self.DFA_boton)
        barra_herr.addAction(DFA_action)

        MDFA_action = QAction(QIcon('Icons/multifractal.ico'),
                              'Multifractal Detrended Analysis Fluctuation',
                              self)
        MDFA_action.setToolTip('Multifractal Detrended Analysis Fluctuation')
        MDFA_action.setStatusTip('Multifractal Detrended Analysis Fluctuation')
        MDFA_action.triggered.connect(self.MFDFA_boton)
        barra_herr.addAction(MDFA_action)
        #################################################################
        ##     Definición de variables globales
        #################################################################
        self.nombreSenial = ''
        self.y = []
        self.aux = 0
        self.aux2 = False
        #################################################################
        ##     Definición de elementos contenedores
        #################################################################
        contain = QSplitter(Qt.Horizontal)
        graficos = QVBoxLayout()
        botones = QVBoxLayout()
        results2 = QFormLayout()
        results3 = QFormLayout()
        results = QFormLayout()
        #################################################################
        ##     Elementos del layout botones
        #################################################################
        #Region for segment in signal
        self.lr = pg.LinearRegionItem([0, 6000])

        btnLoadSig = QPushButton('Load signal')
        btnLoadSig.clicked.connect(self.cargarSenial)
        btnLoadSig.setStyleSheet("font-size: 18px")

        self.btnIniciar = QPushButton('Start segmentation')
        self.btnIniciar.clicked.connect(self.enabledButtons)
        self.btnIniciar.setEnabled(False)
        self.btnIniciar.setStyleSheet("font-size: 18px")

        self.btnAdd = QPushButton('Add segment')
        self.btnAdd.clicked.connect(self.addInterval)
        self.btnAdd.setEnabled(False)
        self.btnAdd.setStyleSheet("font-size: 18px")

        txtnumseg = QLabel("Segment num:")
        txtnumseg.setStyleSheet("font-size: 18px")

        validator = QIntValidator()
        validator.setRange(100, 999)

        self.txtns = QLineEdit()
        self.txtns.setValidator(validator)
        self.txtns.setEnabled(False)

        lbl_umbral = QLabel('Upper threshold:')
        lbl_umbral.setStyleSheet("font-size: 18px")
        self.txt_umbral = QLineEdit()

        lbl_basal = QLabel('Lower threshold')
        lbl_basal.setStyleSheet("font-size: 18px")
        self.txt_basal = QLineEdit()

        lbl_ancho = QLabel('Segment width ')
        lbl_ancho.setStyleSheet("font-size: 18px")
        self.txt_ancho = QLineEdit()

        lbl_separacion = QLabel('Distance:')
        lbl_separacion.setStyleSheet("font-size: 18px")
        self.txt_separacion = QLineEdit()

        self.btnauto = QPushButton('Start auto-segmentation')
        self.btnauto.clicked.connect(self.autoseg)
        self.btnauto.setStyleSheet("font-size: 18px")
        self.btnauto.setEnabled(False)

        lbl_total = QLabel('# of segments:')
        lbl_total.setStyleSheet('font-size: 18px')

        self.txt_total = QLabel()
        self.txt_total.setStyleSheet('font-size: 18px')

        lbl_file = QLabel('Segment: ')
        lbl_file.setStyleSheet("font-size: 18px")
        self.seg_pos = QComboBox()
        self.seg_pos.currentIndexChanged.connect(self.localizacion)

        self.lbl_inicio = QLabel()
        self.lbl_inicio.setStyleSheet("font-size: 18px")
        self.lbl_final = QLabel()
        self.lbl_final.setStyleSheet("font-size: 18px")

        self.btn_loc = QPushButton('Find segment')
        self.btn_loc.setStyleSheet("font-size: 18px")
        self.btn_loc.clicked.connect(self.colocar)
        self.btn_loc.setEnabled(False)

        lbl_autoseg = QLabel("Auto-Segmentation")
        lbl_autoseg.setStyleSheet("font-size: 20px")
        #################################################################
        ##     Elementos del layout graficos
        #################################################################
        self.plot1 = pg.PlotWidget()
        self.plot1.setLabel('bottom', color='k', **{'font-size': '16pt'})
        self.plot1.getAxis('bottom').setPen(pg.mkPen(color='k', width=1))
        self.plot1.setLabel('left', color='k', **{'font-size': '16pt'})
        self.plot1.getAxis('left').setPen(pg.mkPen(color='k', width=1))
        self.plot1.showGrid(1, 1, 0.2)
        graficos.addWidget(self.plot1)
        #################################################################
        ##     Colocar elementos en layout botones
        #################################################################
        botones.addWidget(btnLoadSig)
        botones.addWidget(self.btnIniciar)
        results.addRow(txtnumseg, self.txtns)
        results.addRow(self.btnAdd)
        botones.addLayout(results)

        results2.addRow(lbl_autoseg)
        results2.addRow(lbl_umbral, self.txt_umbral)
        results2.addRow(lbl_basal, self.txt_basal)
        results2.addRow(lbl_ancho, self.txt_ancho)
        results2.addRow(lbl_separacion, self.txt_separacion)
        botones.addLayout(results2)
        botones.addWidget(self.btnauto)
        results3.addRow(lbl_total, self.txt_total)
        results3.addRow(lbl_file, self.seg_pos)
        results3.addRow(self.lbl_inicio, self.lbl_final)
        results3.addRow(self.btn_loc)
        botones.addLayout(results3)
        #################################################################
        ##     Colocar elementos en la ventana
        #################################################################
        bot = QWidget()
        bot.setLayout(botones)
        gra = QWidget()
        gra.setLayout(graficos)

        contain.addWidget(gra)
        contain.addWidget(bot)
        self.setCentralWidget(contain)
        self.show()
Пример #13
0
    def init_parameter_window(self):

        layout = QFormLayout()
        layout.setContentsMargins(300, 150, 300, 150)  # left,top,right,bottom

        # - Parameters

        # heart rate
        self.sb_heartrate = QSpinBox()
        self.sb_heartrate.setRange(30, 175)

        container = Wrapper((self.sb_heartrate, QLabel(("(bpm)"))))
        layout.addRow("Heart Rate:", container)

        # chamber to pulse
        rbg_chambertopulse = QButtonGroup()
        self.rb_ctp_A = QRadioButton("A")
        rbg_chambertopulse.addButton(self.rb_ctp_A)
        self.rb_ctp_V = QRadioButton("V")
        rbg_chambertopulse.addButton(self.rb_ctp_V)

        container = Wrapper((self.rb_ctp_A, self.rb_ctp_V))
        layout.addRow("Chamber to Pulse: ", container)

        # pulse width
        self.sb_pulsewidth = QDoubleSpinBox()
        self.sb_pulsewidth.setRange(0.1, 1.9)
        self.sb_pulsewidth.setDecimals(1)
        self.sb_pulsewidth.setSingleStep(0.1)

        container = Wrapper((self.sb_pulsewidth, QLabel(("(msec)"))))
        layout.addRow("Pulse Width:", container)

        # pulse amplitude
        self.sb_pulseamplitude = QDoubleSpinBox()
        self.sb_pulseamplitude.setRange(0.5, 7.0)
        self.sb_pulseamplitude.setDecimals(1)
        self.sb_pulseamplitude.setSingleStep(0.1)

        container = Wrapper((self.sb_pulseamplitude, QLabel(("(V)"))))
        layout.addRow("Pulse Amplitude:", container)

        # chamber to sense
        rbg_chambertosense = QButtonGroup()
        self.rb_cts_A = QRadioButton("A")
        rbg_chambertosense.addButton(self.rb_cts_A)
        self.rb_cts_V = QRadioButton("V")
        rbg_chambertosense.addButton(self.rb_cts_V)
        self.rb_cts_none = QRadioButton("None")
        rbg_chambertosense.addButton(self.rb_cts_none)

        container = Wrapper((self.rb_cts_A, self.rb_cts_V, self.rb_cts_none))
        layout.addRow("Chamber to Sense: ", container)

        # ventricular sensitivity
        self.sb_ventricularsensitivity = QDoubleSpinBox()
        self.sb_ventricularsensitivity.setRange(1, 10)
        self.sb_ventricularsensitivity.setDecimals(1)
        self.sb_ventricularsensitivity.setSingleStep(0.1)

        container = Wrapper((self.sb_ventricularsensitivity, QLabel(("(mV)"))))
        layout.addRow("Ventricular Sensitivity: ", container)

        # atrial sensitivity
        rbg_atrialsensitivity = QButtonGroup()
        self.rb_as_25 = QRadioButton("0.25")
        rbg_atrialsensitivity.addButton(self.rb_as_25)
        self.rb_as_50 = QRadioButton("0.50")
        rbg_atrialsensitivity.addButton(self.rb_as_50)
        self.rb_as_75 = QRadioButton("0.75")
        rbg_atrialsensitivity.addButton(self.rb_as_75)

        container = Wrapper(
            (self.rb_as_25, self.rb_as_50, self.rb_as_75, QLabel("(mV)")))
        layout.addRow("Atrial Sensitivity: ", container)

        # rate adaption
        rbg_rateadaption = QButtonGroup()
        self.rb_ra_on = QRadioButton("On")
        rbg_rateadaption.addButton(self.rb_ra_on)
        self.rb_ra_off = QRadioButton("Off")
        rbg_rateadaption.addButton(self.rb_ra_off)

        container = Wrapper((self.rb_ra_on, self.rb_ra_off))
        layout.addRow("Rate Adaption: ", container)

        # Medium Activity Threshold
        self.sb_mediumactivitythreshold = QSpinBox()
        self.sb_mediumactivitythreshold.setRange(0, 500)

        container = Wrapper((self.sb_mediumactivitythreshold, ))
        layout.addRow("Medium Activity Threshold: ", container)

        # High Activity Threshold
        self.sb_highactivitythreshold = QSpinBox()
        self.sb_highactivitythreshold.setRange(0, 500)

        container = Wrapper((self.sb_highactivitythreshold, ))
        layout.addRow("High Activity Interval: ", container)

        # Reaction Time
        self.sb_reactiontime = QSpinBox()
        self.sb_reactiontime.setRange(10, 50)

        container = Wrapper((self.sb_reactiontime, QLabel("(s)")))
        layout.addRow("Reaction Time: ", container)

        # Recovery Time
        self.sb_recoverytime = QSpinBox()
        self.sb_recoverytime.setRange(2, 16)

        container = Wrapper((self.sb_recoverytime, QLabel("(min)")))
        layout.addRow("Recovery Time: ", container)

        # hysterisis
        rbg_hysteris = QButtonGroup()
        self.rb_h_on = QRadioButton("On")
        rbg_hysteris.addButton(self.rb_ra_on)
        self.rb_h_off = QRadioButton("Off")
        rbg_hysteris.addButton(self.rb_ra_off)

        container = Wrapper((self.rb_h_on, self.rb_h_off))
        layout.addRow("Hysterisis: ", container)

        # hysterisis interval
        self.sb_hysterisisinterval = QSpinBox()
        self.sb_hysterisisinterval.setRange(200, 500)

        container = Wrapper((self.sb_hysterisisinterval, QLabel(("(msec)"))))
        layout.addRow("Hysterisis Interval: ", container)

        # vrp
        self.sb_vrp = QSpinBox()
        self.sb_vrp.setRange(150, 500)

        container = Wrapper((self.sb_vrp, QLabel("(msec)")))
        layout.addRow("VRP: ", container)

        # arp
        self.sb_arp = QSpinBox()
        self.sb_arp.setRange(150, 500)

        container = Wrapper((self.sb_arp, QLabel("(msec)")))
        layout.addRow("ARP: ", container)

        # - Set default parameter values
        self.param_set_default()

        # - Buttons
        b_logout, b_update = QPushButton("Logout"), QPushButton("Update")
        layout.addRow(b_logout, b_update)

        b_logout.clicked.connect(self.logout)
        b_update.clicked.connect(self.update)

        self.rb_ctp_A.clicked.connect(self.check_chamber_pulse)
        self.rb_ctp_V.clicked.connect(self.check_chamber_pulse)
        self.rb_cts_A.clicked.connect(self.check_chamber_sense)
        self.rb_cts_V.clicked.connect(self.check_chamber_sense)

        self.stack2.setLayout(layout)
Пример #14
0
 def init_ui(self):
     self.form_layout = QFormLayout()
     self.refresh_objects()
     self.setLayout(self.form_layout)
Пример #15
0
    def dibujar_IU(self):
        self.setWindowTitle("Ingreso de Lotes")
        self.setWindowModality(Qt.ApplicationModal)
        self.setSizeGripEnabled(False)
        self.setContentsMargins(10, 10, 10, 10)

        self.lotes = QTableWidget(0, 6)
        self.lotes_error = QLabel("*")
        self.cantidad_lotes = QLabel("0 Lotes")
        self.espaciador = QLabel(" ")

        self.lotes.setHorizontalHeaderLabels([
            "Id", "Descripción", "Facturación Media Anual",
            "Recursos Financieros", "Experiencia", "Oculto"
        ])
        self.lotes.verticalHeader().setVisible(False)
        self.lotes.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)
        self.lotes.horizontalHeader().setDefaultAlignment(Qt.AlignLeft)
        self.lotes.horizontalHeader().hideSection(5)
        self.lotes.setSelectionMode(QAbstractItemView.SingleSelection)
        self.lotes.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.lotes.resizeColumnsToContents()
        self.lotes.setColumnWidth(0, self.lotes.columnWidth(0) + 10)
        self.lotes.setColumnWidth(1, self.lotes.columnWidth(1) + 150)
        self.lotes.setColumnWidth(3, self.lotes.columnWidth(2))
        self.lotes.setColumnWidth(4, self.lotes.columnWidth(2))
        self.lotes.resize(self.lotes.sizeHint())
        self.lotes.setSizeAdjustPolicy(
            QAbstractScrollArea.AdjustToContentsOnFirstShow)
        self.lotes.setFixedHeight(self.lotes.height() + 100)
        self.lotes.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.lotes.cellChanged.connect(self.marcar_lotes_erroneos)
        self.lotes.setToolTip("Lotes que son licitados")
        self.lotes.doubleClicked.connect(self.editar_lote)
        self.lotes_error.setStyleSheet("QLabel {color : red}")
        self.lotes_error.setVisible(False)
        self.lotes_error.setFixedWidth(10)
        #self.cantidad_lotes.setFixedWidth(self.lotes.columnWidth(0))

        boton_continuar = QPushButton(QIcon("iconos/right-arrow.png"), "")
        boton_continuar.clicked.connect(self.continuar)
        boton_continuar.setDefault(True)
        boton_continuar.setMinimumSize(50, 10)
        boton_continuar.setToolTip("Continuar al ingreso de Empresas")
        boton_retroceder = QPushButton(QIcon("iconos/left-arrow.png"), "")
        boton_retroceder.clicked.connect(self.retroceder)
        boton_retroceder.setMinimumSize(50, 10)
        boton_retroceder.setToolTip("Retroceder al Menú Principal")
        boton_agregar_lote = QPushButton(QIcon("iconos/plus.png"), "")
        boton_agregar_lote.clicked.connect(self.agregar_lote)
        boton_agregar_lote.setMinimumSize(50, 10)
        boton_agregar_lote.setToolTip("Agregar nuevo Lote")
        boton_eliminar_lote = QPushButton(QIcon("iconos/minus.png"), "")
        boton_eliminar_lote.clicked.connect(self.eliminar_lote)
        boton_eliminar_lote.setMinimumSize(50, 10)
        boton_eliminar_lote.setToolTip("Eliminar Lote seleccionado")
        boton_editar_lote = QPushButton(QIcon("iconos/edit.png"), "")
        boton_editar_lote.clicked.connect(self.editar_lote)
        boton_editar_lote.setMinimumSize(50, 10)
        boton_editar_lote.setToolTip("Editar Lote seleccionado")
        caja_botones = QVBoxLayout()
        caja_botones.addStretch(1)
        caja_botones.addWidget(boton_agregar_lote)
        caja_botones.addWidget(boton_eliminar_lote)
        caja_botones.addWidget(boton_editar_lote)
        caja_botones.addStretch(5)
        caja_totales = QHBoxLayout()
        caja_totales.addWidget(self.cantidad_lotes)
        caja_totales.addStretch(1)

        grilla = QGridLayout()
        grilla.setColumnMinimumWidth(1, 20)
        #grilla.addWidget(QLabel("Lotes"), 0, 0, Qt.AlignTop)
        grilla.addWidget(self.lotes_error, 0, 1, Qt.AlignTop | Qt.AlignRight)
        grilla.addWidget(self.lotes, 0, 2)
        grilla.addLayout(caja_botones, 0, 3)
        grilla.addWidget(self.espaciador, 1, 1)
        grilla.addLayout(caja_totales, 1, 2)
        marco = QGroupBox("Ingrese los lotes que componen la Licitacón")
        marco.setLayout(grilla)

        caja_horizontal = QHBoxLayout()
        caja_horizontal.addStretch(1)
        caja_horizontal.addWidget(boton_retroceder)
        caja_horizontal.addStretch(5)
        caja_horizontal.addWidget(boton_continuar)
        caja_horizontal.addStretch(1)
        caja_horizontal.setContentsMargins(10, 10, 10, 0)
        formulario = QFormLayout(self)
        formulario.addRow(marco)
        formulario.addRow(caja_horizontal)
        self.resize(self.sizeHint())
        self.setMinimumSize(self.sizeHint())
        self.setMaximumSize(self.sizeHint())
Пример #16
0
    def __init__(self, parent=None):
        super().__init__()
        self.parent = parent
        self.setLayout(QVBoxLayout())
        self.layout().setAlignment(Qt.AlignCenter)

        hbox = QHBoxLayout()
        self.layout().addLayout(hbox)

        logo = QLabel()
        logo.setFixedSize(64, 64)
        logo.setScaledContents(True)
        logo.setPixmap(QPixmap(":/images/disk-delete.svg"))
        hbox.addWidget(logo)

        self.diskDeleteRadio = QRadioButton()
        self.diskDeleteRadio.setChecked(True)
        font = self.diskDeleteRadio.font()
        font.setBold(True)
        self.diskDeleteRadio.setFont(font)
        hbox.addWidget(self.diskDeleteRadio)

        form = QFormLayout()
        form.setContentsMargins(90, 0, 0, 0)
        self.layout().addLayout(form)

        self.warning_label = QLabel()
        form.addRow(self.warning_label)

        vbox = QVBoxLayout()
        form.addRow(vbox)

        self.cryptCheck = QCheckBox()
        vbox.addWidget(self.cryptCheck)
        self.crypt_label = QLabel()
        vbox.addWidget(self.crypt_label)

        vbox = QVBoxLayout()
        form.addRow(vbox)

        self.homeCheck = QCheckBox()
        vbox.addWidget(self.homeCheck)
        self.home_label = QLabel()
        vbox.addWidget(self.home_label)

        hbox = QHBoxLayout()
        self.layout().addLayout(hbox)

        logo = QLabel()
        logo.setFixedSize(64, 64)
        logo.setScaledContents(True)
        logo.setPixmap(QPixmap(":/images/manuel-partition.svg"))
        hbox.addWidget(logo)

        self.manuelRadio = QRadioButton()
        font = self.manuelRadio.font()
        font.setBold(True)
        self.manuelRadio.setFont(font)
        hbox.addWidget(self.manuelRadio)

        self.retranslate()
Пример #17
0
    def setup_right_panel(self, parent=None):

        self.PVmode = 'P'  #Control modes (P for pressure / V for volume)
        self.FDmode = 'D'  #Control modes (F for load / D for displacement)

        # Creation of the separetor object
        sepTestH = [QFrame() for i in range(7)]
        for obj in sepTestH:
            obj.setFrameShape(QFrame.HLine)  #Vertical line
            obj.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
            obj.setFrameShadow(QFrame.Sunken)
            obj.setLineWidth(1)

        sepTestV = [QFrame() for i in range(7)]
        for obj in sepTestV:
            obj.setFrameShape(QFrame.VLine)  #Vertical line
            obj.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
            obj.setFrameShadow(QFrame.Sunken)
            obj.setLineWidth(1)

        # Button for initialisation
        self.inibutton = QPushButton(self)  #Creation of the widget
        self.inibutton.clicked.connect(
            self.clickMethodAcquisition
        )  #Method to connect the click on the button with the function clickMethodAcquisition
        #self.inibutton.resize(100,32)
        self.inibutton.setStatusTip(
            'Run the acquisition'
        )  #When cursor on the button the statue bar show the message
        self.inibutton.setIcon(
            QIcon(
                resource_path(
                    'tension_inflation/resources/button_start_push.png'))
        )  #Change the button's icon by the resources
        self.inibutton.setIconSize(QSize(30, 30))  #Change the size of the icon

        # Add button for stop
        self.stopbutton = QPushButton(self)
        self.stopbutton.clicked.connect(self.clickMethodStop)
        self.stopbutton.setIcon(
            QIcon(
                resource_path('tension_inflation/resources/button_stop.png')))
        #self.stopbutton.resize(100,32)
        self.stopbutton.setStatusTip('Stop the acquisition')
        self.stopbutton.setIconSize(QSize(30, 30))
        #self.stopbutton.move(10, 30)

        #Create label: running or stopped state
        self.label_state = QLabel()  #Creation of the widget
        self.label_state.setText(" Stopped ")  #Set the text in the label
        self.label_state.setAlignment(
            Qt.AlignCenter
        )  #Alignement of the label (here it's the vertical alignement)
        self.label_state.setFont(QFont(
            "Arial", 16, QFont.Bold))  #Set the writing font with the size
        self.label_state.setStyleSheet("background-color: red;")

        #Widget with user input for changing load
        self.input_sample = QLineEdit()  #Creation of the widget
        self.input_sample.setMaxLength(30)  #Number of characters accepted
        self.input_sample.setAlignment(Qt.AlignRight)
        self.input_sample.setFont(QFont("Arial", 12))
        self.input_sample.setStyleSheet(
            "QLineEdit{background: white;}")  #Background color of the widget

        #hChange the writing color from write to black because we set the background write (I like when it's beautiful)
        self.input_sample.palette = QPalette()
        self.input_sample.palette.setColor(QPalette.Text, Qt.black)
        self.input_sample.setPalette(self.input_sample.palette)

        #Creation of the label attached to the QLineEdit
        label_sample_input = QLabel("Sample Name:", self)
        label_sample_input.setFont(QFont("Arial", 12, QFont.Bold))

        #Put the QLineEdit and the label together (like a form)
        form_sample = QFormLayout()  #Creation of the layout form
        form_sample.addRow(
            label_sample_input,
            self.input_sample)  #Add things in the layout (by row)

        #Add the button "Send" to the previous layout by putting all that in another layout
        box_sample_input = QHBoxLayout()
        box_sample_input.addLayout(form_sample)
        box_sample_input.setAlignment(Qt.AlignCenter)

        #Layout at top with buttons start and stop
        box_top = QHBoxLayout()
        box_top.addWidget(self.inibutton)
        box_top.addSpacing(0)
        box_top.addWidget(self.stopbutton)
        box_top.addLayout(box_sample_input)
        box_top.addStretch()

        box_top.addWidget(sepTestV[6])
        box_top.addWidget(self.label_state)

        #######################################################
        # Choose of the commande mode
        #######################################################

        #Create label: running or stopped state
        label_control = QLabel()  #Creation of the widget
        label_control.setText(" Control: ")  #Set the text in the label
        label_control.setAlignment(
            Qt.AlignCenter
        )  #Alignement of the label (here it's the vertical alignement)
        label_control.setFont(QFont(
            "Arial", 16, QFont.Bold))  #Set the writing font with the size

        group_infl = QButtonGroup(self.centralWidget)
        #Add a radio button to select mode of command
        self.Radio_volumeMode = QRadioButton("Mode: Volume")
        self.Radio_volumeMode.clicked.connect(
            lambda: self.Mode(self.Radio_volumeMode))
        group_infl.addButton(self.Radio_volumeMode)

        self.Radio_pressureMode = QRadioButton("Mode: Pressure")
        self.Radio_pressureMode.setChecked(True)
        self.Radio_pressureMode.clicked.connect(
            lambda: self.Mode(self.Radio_pressureMode))
        group_infl.addButton(self.Radio_pressureMode)

        group_tension = QButtonGroup(self.centralWidget)
        #Add a radio button to select mode of command
        self.Radio_dispMode = QRadioButton("Mode: Displacement")
        self.Radio_dispMode.setChecked(True)
        self.Radio_dispMode.clicked.connect(
            lambda: self.Mode(self.Radio_dispMode))
        group_tension.addButton(self.Radio_dispMode)

        self.Radio_loadMode = QRadioButton("Mode: Load")
        self.Radio_loadMode.clicked.connect(
            lambda: self.Mode(self.Radio_loadMode))
        group_tension.addButton(self.Radio_loadMode)

        box_control = QHBoxLayout()
        box_control.addSpacing(1)
        box_control.addStretch()
        box_control.addWidget(label_control)
        box_control.addSpacing(1)
        box_control.addStretch()
        box_control.addWidget(sepTestV[0])
        box_control.addSpacing(1)
        box_control.addStretch()
        ################################
        box__radio_infl = QVBoxLayout()
        box__radio_infl.addWidget(self.Radio_volumeMode)
        box__radio_infl.addWidget(self.Radio_pressureMode)

        ################################
        box_control.addLayout(box__radio_infl)

        box_control.addSpacing(1)
        box_control.addStretch()
        box_control.addWidget(sepTestV[1])

        ################################
        box__radio_tension = QVBoxLayout()
        box__radio_tension.addWidget(self.Radio_dispMode)
        box__radio_tension.addWidget(self.Radio_loadMode)

        ################################
        box_control.addLayout(box__radio_tension)

        #######################################################
        # Choose the pre-loading
        #######################################################

        label_preloading = QLabel()  #Creation of the widget
        label_preloading.setText(
            " Pre-conditioning: ")  #Set the text in the label
        label_preloading.setAlignment(
            Qt.AlignCenter
        )  #Alignement of the label (here it's the vertical alignement)
        label_preloading.setFont(QFont(
            "Arial", 16, QFont.Bold))  #Set the writing font with the size

        #####################
        self.input_cycleF = QLineEdit()
        self.input_cycleF.setValidator(QDoubleValidator())
        self.input_cycleF.setMaxLength(2)
        self.input_cycleF.setAlignment(Qt.AlignRight)
        self.input_cycleF.setFont(QFont("Arial", 12))
        #input_vol_pressure.setCursor(QCursor(Qt.ArrowCursor))
        self.input_cycleF.setStyleSheet("QLineEdit{background: white;}")

        self.input_cycleF.palette = QPalette()
        self.input_cycleF.palette.setColor(QPalette.Text, Qt.black)
        self.input_cycleF.setPalette(self.input_cycleF.palette)

        self.label_cyclF = QLabel("Cycle Motor:", self)
        self.label_cyclF.setFont(QFont("Arial", 12, QFont.Bold))

        #Layout input label + input number
        form_cycleF = QFormLayout()  #Creation of the layout form
        form_cycleF.addRow(self.label_cyclF,
                           self.input_cycleF)  #Add things in the layout

        #Add the button "Send" to the previous layout by putting all that in another layout
        box_cycle_inputF = QHBoxLayout()
        box_cycle_inputF.addLayout(form_cycleF)

        #####################
        self.input_cycleP = QLineEdit()
        self.input_cycleP.setValidator(QDoubleValidator())
        self.input_cycleP.setMaxLength(2)
        self.input_cycleP.setAlignment(Qt.AlignRight)
        self.input_cycleP.setFont(QFont("Arial", 12))
        self.input_cycleP.setStyleSheet("QLineEdit{background: white;}")

        self.input_cycleP.palette = QPalette()
        self.input_cycleP.palette.setColor(QPalette.Text, Qt.black)
        self.input_cycleP.setPalette(self.input_cycleP.palette)

        self.label_cyclP = QLabel("Cycle Pump:", self)
        self.label_cyclP.setFont(QFont("Arial", 12, QFont.Bold))

        #Layout input label + input number
        form_cycleP = QFormLayout()  #Creation of the layout form
        form_cycleP.addRow(self.label_cyclP,
                           self.input_cycleP)  #Add things in the layout

        #Add the button "Send" to the previous layout by putting all that in another layout
        box_cycle_inputP = QHBoxLayout()
        box_cycle_inputP.addLayout(form_cycleP)

        box_preloading = QHBoxLayout()
        box_preloading.addSpacing(5)
        box_preloading.addLayout(box_cycle_inputF)
        box_preloading.addStretch()
        box_preloading.addLayout(box_cycle_inputP)
        box_preloading.addSpacing(5)

        ########################################################################################
        ########################################################################################
        #######################################################
        #Choose command send
        #######################################################

        label_commands = QLabel()  #Creation of the widget
        label_commands.setText(" Commands: ")  #Set the text in the label
        label_commands.setAlignment(
            Qt.AlignCenter
        )  #Alignement of the label (here it's the vertical alignement)
        label_commands.setFont(QFont(
            "Arial", 16, QFont.Bold))  #Set the writing font with the size

        ####################
        #Widget with user input for changing load
        self.input_disp_load = QLineEdit()  #Creation of the widget
        self.input_disp_load.setValidator(
            QDoubleValidator())  #Only double accepted
        self.input_disp_load.setMaxLength(10)  #Number of characters accepted
        self.input_disp_load.setAlignment(Qt.AlignRight)
        self.input_disp_load.setFont(QFont("Arial", 12))
        self.input_disp_load.setStyleSheet(
            "QLineEdit{background: white;}")  #Background color of the widget

        #hChange the writing color from write to black because we set the background write (I like when it's beautiful)
        self.input_disp_load.palette = QPalette()
        self.input_disp_load.palette.setColor(QPalette.Text, Qt.black)
        self.input_disp_load.setPalette(self.input_disp_load.palette)

        #Creation of the label attached to the QLineEdit
        self.label_load_input = QLabel("Disp (mm):", self)
        self.label_load_input.setFont(QFont("Arial", 12, QFont.Bold))

        #Put the QLineEdit and the label together (like a form)
        form_load = QFormLayout()  #Creation of the layout form
        form_load.addRow(
            self.label_load_input,
            self.input_disp_load)  #Add things in the layout (by row)

        #Add the button "Send" to the previous layout by putting all that in another layout
        box_load_input = QHBoxLayout()
        box_load_input.addLayout(form_load)
        #####################

        #####################
        #Widget with user input for changing pressure
        self.input_vol_pressure = QLineEdit()
        self.input_vol_pressure.setValidator(QDoubleValidator())
        self.input_vol_pressure.setMaxLength(10)
        self.input_vol_pressure.setAlignment(Qt.AlignRight)
        self.input_vol_pressure.setFont(QFont("Arial", 12))
        self.input_vol_pressure.setStyleSheet("QLineEdit{background: white;}")

        self.input_vol_pressure.palette = QPalette()
        self.input_vol_pressure.palette.setColor(QPalette.Text, Qt.black)
        self.input_vol_pressure.setPalette(self.input_vol_pressure.palette)

        self.label_pressure_input = QLabel("Pressure (mmHg):", self)
        self.label_pressure_input.setFont(QFont("Arial", 12, QFont.Bold))

        #Layout input label + input number
        form_pressure = QFormLayout()  #Creation of the layout form
        form_pressure.addRow(
            self.label_pressure_input,
            self.input_vol_pressure)  #Add things in the layout

        #Add the button "Send" to the previous layout by putting all that in another layout
        box_pressure_input = QHBoxLayout()
        box_pressure_input.addLayout(form_pressure)

        #####################

        box_command = QHBoxLayout()
        box_command.addSpacing(5)
        box_command.addLayout(box_load_input)
        box_command.addSpacing(5)
        box_command.addWidget(sepTestV[3])
        box_command.addSpacing(5)
        box_command.addLayout(box_pressure_input)
        box_command.addSpacing(5)
        box_command.addWidget(sepTestV[4])
        box_command.addSpacing(5)

        #######################################################
        #Stop & restart
        #######################################################

        self.button_pause = QPushButton(self)
        self.button_pause.clicked.connect(self.clickMethodPause)
        self.button_pause.setIcon(
            QIcon(
                resource_path('tension_inflation/resources/button_pause.png')))
        self.button_pause.setStatusTip('Stop the test')
        self.button_pause.setFixedSize(60, 50)
        self.button_pause.setIconSize(QSize(40, 40))

        self.button_restart = QPushButton(self)
        self.button_restart.clicked.connect(self.clickMethodRestart)
        self.button_restart.setIcon(
            QIcon(
                resource_path(
                    'tension_inflation/resources/button_restart.png')))
        self.button_restart.setStatusTip('Restart the test')
        self.button_restart.setFixedSize(60, 50)
        self.button_restart.setIconSize(QSize(40, 40))

        box_break = QHBoxLayout()
        box_break.addSpacing(20)
        box_break.addStretch()
        box_break.addWidget(self.button_pause)
        box_break.addSpacing(20)
        box_break.addStretch()
        box_break.addWidget(self.button_restart)
        box_break.addSpacing(20)
        box_break.addStretch()

        #######################################################
        #Graph definition
        #######################################################

        # Button for clear the graphs
        self.clrGraphButton = QPushButton('Clear Graphs', self)
        self.clrGraphButton.clicked.connect(self.clickMethodClearGraphs)
        self.clrGraphButton.setStatusTip('Clear the graphs')
        self.clrGraphButton.setIconSize(QSize(100, 100))

        self.graph1 = pg.PlotWidget(
            self, title="Graph 1")  #Creation of the graphic widget
        self.graph1.setMinimumSize(300,
                                   300)  #Set the minimum size of the graph
        self.graph1.showGrid(x=True, y=True)
        self.graph1.setLabel('left', 'Load (N)')
        self.graph1.setLabel('bottom', 'Pressure (mmHg)')

        self.graphL = self.graph1.plot(pen=None,
                                       symbol='+')  #Show on the graph

        self.graph2 = pg.PlotWidget(
            self, title="Graph 2")  #Creation of the graphic widget
        self.graph2.setMinimumSize(300,
                                   300)  #Set the minimum size of the graph
        self.graph2.showGrid(x=True, y=True)
        self.graph2.setLabel('left', 'Pressure (mmHg)')
        self.graph2.setLabel('bottom', 'Time (s)')

        self.graphR = self.graph2.plot(pen=None,
                                       symbol='+')  #Show on the graph

        group_graph = QButtonGroup(self.centralWidget)
        #Add a radio button to select mode of command
        self.Radio_graphON = QRadioButton("Graph: On")

        self.Radio_graphON.clicked.connect(
            lambda: self.graph_state(self.Radio_graphON))
        group_graph.addButton(self.Radio_graphON)

        self.Radio_graphOFF = QRadioButton("Graph: Off")
        self.Radio_graphOFF.setChecked(True)
        self.Radio_graphOFF.clicked.connect(
            lambda: self.graph_state(self.Radio_graphOFF))
        group_graph.addButton(self.Radio_graphOFF)

        #Creat the layout where to put the graph (and other things)
        graph_layout = QHBoxLayout()
        graph_layout.addWidget(self.graph1)
        graph_layout.addWidget(self.graph2)
        graph_mode = QHBoxLayout()
        graph_mode.addWidget(self.Radio_graphON)
        graph_mode.addWidget(self.Radio_graphOFF)
        graph_mode.addWidget(self.clrGraphButton)

        #######################################################
        #######################################################

        self.panel_test_layout = QVBoxLayout()
        self.panel_test_layout.addLayout(box_top)
        self.panel_test_layout.addWidget(sepTestH[0])
        self.panel_test_layout.addLayout(box_control)
        self.panel_test_layout.addWidget(sepTestH[1])

        self.panel_test_layout.addWidget(label_preloading)
        self.panel_test_layout.addSpacing(20)
        self.panel_test_layout.addLayout(box_preloading)
        self.panel_test_layout.addWidget(sepTestH[2])

        self.panel_test_layout.addWidget(label_commands)
        self.panel_test_layout.addSpacing(20)
        self.panel_test_layout.addLayout(box_command)
        self.panel_test_layout.addWidget(sepTestH[3])
        self.panel_test_layout.addLayout(box_break)
        self.panel_test_layout.addWidget(sepTestH[4])
        self.panel_test_layout.addLayout(graph_mode)
        self.panel_test_layout.addLayout(graph_layout)
Пример #18
0
    def _make_gui(self) -> None:
        self.setWindowTitle("Transfering files")

        # Widgets
        move_icon = QLabel()
        move_icon.setPixmap(QIcon.fromTheme("stock_folder-move").pixmap(48))
        move_icon.setAlignment(Qt.AlignTop | Qt.AlignHCenter)

        header = QLabel("<big>File transfer in progress:</big>")
        header.setTextFormat(Qt.RichText)

        transfer_log_box = QGroupBox("Log:")

        transfer_log_widget = QTextEdit()
        transfer_log_widget.setReadOnly(True)
        transfer_log_widget.setWordWrapMode(QTextOption.NoWrap)
        self._transfer_log_widget = transfer_log_widget

        box = QVBoxLayout()
        box.addWidget(transfer_log_widget)
        transfer_log_box.setLayout(box)

        current_file_box = QGroupBox("Info:")

        current_file_form = QFormLayout()
        dest_label = QLabel("Destination:")
        dest_widget = QLabel(self._target_directory)
        dest_widget.setTextInteractionFlags(Qt.TextSelectableByMouse)
        self._dest_widget = dest_widget

        source_label = QLabel("Source:")
        source_widget = QLabel()
        source_widget.setTextInteractionFlags(Qt.TextSelectableByMouse)
        self._source_widget = source_widget

        progress_label = QLabel("Progress:")
        progress_widget = QProgressBar()
        self._progress_bar = progress_widget

        transfered_label = QLabel("Transfered:")
        transfered_widget = QLabel()
        self._transfered = transfered_widget

        time_label = QLabel("Time passed:")
        time_widget = QLabel()
        self._time_widget = time_widget

        close_checkbox = QCheckBox("Close when finished")
        close_checkbox.setChecked(settings.value("globals/close_on_transfer_completed", True, bool))
        close_checkbox.toggled.connect(self._on_close_checkbox_toggled)
        self._close_checkbox = close_checkbox

        current_file_form.addRow(dest_label, dest_widget)
        current_file_form.addRow(source_label, source_widget)
        current_file_form.addRow(progress_label, progress_widget)
        current_file_form.addRow(transfered_label, transfered_widget)
        current_file_form.addRow(time_label, time_widget)

        current_file_box.setLayout(current_file_form)

        # Widgets.ButtonBox
        button_box = QDialogButtonBox(self)
        button_box.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)

        btn_pause = QPushButton(QIcon.fromTheme("media-pause"), "Pause")
        button_box.addButton(btn_pause, QDialogButtonBox.ActionRole)
        self._btn_pause = btn_pause

        btn_cancel = button_box.addButton(QDialogButtonBox.Cancel)
        btn_cancel.setDefault(True)
        self._btn_cancel = btn_cancel

        btn_close = button_box.addButton(QDialogButtonBox.Close)
        self._btn_close = btn_close
        self._btn_close.setVisible(False)

        # Layout
        subvbox = QVBoxLayout()
        subvbox.addWidget(header)
        subvbox.addWidget(transfer_log_box)
        subvbox.addWidget(current_file_box)
        subvbox.addWidget(close_checkbox)

        hbox = QHBoxLayout()
        hbox.addWidget(move_icon)
        hbox.addLayout(subvbox)

        vbox = QVBoxLayout()
        vbox.addLayout(hbox)
        vbox.addWidget(button_box)
        self.setLayout(vbox)

        # Signals
        btn_pause.clicked.connect(self._on_pause_button)
        btn_cancel.clicked.connect(self.reject)
        btn_close.clicked.connect(self.accept)
Пример #19
0
 def __init__(self, *args, **kwargs):
     QDialog.__init__(self, *args, **kwargs)
     self.Form = QFormLayout()
     self.setLayout(self.Form)
    def __init__(self, main_window, proj_dir_name):
        super().__init__(main_window)
        self.main_window = main_window
        self.project_dir_name = proj_dir_name
        tokens = self.project_dir_name.split('/')
        self.indicator_revert_to_master = True
        if os.path.isfile(self.project_dir_name +
                          '/tmc_identification_master.csv'):
            self.master_file_exists = True
            response = QMessageBox.question(
                self.main_window, 'Custom TMC File Found',
                'An adjusted TMC identification file and a master TMC identification file have both been found.\n\n'
                +
                'Use the adjusted TMC list?\n(Choosing "No" will revert to the master TMC list).',
                QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
            if response == QMessageBox.Yes:
                self.tmc_file_name = self.project_dir_name + '/tmc_identification.csv'
            else:
                self.tmc_file_name = self.project_dir_name + '/tmc_identification_master.csv'
                self.indicator_revert_to_master = False
        else:
            self.master_file_exists = False
            self.tmc_file_name = self.project_dir_name + '/tmc_identification.csv'
        self.data_file_name = self.project_dir_name + '/' + tokens[-1] + '.csv'
        if not os.path.isfile(self.data_file_name):
            QMessageBox.warning(
                None, 'Default Data File Not Found',
                'A data file with the default name was not found. Please select the desired dataset file.',
                QMessageBox.Ok, QMessageBox.Ok)
            filename, _ = QFileDialog.getOpenFileName(self, 'Select Data File',
                                                      self.project_dir_name,
                                                      "CSV files (*.csv)")
            if filename:
                self.data_file_name = filename
            else:
                return
        self.setWindowTitle("Import Project Data")

        self.data_inspected = False
        self.map_exists = False
        self.init_map_load = True
        self.tmc_order_adjusted = False
        self.tmc_table_init = False
        self.data_preview = None
        self.tmc_preview = None

        # -------- Creating central components
        self.tab_panel = QTabWidget(self)
        self.main_layout = QVBoxLayout(self)

        # -------- Build Project Info Panel
        self.info_panel = QWidget(self)
        self.info_layout = QGridLayout(self.info_panel)
        self.project_dir_label = QLabel('Project Data Location')
        self.project_dir_label.setFont(QFont("Times", weight=QFont.Bold))
        if len(self.project_dir_name) > 35:
            self.project_dir_label2 = QLabel(
                '...' +
                self.project_dir_name[len(self.project_dir_name) - 35:])
        else:
            self.project_dir_label2 = QLabel(self.project_dir_name)
        self.project_name_label = QLabel('Project Name: ')
        self.project_name_label.setFont(QFont("Times", weight=QFont.Bold))
        self.project_name_input = QLineEdit('New Project')
        self.analyst_label = QLabel('Enter Analyst Name: ')
        self.analyst_label.setFont(QFont("Times", weight=QFont.Bold))
        self.analyst_input = QLineEdit('--')
        self.agency_label = QLabel('Enter Agency: ')
        self.agency_label.setFont(QFont("Times", weight=QFont.Bold))
        self.agency_input = QLineEdit('FHWA')
        self.state_label = QLabel('Enter State: ')
        self.state_label.setFont(QFont("Times", weight=QFont.Bold))
        self.state_input = QLineEdit('')
        self.loc_label = QLabel('Enter Facility: ')
        self.loc_label.setFont(QFont("Times", weight=QFont.Bold))
        self.loc_input = QLineEdit('')
        self.data_file_label = QLabel('Data File: ')
        self.data_file_label.setFont(QFont("Times", weight=QFont.Bold))
        self.tmc_file_label = QLabel('TMC Info File: ')
        self.tmc_file_label.setFont(QFont("Times", weight=QFont.Bold))
        self.preview_data_button = QPushButton("Inspect and Configure Dataset")
        self.info_layout.addWidget(self.project_name_label, 0, 0)
        self.info_layout.addWidget(self.project_name_input, 0, 1)
        self.info_layout.addWidget(self.analyst_label, 1, 0)
        self.info_layout.addWidget(self.analyst_input, 1, 1)
        self.info_layout.addWidget(self.agency_label, 2, 0)
        self.info_layout.addWidget(self.agency_input, 2, 1)
        self.info_layout.addWidget(self.state_label, 0, 2)
        self.info_layout.addWidget(self.state_input, 0, 3)
        self.info_layout.addWidget(self.loc_label, 1, 2)
        self.info_layout.addWidget(self.loc_input, 1, 3)
        self.info_layout.addWidget(self.project_dir_label, 0, 4)
        self.info_layout.addWidget(self.project_dir_label2, 0, 5)
        self.info_layout.addWidget(self.data_file_label, 1, 4)
        self.info_layout.addWidget(
            QLabel('.../' + self.data_file_name.split('/')[-1]), 1, 5)
        self.info_layout.addWidget(self.tmc_file_label, 2, 4)
        self.info_layout.addWidget(
            QLabel('.../' + self.tmc_file_name.split('/')[-1]), 2, 5)
        self.info_layout.addWidget(self.preview_data_button, 3, 4, 1, 2)

        # -------- Build Data Panel
        # Creating Components
        self.data_panel = QWidget(self)
        self.data_sub_panel = QWidget(self.data_panel)
        self.data_col_select_panel = QWidget(self.data_sub_panel)
        self.cb_data_col_tmc = QComboBox()
        self.cb_data_col_timestamp = QComboBox()
        self.cb_data_col_speed = QComboBox()
        self.cb_data_col_travel_time = QComboBox()
        self.data_res_input = QLineEdit('5')
        self.data_table = QTableWidget()
        self.data_label = QLabel(
            "Use this controls below to ensure that the Probe Data Analytics tool is correctly reading the dataset and "
            "identify data columns correctly. If a data column exists,\nbut is not automatically identified, please use "
            "the dropdown boxes to select the correct column name.  Additionally please ensure that the resolution of the\n"
            "data is correct.")
        # Creating Layouts
        self.data_layout1 = QVBoxLayout(self.data_panel)
        self.data_layout2 = QHBoxLayout(self.data_sub_panel)
        self.data_form_layout = QFormLayout(self.data_col_select_panel)

        # -------- Build TMC Panel
        # Creating Components
        # self.tmc_panel = QSplitter(Qt.Vertical, self)
        self.tmc_panel = QWidget(self)
        self.tmc_col_select_panel = QWidget(self.tmc_panel)
        self.cb_tmc_col_tmc = QComboBox()
        self.cb_tmc_col_dir = QComboBox()
        self.cb_tmc_col_len = QComboBox()
        self.cb_tmc_col_intx = QComboBox()
        self.cb_tmc_col_slat = QComboBox()
        self.cb_tmc_col_slon = QComboBox()
        self.cb_tmc_col_elat = QComboBox()
        self.cb_tmc_col_elon = QComboBox()
        self.load_map_button = QPushButton("Add TMCs to Map")
        self.map_panel = QWidget(self.tmc_panel)
        self.map_view = QWebEngineView(self.map_panel)
        self.tmc_table = QTableWidget()
        self.tmc_table.itemSelectionChanged.connect(
            self.handle_table_select_changed)
        self.table_panel = QWidget(self.tmc_panel)
        self.table_button_panel = QWidget(self.table_panel)
        self.button_tmc_up = QPushButton("Move TMC Up")
        self.button_tmc_down = QPushButton("Move TMC Down")
        self.button_include_all_tmc = QPushButton("Select All TMC")
        self.button_deselect_all_tmc = QPushButton("Deselect All TMC")
        if self.indicator_revert_to_master:
            self.button_revert_to_master = QPushButton("Revert to Master List")
        else:
            self.button_revert_to_master = QPushButton(
                'Revert to Saved Custom')
        self.tmc_label = QLabel(
            "Use this panel to inspect the TMC data.  The TMCs can be plotted on the map below, and can be selected for inclusion"
            "/exclusions in the table.  The TMC ordering\ncan also be adjusted if any are out of order."
        )
        # Creating Layouts
        self.tmc_col_layout = QGridLayout(self.tmc_col_select_panel)
        self.tmc_panel_layout = QVBoxLayout(self.tmc_panel)
        self.map_panel_layout = QHBoxLayout(self.map_panel)
        self.table_panel_layout = QHBoxLayout(self.table_panel)
        self.table_button_panel_layout = QVBoxLayout(self.table_button_panel)

        # -------- Adding tabs
        self.tab_panel.addTab(self.tmc_panel, "TMC List")
        self.tab_panel.addTab(self.data_panel, "Data Preview")

        # -------- Creating ButtonBox
        self.button_box = QDialogButtonBox(Qt.Horizontal, self)
        self.button_box.addButton(QDialogButtonBox.Ok)
        self.button_box.addButton(QDialogButtonBox.Cancel)

        # -------- Adding dialog components
        self.main_layout.addWidget(self.info_panel)
        self.main_layout.addWidget(self.tab_panel)
        self.main_layout.addWidget(self.button_box)

        # -------- Set up dialog
        self.setup_panel()
        self.setModal(True)
        self.show()
        self.project_name_input.selectAll()
Пример #21
0
    def make_page(self):
        toppage = QFrame()
        toplayout = QVBoxLayout()
        toppage.setLayout(toplayout)

        page = QFrame()
        layout = QFormLayout()
        page.setLayout(layout)
        toplayout.addWidget(page)

        self.edit_lat_offset = QLineEdit()
        self.edit_lat_offset.setFixedWidth(350)
        self.edit_lat_offset.textChanged.connect(self.onChange)
        self.edit_glideslope = QLineEdit()
        self.edit_glideslope.setFixedWidth(350)
        self.edit_glideslope.textChanged.connect(self.onChange)
        self.edit_turn_radius = QLineEdit()
        self.edit_turn_radius.setFixedWidth(350)
        self.edit_turn_radius.textChanged.connect(self.onChange)
        self.edit_direction = QComboBoxNoWheel()
        self.edit_direction.setFixedWidth(350)
        self.edit_direction.addItem('left')
        self.edit_direction.addItem('right')
        self.edit_direction.currentIndexChanged.connect(self.onChange)
        self.edit_final_leg = QLineEdit()
        self.edit_final_leg.setFixedWidth(350)
        self.edit_final_leg.textChanged.connect(self.onChange)
        self.edit_alt_bias = QLineEdit()
        self.edit_alt_bias.setFixedWidth(350)
        self.edit_alt_bias.textChanged.connect(self.onChange)
        self.edit_appr_speed = QLineEdit()
        self.edit_appr_speed.setFixedWidth(350)
        self.edit_appr_speed.textChanged.connect(self.onChange)
        self.edit_flare_pitch = QLineEdit()
        self.edit_flare_pitch.setFixedWidth(350)
        self.edit_flare_pitch.textChanged.connect(self.onChange)
        self.edit_flare_time = QLineEdit()
        self.edit_flare_time.setFixedWidth(350)
        self.edit_flare_time.textChanged.connect(self.onChange)

        layout.addRow("<b>TD Lateral Offset (m):</b>", self.edit_lat_offset)
        layout.addRow("<b>Approach Glideslope (deg):</b>",
                      self.edit_glideslope)
        layout.addRow("<b>Final Turn Radius (m):</b>", self.edit_turn_radius)
        layout.addRow("<b>Turn Direction:</b>", self.edit_direction)
        layout.addRow("<b>Extend Final Leg Len (m):</b>", self.edit_final_leg)
        layout.addRow("<b>Altitude Bias (ft):</b>", self.edit_alt_bias)
        layout.addRow("<b>Approach Speed (kt):</b>", self.edit_appr_speed)
        layout.addRow("<b>Flare Pitch (deg):</b>", self.edit_flare_pitch)
        layout.addRow("<b>Flare Time (sec):</b>", self.edit_flare_time)

        # 'Parameter' button bar
        param_group = QFrame()
        toplayout.addWidget(param_group)
        param_layout = QHBoxLayout()
        param_group.setLayout(param_layout)
        param_layout.addWidget(QLabel("<b>Commands:</b> "))
        update = QPushButton('Update')
        update.clicked.connect(self.update)
        param_layout.addWidget(update)
        revert = QPushButton('Revert')
        revert.clicked.connect(self.revert)
        param_layout.addWidget(revert)
        land = QPushButton('Land Now!')
        land.clicked.connect(self.task_land)
        param_layout.addWidget(land)
        param_layout.addStretch(1)

        page1 = QFrame()
        layout1 = QFormLayout()
        page1.setLayout(layout1)
        toplayout.addWidget(page1)

        self.edit_rwy_lon = QLineEdit()
        self.edit_rwy_lon.setFixedWidth(350)
        self.edit_rwy_lon.textChanged.connect(self.onChange)
        self.edit_rwy_lat = QLineEdit()
        self.edit_rwy_lat.setFixedWidth(350)
        self.edit_rwy_lat.textChanged.connect(self.onChange)
        self.edit_rwy_hdg = QLineEdit()
        self.edit_rwy_hdg.setFixedWidth(350)
        self.edit_rwy_hdg.textChanged.connect(self.onChange)

        layout1.addRow("<b>Runway Longitude (deg):</b>", self.edit_rwy_lon)
        layout1.addRow("<b>Runway Latitude (deg):</b>", self.edit_rwy_lat)
        layout1.addRow("<b>Runway Heading (deg):</b>", self.edit_rwy_hdg)

        # 'rwy' button bar
        rwy_group = QFrame()
        toplayout.addWidget(rwy_group)
        rwy_layout = QHBoxLayout()
        rwy_group.setLayout(rwy_layout)
        rwy_layout.addWidget(QLabel("<b>Runway Presets:</b> "))
        home = QPushButton('Land "HOME"')
        home.clicked.connect(self.task_rwy_home)
        rwy_layout.addWidget(home)
        sprc36 = QPushButton('SPRC 36 (to N)')
        sprc36.clicked.connect(self.task_rwy_sprc36)
        rwy_layout.addWidget(sprc36)
        sprc18 = QPushButton('SPRC 18 (to S)')
        sprc18.clicked.connect(self.task_rwy_sprc18)
        rwy_layout.addWidget(sprc18)
        rwy_layout.addStretch(1)

        toplayout.addStretch(1)

        # set initial values
        self.revert()

        return toppage
Пример #22
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowSystemMenuHint)
        self.setWindowModality(QtCore.Qt.WindowModal)

        global par
        par = parent

        global int_lng
        int_lng = par.interface_lng_val

        global full_dir
        full_dir = parent.full_dir
        self.t1 = MyThread(full_dir)

        # ------------------------------------Первый блок формы--------------------------------------#

        self.mesh_choose_lbl = QLabel()
        self.mesh_choose_lbl_hbox = QHBoxLayout()
        self.mesh_choose_lbl_hbox.addWidget(self.mesh_choose_lbl)
        self.radio_1 = QRadioButton()
        self.radio_1.toggled.connect(self.on_radio_1_clicked)
        self.radio_2 = QRadioButton()
        self.radio_2.toggled.connect(self.on_radio_2_clicked)
        self.mesh_choose_grid = QGridLayout()
        self.mesh_choose_grid.addWidget(self.radio_1, 0, 0)
        self.mesh_choose_grid.addWidget(self.radio_2, 0, 1)
        self.mesh_choose_frame = QFrame()
        self.mesh_choose_frame.setLayout(self.mesh_choose_grid)
        self.mesh_choose_hbox = QHBoxLayout()
        self.mesh_choose_hbox.addWidget(self.mesh_choose_frame)

        # ------------------------------------Второй блок формы--------------------------------------#

        self.fmtf_radio = QRadioButton("Импорт 2D-сетки")
        self.f3Dmtf_radio = QRadioButton("Импорт 3D-сетки")
        self.import_hbox = QHBoxLayout()
        self.import_hbox.addWidget(self.fmtf_radio)
        self.import_hbox.addWidget(self.f3Dmtf_radio)

        self.mesh_label = QLabel("Путь: ")
        self.mesh_edit = QLineEdit()
        self.mesh_edit.setEnabled(False)
        self.mesh_edit.setFixedSize(290, 25)
        self.path_button = QPushButton("...")
        self.path_button.setFixedSize(25, 25)

        self.import_prs_hbox = QHBoxLayout()
        self.import_prs_hbox.addWidget(self.mesh_label)
        self.import_prs_hbox.addWidget(self.mesh_edit)
        self.import_prs_hbox.addWidget(self.path_button)
        self.path_button.clicked.connect(self.on_path_choose)

        self.prs_grid = QGridLayout()
        self.prs_grid.addLayout(self.import_hbox, 0, 0)
        self.prs_grid.addLayout(self.import_prs_hbox, 1, 0)
        self.prs_frame = QFrame()
        self.prs_frame.setStyleSheet(
            open("./styles/properties_form_style.qss", "r").read())
        self.prs_frame.setLayout(self.prs_grid)
        self.prs_frame.setEnabled(False)
        self.prs_frame.setStyleSheet("border-color: darkgray;")
        self.prs_hbox = QHBoxLayout()
        self.prs_hbox.addWidget(self.prs_frame)

        # ------------------------------------Третий блок формы--------------------------------------#

        self.chc_label = QLabel()
        self.chc_label.setEnabled(False)
        self.chc_lbl_hbox = QHBoxLayout()
        self.chc_lbl_hbox.addWidget(self.chc_label)
        self.nf_radio = QRadioButton()
        self.nf_radio.toggled.connect(self.on_nf_clicked)
        self.cf_radio = QRadioButton()
        self.cf_radio.toggled.connect(self.on_cf_clicked)
        self.icon = self.style().standardIcon(QStyle.SP_DirOpenIcon)
        self.chc_button = QPushButton()
        self.chc_button.setFixedSize(30, 30)
        self.chc_button.setIcon(self.icon)
        self.chc_button.setEnabled(False)
        self.chc_button.clicked.connect(self.on_chc_clicked)
        self.chc_grid = QGridLayout()
        self.chc_grid.addWidget(self.nf_radio, 0, 0)
        self.chc_grid.addWidget(self.cf_radio, 0, 1)
        self.chc_grid.addWidget(self.chc_button, 0, 2)
        self.chc_frame = QFrame()
        self.chc_frame.setFixedWidth(400)
        self.chc_frame.setEnabled(False)
        self.chc_frame.setStyleSheet("border-color: darkgray;")
        self.chc_frame.setLayout(self.chc_grid)
        self.chc_hbox = QHBoxLayout()
        self.chc_hbox.addWidget(self.chc_frame)

        # ------------------------------------Четвертый блок формы--------------------------------------#

        self.mesh_type_label = QLabel('Выберите тип сетки:')
        self.bm = QRadioButton("blockMesh")
        self.bm.setChecked(True)
        self.shm = QRadioButton("snappyHexMesh")
        self.mesh_type_vbox = QVBoxLayout()
        self.mesh_type_vbox.addWidget(self.bm)
        self.mesh_type_vbox.addWidget(self.shm)

        self.mesh_label = QLabel()
        self.mesh_name = QLineEdit()

        self.mesh_name.setFixedSize(214, 25)
        regexp = QtCore.QRegExp('[А-яА-Яa-zA-Z0-9\_]+')
        validator = QtGui.QRegExpValidator(regexp)
        self.mesh_name.setValidator(validator)

        self.prj_path_label = QLabel()
        self.prj_path_name = QLineEdit()
        self.prj_path_name.setEnabled(False)
        self.prj_path_name.setFixedSize(214, 25)

        self.prj_grid = QGridLayout()
        self.prj_grid.addWidget(self.mesh_type_label,
                                0,
                                0,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addLayout(self.mesh_type_vbox,
                                0,
                                1,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.mesh_label,
                                1,
                                0,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.mesh_name,
                                1,
                                1,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.prj_path_label,
                                2,
                                0,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.prj_path_name,
                                2,
                                1,
                                alignment=QtCore.Qt.AlignCenter)

        self.prj_frame = QFrame()
        self.prj_frame.setFixedWidth(400)
        self.prj_frame.setEnabled(False)
        self.prj_frame.setStyleSheet("border-color: darkgray;")
        self.prj_frame.setFrameShape(QFrame.Panel)
        self.prj_frame.setFrameShadow(QFrame.Sunken)
        self.prj_frame.setLayout(self.prj_grid)
        self.prj_grid_vbox = QVBoxLayout()
        self.prj_grid_vbox.addWidget(self.prj_frame)

        # ---------------------Кнопки сохранения и отмены и их блок-------------------------#

        self.save_button = QPushButton()
        self.save_button.setFixedSize(80, 25)
        self.save_button.clicked.connect(self.on_save_clicked)
        self.save_button.setEnabled(False)
        self.cancel_button = QPushButton()
        self.cancel_button.setFixedSize(80, 25)
        self.cancel_button.clicked.connect(self.on_cancel_clicked)
        self.buttons_hbox = QHBoxLayout()
        self.buttons_hbox.addWidget(self.save_button)
        self.buttons_hbox.addWidget(self.cancel_button)

        # -------------------------Фрейм формы---------------------------#

        self.form_grid = QGridLayout()
        self.form_grid.addLayout(self.mesh_choose_hbox,
                                 0,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.prs_hbox,
                                 1,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.chc_lbl_hbox,
                                 2,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.chc_hbox,
                                 3,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.prj_grid_vbox,
                                 4,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.buttons_hbox,
                                 5,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_frame = QFrame()
        self.form_frame.setStyleSheet(
            open("./styles/properties_form_style.qss", "r").read())
        self.form_frame.setLayout(self.form_grid)
        self.form_vbox = QVBoxLayout()
        self.form_vbox.addWidget(self.form_frame)

        # --------------------Размещение на форме всех компонентов---------#

        self.form = QFormLayout()
        self.form.addRow(self.form_vbox)
        self.setLayout(self.form)

        # --------------------Определяем параметры интерфейса окна---------#

        if int_lng == 'Russian':
            self.radio_1.setText("Внешняя сетка")
            self.radio_2.setText("OpenFOAM-сетка")
            self.fmtf_radio.setText("Импорт 2D-сетки")
            self.f3Dmtf_radio.setText("Импорт 3D-сетки")
            self.chc_label.setText(
                "Создайте новую сетку или откройте существующую")
            self.nf_radio.setText("Создать новую")
            self.cf_radio.setText("Открыть существующую")
            self.mesh_type_label.setText("Выберите тип сетки:")
            self.mesh_label.setText("Название сетки:")
            self.prj_path_label.setText("Путь:")
            self.save_button.setText("Сохранить")
            self.cancel_button.setText("Отмена")
        elif int_lng == 'English':
            self.radio_1.setText("External mesh")
            self.radio_2.setText("OpenFOAM-mesh")
            self.fmtf_radio.setText("2D-mesh import")
            self.f3Dmtf_radio.setText("3D-mesh import")
            self.chc_label.setText(
                "Create a new mesh or open an existing mesh")
            self.nf_radio.setText("Create new mesh")
            self.cf_radio.setText("Open existing mesh")
            self.mesh_type_label.setText("Select mesh type:")
            self.mesh_label.setText("Mesh name:")
            self.prj_path_label.setText("Path:")
            self.save_button.setText("Save")
            self.cancel_button.setText("Cancel")
Пример #23
0
    def __init__(self, parent=None):
        super().__init__(parent=parent)

        self.setTitle("P&L Wizard - Select Workbooks")
        self.setSubTitle(
            "Use the browse buttons below to select the QuickBooks spreadsheet"
            " (source) and then the Popeyes spreadsheet. Then select a map file from"
            " the drop down list for the corresponding QuickBooks spreadsheet. Each"
            " company will have a separate map file. <b>Make sure neither workbook is"
            " already open in Excel before clicking Next!</b>")

        self.mainLayout = QFormLayout(self)
        self.setLayout(self.mainLayout)
        self.setCommitPage(True)
        self.setButtonText(QWizard.CommitButton, "Load Spreadsheets")

        self.sourceBookPath = QLineEdit()
        browseSourceBook = QPushButton("Browse ...")
        browseSourceBook.clicked.connect(self.openSrcBook)

        srcLayout = QHBoxLayout()
        srcLayout.addWidget(self.sourceBookPath)
        srcLayout.addWidget(browseSourceBook)

        self.mainLayout.addRow("Source Workbook", srcLayout)

        self.destBookPath = QLineEdit()
        browseDestBook = QPushButton("Browse ...", self)
        browseDestBook.clicked.connect(self.openDstBook)

        dstLayout = QHBoxLayout()
        dstLayout.addWidget(self.destBookPath)
        dstLayout.addWidget(browseDestBook)

        self.mainLayout.addRow("Destination Workbook", dstLayout)

        # map files
        self.mapFileComboBox = QComboBox()
        for entry in os.scandir("maps"):  # XXX: this should not be hardcoded
            name = os.path.basename(os.path.splitext(entry.name)[0]).title()
            self.mapFileComboBox.addItem(name, entry.path)

        self.mainLayout.addRow("Map File", self.mapFileComboBox)

        self.registerField(SOURCE_FIELD_NAME + "*", self.sourceBookPath)
        self.registerField(DESTINATION_FIELD_NAME + "*", self.destBookPath)

        self.invalidSrc = QLabel(
            "<font color='red'>Unable to find source workbook.</font>")
        self.invalidDst = QLabel(
            "<font color='red'>Unable to find destination workbook.</font>")
        self.invalidMap = QLabel(
            "<font color='red'>Unable to find map file.</font>")

        self.invalidSrc.hide()
        self.invalidDst.hide()
        self.invalidMap.hide()

        self.mainLayout.addWidget(self.invalidSrc)
        self.mainLayout.addWidget(self.invalidDst)
        self.mainLayout.addWidget(self.invalidMap)
Пример #24
0
    def __init__(self, flags=None, *args, **kwargs):
        super().__init__(flags, *args, **kwargs)
        with open('Client/src/style.qss', 'r') as style_file:
            self.setStyleSheet(style_file.read())

        layout = QVBoxLayout()

        title = QLabel('Создание новой учетной записи Преподавателя')
        layout.addWidget(title)

        form = QFormLayout()

        login = QLineEdit()
        form.addRow(QLabel('Логин*'), login)

        password = QLineEdit()
        password.setEchoMode(QLineEdit.Password)
        form.addRow(QLabel('Пароль*'), password)

        last_name = QLineEdit()
        form.addRow(QLabel('Фамилия*'), last_name)

        first_name = QLineEdit()
        form.addRow(QLabel('Имя*'), first_name)

        middle_name = QLineEdit()
        form.addRow(QLabel('Отчество'), middle_name)

        email = QLineEdit()
        form.addRow(QLabel('email'), email)

        agreement = QCheckBox()
        form.addRow(
            agreement,
            QLink('Я даю согласие на обработку персональных данных',
                  'http://bisitor.itut.ru/personal_agreement'))

        layout.addLayout(form)

        btn_layout = QHBoxLayout()

        ok_btn = QPushButton('Продолжить')
        btn_layout.addWidget(ok_btn)

        cancel_btn = QPushButton('Отменить')
        btn_layout.addWidget(cancel_btn)

        layout.addLayout(btn_layout)

        def on_ok():
            def on_success(*args):
                QMessageBox().information(
                    self, 'Создание учетной записи',
                    'Создание учетной записи прошло успешно')
                self.close()

            def on_error(response):
                if response.message == 'login':
                    QMessageBox().information(
                        self, 'Созданиеучетной записи',
                        'Логин уже занят. Введите дургой логин')
                    login.setText('')
                else:
                    QMessageBox().information(
                        self, 'Созданиеучетной записи',
                        f'Неизвестная ошибка {response.message}')
                    print(response.message)

            val = {
                'Логин': login.text() != '',
                'Пароль': password.text() != '',
                'Фамилия': last_name.text() != '',
                'Имя': first_name.text() != '',
                'Согласие': agreement.isChecked()
            }
            if any(not v for v in val.values()):
                QMessageBox().information(
                    self, 'Необходимо заполнить все поля',
                    f'Для продолжения необходимо заполнить поля {", ".join([key for key, value in val.items() if not value])}'
                )
            else:
                self.manager = ProfessorCreateAPI.create(
                    {
                        'login': login.text(),
                        'password': password.text(),
                        'last_name': last_name.text(),
                        'first_name': first_name.text(),
                        'middle_name': middle_name.text(),
                        'email': email.text()
                    }, on_success, on_error)

        ok_btn.clicked.connect(on_ok)

        def on_cancel():
            self.close()

        cancel_btn.clicked.connect(on_cancel)

        self.setLayout(layout)
Пример #25
0
    def assemble_quick_add_box(self):
        devs = self.mi.get_quick_add_devices()
        if devs is None or len(devs) == 0:
            return

        resetpanel_box = self.ui.widget
        layout_quick_add = resetpanel_box.ui.layout_quick_add

        def add_to_list():
            pvs = cb_quick_list.currentData()
            resetpanel_box.addPv(pvs, force_active=True)

        def add_from_txt(le):
            pv = le.text()
            if pv:
                resetpanel_box.addPv(pv, force_active=True)

        def clear_list():
            resetpanel_box.pvs = []
            resetpanel_box.devices = []
            resetpanel_box.ui.tableWidget.setRowCount(0)

        layout_buttons = QVBoxLayout()


        pb_clear_dev = QPushButton(resetpanel_box)
        pb_clear_dev.setText("Clear Devices")
        pb_clear_dev.setMaximumWidth(100)
        pb_clear_dev.clicked.connect(clear_list)

        pb_add_dev = QPushButton(resetpanel_box)
        pb_add_dev.setText("Add Devices")
        pb_add_dev.setStyleSheet("color: orange")
        pb_add_dev.clicked.connect(add_to_list)
        pb_add_dev.setMaximumWidth(100)

        lb_from_list = QLabel()
        lb_from_list.setText("From List: ")
        lb_from_list.setMaximumWidth(75)
        cb_quick_list = QComboBox()
        cb_quick_list.addItem("", [])
        cb_quick_list.setMinimumWidth(200)
        for display, itms in devs.items():
            cb_quick_list.addItem(display, itms)

        if len(devs.items()) >= 1:
            cb_quick_list.setCurrentIndex(1)

        lb_manually = QLabel()
        lb_manually.setText("Or Manually Enter: ")
        lb_manually.setMaximumWidth(75)
        le_manually = QLineEdit()
        le_manually.setMinimumWidth(200)
        le_manually.returnPressed.connect(functools.partial(add_from_txt, le_manually))

        layout_buttons.addWidget(pb_add_dev)
        layout_buttons.addWidget(pb_clear_dev)

        frm_layout = QFormLayout()
        frm_layout.addRow(lb_from_list, cb_quick_list)
        frm_layout.addRow(lb_manually, le_manually)

        layout_quick_add.addLayout(layout_buttons)
        layout_quick_add.addLayout(frm_layout)
Пример #26
0
    def __init__(self, parent):
        QWidget.__init__(self)
        self.CntrPane = parent
        self.PaneIdx = 3

        Font_titl = QFont()
        Font_titl.setPointSize(10)
        Font_titl.setBold(True)

        Font_norm = QFont()
        Font_norm.setPointSize(8)
        #--Titolo label
        empty_lbl_1 = QLabel(" ")
        empty_lbl_1.setFixedHeight(50)
        empty_lbl_2 = QLabel(" ")
        empty_lbl_2.setFixedHeight(50)
        scr_rslts_lbl = QLabel("SCORING E RISULTATI")
        scr_rslts_lbl.setFont(Font_titl)
        scr_rslts_lbl.setFixedHeight(50)
        #--Utente labels
        paz_titl_lbl = QLabel("Utente")
        paz_titl_lbl.setFont(Font_titl)
        paz_nome_lbl = QLabel("Nome: ")
        paz_nome_lbl.setFont(Font_norm)
        paz_cognome_lbl = QLabel("Cognome: ")
        paz_cognome_lbl.setFont(Font_norm)
        paz_anni_lbl = QLabel("Anni: ")
        paz_anni_lbl.setFont(Font_norm)
        #--PSI labels
        psi_lbl = QLabel("P.S.I., Parenting Stress Index")
        psi_lbl.setFont(Font_titl)
        distress_gen_lbl = QLabel("Distress genitoriale: ")
        distress_gen_lbl.setFont(Font_norm)
        int_disf_lbl = QLabel("Interazione gen/bamb disfunzionale: ")
        int_disf_lbl.setFont(Font_norm)
        bamb_dif_lbl = QLabel("Bambino difficile: ")
        bamb_dif_lbl.setFont(Font_norm)
        risp_dif_lbl = QLabel("Risposta difensiva: ")
        risp_dif_lbl.setFont(Font_norm)
        stress_tot_lbl = QLabel("Stress totale: ")
        stress_tot_lbl.setFont(Font_norm)
        #--SDQ labels
        sdq_lbl = QLabel("S.D.Q., Strenghts and Difficulties Questionnaire")
        sdq_lbl.setFont(Font_titl)
        sint_emoz_lbl = QLabel("Sintomi emozionali: ")
        sint_emoz_lbl.setFont(Font_norm)
        prob_comp_lbl = QLabel("Problemi di comportamento: ")
        prob_comp_lbl.setFont(Font_norm)
        iperat_dis_lbl = QLabel("Iperattivita/disattenzione: ")
        iperat_dis_lbl.setFont(Font_norm)
        rapp_pari_lbl = QLabel("Rapporto con i pari: ")
        rapp_pari_lbl.setFont(Font_norm)
        comp_pro_lbl = QLabel("Comportamenti prosociali: ")
        comp_pro_lbl.setFont(Font_norm)
        tot_diff_lbl = QLabel("Totale difficoltà: ")
        tot_diff_lbl.setFont(Font_norm)
        #--Servizi labels
        servizi_lbl = QLabel("Servizi consigliati")
        servizi_lbl.setFont(Font_titl)
        servizi_soc_lbl = QLabel("Servizi sociali: ")
        servizi_soc_lbl.setFont(Font_norm)
        psi_cli_adu_lbl = QLabel("Psicologia clinica adulti: ")
        psi_cli_adu_lbl.setFont(Font_norm)
        int_giud_lbl = QLabel("Intervento giudiziario: ")
        int_giud_lbl.setFont(Font_norm)
        npia_lbl = QLabel("NPIA: ")
        npia_lbl.setFont(Font_norm)
        consult_lbl = QLabel("Consultorio: ")
        consult_lbl.setFont(Font_norm)
        csm_lbl = QLabel("CSM: ")
        csm_lbl.setFont(Font_norm)
        sert_lbl = QLabel("SERT: ")
        sert_lbl.setFont(Font_norm)
        ldv_lbl = QLabel("LDV: ")
        ldv_lbl.setFont(Font_norm)

        #--Buttons
        grafici_btn = QPushButton("Grafici")
        ext_btn = QPushButton("Exit")
        empty_lbl = QLabel(" ")

        #--Layouts
        Vlayout = QVBoxLayout()
        Form = QFormLayout()
        Buttons = QHBoxLayout()
        Titl_lyt = QHBoxLayout()

        #--Positioning
        Vlayout.addLayout(Titl_lyt)
        Vlayout.addLayout(Form)
        Vlayout.addLayout(Buttons)

        # --Output's instances for Labels
        nome = self.calc.nome
        nome_otp = QLabel(nome)
        nome_otp.setFont(Font_norm)

        #--Positioning Form Layout
        Form.addRow(paz_titl_lbl)
        Form.addRow(paz_nome_lbl, nome_otp)
        Form.addRow(paz_cognome_lbl)
        Form.addRow(paz_anni_lbl)
        Form.addRow(psi_lbl)
        Form.addRow(distress_gen_lbl)
        Form.addRow(int_disf_lbl)
        Form.addRow(bamb_dif_lbl)
        Form.addRow(risp_dif_lbl)
        Form.addRow(stress_tot_lbl)
        Form.addRow(sdq_lbl)
        Form.addRow(sint_emoz_lbl)
        Form.addRow(prob_comp_lbl)
        Form.addRow(iperat_dis_lbl)
        Form.addRow(rapp_pari_lbl)
        Form.addRow(comp_pro_lbl)
        Form.addRow(tot_diff_lbl)
        Form.addRow(servizi_lbl)
        Form.addRow(servizi_soc_lbl)
        Form.addRow(psi_cli_adu_lbl)
        Form.addRow(int_giud_lbl)
        Form.addRow(npia_lbl)
        Form.addRow(consult_lbl)
        Form.addRow(csm_lbl)
        Form.addRow(sert_lbl)
        Form.addRow(ldv_lbl)

        #--Positioning Buttons Layout
        Buttons.addStretch(1)
        Buttons.addWidget(grafici_btn)
        Buttons.addWidget(empty_lbl)
        Buttons.addWidget(ext_btn)

        #--Positioning Title Layout
        Titl_lyt.addWidget(empty_lbl_1)
        Titl_lyt.addWidget(scr_rslts_lbl)
        Titl_lyt.addWidget(empty_lbl_2)

        self.setLayout(Vlayout)
Пример #27
0
 def __init__(self, parent=None):
     super(ToolsPage, self).__init__(parent)
     self.parent = parent
     self.setObjectName('settingstoolspage')
     self.ffmpegpath = QLineEdit(
         QDir.toNativeSeparators(self.parent.service.backends.ffmpeg), self)
     self.ffmpegpath.setSizePolicy(QSizePolicy.Expanding,
                                   QSizePolicy.Preferred)
     ffmpegbutton = QPushButton(self)
     ffmpegbutton.setIcon(QIcon(':/images/folder.png'))
     ffmpegbutton.setToolTip('Set FFmpeg path')
     ffmpegbutton.setCursor(Qt.PointingHandCursor)
     ffmpegbutton.clicked.connect(
         lambda c, backend='FFmpeg': self.setPath(backend, self.ffmpegpath))
     ffmpeglayout = QHBoxLayout()
     ffmpeglayout.addWidget(self.ffmpegpath)
     ffmpeglayout.addWidget(ffmpegbutton)
     self.ffprobepath = QLineEdit(
         QDir.toNativeSeparators(self.parent.service.backends.ffprobe),
         self)
     self.ffprobepath.setSizePolicy(QSizePolicy.Expanding,
                                    QSizePolicy.Preferred)
     ffprobebutton = QPushButton(self)
     ffprobebutton.setIcon(QIcon(':/images/folder.png'))
     ffprobebutton.setToolTip('Set FFprobe path')
     ffprobebutton.setCursor(Qt.PointingHandCursor)
     ffprobebutton.clicked.connect(lambda c, backend='FFprobe': self.
                                   setPath(backend, self.ffprobepath))
     ffprobelayout = QHBoxLayout()
     ffprobelayout.addWidget(self.ffprobepath)
     ffprobelayout.addWidget(ffprobebutton)
     self.mediainfopath = QLineEdit(
         QDir.toNativeSeparators(self.parent.service.backends.mediainfo),
         self)
     self.mediainfopath.setSizePolicy(QSizePolicy.Expanding,
                                      QSizePolicy.Preferred)
     mediainfobutton = QPushButton(self)
     mediainfobutton.setIcon(QIcon(':/images/folder.png'))
     mediainfobutton.setToolTip('Set MediaInfo path')
     mediainfobutton.setCursor(Qt.PointingHandCursor)
     mediainfobutton.clicked.connect(lambda c, backend='MediaInfo': self.
                                     setPath(backend, self.mediainfopath))
     mediainfolayout = QHBoxLayout()
     mediainfolayout.addWidget(self.mediainfopath)
     mediainfolayout.addWidget(mediainfobutton)
     resetbutton = QPushButton('Reset to Defaults', self)
     resetbutton.setObjectName('resetpathsbutton')
     resetbutton.setToolTip('Reset to default paths')
     resetbutton.setCursor(Qt.PointingHandCursor)
     resetbutton.clicked.connect(self.resetPaths)
     resetlayout = QHBoxLayout()
     resetlayout.addStretch(1)
     resetlayout.addWidget(resetbutton)
     pathsLayout = QFormLayout()
     pathsLayout.setContentsMargins(11, 11, 11, 20)
     pathsLayout.setVerticalSpacing(20)
     pathsLayout.addRow('FFmpeg:', ffmpeglayout)
     pathsLayout.addRow('FFprobe:', ffprobelayout)
     pathsLayout.addRow('MediaInfo:', mediainfolayout)
     pathsLayout.addRow('', resetlayout)
     pathsGroup = QGroupBox('Paths')
     pathsGroup.setLayout(pathsLayout)
     mainLayout = QVBoxLayout()
     mainLayout.setSpacing(10)
     mainLayout.addWidget(pathsGroup)
     mainLayout.addStretch(1)
     self.setLayout(mainLayout)
Пример #28
0
    def __init__(self, parent, size):
        super().__init__(parent)
        self.size = size
        self.resize(size[0], size[1])
        self._gradient_widget = QWidget()
        self._gradient_widget.resize(size[0] / 2, size[1])
        self._create_linear_gradient()

        self.boxcar_form = QFormLayout()

        self.layout = QVBoxLayout()
        column_layout = QHBoxLayout()  # For the densities and gradient
        self.layout.setContentsMargins(0, 0, 0, 0)

        # Add the headers for the two columns we will have
        headers = QHBoxLayout()
        headers.setContentsMargins(0, 0, 0, 0)
        # Add header for chassis density
        label_chassis_densities = QLabel()
        label_chassis_densities.setText('Chassis Density')
        label_chassis_densities.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        headers.addWidget(label_chassis_densities)
        # Add spacer
        headers.addStretch(1)
        # Add header for wheel density
        label_wheel_density = QLabel()
        label_wheel_density.setText('Wheel Density')
        label_wheel_density.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        headers.addWidget(label_wheel_density)

        # Add headers
        self.layout.addLayout(headers)

        # Add Chassis Density stuff
        chassis_density_vbox = QVBoxLayout()
        chassis_density_vbox.setContentsMargins(0, 0, 0, 0)
        min_chassis_density = get_boxcar_constant('min_chassis_density')
        max_chassis_density = get_boxcar_constant('max_chassis_density')
        chassis_range = max_chassis_density - min_chassis_density
        num_slices = 10  # Number of sections to add
        chassis_slices = [
            (chassis_range) / (num_slices - 1) * i + min_chassis_density
            for i in range(num_slices)
        ]

        for chassis_slice in chassis_slices:
            label = QLabel()
            text = '{:.2f} -'.format(chassis_slice)
            label.setAlignment(Qt.AlignRight | Qt.AlignTop)
            label.setText(text)
            chassis_density_vbox.addWidget(label)

        # Add the VBox to the layout
        column_layout.addLayout(chassis_density_vbox)

        # Add the actual gradient but add it to a VBox to be cheeky and set stretch at the bottom
        gradient_vbox = QVBoxLayout()
        gradient_vbox.addWidget(self._gradient_widget, 15)
        column_layout.addLayout(gradient_vbox, 3)

        # Add Wheel Density stufff
        wheel_density_vbox = QVBoxLayout()
        wheel_density_vbox.setContentsMargins(0, 0, 0, 0)
        min_wheel_density = get_boxcar_constant('min_wheel_density')
        max_wheel_density = get_boxcar_constant('max_wheel_density')
        wheel_range = max_wheel_density - min_wheel_density
        num_slices = 10  # Number of sections to add (I'm keeping it the same as the chassis density for now)
        wheel_slices = [
            (wheel_range) / (num_slices - 1) * i + min_wheel_density
            for i in range(num_slices)
        ]

        for i, wheel_slice in enumerate(wheel_slices):
            label = QLabel()
            text = '- {:.2f}'.format(wheel_slice)
            label.setAlignment(Qt.AlignLeft | Qt.AlignTop)
            label.setText(text)
            wheel_density_vbox.addWidget(label)

        # Add the VBox to the layout
        column_layout.addLayout(wheel_density_vbox)

        # Add column_layout to the layout
        self.layout.addLayout(column_layout, 5)
        self.layout.addStretch(1)

        # Add the boxcar settings
        self._add_boxcar_settings()

        # Set overall layout
        self.setLayout(self.layout)
Пример #29
0
    def initUI(self):

        try:
            self.setWindowState(QtCore.Qt.WindowMaximized)
        except:
            self.setGeometry(10, 30, 1350, 750)

        self.setWindowTitle('Dana')

        self.setWindowIcon(
            QIcon('download.png')
        )  # Have this png at same directory as this code is. Icon Image

        oImage = QImage(
            "download(1).jpg"
        )  # Have this png at same directory as this code is. Background Image
        sImage = oImage.scaled(QSize(1350, 750))
        palette = QPalette()
        palette.setBrush(10, QBrush(sImage))
        self.setPalette(palette)

        saveButton = QPushButton("ADD/MODIFY", self)
        deleteButton = QPushButton("DELETE", self)
        clearButton = QPushButton("CLEAR", self)
        TrainButton = QPushButton("Train DANA", self)
        saveButton.setFont(QtGui.QFont("Calibri", 13))
        deleteButton.setFont(QtGui.QFont("Calibri", 13))
        clearButton.setFont(QtGui.QFont("Calibri", 13))
        TrainButton.setFont(QtGui.QFont("Calibri", 13))
        saveButton.move(100, 690)
        clearButton.move(260, 690)
        TrainButton.move(420, 690)
        saveButton.clicked.connect(self.saveClicked)
        deleteButton.clicked.connect(self.deleteClicked)
        clearButton.clicked.connect(self.clearClicked)
        TrainButton.clicked.connect(self.TrainClicked)
        saveButton.setStyleSheet("background-color: #F7CE16")
        deleteButton.setStyleSheet("background-color: #F7CE16")
        clearButton.setStyleSheet("background-color: #F7CE16")
        TrainButton.setStyleSheet("background-color: #F7CE16")

        headerfont = QtGui.QFont("Cambria", 13, QtGui.QFont.Bold)

        l1 = QLabel("BOOK ID: ")
        l1.setFont(headerfont)
        l1.setMinimumHeight(30)
        l1.setFixedWidth(180)
        text1 = QLineEdit()
        text1.setFixedWidth(250)
        text1.setMinimumHeight(30)
        text1.setPlaceholderText("The Library Book ID ")
        text1.setFont(QtGui.QFont("Times", 11))

        l2 = QLabel("AUTHOR: ")
        l2.setFont(headerfont)
        l2.setMinimumHeight(30)
        l2.setFixedWidth(180)
        text2 = QLineEdit()
        text2.setFixedWidth(600)
        text2.setMinimumHeight(30)
        text2.setPlaceholderText(" EX: Sumitra Arora ")
        text2.setFont(QtGui.QFont("Times", 11))

        l3 = QLabel("TITLE: ")
        l3.setFont(headerfont)
        l3.setMinimumHeight(30)
        l3.setFixedWidth(180)
        text3 = QLineEdit()
        text3.setFixedWidth(600)
        text3.setMinimumHeight(30)
        text3.setPlaceholderText(" EX: Artificial Intelligence,C,C++ ")
        text3.setFont(QtGui.QFont("Times", 11))

        l4 = QLabel("PUBLICATION: ")
        l4.setFont(headerfont)
        l4.setMinimumHeight(30)
        l4.setFixedWidth(180)
        text4 = QLineEdit()
        text4.setFixedWidth(600)
        text4.setMinimumHeight(30)
        text4.setPlaceholderText(" EX: TATA MCGRAW HILL ")
        text4.setFont(QtGui.QFont("Times", 11))

        l5 = QLabel("EDITION: ")
        l5.setFont(headerfont)
        l5.setMinimumHeight(30)
        l5.setFixedWidth(180)
        text5 = QLineEdit()
        text5.setFixedWidth(250)
        text5.setMinimumHeight(30)
        text5.setPlaceholderText(" EX: 1,2,3 ")
        text5.setFont(QtGui.QFont("Times", 11))

        l6 = QLabel("ISSUE STATUS: ")
        l6.setFont(headerfont)
        l6.setMinimumHeight(30)
        l6.setFixedWidth(200)

        hboxperiod = QHBoxLayout()
        hboxperiod.setSpacing(70)
        r1 = QRadioButton("BOOK ISSUED")
        r1.setFont(QtGui.QFont("Calibri", 9, QtGui.QFont.Bold))
        r1.setMinimumHeight(30)
        r2 = QRadioButton("NOT ISSUED")
        r2.setFont(QtGui.QFont("Calibri", 9, QtGui.QFont.Bold))
        r2.setMinimumHeight(30)
        r2.setChecked(True)
        widgetperiod = QWidget(self)
        groupperiod = QButtonGroup(widgetperiod)
        groupperiod.addButton(r1)
        groupperiod.addButton(r2)
        hboxperiod.addWidget(r1)
        hboxperiod.addWidget(r2)
        hboxperiod.addStretch()

        l7 = QLabel("PRICE: ")
        l7.setFont(headerfont)
        l7.setMinimumHeight(30)
        l7.setFixedWidth(200)
        text7 = QLineEdit()
        text7.setFixedWidth(250)
        text7.setMinimumHeight(30)
        text7.setPlaceholderText("Price of the Book")
        text7.setFont(QtGui.QFont("Times", 11))

        l8 = QLabel("ROW NUMBER: ")
        l8.setFont(headerfont)
        l8.setMinimumHeight(30)
        l8.setFixedWidth(200)
        text8 = QLineEdit()
        text8.setFixedWidth(250)
        text8.setMinimumHeight(30)
        text8.setPlaceholderText("Start counting from Door")
        text8.setFont(QtGui.QFont("Times", 11))

        l9 = QLabel("COLUMN NUMBER: ")
        l9.setFont(headerfont)
        l9.setMinimumHeight(30)
        l9.setFixedWidth(200)
        text9 = QLineEdit()
        text9.setFixedWidth(250)
        text9.setMinimumHeight(30)
        text9.setPlaceholderText("Start counting from the Help Desk")
        text9.setFont(QtGui.QFont("Times", 11))

        l10 = QLabel("SHELF PARTION NUMBER: ")
        l10.setFont(headerfont)
        l10.setMinimumHeight(30)
        l10.setFixedWidth(200)
        text10 = QLineEdit()
        text10.setFixedWidth(250)
        text10.setMinimumHeight(30)
        text10.setPlaceholderText("Start counting from top of the shelf")
        text10.setFont(QtGui.QFont("Times", 11))

        l11 = QLabel("CLASSIFYING SUBJECT: ")
        l11.setFont(headerfont)
        l11.setMinimumHeight(30)
        l11.setFixedWidth(180)
        text11 = QLineEdit()
        text11.setFixedWidth(600)
        text11.setMinimumHeight(30)
        text11.setPlaceholderText(
            " EX: Mathematics/Science/Computer Science or others.")
        text11.setFont(QtGui.QFont("Times", 11))

        text12 = QLineEdit()
        text12.setFixedWidth(600)
        text12.setMinimumHeight(30)
        text12.setPlaceholderText(
            " Enter the BOOK ID and Press the Delete Button to delete the data of the book"
        )
        text12.setFont(QtGui.QFont("Times", 11))

        fbox = QFormLayout()
        fbox.setVerticalSpacing(27)
        fbox.setHorizontalSpacing(30)
        fbox.addRow(l1, text1)
        fbox.addRow(l2, text2)
        fbox.addRow(l3, text3)
        fbox.addRow(l4, text4)
        fbox.addRow(l5, text5)
        fbox.addRow(l11, text11)
        fbox.addRow(l6, hboxperiod)
        fbox.addRow(l7, text7)
        fbox.addRow(l8, text8)
        fbox.addRow(l9, text9)
        fbox.addRow(l10, text10)
        fbox.addRow(deleteButton, text12)

        self.setLayout(fbox)
        self.lineedits = [
            text1, text2, text3, text4, text5, text7, text8, text9, text10,
            text11
        ]
        self.deletelineedit = [text12]
        self.radiobutton = [r1, r2]
        self.show()
Пример #30
0
 def stack1UI(self):
     layout = QFormLayout()
     layout.addRow("Name", QLineEdit())
     layout.addRow("Address", QLineEdit())
     #self.setTabText(0,"Contact Details")
     self.stack1.setLayout(layout)