def __init__(self, parent=None): super(WelcomeWidget, self).__init__() self.parent = parent self.icon = QLabel() pixmap = QPixmap(resource('gridsync.png')).scaled(220, 220) self.icon.setPixmap(pixmap) self.icon.setAlignment(Qt.AlignCenter) self.slogan = QLabel("<i>Secure, distributed storage</i>") font = QFont() font.setPointSize(12) self.slogan.setFont(font) self.slogan.setStyleSheet("color: grey") self.slogan.setAlignment(Qt.AlignCenter) self.invite_code_widget = InviteCodeWidget(self) self.lineedit = self.invite_code_widget.lineedit self.message = QLabel() self.message.setStyleSheet("color: red") self.message.setAlignment(Qt.AlignCenter) self.message.hide() self.help = QLabel() self.help.setText("<a href>I don't have an invite code</a>") font = QFont() font.setPointSize(9) self.help.setFont(font) self.help.setAlignment(Qt.AlignCenter) #self.help.linkActivated.connect(self.on_click) self.preferences_button = QPushButton() self.preferences_button.setIcon(QIcon(resource('preferences.png'))) self.preferences_button.setStyleSheet('border: 0px; padding: 0px;') self.preferences_button.setToolTip("Preferences...") self.preferences_button.setFocusPolicy(Qt.NoFocus) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addWidget(self.icon, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.slogan, 2, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) layout.addWidget(self.invite_code_widget, 4, 2, 1, 3) layout.addWidget(self.message, 5, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 6, 1) layout.addWidget(self.help, 7, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 8, 1) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 9, 1) layout.addWidget(self.preferences_button, 10, 5, Qt.AlignRight)
def __init__(self, parent=None): super(WelcomeWidget, self).__init__() self.parent = parent self.icon = QLabel() pixmap = QPixmap(resource('gridsync.png')).scaled(220, 220) self.icon.setPixmap(pixmap) self.icon.setAlignment(Qt.AlignCenter) self.slogan = QLabel("<i>Secure, distributed storage</i>") font = QFont() if sys.platform == 'darwin': font.setPointSize(16) else: font.setPointSize(12) self.slogan.setFont(font) self.slogan.setStyleSheet("color: grey") self.slogan.setAlignment(Qt.AlignCenter) self.invite_code_widget = InviteCodeWidget(self) self.lineedit = self.invite_code_widget.lineedit self.message = QLabel() self.message.setStyleSheet("color: red") self.message.setAlignment(Qt.AlignCenter) self.message.hide() self.restore_link = QLabel() self.restore_link.setText("<a href>Restore from Recovery Key...</a>") font = QFont() if sys.platform == 'darwin': font.setPointSize(12) else: font.setPointSize(9) self.restore_link.setFont(font) self.restore_link.setAlignment(Qt.AlignCenter) self.configure_link = QLabel() self.configure_link.setText("<a href>Manual configuration...</a>") font = QFont() if sys.platform == 'darwin': font.setPointSize(12) else: font.setPointSize(9) self.configure_link.setFont(font) self.configure_link.setAlignment(Qt.AlignCenter) self.preferences_button = QPushButton() self.preferences_button.setIcon(QIcon(resource('preferences.png'))) self.preferences_button.setStyleSheet('border: 0px; padding: 0px;') self.preferences_button.setToolTip("Preferences...") self.preferences_button.setFocusPolicy(Qt.NoFocus) links_grid = QGridLayout() links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 1, 1) links_grid.addWidget(self.restore_link, 2, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) links_grid.addWidget(self.configure_link, 4, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 5, 1) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addWidget(self.icon, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.slogan, 2, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) layout.addWidget(self.invite_code_widget, 4, 2, 1, 3) layout.addWidget(self.message, 5, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 6, 1) layout.addLayout(links_grid, 7, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 8, 1) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 9, 1) layout.addWidget(self.preferences_button, 10, 5, Qt.AlignRight)
def test_invite_code_widget_checkbox(): w = InviteCodeWidget() assert w.checkbox
def test_invite_code_widget_lineedit(): w = InviteCodeWidget() assert w.lineedit
def __init__(self, gateways): super(InviteReceiver, self).__init__() self.gateways = gateways self.wormhole = None self.setup_runner = None self.joined_folders = [] self.use_tor = False self.setMinimumSize(500, 300) self.mail_closed_icon = QLabel() self.mail_closed_icon.setPixmap( QPixmap(resource('mail-envelope-closed.png')).scaled(128, 128)) self.mail_closed_icon.setAlignment(Qt.AlignCenter) self.mail_open_icon = QLabel() self.mail_open_icon.setPixmap( QPixmap(resource('mail-envelope-open.png')).scaled(128, 128)) self.mail_open_icon.setAlignment(Qt.AlignCenter) self.folder_icon = QLabel() icon = QFileIconProvider().icon(QFileInfo(config_dir)) self.folder_icon.setPixmap(icon.pixmap(128, 128)) self.folder_icon.setAlignment(Qt.AlignCenter) self.invite_code_widget = InviteCodeWidget(self) self.label = self.invite_code_widget.label self.tor_checkbox = self.invite_code_widget.checkbox self.tor_checkbox.stateChanged.connect(self.on_checkbox_state_changed) self.lineedit = self.invite_code_widget.lineedit self.lineedit.error.connect(self.show_error) self.lineedit.go.connect(self.go) self.tor_label = QLabel() self.tor_label.setToolTip( "This connection is being routed through the Tor network.") self.tor_label.setPixmap( QPixmap(resource('tor-onion.png')).scaled(32, 32)) self.progressbar = QProgressBar(self) self.progressbar.setValue(0) self.progressbar.setMaximum(6) # XXX self.progressbar.setTextVisible(False) self.message_label = QLabel() self.message_label.setStyleSheet("color: grey") self.message_label.setAlignment(Qt.AlignCenter) self.error_label = QLabel() self.error_label.setStyleSheet("color: red") self.error_label.setAlignment(Qt.AlignCenter) self.close_button = QPushButton("Close") self.close_button.clicked.connect(self.close) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addWidget(self.mail_closed_icon, 1, 2, 1, 3) layout.addWidget(self.mail_open_icon, 1, 2, 1, 3) layout.addWidget(self.folder_icon, 1, 2, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.label, 2, 3, 1, 1) layout.addWidget(self.tor_label, 3, 1, 1, 1, Qt.AlignRight | Qt.AlignVCenter) layout.addWidget(self.lineedit, 3, 2, 1, 3) layout.addWidget(self.progressbar, 3, 2, 1, 3) layout.addWidget(self.tor_checkbox, 4, 2, 1, 3, Qt.AlignCenter) layout.addWidget(self.message_label, 5, 1, 1, 5) layout.addWidget(self.error_label, 5, 2, 1, 3) layout.addWidget(self.close_button, 6, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 7, 1) self.reset()
class InviteReceiverDialog(QDialog): done = pyqtSignal(object) # Tahoe gateway closed = pyqtSignal(QWidget) def __init__(self, gateways): super(InviteReceiverDialog, self).__init__() self.gateways = gateways self.invite_receiver = None self.joined_folders = [] self.setMinimumSize(500, 300) self.mail_closed_icon = QLabel() self.mail_closed_icon.setPixmap( QPixmap(resource('mail-envelope-closed.png')).scaled(128, 128)) self.mail_closed_icon.setAlignment(Qt.AlignCenter) self.mail_open_icon = QLabel() self.mail_open_icon.setPixmap( QPixmap(resource('mail-envelope-open.png')).scaled(128, 128)) self.mail_open_icon.setAlignment(Qt.AlignCenter) self.folder_icon = QLabel() icon = QFileIconProvider().icon(QFileInfo(config_dir)) self.folder_icon.setPixmap(icon.pixmap(128, 128)) self.folder_icon.setAlignment(Qt.AlignCenter) self.invite_code_widget = InviteCodeWidget(self) self.invite_code_widget.lineedit.go.connect(self.go) # XXX self.tor_label = QLabel() self.tor_label.setToolTip( "This connection is being routed through the Tor network.") self.tor_label.setPixmap( QPixmap(resource('tor-onion.png')).scaled(24, 24, Qt.KeepAspectRatio, Qt.SmoothTransformation)) self.checkmark = QLabel() self.checkmark.setAlignment(Qt.AlignCenter) self.checkmark.setPixmap( QPixmap(resource('green_checkmark.png')).scaled(32, 32)) self.progressbar = QProgressBar(self) self.progressbar.setValue(0) self.progressbar.setMaximum(6) # XXX self.progressbar.setTextVisible(False) self.message_label = QLabel(' ') self.message_label.setStyleSheet("color: grey") self.message_label.setAlignment(Qt.AlignCenter) self.error_label = QLabel() self.error_label.setStyleSheet("color: red") self.error_label.setAlignment(Qt.AlignCenter) self.close_button = QPushButton("Close") self.close_button.clicked.connect(self.close) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 3) layout.addWidget(self.mail_closed_icon, 1, 2, 1, 3) layout.addWidget(self.mail_open_icon, 1, 2, 1, 3) layout.addWidget(self.folder_icon, 1, 2, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.invite_code_widget, 2, 2, 1, 3) layout.addWidget(self.checkmark, 2, 3, 1, 1) layout.addWidget(self.tor_label, 3, 1, 1, 1, Qt.AlignRight | Qt.AlignVCenter) layout.addWidget(self.progressbar, 3, 2, 1, 3) layout.addWidget(self.message_label, 5, 1, 1, 5) layout.addWidget(self.error_label, 5, 2, 1, 3) layout.addWidget(self.close_button, 6, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 7, 1) self.reset() def reset(self): self.mail_open_icon.hide() self.folder_icon.hide() self.mail_closed_icon.show() self.progressbar.hide() self.error_label.setText('') self.error_label.hide() self.close_button.hide() self.tor_label.hide() self.checkmark.hide() self.progressbar.setStyleSheet('') def show_error(self, text): self.error_label.setText(text) self.message_label.hide() self.error_label.show() reactor.callLater(3, self.error_label.hide) reactor.callLater(3, self.message_label.show) def update_progress(self, message): step = self.progressbar.value() + 1 self.progressbar.setValue(step) self.message_label.setText(message) if step == 3: self.mail_closed_icon.hide() self.mail_open_icon.show() def set_joined_folders(self, folders): self.joined_folders = folders if folders: self.mail_open_icon.hide() self.folder_icon.show() def on_got_icon(self, path): self.mail_open_icon.setPixmap(QPixmap(path).scaled(128, 128)) self.mail_closed_icon.hide() self.mail_open_icon.show() def on_done(self, gateway): self.progressbar.setValue(self.progressbar.maximum()) self.close_button.show() self.checkmark.show() self.done.emit(gateway) if self.joined_folders and len(self.joined_folders) == 1: target = self.joined_folders[0] self.message_label.setText( 'Successfully joined folder "{0}"!\n"{0}" is now available ' 'for download'.format(target)) elif self.joined_folders: target = humanized_list(self.joined_folders, 'folders') self.message_label.setText( 'Successfully joined {0}!\n{0} are now available for ' 'download'.format(target)) self.close() # TODO: Cleanup def on_grid_already_joined(self, grid_name): QMessageBox.information( self, "Already connected", 'You are already connected to "{}"'.format(grid_name)) self.close() def got_message(self, _): self.update_progress("Reading invitation...") # 3 def got_welcome(self): self.update_progress("Connected; waiting for message...") # 2 def handle_failure(self, failure): logging.error(str(failure)) if failure.type == CancelledError and self.progressbar.value() > 2: return show_failure(failure, self) self.close() def go(self, code): self.reset() self.invite_code_widget.hide() self.progressbar.show() if self.invite_code_widget.tor_checkbox.isChecked(): use_tor = True self.tor_label.show() self.progressbar.setStyleSheet( 'QProgressBar::chunk {{ background-color: {}; }}'.format( TOR_PURPLE)) else: use_tor = False self.update_progress("Verifying invitation...") # 1 self.invite_receiver = InviteReceiver(self.gateways, use_tor) self.invite_receiver.got_welcome.connect(self.got_welcome) self.invite_receiver.got_message.connect(self.got_message) self.invite_receiver.grid_already_joined.connect( self.on_grid_already_joined) self.invite_receiver.update_progress.connect(self.update_progress) self.invite_receiver.got_icon.connect(self.on_got_icon) self.invite_receiver.joined_folders.connect(self.set_joined_folders) self.invite_receiver.done.connect(self.on_done) d = self.invite_receiver.receive(code) d.addErrback(self.handle_failure) reactor.callLater(30, d.cancel) def enterEvent(self, event): event.accept() self.invite_code_widget.lineedit.update_action_button() # XXX def closeEvent(self, event): event.accept() try: self.invite_receiver.cancel() except AttributeError: pass self.closed.emit(self) def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: self.close()
def __init__(self, parent=None): super(WelcomeWidget, self).__init__() self.parent = parent application_settings = global_settings["application"] logo_icon = application_settings.get("logo_icon") if logo_icon: icon_file = logo_icon icon_size = 288 else: icon_file = application_settings.get("tray_icon") icon_size = 220 self.icon = QLabel() self.icon.setPixmap(Pixmap(icon_file, icon_size)) self.icon.setAlignment(Qt.AlignCenter) self.slogan = QLabel("<i>{}</i>".format( application_settings.get("description", ""))) self.slogan.setFont(Font(12)) p = self.palette() dimmer_grey = BlendedColor(p.windowText().color(), p.window().color()).name() self.slogan.setStyleSheet("color: {}".format(dimmer_grey)) self.slogan.setAlignment(Qt.AlignCenter) if logo_icon: self.slogan.hide() self.invite_code_widget = InviteCodeWidget(self) self.lineedit = self.invite_code_widget.lineedit self.connect_button = QPushButton("Connect") try: default_code = global_settings["connection"]["default"] except KeyError: default_code = "" grid_settings = load_settings_from_cheatcode(default_code) if grid_settings: self.invite_code_widget.hide() nickname = grid_settings.get("nickname") if nickname: font = Font(11) self.connect_button.setFont(font) self.connect_button.setFixedHeight(32) self.connect_button.setText(f"Connect to {nickname}") self.connect_button.clicked.connect( lambda: self.parent.go(default_code, grid_settings)) primary_color = grid_settings.get("color-1") if primary_color: self.connect_button.setStyleSheet( f"background: {primary_color}; color: white") else: self.connect_button.setStyleSheet( "background: green; color: white") else: self.connect_button.hide() self.message = QLabel() self.message.setStyleSheet("color: red") self.message.setAlignment(Qt.AlignCenter) self.message.hide() self.restore_link = QLabel() self.restore_link.setText("<a href>Restore from Recovery Key...</a>") self.restore_link.setFont(Font(9)) self.restore_link.setAlignment(Qt.AlignCenter) self.configure_link = QLabel() self.configure_link.setText("<a href>Manual configuration...</a>") self.configure_link.setFont(Font(9)) self.configure_link.setAlignment(Qt.AlignCenter) self.preferences_button = QPushButton() self.preferences_button.setIcon(QIcon(resource("preferences.png"))) self.preferences_button.setStyleSheet("border: 0px; padding: 0px;") self.preferences_button.setToolTip("Preferences...") self.preferences_button.setFocusPolicy(Qt.NoFocus) links_grid = QGridLayout() links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 1, 1) links_grid.addWidget(self.restore_link, 2, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) links_grid.addWidget(self.configure_link, 4, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 5, 1) prefs_layout = QGridLayout() prefs_layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) prefs_layout.addWidget(self.preferences_button, 1, 2) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addWidget(self.icon, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.slogan, 2, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) layout.addWidget(self.invite_code_widget, 4, 2, 1, 3) layout.addWidget(self.connect_button, 4, 2, 1, 3) layout.addWidget(self.message, 5, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 6, 1) layout.addLayout(links_grid, 7, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 8, 1) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 9, 1) layout.addLayout(prefs_layout, 10, 1, 1, 5)
def __init__(self, gateways): super(InviteReceiverDialog, self).__init__() self.gateways = gateways self.invite_receiver = None self.joined_folders = [] self.setMinimumSize(500, 300) self.mail_closed_icon = QLabel() self.mail_closed_icon.setAlignment(Qt.AlignCenter) self.mail_closed_icon.setPixmap( Pixmap("mail-envelope-closed.png", 128) ) self.mail_open_icon = QLabel() self.mail_open_icon.setAlignment(Qt.AlignCenter) self.mail_open_icon.setPixmap(Pixmap("mail-envelope-open.png", 128)) self.folder_icon = QLabel() icon = QFileIconProvider().icon(QFileInfo(config_dir)) self.folder_icon.setPixmap(icon.pixmap(128, 128)) self.folder_icon.setAlignment(Qt.AlignCenter) self.invite_code_widget = InviteCodeWidget(self) self.invite_code_widget.lineedit.go.connect(self.go) # XXX self.tor_label = QLabel() self.tor_label.setToolTip( "This connection is being routed through the Tor network." ) self.tor_label.setPixmap(Pixmap("tor-onion.png", 24)) self.checkmark = QLabel() self.checkmark.setAlignment(Qt.AlignCenter) self.checkmark.setPixmap(Pixmap("green_checkmark.png", 32)) self.progressbar = QProgressBar(self) self.progressbar.setValue(0) self.progressbar.setMaximum(6) # XXX self.progressbar.setTextVisible(False) self.message_label = QLabel(" ") self.message_label.setStyleSheet("color: grey") self.message_label.setAlignment(Qt.AlignCenter) self.error_label = QLabel() self.error_label.setStyleSheet("color: red") self.error_label.setAlignment(Qt.AlignCenter) self.close_button = QPushButton("Close") self.close_button.clicked.connect(self.close) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 3) layout.addWidget(self.mail_closed_icon, 1, 2, 1, 3) layout.addWidget(self.mail_open_icon, 1, 2, 1, 3) layout.addWidget(self.folder_icon, 1, 2, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.invite_code_widget, 2, 2, 1, 3) layout.addWidget(self.checkmark, 2, 3, 1, 1) layout.addWidget( self.tor_label, 3, 1, 1, 1, Qt.AlignRight | Qt.AlignVCenter ) layout.addWidget(self.progressbar, 3, 2, 1, 3) layout.addWidget(self.message_label, 5, 1, 1, 5) layout.addWidget(self.error_label, 5, 2, 1, 3) layout.addWidget(self.close_button, 6, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 7, 1) self.reset()
def __init__(self, parent=None): super(WelcomeWidget, self).__init__() self.parent = parent application_settings = global_settings['application'] logo_icon = application_settings.get('logo_icon') if logo_icon: icon_file = logo_icon icon_size = 288 else: icon_file = application_settings.get('tray_icon') icon_size = 220 self.icon = QLabel() self.icon.setPixmap(Pixmap(icon_file, icon_size)) self.icon.setAlignment(Qt.AlignCenter) self.slogan = QLabel("<i>{}</i>".format( application_settings.get('description', ''))) self.slogan.setFont(Font(12)) p = self.palette() dimmer_grey = BlendedColor(p.windowText().color(), p.window().color()).name() self.slogan.setStyleSheet("color: {}".format(dimmer_grey)) self.slogan.setAlignment(Qt.AlignCenter) if logo_icon: self.slogan.hide() self.invite_code_widget = InviteCodeWidget(self) self.lineedit = self.invite_code_widget.lineedit self.message = QLabel() self.message.setStyleSheet("color: red") self.message.setAlignment(Qt.AlignCenter) self.message.hide() self.restore_link = QLabel() self.restore_link.setText("<a href>Restore from Recovery Key...</a>") self.restore_link.setFont(Font(9)) self.restore_link.setAlignment(Qt.AlignCenter) self.configure_link = QLabel() self.configure_link.setText("<a href>Manual configuration...</a>") self.configure_link.setFont(Font(9)) self.configure_link.setAlignment(Qt.AlignCenter) self.preferences_button = QPushButton() self.preferences_button.setIcon(QIcon(resource('preferences.png'))) self.preferences_button.setStyleSheet('border: 0px; padding: 0px;') self.preferences_button.setToolTip("Preferences...") self.preferences_button.setFocusPolicy(Qt.NoFocus) links_grid = QGridLayout() links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 1, 1) links_grid.addWidget(self.restore_link, 2, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) links_grid.addWidget(self.configure_link, 4, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 5, 1) prefs_layout = QGridLayout() prefs_layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) prefs_layout.addWidget(self.preferences_button, 1, 2) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addWidget(self.icon, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.slogan, 2, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) layout.addWidget(self.invite_code_widget, 4, 2, 1, 3) layout.addWidget(self.message, 5, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 6, 1) layout.addLayout(links_grid, 7, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 8, 1) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 9, 1) layout.addLayout(prefs_layout, 10, 1, 1, 5)
def __init__(self, parent=None): super(WelcomeWidget, self).__init__() self.parent = parent application_settings = global_settings['application'] logo_icon = application_settings.get('logo_icon') if logo_icon: icon_file = logo_icon icon_size = 288 else: icon_file = application_settings.get('tray_icon') icon_size = 220 self.icon = QLabel() self.icon.setPixmap( QPixmap(resource(icon_file)).scaled(icon_size, icon_size, Qt.KeepAspectRatio, Qt.SmoothTransformation)) self.icon.setAlignment(Qt.AlignCenter) self.slogan = QLabel("<i>{}</i>".format( application_settings.get('description', ''))) font = QFont() if sys.platform == 'darwin': font.setPointSize(16) else: font.setPointSize(12) self.slogan.setFont(font) self.slogan.setStyleSheet("color: grey") self.slogan.setAlignment(Qt.AlignCenter) if logo_icon: self.slogan.hide() self.invite_code_widget = InviteCodeWidget(self) self.lineedit = self.invite_code_widget.lineedit self.message = QLabel() self.message.setStyleSheet("color: red") self.message.setAlignment(Qt.AlignCenter) self.message.hide() self.restore_link = QLabel() self.restore_link.setText("<a href>Restore from Recovery Key...</a>") font = QFont() if sys.platform == 'darwin': font.setPointSize(12) else: font.setPointSize(9) self.restore_link.setFont(font) self.restore_link.setAlignment(Qt.AlignCenter) self.configure_link = QLabel() self.configure_link.setText("<a href>Manual configuration...</a>") font = QFont() if sys.platform == 'darwin': font.setPointSize(12) else: font.setPointSize(9) self.configure_link.setFont(font) self.configure_link.setAlignment(Qt.AlignCenter) self.preferences_button = QPushButton() self.preferences_button.setIcon(QIcon(resource('preferences.png'))) self.preferences_button.setStyleSheet('border: 0px; padding: 0px;') self.preferences_button.setToolTip("Preferences...") self.preferences_button.setFocusPolicy(Qt.NoFocus) links_grid = QGridLayout() links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 1, 1) links_grid.addWidget(self.restore_link, 2, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) links_grid.addWidget(self.configure_link, 4, 1) links_grid.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 5, 1) prefs_layout = QGridLayout() prefs_layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) prefs_layout.addWidget(self.preferences_button, 1, 2) layout = QGridLayout(self) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 0, 0) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 1) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 2) layout.addWidget(self.icon, 1, 3) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 4) layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 1, 5) layout.addWidget(self.slogan, 2, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 3, 1) layout.addWidget(self.invite_code_widget, 4, 2, 1, 3) layout.addWidget(self.message, 5, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 6, 1) layout.addLayout(links_grid, 7, 3) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Minimum), 8, 1) layout.addItem(QSpacerItem(0, 0, 0, QSizePolicy.Expanding), 9, 1) layout.addLayout(prefs_layout, 10, 1, 1, 5)