def setup_ui(self, parent): self.make_widgets(parent, EditWithComplete) values = self.all_values = list(self.db.all_custom(num=self.col_id)) values.sort(key=sort_key) self.main_widget.setSizeAdjustPolicy(self.main_widget.AdjustToMinimumContentsLengthWithIcon) self.main_widget.setMinimumContentsLength(25) self.widgets.append(QLabel('', parent)) w = QWidget(parent) layout = QHBoxLayout(w) layout.setContentsMargins(0, 0, 0, 0) self.remove_series = QCheckBox(parent) self.remove_series.setText(_('Remove series')) layout.addWidget(self.remove_series) self.idx_widget = QCheckBox(parent) self.idx_widget.setText(_('Automatically number books')) layout.addWidget(self.idx_widget) self.force_number = QCheckBox(parent) self.force_number.setText(_('Force numbers to start with ')) layout.addWidget(self.force_number) self.series_start_number = QSpinBox(parent) self.series_start_number.setMinimum(1) self.series_start_number.setMaximum(9999999) self.series_start_number.setProperty("value", 1) layout.addWidget(self.series_start_number) layout.addItem(QSpacerItem(20, 10, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.widgets.append(w) self.idx_widget.stateChanged.connect(self.check_changed_checkbox) self.force_number.stateChanged.connect(self.check_changed_checkbox) self.series_start_number.valueChanged.connect(self.check_changed_checkbox) self.remove_series.stateChanged.connect(self.check_changed_checkbox) self.ignore_change_signals = False
def __init__(self, parent=None, name=None, modal=0, fl=None): if fl is None: fl = Qt.Dialog | Qt.WindowTitleHint QDialog.__init__(self, parent, Qt.Dialog | Qt.WindowTitleHint) self.setModal(modal) image0 = pixmaps.tigger_logo.pm() # self.setSizeGripEnabled(0) LayoutWidget = QWidget(self) LayoutWidget.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) lo_top = QVBoxLayout(LayoutWidget) lo_title = QHBoxLayout(None) self.title_icon = QLabel(LayoutWidget) self.title_icon.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.title_icon.setPixmap(image0) self.title_icon.setAlignment(Qt.AlignCenter) lo_title.addWidget(self.title_icon) self.title_label = QLabel(LayoutWidget) self.title_label.setWordWrap(True) lo_title.addWidget(self.title_label) lo_top.addLayout(lo_title) lo_logos = QHBoxLayout(None) lo_top.addLayout(lo_logos) # for logo in ("astron",): # icon = QLabel(LayoutWidget) # icon.setSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed) # icon.setPixmap(getattr(pixmaps,logo+"_logo").pm()) # icon.setAlignment(Qt.AlignCenter) # lo_logos.addWidget(icon) lo_mainbtn = QHBoxLayout(None) lo_mainbtn.addItem( QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) lo_top.addLayout(lo_mainbtn) self.btn_ok = QPushButton(LayoutWidget) self.btn_ok.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.btn_ok.setMinimumSize(QSize(60, 0)) self.btn_ok.setAutoDefault(1) self.btn_ok.setDefault(1) lo_mainbtn.addWidget(self.btn_ok) lo_mainbtn.addItem( QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.languageChange() LayoutWidget.adjustSize() # LayoutWidget.resize(QSize(489,330).expandedTo(LayoutWidget.minimumSizeHint())) # self.resize(QSize(489,330).expandedTo(self.minimumSizeHint())) # self.clearWState(Qt.WState_Polished) self.btn_ok.clicked.connect(self.accept)
def setup_ui(self, parent): self.make_widgets(parent, EditWithComplete) values = self.all_values = list(self.db.all_custom(num=self.col_id)) values.sort(key=sort_key) self.main_widget.setSizeAdjustPolicy( self.main_widget.AdjustToMinimumContentsLengthWithIcon) self.main_widget.setMinimumContentsLength(25) self.widgets.append(QLabel('', parent)) w = QWidget(parent) layout = QHBoxLayout(w) layout.setContentsMargins(0, 0, 0, 0) self.remove_series = QCheckBox(parent) self.remove_series.setText(_('Remove series')) layout.addWidget(self.remove_series) self.idx_widget = QCheckBox(parent) self.idx_widget.setText(_('Automatically number books')) layout.addWidget(self.idx_widget) self.force_number = QCheckBox(parent) self.force_number.setText(_('Force numbers to start with ')) layout.addWidget(self.force_number) self.series_start_number = QSpinBox(parent) self.series_start_number.setMinimum(1) self.series_start_number.setMaximum(9999999) self.series_start_number.setProperty("value", 1) layout.addWidget(self.series_start_number) layout.addItem( QSpacerItem(20, 10, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.widgets.append(w) self.idx_widget.stateChanged.connect(self.check_changed_checkbox) self.force_number.stateChanged.connect(self.check_changed_checkbox) self.series_start_number.valueChanged.connect( self.check_changed_checkbox) self.remove_series.stateChanged.connect(self.check_changed_checkbox) self.ignore_change_signals = False
class Ui_FindCollateralTxDlg(object): def setupUi(self, FindCollateralTxDlg): self.dlg = FindCollateralTxDlg FindCollateralTxDlg.resize(658, 257) FindCollateralTxDlg.setModal(True) self.vBox = QVBoxLayout(FindCollateralTxDlg) self.vBox.setContentsMargins(8, 8, 8, 8) self.vBox.setSpacing(8) self.hBox = QHBoxLayout() self.hBox.setContentsMargins(-1, 8, -1, 6) self.addrLabel = QLabel(FindCollateralTxDlg) self.hBox.addWidget(self.addrLabel) self.edtAddress = QLineEdit(FindCollateralTxDlg) self.edtAddress.setReadOnly(True) self.hBox.addWidget(self.edtAddress) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hBox.addItem(spacerItem) self.hBox.setStretch(1, 1) self.vBox.addLayout(self.hBox) self.lblMessage = QLabel(FindCollateralTxDlg) self.lblMessage.setText("") self.lblMessage.setWordWrap(True) self.vBox.addWidget(self.lblMessage) self.tableW = QTableWidget(FindCollateralTxDlg) self.tableW.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents) self.tableW.setSelectionMode(QAbstractItemView.SingleSelection) self.tableW.setSelectionBehavior(QAbstractItemView.SelectRows) self.tableW.setShowGrid(True) self.tableW.setColumnCount(4) self.tableW.setRowCount(0) self.tableW.horizontalHeader().setSectionResizeMode( 2, QHeaderView.Stretch) self.tableW.verticalHeader().hide() item = QTableWidgetItem() item.setText("PIVs") item.setTextAlignment(Qt.AlignCenter) self.tableW.setHorizontalHeaderItem(0, item) item = QTableWidgetItem() item.setText("Confirmations") item.setTextAlignment(Qt.AlignCenter) self.tableW.setHorizontalHeaderItem(1, item) item = QTableWidgetItem() item.setText("TX Hash") item.setTextAlignment(Qt.AlignCenter) self.tableW.setHorizontalHeaderItem(2, item) item = QTableWidgetItem() item.setText("TX Output N") item.setTextAlignment(Qt.AlignCenter) self.tableW.setHorizontalHeaderItem(3, item) self.vBox.addWidget(self.tableW) self.buttonBox = QDialogButtonBox(FindCollateralTxDlg) self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) self.vBox.addWidget(self.buttonBox) btnCancel = self.buttonBox.button(QDialogButtonBox.Cancel) btnCancel.clicked.connect(self.reject) btnOk = self.buttonBox.button(QDialogButtonBox.Ok) btnOk.clicked.connect(self.accept)
def setup_ui(self, parent): self.make_widgets(parent, EditWithComplete) values = self.all_values = list(self.db.all_custom(num=self.col_id)) values.sort(key=sort_key) self.main_widget.setSizeAdjustPolicy( self.main_widget.AdjustToMinimumContentsLengthWithIcon) self.main_widget.setMinimumContentsLength(25) self.widgets.append(QLabel('', parent)) w = QWidget(parent) layout = QHBoxLayout(w) layout.setContentsMargins(0, 0, 0, 0) self.remove_series = QCheckBox(parent) self.remove_series.setText(_('Clear series')) layout.addWidget(self.remove_series) self.idx_widget = QCheckBox(parent) self.idx_widget.setText(_('Automatically number books')) self.idx_widget.setToolTip('<p>' + _( 'If not checked, the series number for the books will be set to 1. ' 'If checked, selected books will be automatically numbered, ' 'in the order you selected them. So if you selected ' 'Book A and then Book B, Book A will have series number 1 ' 'and Book B series number 2.') + '</p>') layout.addWidget(self.idx_widget) self.force_number = QCheckBox(parent) self.force_number.setText(_('Force numbers to start with ')) self.force_number.setToolTip( '<p>' + _('Series will normally be renumbered from the highest ' 'number in the database for that series. Checking this ' 'box will tell calibre to start numbering from the value ' 'in the box') + '</p>') layout.addWidget(self.force_number) self.series_start_number = QDoubleSpinBox(parent) self.series_start_number.setMinimum(0.0) self.series_start_number.setMaximum(9999999.0) self.series_start_number.setProperty("value", 1.0) layout.addWidget(self.series_start_number) self.series_increment = QDoubleSpinBox(parent) self.series_increment.setMinimum(0.00) self.series_increment.setMaximum(99999.0) self.series_increment.setProperty("value", 1.0) self.series_increment.setToolTip( '<p>' + _('The amount by which to increment the series number ' 'for successive books. Only applicable when using ' 'force series numbers.') + '</p>') self.series_increment.setPrefix('+') layout.addWidget(self.series_increment) layout.addItem( QSpacerItem(20, 10, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.widgets.append(w) self.idx_widget.stateChanged.connect(self.a_c_checkbox_changed) self.force_number.stateChanged.connect(self.a_c_checkbox_changed) self.series_start_number.valueChanged.connect( self.a_c_checkbox_changed) self.series_increment.valueChanged.connect(self.a_c_checkbox_changed) self.remove_series.stateChanged.connect(self.a_c_checkbox_changed) self.main_widget self.ignore_change_signals = False
def setup_ui(self, parent): self.make_widgets(parent, EditWithComplete) values = self.all_values = list(self.db.all_custom(num=self.col_id)) values.sort(key=sort_key) self.main_widget.setSizeAdjustPolicy(self.main_widget.AdjustToMinimumContentsLengthWithIcon) self.main_widget.setMinimumContentsLength(25) self.widgets.append(QLabel('', parent)) w = QWidget(parent) layout = QHBoxLayout(w) layout.setContentsMargins(0, 0, 0, 0) self.remove_series = QCheckBox(parent) self.remove_series.setText(_('Clear series')) layout.addWidget(self.remove_series) self.idx_widget = QCheckBox(parent) self.idx_widget.setText(_('Automatically number books')) self.idx_widget.setToolTip('<p>' + _( 'If not checked, the series number for the books will be set to 1. ' 'If checked, selected books will be automatically numbered, ' 'in the order you selected them. So if you selected ' 'Book A and then Book B, Book A will have series number 1 ' 'and Book B series number 2.') + '</p>') layout.addWidget(self.idx_widget) self.force_number = QCheckBox(parent) self.force_number.setText(_('Force numbers to start with ')) self.force_number.setToolTip('<p>' + _( 'Series will normally be renumbered from the highest ' 'number in the database for that series. Checking this ' 'box will tell calibre to start numbering from the value ' 'in the box') + '</p>') layout.addWidget(self.force_number) self.series_start_number = QDoubleSpinBox(parent) self.series_start_number.setMinimum(0.0) self.series_start_number.setMaximum(9999999.0) self.series_start_number.setProperty("value", 1.0) layout.addWidget(self.series_start_number) self.series_increment = QDoubleSpinBox(parent) self.series_increment.setMinimum(0.00) self.series_increment.setMaximum(99999.0) self.series_increment.setProperty("value", 1.0) self.series_increment.setToolTip('<p>' + _( 'The amount by which to increment the series number ' 'for successive books. Only applicable when using ' 'force series numbers.') + '</p>') self.series_increment.setPrefix('+') layout.addWidget(self.series_increment) layout.addItem(QSpacerItem(20, 10, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.widgets.append(w) self.idx_widget.stateChanged.connect(self.a_c_checkbox_changed) self.force_number.stateChanged.connect(self.a_c_checkbox_changed) self.series_start_number.valueChanged.connect(self.a_c_checkbox_changed) self.series_increment.valueChanged.connect(self.a_c_checkbox_changed) self.remove_series.stateChanged.connect(self.a_c_checkbox_changed) self.main_widget self.ignore_change_signals = False
class PlayerInfoField(QWidget): #Widget for inputting player info. names = ['Alex', 'Clifford', 'Tyrone', 'Ava', 'Ralph', 'Emily', 'Falcon', 'Giselle', 'Jaeger', 'Sally', 'Quentin', 'Lara'] def __init__(self, parent, index): super(PlayerInfoField, self).__init__(parent) self.index = index self.layout = QHBoxLayout() self.auto_button = Button(self, 'Auto') self.auto_button.setFixedWidth(60) self.auto_button.clicked.connect(self.generate_name) self.layout.addWidget(self.auto_button) self.name_field = QLineEdit() self.name_field.setPalette(QPalette(Qt.white)) self.name_field.setPlaceholderText('Name') self.name_field.setClearButtonEnabled(True) self.name_field.setFixedWidth(250) self.layout.addWidget(self.name_field) self.AItoggle = QCheckBox() self.AItoggle.setText('Computer') self.AItoggle.setFixedWidth(100) self.layout.addWidget(self.AItoggle) self.AItoggle.stateChanged.connect(self.AIToggled) self.AIdifficulty = QComboBox() self.AIdifficulty.setPalette(QPalette(Qt.white)) self.AIdifficulty.setFixedWidth(100) self.AIdifficulty.addItems(['Braindead', 'Easy', 'Normal', 'Hard', 'HAL-9000']) self.AIdifficulty.setCurrentIndex(2) self.AIdifficulty.setDisabled(True) self.layout.addWidget(self.AIdifficulty) self.spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.layout.addItem(self.spacer) self.layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.layout) def generate_name(self): self.name_field.setText(PlayerInfoField.names[self.index]) def AIToggled(self): if self.AItoggle.checkState() == Qt.Checked: self.AIdifficulty.setEnabled(True) else: self.AIdifficulty.setDisabled(True)
class windowTitle(QFrame): def __init__(self, parent, closeButton=True): QFrame.__init__(self, parent) self.setMaximumSize(QSize(9999999, 22)) self.setObjectName("windowTitle") self.hboxlayout = QHBoxLayout(self) self.hboxlayout.setSpacing(0) self.hboxlayout.setContentsMargins(0, 0, 4, 0) self.label = QLabel(self) self.label.setObjectName("label") self.label.setStyleSheet( "padding-left:4px; font:bold 11px; color: #FFFFFF;") self.hboxlayout.addWidget(self.label) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem) if closeButton: self.pushButton = QPushButton(self) self.pushButton.setFocusPolicy(Qt.NoFocus) self.pushButton.setObjectName("pushButton") self.pushButton.setStyleSheet("font:bold;") self.pushButton.setText("X") self.hboxlayout.addWidget(self.pushButton) self.dragPosition = None self.mainwidget = self.parent() self.setStyleSheet(""" QFrame#windowTitle {background-color:#222222;color:#FFF;} """) # Initial position to top left self.dragPosition = self.mainwidget.frameGeometry().topLeft() def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.dragPosition = event.globalPos( ) - self.mainwidget.frameGeometry().topLeft() event.accept() def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: self.mainwidget.move(event.globalPos() - self.dragPosition) event.accept()
class windowTitle(QFrame): def __init__(self, parent, closeButton=True): QFrame.__init__(self, parent) self.setMaximumSize(QSize(9999999,22)) self.setObjectName("windowTitle") self.hboxlayout = QHBoxLayout(self) self.hboxlayout.setSpacing(0) self.hboxlayout.setContentsMargins(0,0,4,0) self.label = QLabel(self) self.label.setObjectName("label") self.label.setStyleSheet("padding-left:4px; font:bold 11px; color: #FFFFFF;") self.hboxlayout.addWidget(self.label) spacerItem = QSpacerItem(40,20,QSizePolicy.Expanding,QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem) if closeButton: self.pushButton = QPushButton(self) self.pushButton.setFocusPolicy(Qt.NoFocus) self.pushButton.setObjectName("pushButton") self.pushButton.setStyleSheet("font:bold;") self.pushButton.setText("X") self.hboxlayout.addWidget(self.pushButton) self.dragPosition = None self.mainwidget = self.parent() self.setStyleSheet(""" QFrame#windowTitle {background-color:#222222;color:#FFF;} """) # Initial position to top left self.dragPosition = self.mainwidget.frameGeometry().topLeft() def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.dragPosition = event.globalPos() - self.mainwidget.frameGeometry().topLeft() event.accept() def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: self.mainwidget.move(event.globalPos() - self.dragPosition) event.accept()
class IP_list(QDialog): def __init__(self, root): super().__init__(root) self.main = root self.setWindowTitle('Список IP') self.setFixedWidth(504) self.layout_tw = QVBoxLayout(self) self.layout_b = QHBoxLayout() self.layout_b.addItem(QSpacerItem(150, 10, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.tableWidget = QTableWidget(self) self.tableWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.tableWidget.setGeometry(QRect(20, 20, 464, 81)) self.tableWidget.setColumnCount(4) hor_header = self.tableWidget.horizontalHeader() hor_header.setSectionResizeMode(0, QHeaderView.Stretch) hor_header.setSectionResizeMode(1, QHeaderView.ResizeToContents) hor_header.setSectionResizeMode(2, QHeaderView.ResizeToContents) hor_header.setSectionResizeMode(3, QHeaderView.ResizeToContents) self.layout_tw.addWidget(self.tableWidget) self.layout_tw.addLayout(self.layout_b) self.pb_cle = QPushButton(self) self.pb_cle.setGeometry(QRect(0, 490, 21, 20)) self.pb_cle.setToolTip('Очистить таблицу') self.pb_cle.setIcon(QIcon('допочки\_broom.png')) self.pb_cle.clicked.connect(self.del_all) self.layout_b.addWidget(self.pb_cle) self.pb_row_add = QPushButton(self) self.pb_row_add.setGeometry(QRect(20, 490, 21, 20)) self.pb_row_add.setToolTip('Добавить строчку') self.pb_row_add.setIcon(QIcon('допочки\_+.png')) self.pb_row_add.clicked.connect(self.row_add) self.layout_b.addWidget(self.pb_row_add) self.pb_row_rem = QPushButton(self) self.pb_row_rem.setGeometry(QRect(50, 490, 21, 20)) self.pb_row_rem.setToolTip('Убрать строчку') self.pb_row_rem.setIcon(QIcon('допочки\_-.png')) self.pb_row_rem.clicked.connect(self.row_rem) self.layout_b.addWidget(self.pb_row_rem) self.pb_ip = QPushButton(self) self.pb_ip.setGeometry(QRect(430, 490, 21, 20)) self.pb_ip.setToolTip('Загрузить из файла') self.pb_ip.setIcon(QIcon('допочки\_ip.png')) self.pb_ip.clicked.connect(self.get_IPs) self.layout_b.addWidget(self.pb_ip) item = QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(0, item) item.setText("IP адрес") item_2 = QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(1, item_2) item_2.setText("Порт") item_3 = QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(2, item_3) item_3.setText("Относится к") item_4 = QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(3, item_4) item_4.setText("Проверка") self.tableWidget.cellChanged.connect(self.onCellChanged) def del_all(self): self.tableWidget.setRowCount(0) def row_add(self): i = self.tableWidget.rowCount() self.tableWidget.insertRow(i) vheader = self.tableWidget.verticalHeader() vheader.setSectionResizeMode(i, QHeaderView.ResizeToContents) combobox = QComboBox() combobox.addItem("Any") combobox.addItem("Source") combobox.addItem("Destination") self.tableWidget.setCellWidget(i, 2, combobox) item = QTableWidgetItem() brush = QBrush(QColor(0, 0, 0)) brush.setStyle(Qt.Dense4Pattern) self.tableWidget.setItem(i, 3, item) item.setFlags(Qt.ItemIsEnabled) item.setBackground(brush) def row_rem(self): cell = self.tableWidget.currentRow() self.tableWidget.removeRow(cell) def get_IPs(self): result, bullshit = QFileDialog.getOpenFileName(self, "Выберите txt/csv-файл", getcwd(), "files (*.txt; *.csv)") # нельзя нажимать на крест with open(str(result), "r") as fileInput: x = self.tableWidget.rowCount() for row in fileInput: if result.endswith("txt"): if ":" not in row: (ip, port) = (row.rstrip(), '') else: (ip, port) = row.split(":") port = port.rstrip() elif result.endswith("csv"): if ";" not in row: (ip, port) = (row.rstrip(), '') else: (ip, port) = row.split(";") port = port.rstrip() self.tableWidget.insertRow(x) vheader = self.tableWidget.verticalHeader() vheader.setSectionResizeMode(x, QHeaderView.ResizeToContents) self.tableWidget.setItem(x, 0, QTableWidgetItem(ip)) self.tableWidget.setItem(x, 1, QTableWidgetItem(port)) combobox = QComboBox() combobox.addItem("Any") combobox.addItem("Source") combobox.addItem("Destination") self.tableWidget.setCellWidget(x, 2, combobox) x += 1 def closeEvent(self, event): self.main.pt_addr.clear() for i in range(self.tableWidget.rowCount()): item = self.tableWidget.item(i, 3) if item is not None and item.background().color().name() == '#00ff00': self.main.pt_addr.appendPlainText("") for y in range(2): if self.tableWidget.item(i, y) is not None: self.main.pt_addr.insertPlainText(self.tableWidget.item(i, y).text()) else: self.main.pt_addr.insertPlainText("") if y < 2: self.main.pt_addr.insertPlainText(":") if self.tableWidget.cellWidget(i, 2).currentText() == "Any": self.main.pt_addr.insertPlainText("A") elif self.tableWidget.cellWidget(i, 2).currentText() == "Source": self.main.pt_addr.insertPlainText("S") else: self.main.pt_addr.insertPlainText("D") self.close() def onCellChanged(self, row, column): if column in (0, 1): item1 = self.tableWidget.item(row, 0) if item1 is not None: item1 = item1.text().replace(' ', '') try: ipaddress.ip_address(item1) except ValueError: if item1 == '': col0 = 2 else: col0 = 0 else: col0 = 1 else: col0 = 2 item2 = self.tableWidget.item(row, 1) if item2 is not None: item2 = item2.text().replace(' ', '') if item2.isnumeric() and int(item2) <= 65535: col1 = 1 elif item2 == '': col1 = 2 else: col1 = 0 else: col1 = 2 if (col0 == 0 and col1 == 0)\ or (col0 == 2 and col1 == 2): backgr = QTableWidgetItem() brush = QBrush(QColor(255, 0, 0)) brush.setStyle(Qt.SolidPattern) backgr.setBackground(brush) item = QTableWidgetItem() self.tableWidget.setItem(row, 3, item) item.setFlags(Qt.ItemIsEnabled) item.setBackground(brush) if (col0 == 0 and (col1 == 1 or col1 == 2))\ or (col1 == 0 and (col0 == 1 or col0 == 2)): backgr = QTableWidgetItem() brush = QBrush(QColor(255, 127, 0)) brush.setStyle(Qt.SolidPattern) backgr.setBackground(brush) item = QTableWidgetItem() self.tableWidget.setItem(row, 3, item) item.setFlags(Qt.ItemIsEnabled) item.setBackground(brush) if (col0 == 1 and (col1 == 1 or col1 == 2))\ or (col1 == 1 and (col0 == 1 or col0 == 2)): backgr = QTableWidgetItem() brush = QBrush(QColor(0, 255, 0)) brush.setStyle(Qt.SolidPattern) backgr.setBackground(brush) item = QTableWidgetItem() self.tableWidget.setItem(row, 3, item) item.setFlags(Qt.ItemIsEnabled) item.setBackground(brush) else: pass
class Config(QDialog): ''' Configuration dialog for single book conversion. If accepted, has the following important attributes output_format - Output format (without a leading .) input_format - Input format (without a leading .) opf_path - Path to OPF file with user specified metadata cover_path - Path to user specified cover (can be None) recommendations - A pickled list of 3 tuples in the same format as the recommendations member of the Input/Output plugins. ''' def __init__(self, parent, db, book_id, preferred_input_format=None, preferred_output_format=None): QDialog.__init__(self, parent) self.setupUi() self.opt_individual_saved_settings.setVisible(False) self.db, self.book_id = db, book_id self.setup_input_output_formats(self.db, self.book_id, preferred_input_format, preferred_output_format) self.setup_pipeline() self.input_formats.currentIndexChanged[native_string_type].connect( self.setup_pipeline) self.output_formats.currentIndexChanged[native_string_type].connect( self.setup_pipeline) self.groups.setSpacing(5) self.groups.activated[(QModelIndex)].connect(self.show_pane) self.groups.clicked[(QModelIndex)].connect(self.show_pane) self.groups.entered[(QModelIndex)].connect(self.show_group_help) rb = self.buttonBox.button(self.buttonBox.RestoreDefaults) rb.setText(_('Restore &defaults')) rb.clicked.connect(self.restore_defaults) self.groups.setMouseTracking(True) geom = gprefs.get('convert_single_dialog_geom', None) if geom: self.restoreGeometry(geom) else: self.resize(self.sizeHint()) def setupUi(self): self.setObjectName("Dialog") self.resize(1024, 700) self.setWindowIcon(QIcon(I('convert.png'))) self.gridLayout = QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.input_label = QLabel(self) self.input_label.setObjectName("input_label") self.horizontalLayout.addWidget(self.input_label) self.input_formats = QComboBox(self) self.input_formats.setSizeAdjustPolicy( QComboBox.AdjustToMinimumContentsLengthWithIcon) self.input_formats.setMinimumContentsLength(5) self.input_formats.setObjectName("input_formats") self.horizontalLayout.addWidget(self.input_formats) self.opt_individual_saved_settings = QCheckBox(self) self.opt_individual_saved_settings.setObjectName( "opt_individual_saved_settings") self.horizontalLayout.addWidget(self.opt_individual_saved_settings) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.label_2 = QLabel(self) self.label_2.setObjectName("label_2") self.horizontalLayout.addWidget(self.label_2) self.output_formats = QComboBox(self) self.output_formats.setSizeAdjustPolicy( QComboBox.AdjustToMinimumContentsLengthWithIcon) self.output_formats.setMinimumContentsLength(5) self.output_formats.setObjectName("output_formats") self.horizontalLayout.addWidget(self.output_formats) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 2) self.groups = QListView(self) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.groups.sizePolicy().hasHeightForWidth()) self.groups.setSizePolicy(sizePolicy) self.groups.setTabKeyNavigation(True) self.groups.setIconSize(QSize(48, 48)) self.groups.setWordWrap(True) self.groups.setObjectName("groups") self.gridLayout.addWidget(self.groups, 1, 0, 3, 1) self.scrollArea = QScrollArea(self) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(4) sizePolicy.setVerticalStretch(10) sizePolicy.setHeightForWidth( self.scrollArea.sizePolicy().hasHeightForWidth()) self.scrollArea.setSizePolicy(sizePolicy) self.scrollArea.setFrameShape(QFrame.NoFrame) self.scrollArea.setLineWidth(0) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QWidget() self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 810, 494)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.verticalLayout_3 = QVBoxLayout(self.scrollAreaWidgetContents) self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) self.verticalLayout_3.setObjectName("verticalLayout_3") self.stack = QStackedWidget(self.scrollAreaWidgetContents) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.stack.sizePolicy().hasHeightForWidth()) self.stack.setSizePolicy(sizePolicy) self.stack.setObjectName("stack") self.page = QWidget() self.page.setObjectName("page") self.stack.addWidget(self.page) self.page_2 = QWidget() self.page_2.setObjectName("page_2") self.stack.addWidget(self.page_2) self.verticalLayout_3.addWidget(self.stack) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout.addWidget(self.scrollArea, 1, 1, 1, 1) self.buttonBox = QDialogButtonBox(self) self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok | QDialogButtonBox.RestoreDefaults) self.buttonBox.setObjectName("buttonBox") self.gridLayout.addWidget(self.buttonBox, 3, 1, 1, 1) self.help = QTextEdit(self) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.help.sizePolicy().hasHeightForWidth()) self.help.setSizePolicy(sizePolicy) self.help.setMaximumHeight(80) self.help.setObjectName("help") self.gridLayout.addWidget(self.help, 2, 1, 1, 1) self.input_label.setBuddy(self.input_formats) self.label_2.setBuddy(self.output_formats) self.input_label.setText(_("&Input format:")) self.opt_individual_saved_settings.setText( _("Use &saved conversion settings for individual books")) self.label_2.setText(_("&Output format:")) self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.reject) def sizeHint(self): desktop = QCoreApplication.instance().desktop() geom = desktop.availableGeometry(self) nh, nw = max(300, geom.height() - 100), max(400, geom.width() - 70) return QSize(nw, nh) def restore_defaults(self): delete_specifics(self.db, self.book_id) self.setup_pipeline() @property def input_format(self): return unicode_type(self.input_formats.currentText()).lower() @property def output_format(self): return unicode_type(self.output_formats.currentText()).lower() @property def manually_fine_tune_toc(self): for i in range(self.stack.count()): w = self.stack.widget(i) if hasattr(w, 'manually_fine_tune_toc'): return w.manually_fine_tune_toc.isChecked() def setup_pipeline(self, *args): oidx = self.groups.currentIndex().row() input_format = self.input_format output_format = self.output_format self.plumber = create_dummy_plumber(input_format, output_format) def widget_factory(cls): return cls(self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) self.mw = widget_factory(MetadataWidget) self.setWindowTitle( _('Convert') + ' ' + unicode_type(self.mw.title.text())) lf = widget_factory(LookAndFeelWidget) hw = widget_factory(HeuristicsWidget) sr = widget_factory(SearchAndReplaceWidget) ps = widget_factory(PageSetupWidget) sd = widget_factory(StructureDetectionWidget) toc = widget_factory(TOCWidget) from calibre.gui2.actions.toc_edit import SUPPORTED toc.manually_fine_tune_toc.setVisible( output_format.upper() in SUPPORTED) debug = widget_factory(DebugWidget) output_widget = self.plumber.output_plugin.gui_configuration_widget( self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) input_widget = self.plumber.input_plugin.gui_configuration_widget( self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) while True: c = self.stack.currentWidget() if not c: break self.stack.removeWidget(c) widgets = [self.mw, lf, hw, ps, sd, toc, sr] if input_widget is not None: widgets.append(input_widget) if output_widget is not None: widgets.append(output_widget) widgets.append(debug) for w in widgets: self.stack.addWidget(w) w.set_help_signal.connect(self.help.setPlainText) self._groups_model = GroupModel(widgets) self.groups.setModel(self._groups_model) idx = oidx if -1 < oidx < self._groups_model.rowCount() else 0 self.groups.setCurrentIndex(self._groups_model.index(idx)) self.stack.setCurrentIndex(idx) try: shutil.rmtree(self.plumber.archive_input_tdir, ignore_errors=True) except: pass def setup_input_output_formats(self, db, book_id, preferred_input_format, preferred_output_format): if preferred_output_format: preferred_output_format = preferred_output_format.upper() output_formats = get_output_formats(preferred_output_format) input_format, input_formats = get_input_format_for_book( db, book_id, preferred_input_format) preferred_output_format = preferred_output_format if \ preferred_output_format in output_formats else \ sort_formats_by_preference(output_formats, [prefs['output_format']])[0] self.input_formats.addItems( (unicode_type(x.upper()) for x in input_formats)) self.output_formats.addItems( (unicode_type(x.upper()) for x in output_formats)) self.input_formats.setCurrentIndex(input_formats.index(input_format)) self.output_formats.setCurrentIndex( output_formats.index(preferred_output_format)) def show_pane(self, index): self.stack.setCurrentIndex(index.row()) def accept(self): recs = GuiRecommendations() for w in self._groups_model.widgets: if not w.pre_commit_check(): return x = w.commit(save_defaults=False) recs.update(x) self.opf_file, self.cover_file = self.mw.opf_file, self.mw.cover_file self._recommendations = recs if self.db is not None: recs['gui_preferred_input_format'] = self.input_format save_specifics(self.db, self.book_id, recs) self.break_cycles() QDialog.accept(self) def reject(self): self.break_cycles() QDialog.reject(self) def done(self, r): if self.isVisible(): gprefs['convert_single_dialog_geom'] = \ bytearray(self.saveGeometry()) return QDialog.done(self, r) def break_cycles(self): for i in range(self.stack.count()): w = self.stack.widget(i) w.break_cycles() @property def recommendations(self): recs = [(k, v, OptionRecommendation.HIGH) for k, v in self._recommendations.items()] return recs def show_group_help(self, index): widget = self._groups_model.widgets[index.row()] self.help.setPlainText(widget.HELP)
class PlayerInfo(QWidget): def __init__(self, parent, player): super(PlayerInfo, self).__init__(parent) self.setMaximumWidth(300) self.player = player self.mainlayout = QHBoxLayout() self.active_icon = QLabel() self.active_icon.setPixmap(QPixmap('img/arrow.png')) self.active_icon.setScaledContents(True) self.active_icon.setFixedSize(30, 20) self.type_icon = QLabel() if type(player) == AIPlayer: self.type_icon.setPixmap(QPixmap('img/robot.png')) else: self.type_icon.setPixmap(QPixmap('img/human.png')) self.type_icon.setScaledContents(True) self.type_icon.setFixedSize(20, 20) self.mainlayout.addWidget(self.type_icon) self.name_label = QLabel(player.name + ': ') self.score_label = QLabel(str(player.score)) self.mainlayout.addWidget(self.name_label) self.mainlayout.addWidget(self.score_label) self.mainlayout.addItem( QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.cards_icon = QLabel() self.cards_icon.setPixmap(QPixmap('img/red_back.png')) self.cards_icon.setScaledContents(True) self.cards_icon.setFixedSize(20, 30) self.mainlayout.addWidget(self.cards_icon) self.cards_label = QLabel(str(len(player.deck))) self.mainlayout.addWidget(self.cards_label) self.spades_icon = QLabel() self.spades_icon.setPixmap(QPixmap('img/spade2.png')) self.spades_icon.setScaledContents(True) self.spades_icon.setFixedSize(20, 20) self.mainlayout.addWidget(self.spades_icon) self.spades_label = QLabel(str(len(player.deck))) self.mainlayout.addWidget(self.spades_label) self.sweeps_icon = QLabel() self.sweeps_icon.setPixmap(QPixmap('img/empty.png')) self.sweeps_icon.setScaledContents(True) self.sweeps_icon.setFixedSize(20, 30) self.mainlayout.addWidget(self.sweeps_icon) self.sweeps_label = QLabel(str(player.sweeps)) self.mainlayout.addWidget(self.sweeps_label) self.mainlayout.setContentsMargins(1, 1, 1, 1) self.setLayout(self.mainlayout) def set_active(self): self.mainlayout.insertWidget(1, self.active_icon) self.active_icon.show() def set_inactive(self): self.mainlayout.removeWidget(self.active_icon) self.active_icon.hide() def update_info(self): self.cards_label.setText((str(len(self.player.deck)))) self.spades_label.setText( (str(len([c for c in self.player.deck if c.suit == 'Spades'])))) self.sweeps_label.setText(str(self.player.sweeps)) def update_score(self): self.score_label.setText(str(self.player.score))
class SceneInterface(QMainWindow): """Класс интерфейса квеста""" def __init__(self): """Инициализация интерфейса""" super().__init__() self.bg = QLabel(self) self.bg.move(0, 0) self.bg.setPixmap(QPixmap("bg.jpg")) self.bg.resize(800, 560) self.exit = QPushButton('Выход', self) self.exit.resize(105, 40) self.exit.move(675, 510) self.exit.setFont(QFont("PSG Font", 11)) self.exit.clicked.connect(self.close) self.restart = QPushButton('Рестарт', self) self.restart.resize(110, 40) self.restart.move(560, 510) self.restart.setFont(QFont("PSG Font", 11)) self.restart.clicked.connect(self.restart_quest) self.opnsave = QPushButton('Загрузить', self) self.opnsave.resize(105, 40) self.opnsave.move(135, 510) self.opnsave.setFont(QFont("PSG Font", 11)) self.opnsave.clicked.connect(self.load_quest) self.savebtn = QPushButton('Сохранить', self) self.savebtn.resize(110, 40) self.savebtn.move(20, 510) self.savebtn.setFont(QFont("PSG Font", 11)) self.savebtn.clicked.connect(self.save_quest) self.text = QPlainTextEdit(self) self.text.move(20, 20) self.text.resize(530, 270) self.text.setReadOnly(True) self.text.setFont(QFont("PSG Font", 11)) self.text.setStyleSheet("background: rgba(255, 255, 255, 0.9);") self.player_data = QPlainTextEdit(self) self.player_data.move(560, 300) self.player_data.resize(220, 175) self.player_data.setReadOnly(True) self.player_data.setFont(QFont("PSG Font", 11)) self.player_data.setStyleSheet("background: rgba(238, 238, 238, 0.97);\ border:none;") self.name_player = QLineEdit(self) self.name_player.setPlaceholderText("Введите имя...") self.name_player.resize(220, 44) self.name_player.move(560, 245) self.name_player.setFont(QFont("PSG Font", 11)) self.name_player.setStyleSheet("background: rgba(255, 255, 255, 0.90);\ border:none;\ padding-left: 5px;") self.img = QLabel(self) self.img.resize(220, 220) self.img.move(560, 20) self.layout = QVBoxLayout(self) self.btn_layout = QHBoxLayout(self) self.btn_layout.addItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.layout.addLayout(self.btn_layout) self.buttons = [] for btn in range(4): button = QPushButton("", self) button.resize(530, 40) button.setFont(QFont("PSG Font", 11)) button.setStyleSheet("background: rgba(236, 236, 236, 0.7);") button.move(20, (45 * btn) + 300) button.clicked.connect(self.get_key_button_submited) self.btn_layout.addWidget(button) self.buttons += [button] def get_name_user(self): """Возвращает имя игрока""" return self.name_player.text() def init_buttons(self, names): """Иницилизация кнопок""" while len(names) < 4: names += [""] for i in range(4): self.buttons[i].setText(names[i]) if names[i]: self.buttons[i].setEnabled(True) self.buttons[i].setStyleSheet( "background: rgba(236, 236, 236, 0.7);") else: self.buttons[i].setEnabled(False) self.buttons[i].setStyleSheet( "background: rgba(236, 236, 236, 0);") def init_text(self, text): """Иницилизация текста на текущей сцене""" self.text.setPlainText(text) def init_image(self, image): """Иницилизация картинки сцены""" self.img.setPixmap(QPixmap(image)) def init_player_data(self, data): """Иницилизация характеристики игрока""" self.player_data.setPlainText(data) def init_name_scene(self, name): """Иницилизация имени сцены""" self.setWindowTitle(name) def init_name_player(self, name): """Иницилизация имени игрока""" self.name_player.setText(name) def set_name_user_mode(self, mode): """Иницилизация редактируемости поля имени игрока""" self.name_player.setReadOnly(mode) def get_key_button_submited(self): """Какую из кнопок нажали""" self.submitted(self.sender().text()) def update(self, name="", text="", user="", image="", pldata="", buttons=[], user_disabled=True): """Обновление сцены""" self.init_name_scene(name) self.init_text(text) self.init_buttons(buttons) self.init_name_player(user) self.init_image(image) self.init_player_data(pldata) self.set_name_user_mode(user_disabled) def submitted(self, variant): """Обработка нажатия на кнопки""" ways = quest.data["ways"] name = self.get_name_user() for key, value in ways.items(): if value == variant: if key == "1 4" and not name: QMessageBox.about(self, "Ошибка!", "Введите пожалуйста имя.") return quest.user_move(key) self.name_player.setText(name) def restart_quest(self): """Вызов рестарта у квеста""" quest.restart() def save_quest(self): """Сохранение квеста""" quest.save() def load_quest(self): """Загрузка квеста""" quest.load()