def ask_link(self): d = QDialog(self) d.setWindowTitle(_('Create link')) l = QFormLayout() l.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) d.setLayout(l) d.url = QLineEdit(d) d.name = QLineEdit(d) d.treat_as_image = QCheckBox(d) d.setMinimumWidth(600) d.bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) d.br = b = QPushButton(_('&Browse')) b.setIcon(QIcon(I('document_open.png'))) def cf(): files = choose_files(d, 'select link file', _('Choose file'), select_only_single_file=True) if files: path = files[0] d.url.setText(path) if path and os.path.exists(path): with lopen(path, 'rb') as f: q = what(f) is_image = q in {'jpeg', 'png', 'gif'} d.treat_as_image.setChecked(is_image) b.clicked.connect(cf) d.la = la = QLabel( _('Enter a URL. If you check the "Treat the URL as an image" box ' 'then the URL will be added as an image reference instead of as ' 'a link. You can also choose to create a link to a file on ' 'your computer. ' 'Note that if you create a link to a file on your computer, it ' 'will stop working if the file is moved.')) la.setWordWrap(True) la.setStyleSheet('QLabel { margin-bottom: 1.5ex }') l.setWidget(0, l.SpanningRole, la) l.addRow(_('Enter &URL:'), d.url) l.addRow(_('Treat the URL as an &image'), d.treat_as_image) l.addRow(_('Enter &name (optional):'), d.name) l.addRow(_('Choose a file on your computer:'), d.br) l.addRow(d.bb) d.bb.accepted.connect(d.accept) d.bb.rejected.connect(d.reject) d.resize(d.sizeHint()) link, name, is_image = None, None, False if d.exec_() == d.Accepted: link, name = unicode_type(d.url.text()).strip(), unicode_type( d.name.text()).strip() is_image = d.treat_as_image.isChecked() return link, name, is_image
def ask_link(self): d = QDialog(self) d.setWindowTitle(_('Create link')) l = QFormLayout() l.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) d.setLayout(l) d.url = QLineEdit(d) d.name = QLineEdit(d) d.treat_as_image = QCheckBox(d) d.setMinimumWidth(600) d.bb = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) d.br = b = QPushButton(_('&Browse')) b.setIcon(QIcon(I('document_open.png'))) def cf(): files = choose_files(d, 'select link file', _('Choose file'), select_only_single_file=True) if files: path = files[0] d.url.setText(path) if path and os.path.exists(path): with lopen(path, 'rb') as f: q = what(f) is_image = q in {'jpeg', 'png', 'gif'} d.treat_as_image.setChecked(is_image) b.clicked.connect(cf) d.la = la = QLabel(_( 'Enter a URL. If you check the "Treat the URL as an image" box ' 'then the URL will be added as an image reference instead of as ' 'a link. You can also choose to create a link to a file on ' 'your computer. ' 'Note that if you create a link to a file on your computer, it ' 'will stop working if the file is moved.')) la.setWordWrap(True) la.setStyleSheet('QLabel { margin-bottom: 1.5ex }') l.setWidget(0, l.SpanningRole, la) l.addRow(_('Enter &URL:'), d.url) l.addRow(_('Treat the URL as an &image'), d.treat_as_image) l.addRow(_('Enter &name (optional):'), d.name) l.addRow(_('Choose a file on your computer:'), d.br) l.addRow(d.bb) d.bb.accepted.connect(d.accept) d.bb.rejected.connect(d.reject) d.resize(d.sizeHint()) link, name, is_image = None, None, False if d.exec_() == d.Accepted: link, name = unicode(d.url.text()).strip(), unicode(d.name.text()).strip() is_image = d.treat_as_image.isChecked() return link, name, is_image
def setupUi(self, ConfigureRPCserverDlg): ConfigureRPCserverDlg.setModal(True) ## -- Layout self.layout = QGroupBox(ConfigureRPCserverDlg) self.layout.setTitle("Local Pivx-Cli wallet Configuration") self.layout.setContentsMargins(80, 30, 10, 10) form = QFormLayout(ConfigureRPCserverDlg) form.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) ## -- ROW 1 line1 = QHBoxLayout() self.edt_rpcIp = QLineEdit() self.edt_rpcIp.setToolTip( "rpc server (local wallet) IP address\n-- example [IPv4] 88.172.23.1\n-- example [IPv6] 2001:db8:85a3::8a2e:370:7334" ) self.edt_rpcIp.setText(ConfigureRPCserverDlg.rpc_ip) line1.addWidget(self.edt_rpcIp) line1.addWidget(QLabel("IP Port")) self.edt_rpcPort = QSpinBox() self.edt_rpcPort.setRange(1, 65535) self.edt_rpcPort.setValue(ConfigureRPCserverDlg.rpc_port) self.edt_rpcPort.setFixedWidth(180) line1.addWidget(self.edt_rpcPort) form.addRow(QLabel("IP Address"), line1) ## -- ROW 2 self.edt_rpcUser = QLineEdit() self.edt_rpcUser.setText(ConfigureRPCserverDlg.rpc_user) form.addRow(QLabel("RPC Username"), self.edt_rpcUser) ## -- ROW 3 self.edt_rpcPassword = QLineEdit() self.edt_rpcPassword.setText(ConfigureRPCserverDlg.rpc_password) form.addRow(QLabel("RPC Password"), self.edt_rpcPassword) ## -- ROW 4 hBox = QHBoxLayout() self.buttonCancel = QPushButton("Cancel") self.buttonCancel.clicked.connect( lambda: self.onButtonCancel(ConfigureRPCserverDlg)) hBox.addWidget(self.buttonCancel) self.buttonSave = QPushButton("Save") self.buttonSave.clicked.connect( lambda: self.onButtonSave(ConfigureRPCserverDlg)) hBox.addWidget(self.buttonSave) form.addRow(hBox) ## Set Layout self.layout.setLayout(form) ConfigureRPCserverDlg.setFixedSize(self.layout.sizeHint())
def initConfigForm(self, masternode_alias=None): self.configForm = QGroupBox() if not masternode_alias: self.configForm.setTitle("New Masternode") else: self.configForm.setTitle("Edit Masternode [%s]" % masternode_alias) layout = QFormLayout() layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) layout.setContentsMargins(10, 20, 10, 10) layout.setSpacing(13) ##--- ROW 1 self.edt_name = QLineEdit() self.edt_name.setToolTip( "masternode Alias.\n-- example: My Masternode 1") layout.addRow(QLabel("Name"), self.edt_name) ##--- ROW 2 line1 = QHBoxLayout() self.edt_masternodeIp = QLineEdit() self.edt_masternodeIp.setToolTip( "masternode IP address\n-- example [IPv4] 88.172.23.1\n-- example [IPv6] 2001:db8:85a3::8a2e:370:7334" ) line1.addWidget(self.edt_masternodeIp) line1.addWidget(QLabel("IP Port")) self.edt_masternodePort = QSpinBox() self.edt_masternodePort.setRange(1, 65535) self.edt_masternodePort.setValue(51472) self.edt_masternodePort.setToolTip( "remote masternode tcp port \n-- example: 51472") self.edt_masternodePort.setFixedWidth(180) line1.addWidget(self.edt_masternodePort) layout.addRow(QLabel("IP Address"), line1) ##--- ROW 3 self.edt_mnPrivKey = QLineEdit() self.edt_mnPrivKey.setToolTip( "masternode private key \n-- output of 'masternode genkey' command" ) self.btn_genKey = QPushButton("Generate") self.btn_genKey.setToolTip( "generate masternode privKey from hardware wallet") hBox2 = QHBoxLayout() hBox2.addWidget(self.edt_mnPrivKey) hBox2.addWidget(self.btn_genKey) ## Testnet check self.testnetCheck = QCheckBox() self.testnetCheck.setToolTip("check for TESTNET masternode setup") hBox2.addWidget(QLabel("testnet")) hBox2.addWidget(self.testnetCheck) layout.addRow(QLabel("MN Priv Key"), hBox2) ##--- ROW 4/5 layout.addRow(QFrame()) layout.addRow(QLabel("<em>Masternode Collateral</em>")) hBox3 = QHBoxLayout() self.edt_hwAccount = QSpinBox() self.edt_hwAccount.setFixedWidth(50) self.edt_hwAccount.setToolTip( "account number of the hardware wallet.\nIf unsure put 0") self.edt_hwAccount.setValue(0) hBox3.addWidget(self.edt_hwAccount) hBox3.addWidget(QLabel("PIVX Address")) self.edt_address = QLineEdit() self.edt_address.setToolTip("the address containing 10000 PIV") self.edt_spath = QSpinBox() self.edt_spath.setToolTip("BIP44 spath for the address") self.edt_spath.setFixedWidth(75) self.edt_spath.setValue(0) self.btn_spathToAddress = QPushButton("<<") self.btn_spathToAddress.setToolTip( "find address and public key of given account/spath_id") self.btn_addressToSpath = QPushButton(">>") self.btn_addressToSpath.setToolTip( "find spath_id and public key of given account/address") hBox3.addWidget(self.edt_address) hBox3.addWidget(self.btn_spathToAddress) hBox3.addWidget(self.btn_addressToSpath) hBox3.addWidget(QLabel("spath_id")) hBox3.addWidget(self.edt_spath) layout.addRow(QLabel("Account HW"), hBox3) ##--- ROW 6 self.edt_pubKey = QLineEdit() self.edt_pubKey.setToolTip("public key corresponding to address") self.edt_pubKey.setEnabled(False) layout.addRow(QLabel("Public Key"), self.edt_pubKey) ##--- ROW 7 hBox5 = QHBoxLayout() self.btn_findTxid = QPushButton("Lookup") self.btn_findTxid.setToolTip("look for txid and txidn on explorer") hBox5.addWidget(self.btn_findTxid) hBox5.addWidget(QLabel("/")) self.btn_editTxid = QPushButton("Edit") self.btn_editTxid.setToolTip("edit txid and txidn manually") hBox5.addWidget(self.btn_editTxid) hBox5.addWidget(QLabel("txid")) self.edt_txid = QLineEdit() self.edt_txid.setToolTip("txid for the collateral") self.edt_txid.setEnabled(False) hBox5.addWidget(self.edt_txid) hBox5.addWidget(QLabel("txidn")) self.edt_txidn = QSpinBox() self.edt_txidn.setFixedWidth(50) self.edt_txidn.setToolTip("txidn for the collateral") self.edt_txidn.setEnabled(False) hBox5.addWidget(self.edt_txidn) layout.addRow(QLabel("Transaction"), hBox5) ##--- Set Layout self.configForm.setLayout(layout) ##--- Footer self.footer = QHBoxLayout() self.footer.addStretch(1) self.btn_cancelMNConf = QPushButton('Cancel') self.btn_cancelMNConf.setToolTip( "cancel changes and go back to main list") self.footer.addWidget(self.btn_cancelMNConf) self.btn_saveMNConf = QPushButton('Save') self.btn_saveMNConf.setToolTip( "save configuration and go back to main list") self.footer.addWidget(self.btn_saveMNConf)
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) 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) hBox.setStretch(0, 1) hBox.setStretch(1, 0) hBox.setStretch(2, 0) layout.addRow(QLabel("Masternode"), hBox) ## --- ROW 2: REWARDS self.rewardsList = QVBoxLayout() self.rewardsList.statusLabel = QLabel( '<b style="color:purple">Checking explorer...</b>') self.rewardsList.statusLabel.setVisible(True) 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 initRewardsForm(self): self.rewardsForm = QGroupBox() self.rewardsForm.setTitle("Transfer UTXOs") layout = QFormLayout() layout.setContentsMargins(10, 10, 10, 10) layout.setSpacing(13) layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) ##--- ROW 1 line1 = QHBoxLayout() line1.addWidget(QLabel("Account HW")) self.edt_hwAccount = QSpinBox() self.edt_hwAccount.setMaximum(9999) self.edt_hwAccount.setFixedWidth(50) self.edt_hwAccount.setToolTip( "account number of the hardware wallet.\nIf unsure put 0") self.edt_hwAccount.setValue(0) line1.addWidget(self.edt_hwAccount) line1.addWidget(QLabel("spath from")) self.edt_spathFrom = QSpinBox() self.edt_spathFrom.setMaximum(9999) self.edt_spathFrom.setFixedWidth(50) self.edt_spathFrom.setToolTip("starting address n.") self.edt_spathFrom.setValue(0) line1.addWidget(self.edt_spathFrom) line1.addWidget(QLabel("spath to")) self.edt_spathTo = QSpinBox() self.edt_spathTo.setMaximum(9999) self.edt_spathTo.setFixedWidth(50) self.edt_spathTo.setToolTip("ending address n.") self.edt_spathTo.setValue(10) line1.addWidget(self.edt_spathTo) line1.addWidget(QLabel("internal/external")) self.edt_internalExternal = QSpinBox() self.edt_internalExternal.setFixedWidth(50) self.edt_internalExternal.setToolTip("ending address n.") self.edt_internalExternal.setValue(0) self.edt_internalExternal.setMaximum(1) line1.addWidget(self.edt_internalExternal) line1.addStretch(1) self.btn_reload = QPushButton("Scan Ledger device") self.btn_reload.setToolTip("Reload data from ledger device") line1.addWidget(self.btn_reload) layout.addRow(line1) hBox = QHBoxLayout() self.addySelect = QComboBox() self.addySelect.setToolTip("Select Address") hBox.addWidget(self.addySelect) layout.addRow(hBox) ## --- ROW 2: UTXOs self.rewardsList = QVBoxLayout() self.rewardsList.statusLabel = QLabel( '<b style="color:red">Reload Rewards</b>') self.rewardsList.statusLabel.setVisible(True) self.rewardsList.addWidget(self.rewardsList.statusLabel) self.rewardsList.box = QTableWidget() self.rewardsList.box.setMinimumHeight(200) #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 UTXOs")) 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 send PIV 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) 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")
class ConfigWidget(QWidget): def __init__(self): QWidget.__init__(self) self.l = QVBoxLayout() self.l.setContentsMargins(0, 0, 0, 0) self.setLayout(self.l) self.help_msg = QLabel(''' <h2 style="text-align: center">Get Started</h2> <p> To start syncing your library you will need to create an account to retrieve<br> your API key. </p> ''') self.l.addWidget(self.help_msg) self.form = QFormLayout() self.form.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) self.l.addLayout(self.form) self.link = QLabel('<a href="{0}">{0}</a>'.format(prefs['api_base'] + '/api-key')) self.link.setOpenExternalLinks(True) self.form.addRow('Visit:', self.link) self.api_key = QLineEdit(self) self.api_key.setText(prefs['api_key']) self.form.addRow('API Key:', self.api_key) self.debug = QCheckBox(self) self.debug.setChecked(prefs['debug']) self.form.addRow('Debug Logging:', self.debug) self.update_metadata_layout = QHBoxLayout() self.update_metadata_layout.setContentsMargins(0, 0, 0, 0) self.update_metadata = QCheckBox(self) self.update_metadata.setChecked(prefs['update_metadata']) self.update_metadata_layout.addWidget(self.update_metadata) self.update_metadata_hint = QLabel('(sync all metadata changes made)') self.update_metadata_layout.addWidget(self.update_metadata_hint) self.form.addRow('Update Metadata:', self.update_metadata_layout) self.threads = QComboBox(self) for n in range(3): self.threads.addItem(str(pow(2, n))) self.threads.setCurrentText(str(prefs['threads'])) self.form.addRow('Sync Threads:', self.threads) self.bookshelves_custom_column = QComboBox(self) self.bookshelves_custom_column.addItem('') for key, meta in get_current_db().new_api.field_metadata.custom_iteritems(): if meta['datatype'] == 'text': self.bookshelves_custom_column.addItem(key) self.bookshelves_custom_column.setCurrentText(prefs['bookshelves_custom_column']) self.form.addRow('Bookshelves Column:', self.bookshelves_custom_column) def save_settings(self): prefs['api_key'] = unicode(self.api_key.text()) prefs['debug'] = self.debug.isChecked() prefs['update_metadata'] = self.update_metadata.isChecked() prefs['threads'] = int(self.threads.currentText()) prefs['bookshelves_custom_column'] = unicode(self.bookshelves_custom_column.currentText())
def ask_link(self): class Ask(QDialog): def accept(self): if self.treat_as_image.isChecked(): url = self.url.text() if url.lower().split(':', 1)[0] in ('http', 'https'): error_dialog( self, _('Remote images not supported'), _('You must download the image to your computer, URLs pointing' ' to remote images are not supported.'), show=True) return QDialog.accept(self) d = Ask(self) d.setWindowTitle(_('Create link')) l = QFormLayout() l.setFieldGrowthPolicy( QFormLayout.FieldGrowthPolicy.ExpandingFieldsGrow) d.setLayout(l) d.url = QLineEdit(d) d.name = QLineEdit(d) d.treat_as_image = QCheckBox(d) d.setMinimumWidth(600) d.bb = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel) d.br = b = QPushButton(_('&Browse')) b.setIcon(QIcon(I('document_open.png'))) def cf(): filetypes = [] if d.treat_as_image.isChecked(): filetypes = [(_('Images'), 'png jpeg jpg gif'.split())] files = choose_files(d, 'select link file', _('Choose file'), filetypes, select_only_single_file=True) if files: path = files[0] d.url.setText(path) if path and os.path.exists(path): with lopen(path, 'rb') as f: q = what(f) is_image = q in {'jpeg', 'png', 'gif'} d.treat_as_image.setChecked(is_image) b.clicked.connect(cf) d.la = la = QLabel( _('Enter a URL. If you check the "Treat the URL as an image" box ' 'then the URL will be added as an image reference instead of as ' 'a link. You can also choose to create a link to a file on ' 'your computer. ' 'Note that if you create a link to a file on your computer, it ' 'will stop working if the file is moved.')) la.setWordWrap(True) la.setStyleSheet('QLabel { margin-bottom: 1.5ex }') l.setWidget(0, QFormLayout.ItemRole.SpanningRole, la) l.addRow(_('Enter &URL:'), d.url) l.addRow(_('Treat the URL as an &image'), d.treat_as_image) l.addRow(_('Enter &name (optional):'), d.name) l.addRow(_('Choose a file on your computer:'), d.br) l.addRow(d.bb) d.bb.accepted.connect(d.accept) d.bb.rejected.connect(d.reject) d.resize(d.sizeHint()) link, name, is_image = None, None, False if d.exec_() == QDialog.DialogCode.Accepted: link, name = unicode_type(d.url.text()).strip(), unicode_type( d.name.text()).strip() is_image = d.treat_as_image.isChecked() return link, name, is_image