class StringDictWidget(QWidget): """Show dict in key-value form.""" def __init__(self, parent): super(StringDictWidget, self).__init__(parent) self.setContentsMargins(11, 11, 11, 11) self.widget_layout = QFormLayout(self) self.widget_layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.widget_layout) def addEntry(self, key, value): key_label = QLabel(self) key_label.setText(str(key)) value_label = QLabel(self) value_label.setText(str(value)) self.widget_layout.addRow(key_label, value_label)
class ServerAddressWidget(BaseFrame): connect_clicked = Signal(str, int, bytes) def __init__(self, parent): super(ServerAddressWidget, self).__init__(parent) self.widget_layout = QVBoxLayout(self) self.setLayout(self.widget_layout) self.pass_widget = QWidget(self) self.pass_widget_layout = QFormLayout(self.pass_widget) self.pass_widget_layout.setContentsMargins(0, 0, 0, 0) self.ip_label = QLabel(self.pass_widget) self.ip_label.setText("IP Address") self.ip_line_edit = QLineEdit(self.pass_widget) self.pass_widget_layout.addRow(self.ip_label, self.ip_line_edit) self.port_label = QLabel(self.pass_widget) self.port_label.setText("Port") self.port_edit = QSpinBox(self.pass_widget) self.port_edit.setRange(1024, 65535) self.pass_widget_layout.addRow(self.port_label, self.port_edit) self.key_label = QLabel(self.pass_widget) self.key_label.setText("Key") self.key_line_edit = QLineEdit(self.pass_widget) self.pass_widget_layout.addRow(self.key_label, self.key_line_edit) self.widget_layout.addWidget(self.pass_widget) self.connect_button = QPushButton(self) self.connect_button.clicked.connect(self.on_connect_clicked) self.connect_button.setMinimumSize(QSize(0, 35)) self.connect_button.setText("Connect") self.widget_layout.addWidget(self.connect_button) @Slot() def on_connect_clicked(self): self.connect_clicked.emit(self.ip_line_edit.text(), self.port_edit.value(), self.key_line_edit.text().encode())
def __init__(self, fields: typing.List[AlgorithmProperty], start_values=None, dimension_num=1): super().__init__() if start_values is None: start_values = {} self.widgets_dict: typing.Dict[str, QtAlgorithmProperty] = dict() self.channels_chose: typing.List[typing.Union[ChannelComboBox, SubAlgorithmWidget]] = [] layout = QFormLayout() layout.setContentsMargins(10, 0, 10, 0) # layout.setVerticalSpacing(0) element_list = map(QtAlgorithmProperty.from_algorithm_property, fields) for el in element_list: if isinstance(el, QLabel): layout.addRow(el) elif isinstance(el.get_field(), SubAlgorithmWidget): label = QLabel(el.user_name) if el.help_text: label.setToolTip(el.help_text) layout.addRow(label, el.get_field().choose) layout.addRow(el.get_field()) self.widgets_dict[el.name] = el if el.name in start_values: el.get_field().set_starting(start_values[el.name]) el.change_fun.connect(any_arguments(self.value_changed.emit)) else: self.widgets_dict[el.name] = el label = QLabel(el.user_name) if el.help_text: label.setToolTip(el.help_text) layout.addRow(label, el.get_field()) # noinspection PyUnresolvedReferences if issubclass(el.value_type, Channel): # noinspection PyTypeChecker self.channels_chose.append(el.get_field()) if el.name in start_values: try: el.set_value(start_values[el.name]) except (KeyError, ValueError, TypeError): pass el.change_fun.connect(any_arguments(self.value_changed.emit)) self.setLayout(layout) self.value_changed.connect(self.update_size)
def _setupMeasSettingsWidget(self, mode): if mode == 'Normal': prefix = self.dcct_prefix visible = True elif mode == 'Fast': prefix = self.dcct_prefix.substitute(propty_name=mode) visible = False l_smpcnt = QLabel('Sample Count: ', self) spinbox_SampleCnt = PyDMSpinbox( self, prefix.substitute(propty=prefix.propty_name + 'SampleCnt-SP')) spinbox_SampleCnt.showStepExponent = False label_SampleCnt = PyDMLabel( self, prefix.substitute(propty=prefix.propty_name + 'SampleCnt-RB')) hlay_smpcnt = QHBoxLayout() hlay_smpcnt.addWidget(spinbox_SampleCnt) hlay_smpcnt.addWidget(label_SampleCnt) l_measperiod = QLabel('Period [s]: ', self) spinbox_MeasPeriod = PyDMSpinbox( self, prefix.substitute(propty=prefix.propty_name + 'MeasPeriod-SP')) spinbox_MeasPeriod.showStepExponent = False label_MeasPeriod = PyDMLabel( self, prefix.substitute(propty=prefix.propty_name + 'MeasPeriod-RB')) hlay_measperiod = QHBoxLayout() hlay_measperiod.addWidget(spinbox_MeasPeriod) hlay_measperiod.addWidget(label_MeasPeriod) flay_modesettings = QFormLayout() flay_modesettings.addRow(l_smpcnt, hlay_smpcnt) flay_modesettings.addRow(l_measperiod, hlay_measperiod) flay_modesettings.setContentsMargins(0, 0, 0, 0) modesettings = QWidget(self) modesettings.setLayout(flay_modesettings) modesettings.setVisible(visible) return modesettings
def __init__( self, fields: typing.List[AlgorithmProperty], start_values=None, dimension_num=1, settings: typing.Optional[BaseSettings] = None, ): super().__init__() if start_values is None: start_values = {} self.widgets_dict: typing.Dict[str, QtAlgorithmProperty] = {} self.channels_chose: typing.List[typing.Union[ ChannelComboBox, SubAlgorithmWidget]] = [] layout = QFormLayout() layout.setContentsMargins(10, 0, 10, 0) # layout.setVerticalSpacing(0) element_list = self._element_list(fields) for el in element_list: if isinstance(el, QLabel): layout.addRow(el) continue self._add_to_layout(layout, el, start_values, settings) self.setLayout(layout) self.value_changed.connect(self.update_size)
def __init__(self, parent, username): super(DlgGitHubLogin, self).__init__(parent) title = _("Sign in to Github") self.resize(366, 248) self.setWindowTitle(title) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) # Header html = ('<html><head/><body><p align="center"><img src="{mark}"/></p>' '<p align="center">{title}</p></body></html>') mark = GH_MARK_NORMAL if self.palette().base().color().lightness() < 128: mark = GH_MARK_LIGHT lbl_html = QLabel(html.format(mark=mark, title=title)) # Tabs tabs = QTabWidget() # Basic form layout basic_form_layout = QFormLayout() basic_form_layout.setContentsMargins(-1, 0, -1, -1) lbl_user = QLabel(_("Username:"******"Password: "******"Basic authentication")) # Token form layout token_form_layout = QFormLayout() token_form_layout.setContentsMargins(-1, 0, -1, -1) lbl_token = QLabel("Token: ") token_form_layout.setWidget(1, QFormLayout.LabelRole, lbl_token) self.le_token = QLineEdit() self.le_token.setEchoMode(QLineEdit.Password) self.le_token.textChanged.connect(self.update_btn_state) token_form_layout.setWidget(1, QFormLayout.FieldRole, self.le_token) # Token auth tab token_auth = QWidget() token_layout = QVBoxLayout() token_layout.addLayout(token_form_layout) token_layout.addStretch(1) token_auth.setLayout(token_layout) tabs.addTab(token_auth, _("Token authentication")) # Sign in button self.bt_sign_in = QPushButton(_("Sign in")) self.bt_sign_in.clicked.connect(self.accept) self.bt_sign_in.setDisabled(True) # Main layout layout = QVBoxLayout() layout.addWidget(lbl_html) layout.addWidget(tabs) layout.addWidget(self.bt_sign_in) self.setLayout(layout) # Final adjustments if username: self.le_user.setText(username) self.le_password.setFocus() else: self.le_user.setFocus() self.setFixedSize(self.width(), self.height()) self.le_password.installEventFilter(self) self.le_user.installEventFilter(self)
def __init__(self, parent, username, password, token, remember=False, remember_token=False): QDialog.__init__(self, parent) title = _("Sign in to Github") self.resize(415, 375) self.setWindowTitle(title) self.setWindowFlags( self.windowFlags() & ~Qt.WindowContextHelpButtonHint) # Header html = ('<html><head/><body><p align="center">' '{title}</p></body></html>') lbl_html = QLabel(html.format(title=title)) lbl_html.setStyleSheet('font-size: 16px;') # Tabs self.tabs = QTabWidget() # Basic form layout basic_form_layout = QFormLayout() basic_form_layout.setContentsMargins(-1, 0, -1, -1) basic_lbl_msg = QLabel(_("For regular users, i.e. users <b>without</b>" " two-factor authentication enabled")) basic_lbl_msg.setWordWrap(True) basic_lbl_msg.setAlignment(Qt.AlignJustify) lbl_user = QLabel(_("Username:"******"", QWidget()) lbl_password = QLabel(_("Password: "******"Remember me")) self.cb_remember.setToolTip(_("Spyder will save your credentials " "safely")) self.cb_remember.setChecked(remember) basic_form_layout.setWidget(4, QFormLayout.FieldRole, self.cb_remember) # Basic auth tab basic_auth = QWidget() basic_layout = QVBoxLayout() basic_layout.addSpacerItem(QSpacerItem(QSpacerItem(0, 8))) basic_layout.addWidget(basic_lbl_msg) basic_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) basic_layout.addLayout(basic_form_layout) basic_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) basic_auth.setLayout(basic_layout) self.tabs.addTab(basic_auth, _("Password Only")) # Token form layout token_form_layout = QFormLayout() token_form_layout.setContentsMargins(-1, 0, -1, -1) token_lbl_msg = QLabel(_("For users <b>with</b> two-factor " "authentication enabled, or who prefer a " "per-app token authentication.<br><br>" "You can go <b><a href=\"{}\">here</a></b> " "and click \"Generate token\" at the bottom " "to create a new token to use for this, with " "the appropriate permissions.").format( TOKEN_URL)) token_lbl_msg.setOpenExternalLinks(True) token_lbl_msg.setWordWrap(True) token_lbl_msg.setAlignment(Qt.AlignJustify) lbl_token = QLabel("Token: ") token_form_layout.setWidget(1, QFormLayout.LabelRole, lbl_token) self.le_token = QLineEdit() self.le_token.setEchoMode(QLineEdit.Password) self.le_token.textChanged.connect(self.update_btn_state) token_form_layout.setWidget(1, QFormLayout.FieldRole, self.le_token) self.cb_remember_token = None # Same validation as with cb_remember if self.is_keyring_available() and valid_py_os: self.cb_remember_token = QCheckBox(_("Remember token")) self.cb_remember_token.setToolTip(_("Spyder will save your " "token safely")) self.cb_remember_token.setChecked(remember_token) token_form_layout.setWidget(3, QFormLayout.FieldRole, self.cb_remember_token) # Token auth tab token_auth = QWidget() token_layout = QVBoxLayout() token_layout.addSpacerItem(QSpacerItem(QSpacerItem(0, 8))) token_layout.addWidget(token_lbl_msg) token_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) token_layout.addLayout(token_form_layout) token_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) token_auth.setLayout(token_layout) self.tabs.addTab(token_auth, _("Access Token")) # Sign in button self.bt_sign_in = QPushButton(_("Sign in")) self.bt_sign_in.clicked.connect(self.accept) self.bt_sign_in.setDisabled(True) # Main layout layout = QVBoxLayout() layout.addWidget(lbl_html) layout.addWidget(self.tabs) layout.addWidget(self.bt_sign_in) self.setLayout(layout) # Final adjustments if username and password: self.le_user.setText(username) self.le_password.setText(password) self.bt_sign_in.setFocus() elif username: self.le_user.setText(username) self.le_password.setFocus() elif token: self.le_token.setText(token) else: self.le_user.setFocus() self.setFixedSize(self.width(), self.height()) self.le_password.installEventFilter(self) self.le_user.installEventFilter(self) self.tabs.currentChanged.connect(self.update_btn_state)
def __init__(self, parent, username, password, token, remember=False, remember_token=False): QDialog.__init__(self, parent) title = _("Sign in to Github") self.resize(415, 375) self.setWindowTitle(title) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) # Header html = ('<html><head/><body><p align="center">' '{title}</p></body></html>') lbl_html = QLabel(html.format(title=title)) lbl_html.setStyleSheet('font-size: 16px;') # Tabs self.tabs = QTabWidget() # Basic form layout basic_form_layout = QFormLayout() basic_form_layout.setContentsMargins(-1, 0, -1, -1) basic_lbl_msg = QLabel( _("For regular users, i.e. users <b>without</b>" " two-factor authentication enabled")) basic_lbl_msg.setWordWrap(True) basic_lbl_msg.setAlignment(Qt.AlignJustify) lbl_user = QLabel(_("Username:"******"", QWidget()) lbl_password = QLabel(_("Password: "******"Remember me")) self.cb_remember.setToolTip( _("Spyder will save your credentials " "safely")) self.cb_remember.setChecked(remember) basic_form_layout.setWidget(4, QFormLayout.FieldRole, self.cb_remember) # Basic auth tab basic_auth = QWidget() basic_layout = QVBoxLayout() basic_layout.addSpacerItem(QSpacerItem(QSpacerItem(0, 8))) basic_layout.addWidget(basic_lbl_msg) basic_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) basic_layout.addLayout(basic_form_layout) basic_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) basic_auth.setLayout(basic_layout) self.tabs.addTab(basic_auth, _("Password Only")) # Token form layout token_form_layout = QFormLayout() token_form_layout.setContentsMargins(-1, 0, -1, -1) token_lbl_msg = QLabel( _("For users <b>with</b> two-factor " "authentication enabled, or who prefer a " "per-app token authentication.<br><br>" "You can go <b><a href=\"{}\">here</a></b> " "and click \"Generate token\" at the bottom " "to create a new token to use for this, with " "the appropriate permissions.").format(TOKEN_URL)) token_lbl_msg.setOpenExternalLinks(True) token_lbl_msg.setWordWrap(True) token_lbl_msg.setAlignment(Qt.AlignJustify) lbl_token = QLabel("Token: ") token_form_layout.setWidget(1, QFormLayout.LabelRole, lbl_token) self.le_token = QLineEdit() self.le_token.setEchoMode(QLineEdit.Password) self.le_token.textChanged.connect(self.update_btn_state) token_form_layout.setWidget(1, QFormLayout.FieldRole, self.le_token) self.cb_remember_token = None # Same validation as with cb_remember if self.is_keyring_available() and valid_py_os: self.cb_remember_token = QCheckBox(_("Remember token")) self.cb_remember_token.setToolTip( _("Spyder will save your " "token safely")) self.cb_remember_token.setChecked(remember_token) token_form_layout.setWidget(3, QFormLayout.FieldRole, self.cb_remember_token) # Token auth tab token_auth = QWidget() token_layout = QVBoxLayout() token_layout.addSpacerItem(QSpacerItem(QSpacerItem(0, 8))) token_layout.addWidget(token_lbl_msg) token_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) token_layout.addLayout(token_form_layout) token_layout.addSpacerItem( QSpacerItem(QSpacerItem(0, 50, vPolicy=QSizePolicy.Expanding))) token_auth.setLayout(token_layout) self.tabs.addTab(token_auth, _("Access Token")) # Sign in button self.bt_sign_in = QPushButton(_("Sign in")) self.bt_sign_in.clicked.connect(self.accept) self.bt_sign_in.setDisabled(True) # Main layout layout = QVBoxLayout() layout.addWidget(lbl_html) layout.addWidget(self.tabs) layout.addWidget(self.bt_sign_in) self.setLayout(layout) # Final adjustments if username and password: self.le_user.setText(username) self.le_password.setText(password) self.bt_sign_in.setFocus() elif username: self.le_user.setText(username) self.le_password.setFocus() elif token: self.le_token.setText(token) else: self.le_user.setFocus() self.setFixedSize(self.width(), self.height()) self.le_password.installEventFilter(self) self.le_user.installEventFilter(self) self.tabs.currentChanged.connect(self.update_btn_state)