def _add_preview_color_square_to_layout(self, layout: QLayout, default_color: tuple[int, int, int]): color_square = QFrame(self.game_changes_box) color_square.setMinimumSize(QSize(22, 22)) color_square.setSizePolicy( QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) color_square.setStyleSheet( 'background-color: rgb({},{},{})'.format(*default_color)) layout.addWidget(color_square) return color_square
class Foldable(QWidget): _mainLayout: QGridLayout _toggleButton: QToolButton _headerLine: QFrame _contentArea: QScrollArea _folded: bool def __init__(self, title: str, initially_folded: bool = True, parent: QWidget = None): super().__init__(parent) self._folded = initially_folded self._toggleButton = QToolButton(self) self._toggleButton.setStyleSheet("QToolButton { height: 20px; }") font = self._toggleButton.font() font.setBold(True) font.setPixelSize(13) self._toggleButton.setFont(font) self._toggleButton.setMaximumHeight(20) self._toggleButton.setToolButtonStyle( Qt.ToolButtonStyle.ToolButtonTextBesideIcon) self._toggleButton.setArrowType(Qt.ArrowType.RightArrow) self._toggleButton.setText(title) self._toggleButton.setCheckable(True) self._toggleButton.setChecked(False) self._toggleButton.clicked.connect(self._on_click) self._headerLine = QFrame(self) self._headerLine.setFrameShape(QFrame.HLine) self._headerLine.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) self._contentArea = QFrame(self) self._contentArea.setObjectName("foldable_contentArea") self._contentArea.setStyleSheet( "#foldable_contentArea { border: none; }") self._contentArea.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) self._mainLayout = QGridLayout(self) self._mainLayout.setVerticalSpacing(0) self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.addWidget(self._toggleButton, 0, 0, 1, 1, Qt.AlignLeft) self._mainLayout.addWidget(self._headerLine, 0, 1, 1, 1) self._mainLayout.addWidget(self._contentArea, 1, 0, 1, 2) @property def contents(self): return self._contentArea def _on_click(self, checked: bool): if self._folded: self._unfold() else: self._fold() def _unfold(self): self._folded = False self._contentArea.show() self._toggleButton.setArrowType(Qt.ArrowType.DownArrow) def _fold(self): self._folded = True self._contentArea.hide() self._toggleButton.setArrowType(Qt.ArrowType.RightArrow) def set_content_layout(self, content_layout: QLayout): self._contentArea.setLayout(content_layout) if self._folded: self._fold() else: self._unfold()
class UIBuilder(object): """Constructs the UI for a main application window""" def setup(self, main_window: QMainWindow) -> None: """ Initialize the UI. :param main_window: An instance of the `QMainWindow` class. :type main_window: :class:`QMainWindow` """ main_window.setObjectName("main_window") main_window.setWindowTitle("TeaseAI") main_window.resize(1137, 751) main_window.setSizePolicy(*EXP_EXP) main_window.setTabShape(QTabWidget.Rounded) self.menubar = QMenuBar(main_window) self.menubar.setObjectName("menubar") self.menubar.setGeometry(0, 0, 1137, 23) self.file_menu = QMenu("File", self.menubar) self.file_menu.setObjectName("file_men") self.server_menu = QMenu("Server", self.menubar) self.server_menu.setObjectName("server_men") self.options_menu = QMenu("Options", self.menubar) self.options_menu.setObjectName("options_men") self.media_menu = QMenu("Media", self.menubar) self.media_menu.setObjectName("media_men") main_window.setMenuBar(self.menubar) self.exit = QAction("Exit", main_window) self.exit.setObjectName("exit") self.start_server = QAction("Start Server", main_window) self.start_server.setObjectName("start_server") self.connect_server = QAction("Connect to Server", main_window) self.connect_server.setObjectName("connect_server") self.kill_server = QAction("Kill Server", main_window) self.kill_server.setObjectName("kill_server") self.options = QAction("Options", main_window) self.options.setObjectName("options") self.start_webcam = QAction("Start Webcam", main_window) self.start_webcam.setObjectName("start_webcam") self.start_webcam.setCheckable(False) self.centralwidget = QWidget(main_window) self.centralwidget.setObjectName("centralwidget") self.centralwidget.setContentsMargins(QMargins(0, 0, 0, 0)) self.centralwidget.setSizePolicy(*EXP_EXP) self.grid_layout = QGridLayout(self.centralwidget) self.media = QFrame(self.centralwidget) self.media.setObjectName("media") self.media.setSizePolicy(*EXP_EXP) self.media.setMinimumSize(200, 200) self.media.setStyleSheet("background: #000;") self.grid_layout.addWidget(self.media, 0, 0, 5, 1) self.users_label = QLabel(" Online users:", self.centralwidget) self.users_label.setObjectName("users_label") self.users_label.setMinimumSize(300, 15) self.users_label.setMaximumSize(300, 15) self.grid_layout.addWidget(self.users_label, 0, 1, 1, 2) self.online = QPlainTextEdit("", self.centralwidget) self.online.setObjectName("online") self.online.setSizePolicy(*FIX_FIX) self.online.setMinimumSize(300, 50) self.online.setMaximumSize(300, 50) self.online.setStyleSheet("margin-left: 3px;" + SUNKEN) self.online.setLineWidth(2) self.online.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.online.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.online.setSizeAdjustPolicy(QAbstractScrollArea.AdjustIgnored) self.online.setReadOnly(True) self.grid_layout.addWidget(self.online, 1, 1, 1, 2) self.chat = QPlainTextEdit("", self.centralwidget) self.chat.setObjectName("chat") self.chat.setSizePolicy(*FIX_EXP) self.chat.setMinimumSize(300, 0) self.chat.setMaximumSize(300, INFINITE) self.chat.setStyleSheet("margin-bottom: 3px; margin-top: 8px;" + SUNKEN) self.chat.setLineWidth(2) self.chat.setReadOnly(True) self.chat.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.grid_layout.addWidget(self.chat, 2, 1, 1, 2) self.input = QLineEdit(self.centralwidget) self.input.setObjectName("input") self.input.setSizePolicy(*FIX_FIX) self.input.setMinimumSize(224, 30) self.input.setMaximumSize(224, 30) self.input.setStyleSheet(SUNKEN) self.input.setEchoMode(QLineEdit.Normal) self.input.setClearButtonEnabled(True) self.grid_layout.addWidget(self.input, 3, 1, 1, 1) self.submit = QPushButton("Submit", self.centralwidget) self.submit.setObjectName("submit") self.submit.setSizePolicy(*FIX_FIX) self.submit.setMinimumSize(70, 30) self.submit.setMaximumSize(70, 30) self.grid_layout.addWidget(self.submit, 3, 2, 1, 1) self.tabs = QTabWidget(self.centralwidget) self.tabs.setObjectName("tabs") self.tabs.setSizePolicy(*FIX_FIX) self.tabs.setMinimumSize(300, 150) self.tabs.setMaximumSize(300, 150) self.tab = QWidget() self.tab.setObjectName("tab") self.tabs.addTab(self.tab, "Actions") self.tab2 = QWidget() self.tab2.setObjectName("tab2") self.tabs.addTab(self.tab2, "My Media") self.tab3 = QWidget() self.tab3.setObjectName("tab3") self.tab3.setSizePolicy(*FIX_FIX) self.grid_layout2 = QGridLayout(self.tab3) self.grid_layout2.setHorizontalSpacing(0) self.grid_layout2.setVerticalSpacing(3) self.grid_layout2.setContentsMargins(3, -1, 3, -1) self.server_folder = QLineEdit(self.tab3) self.server_folder.setObjectName("server_folder") self.grid_layout2.addWidget(self.server_folder, 0, 0, 1, 3) self.srv_browse = QPushButton("BROWSE", self.tab3) self.srv_browse.setObjectName("srv_browse") self.srv_browse.setStyleSheet("background: transparent;\n" " color: #4d4940;\n" " font-size: 8pt;\n" " font-weight: 450;\n" " padding: 6px;\n") self.grid_layout2.addWidget(self.srv_browse, 0, 3, 1, 1) self.back_button = QPushButton("", self.tab3) self.back_button.setObjectName("back_button") self.back_button.setSizePolicy(*FIX_FIX) self.back_button.setMaximumSize(SEVENTY_FIVE) self.back_button.setCursor(QCursor(Qt.PointingHandCursor)) self.back_button.setStyleSheet("border: 0;\n" "background: transparent;") icon = QIcon() icon.addFile(":/newPrefix/back_button.png", SIXTY_FOUR, QIcon.Normal, QIcon.Off) self.back_button.setIcon(icon) self.back_button.setIconSize(SIXTY_FOUR) self.grid_layout2.addWidget(self.back_button, 1, 0, 1, 1) self.play_button = QPushButton("", self.tab3) self.play_button.setObjectName("play_button") self.play_button.setSizePolicy(*FIX_FIX) self.play_button.setMaximumSize(SEVENTY_FIVE) self.play_button.setCursor(QCursor(Qt.PointingHandCursor)) self.play_button.setStyleSheet("border: 0;\n" "background: transparent;") icon1 = QIcon() icon1.addFile(":/newPrefix/play_button.png", SIXTY_FOUR, QIcon.Normal, QIcon.Off) self.play_button.setIcon(icon1) self.play_button.setIconSize(SIXTY_FOUR) self.grid_layout2.addWidget(self.play_button, 1, 1, 1, 1) self.stop_button = QPushButton("", self.tab3) self.stop_button.setObjectName("stop_button") self.stop_button.setSizePolicy(*FIX_FIX) self.stop_button.setMaximumSize(SEVENTY_FIVE) self.stop_button.setCursor(QCursor(Qt.PointingHandCursor)) self.stop_button.setStyleSheet("border: 0;\n" "background: transparent;") icon2 = QIcon() icon2.addFile(":/newPrefix/stop_button.png", SIXTY_FOUR, QIcon.Normal, QIcon.Off) self.stop_button.setIcon(icon2) self.stop_button.setIconSize(SIXTY_FOUR) self.grid_layout2.addWidget(self.stop_button, 1, 2, 1, 1) self.fast_forward = QPushButton("", self.tab3) self.fast_forward.setObjectName("fast_forward") self.fast_forward.setSizePolicy(*FIX_FIX) self.fast_forward.setMaximumSize(SEVENTY_FIVE) self.fast_forward.setCursor(QCursor(Qt.PointingHandCursor)) self.fast_forward.setStyleSheet("border: 0;\n" "background: transparent;") icon3 = QIcon() icon3.addFile(":/newPrefix/fast_forward.png", SIXTY_FOUR, QIcon.Normal, QIcon.Off) self.fast_forward.setIcon(icon3) self.fast_forward.setIconSize(SIXTY_FOUR) self.grid_layout2.addWidget(self.fast_forward, 1, 3, 1, 1) self.tabs.addTab(self.tab3, "Server Media") self.grid_layout.addWidget(self.tabs, 4, 1, 1, 2) main_window.setCentralWidget(self.centralwidget) self.statusbar = QStatusBar(main_window) self.statusbar.setObjectName("statusbar") self.statusbar.setEnabled(True) self.statusbar.setStyleSheet("margin-bottom: 5px;") self.statusbar.setSizePolicy(*EXP_FIX) self.statusbar.setMinimumSize(INFINITE, 30) self.statusbar.setMaximumSize(INFINITE, 30) self.statusbar.setSizeGripEnabled(False) main_window.setStatusBar(self.statusbar) self.menubar.addAction(self.file_menu.menuAction()) self.menubar.addAction(self.server_menu.menuAction()) self.menubar.addAction(self.options_menu.menuAction()) self.menubar.addAction(self.media_menu.menuAction()) self.file_menu.addAction(self.exit) self.server_menu.addAction(self.start_server) self.server_menu.addAction(self.connect_server) self.server_menu.addAction(self.kill_server) self.options_menu.addAction(self.options) self.media_menu.addAction(self.start_webcam) self.exit.triggered.connect(main_window.close) self.tabs.setCurrentIndex(0) QMetaObject.connectSlotsByName(main_window) self.exit.setStatusTip("Exit the program.") self.start_server.setStatusTip("Initialize a local server instance.") self.connect_server.setStatusTip("Connect to a remote server.") self.kill_server.setStatusTip("Shut down a running local server.") self.options.setStatusTip("Open the options menu.") self.start_webcam.setStatusTip("Start webcam feed.") self.tooltip = QLabel("", self.statusbar) tooltip_policy = QSizePolicy(*EXP_FIX) tooltip_policy.setHorizontalStretch(100) self.tooltip.setSizePolicy(tooltip_policy) self.tooltip.setMinimumSize(INFINITE, 26) self.tooltip.setMaximumSize(INFINITE, 26) self.server_status = QLabel("Server status:", self.statusbar) self.server_status.setSizePolicy(*FIX_FIX) self.server_status.setMinimumSize(300, 26) self.server_status.setMaximumSize(300, 26) self.client_status = QLabel("Client status:", self.statusbar) self.client_status.setSizePolicy(*FIX_FIX) self.client_status.setMinimumSize(302, 26) self.client_status.setMaximumSize(302, 26) self.statusbar.addPermanentWidget(self.tooltip) self.statusbar.addPermanentWidget(self.server_status) self.statusbar.addPermanentWidget(self.client_status) self.tooltip.setStyleSheet(SUNKEN + "margin-left: 4px;\ margin-right: 0px;") self.client_status.setStyleSheet(SUNKEN + "margin-right: 7px;") self.server_status.setStyleSheet(SUNKEN + "margin-right: 2px;\ margin-left: 2px;") self.statusbar.messageChanged.connect(main_window.status_tip)
class Ui_ReferenceDataDialog(object): def setupUi(self, ReferenceDataDialog): if not ReferenceDataDialog.objectName(): ReferenceDataDialog.setObjectName(u"ReferenceDataDialog") ReferenceDataDialog.resize(869, 300) self.verticalLayout = QVBoxLayout(ReferenceDataDialog) self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.EditFrame = QFrame(ReferenceDataDialog) self.EditFrame.setObjectName(u"EditFrame") sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.EditFrame.sizePolicy().hasHeightForWidth()) self.EditFrame.setSizePolicy(sizePolicy) self.EditFrame.setFrameShape(QFrame.Panel) self.EditFrame.setFrameShadow(QFrame.Plain) self.EditFrame.setLineWidth(0) self.edit_layout = QHBoxLayout(self.EditFrame) self.edit_layout.setObjectName(u"edit_layout") self.edit_layout.setContentsMargins(0, 0, 0, 0) self.GroupLbl = QLabel(self.EditFrame) self.GroupLbl.setObjectName(u"GroupLbl") self.edit_layout.addWidget(self.GroupLbl) self.GroupCombo = QComboBox(self.EditFrame) self.GroupCombo.setObjectName(u"GroupCombo") self.edit_layout.addWidget(self.GroupCombo) self.Toggle = QCheckBox(self.EditFrame) self.Toggle.setObjectName(u"Toggle") self.Toggle.setChecked(False) self.edit_layout.addWidget(self.Toggle) self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.edit_layout.addItem(self.horizontalSpacer) self.AddBtn = QPushButton(self.EditFrame) self.AddBtn.setObjectName(u"AddBtn") self.edit_layout.addWidget(self.AddBtn) self.AddChildBtn = QPushButton(self.EditFrame) self.AddChildBtn.setObjectName(u"AddChildBtn") self.edit_layout.addWidget(self.AddChildBtn) self.RemoveBtn = QPushButton(self.EditFrame) self.RemoveBtn.setObjectName(u"RemoveBtn") self.edit_layout.addWidget(self.RemoveBtn) self.CommitBtn = QPushButton(self.EditFrame) self.CommitBtn.setObjectName(u"CommitBtn") self.CommitBtn.setEnabled(False) self.edit_layout.addWidget(self.CommitBtn) self.RevertBtn = QPushButton(self.EditFrame) self.RevertBtn.setObjectName(u"RevertBtn") self.RevertBtn.setEnabled(False) self.edit_layout.addWidget(self.RevertBtn) self.verticalLayout.addWidget(self.EditFrame) self.SearchFrame = QFrame(ReferenceDataDialog) self.SearchFrame.setObjectName(u"SearchFrame") self.SearchFrame.setFrameShape(QFrame.Panel) self.SearchFrame.setFrameShadow(QFrame.Plain) self.SearchFrame.setLineWidth(0) self.search_layout = QHBoxLayout(self.SearchFrame) self.search_layout.setObjectName(u"search_layout") self.search_layout.setContentsMargins(0, 0, 0, 0) self.SearchLbl = QLabel(self.SearchFrame) self.SearchLbl.setObjectName(u"SearchLbl") self.search_layout.addWidget(self.SearchLbl) self.SearchString = QLineEdit(self.SearchFrame) self.SearchString.setObjectName(u"SearchString") self.search_layout.addWidget(self.SearchString) self.verticalLayout.addWidget(self.SearchFrame) self.DataView = QTableView(ReferenceDataDialog) self.DataView.setObjectName(u"DataView") self.DataView.setEditTriggers(QAbstractItemView.AnyKeyPressed | QAbstractItemView.EditKeyPressed | QAbstractItemView.SelectedClicked) self.DataView.setAlternatingRowColors(True) self.DataView.setSelectionBehavior(QAbstractItemView.SelectRows) self.DataView.verticalHeader().setVisible(True) self.DataView.verticalHeader().setMinimumSectionSize(20) self.DataView.verticalHeader().setDefaultSectionSize(20) self.verticalLayout.addWidget(self.DataView) self.TreeView = QTreeView(ReferenceDataDialog) self.TreeView.setObjectName(u"TreeView") self.TreeView.setEditTriggers(QAbstractItemView.AnyKeyPressed | QAbstractItemView.EditKeyPressed | QAbstractItemView.SelectedClicked) self.TreeView.setTabKeyNavigation(True) self.TreeView.setAlternatingRowColors(True) self.TreeView.setSelectionMode(QAbstractItemView.ExtendedSelection) self.TreeView.setExpandsOnDoubleClick(False) self.TreeView.header().setStretchLastSection(False) self.verticalLayout.addWidget(self.TreeView) self.retranslateUi(ReferenceDataDialog) QMetaObject.connectSlotsByName(ReferenceDataDialog) # setupUi def retranslateUi(self, ReferenceDataDialog): ReferenceDataDialog.setWindowTitle( QCoreApplication.translate("ReferenceDataDialog", u"Reference Data", None)) self.GroupLbl.setText( QCoreApplication.translate("ReferenceDataDialog", u"Account Type:", None)) self.Toggle.setText( QCoreApplication.translate("ReferenceDataDialog", u"Show inactive", None)) #if QT_CONFIG(tooltip) self.AddBtn.setToolTip( QCoreApplication.translate("ReferenceDataDialog", u"Add new", None)) #endif // QT_CONFIG(tooltip) self.AddBtn.setText("") #if QT_CONFIG(tooltip) self.AddChildBtn.setToolTip( QCoreApplication.translate("ReferenceDataDialog", u"Add child", None)) #endif // QT_CONFIG(tooltip) self.AddChildBtn.setText("") #if QT_CONFIG(tooltip) self.RemoveBtn.setToolTip( QCoreApplication.translate("ReferenceDataDialog", u"Delete", None)) #endif // QT_CONFIG(tooltip) self.RemoveBtn.setText("") #if QT_CONFIG(tooltip) self.CommitBtn.setToolTip( QCoreApplication.translate("ReferenceDataDialog", u"Save changes", None)) #endif // QT_CONFIG(tooltip) self.CommitBtn.setText("") #if QT_CONFIG(tooltip) self.RevertBtn.setToolTip( QCoreApplication.translate("ReferenceDataDialog", u"Revert changes", None)) #endif // QT_CONFIG(tooltip) self.RevertBtn.setText("") self.SearchLbl.setText( QCoreApplication.translate("ReferenceDataDialog", u"Search:", None))
class Ui_LoginFNSDialog(object): def setupUi(self, LoginFNSDialog): if not LoginFNSDialog.objectName(): LoginFNSDialog.setObjectName(u"LoginFNSDialog") LoginFNSDialog.resize(400, 500) self.verticalLayout_3 = QVBoxLayout(LoginFNSDialog) self.verticalLayout_3.setSpacing(6) self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setContentsMargins(2, 2, 2, 2) self.LoginMethodTabs = QTabWidget(LoginFNSDialog) self.LoginMethodTabs.setObjectName(u"LoginMethodTabs") self.LoginSMSTab = QWidget() self.LoginSMSTab.setObjectName(u"LoginSMSTab") self.verticalLayout_7 = QVBoxLayout(self.LoginSMSTab) self.verticalLayout_7.setSpacing(2) self.verticalLayout_7.setObjectName(u"verticalLayout_7") self.verticalLayout_7.setContentsMargins(0, 0, 0, 0) self.PhoneNumberFrame = QFrame(self.LoginSMSTab) self.PhoneNumberFrame.setObjectName(u"PhoneNumberFrame") self.PhoneNumberFrame.setFrameShape(QFrame.NoFrame) self.PhoneNumberFrame.setFrameShadow(QFrame.Plain) self.formLayout_2 = QFormLayout(self.PhoneNumberFrame) self.formLayout_2.setObjectName(u"formLayout_2") self.formLayout_2.setContentsMargins(6, -1, 6, 0) self.PhoneLbl = QLabel(self.PhoneNumberFrame) self.PhoneLbl.setObjectName(u"PhoneLbl") self.formLayout_2.setWidget(0, QFormLayout.LabelRole, self.PhoneLbl) self.PhoneNumberEdit = QLineEdit(self.PhoneNumberFrame) self.PhoneNumberEdit.setObjectName(u"PhoneNumberEdit") self.PhoneNumberEdit.setInputMask(u"+7-999-999-99-99;_") self.formLayout_2.setWidget(0, QFormLayout.FieldRole, self.PhoneNumberEdit) self.verticalLayout_7.addWidget(self.PhoneNumberFrame) self.CodeButtonFrame = QFrame(self.LoginSMSTab) self.CodeButtonFrame.setObjectName(u"CodeButtonFrame") self.CodeButtonFrame.setFrameShape(QFrame.NoFrame) self.CodeButtonFrame.setFrameShadow(QFrame.Plain) self.verticalLayout_8 = QVBoxLayout(self.CodeButtonFrame) self.verticalLayout_8.setObjectName(u"verticalLayout_8") self.verticalLayout_8.setContentsMargins(0, 6, 0, 0) self.GetCodeBtn = QPushButton(self.CodeButtonFrame) self.GetCodeBtn.setObjectName(u"GetCodeBtn") sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.GetCodeBtn.sizePolicy().hasHeightForWidth()) self.GetCodeBtn.setSizePolicy(sizePolicy) self.verticalLayout_8.addWidget(self.GetCodeBtn, 0, Qt.AlignHCenter) self.verticalLayout_7.addWidget(self.CodeButtonFrame) self.CodeFrame = QFrame(self.LoginSMSTab) self.CodeFrame.setObjectName(u"CodeFrame") self.CodeFrame.setFrameShape(QFrame.NoFrame) self.CodeFrame.setFrameShadow(QFrame.Plain) self.formLayout_3 = QFormLayout(self.CodeFrame) self.formLayout_3.setObjectName(u"formLayout_3") self.formLayout_3.setContentsMargins(6, -1, 6, 0) self.CodeLbl = QLabel(self.CodeFrame) self.CodeLbl.setObjectName(u"CodeLbl") self.formLayout_3.setWidget(0, QFormLayout.LabelRole, self.CodeLbl) self.CodeEdit = QLineEdit(self.CodeFrame) self.CodeEdit.setObjectName(u"CodeEdit") self.formLayout_3.setWidget(0, QFormLayout.FieldRole, self.CodeEdit) self.verticalLayout_7.addWidget(self.CodeFrame) self.SMSButtonFrame = QFrame(self.LoginSMSTab) self.SMSButtonFrame.setObjectName(u"SMSButtonFrame") sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) sizePolicy1.setHorizontalStretch(0) sizePolicy1.setVerticalStretch(0) sizePolicy1.setHeightForWidth( self.SMSButtonFrame.sizePolicy().hasHeightForWidth()) self.SMSButtonFrame.setSizePolicy(sizePolicy1) self.SMSButtonFrame.setFrameShape(QFrame.NoFrame) self.SMSButtonFrame.setFrameShadow(QFrame.Plain) self.verticalLayout_10 = QVBoxLayout(self.SMSButtonFrame) self.verticalLayout_10.setObjectName(u"verticalLayout_10") self.verticalLayout_10.setContentsMargins(0, 0, 0, 6) self.frame = QFrame(self.SMSButtonFrame) self.frame.setObjectName(u"frame") sizePolicy1.setHeightForWidth( self.frame.sizePolicy().hasHeightForWidth()) self.frame.setSizePolicy(sizePolicy1) self.frame.setFrameShape(QFrame.NoFrame) self.frame.setFrameShadow(QFrame.Plain) self.verticalLayout_9 = QVBoxLayout(self.frame) self.verticalLayout_9.setObjectName(u"verticalLayout_9") self.SMSLoginBtn = QPushButton(self.frame) self.SMSLoginBtn.setObjectName(u"SMSLoginBtn") sizePolicy.setHeightForWidth( self.SMSLoginBtn.sizePolicy().hasHeightForWidth()) self.SMSLoginBtn.setSizePolicy(sizePolicy) self.verticalLayout_9.addWidget(self.SMSLoginBtn, 0, Qt.AlignHCenter | Qt.AlignTop) self.verticalLayout_10.addWidget(self.frame) self.line = QFrame(self.SMSButtonFrame) self.line.setObjectName(u"line") self.line.setFrameShape(QFrame.HLine) self.line.setFrameShadow(QFrame.Sunken) self.verticalLayout_10.addWidget(self.line) self.SMSCloseBtn = QPushButton(self.SMSButtonFrame) self.SMSCloseBtn.setObjectName(u"SMSCloseBtn") sizePolicy.setHeightForWidth( self.SMSCloseBtn.sizePolicy().hasHeightForWidth()) self.SMSCloseBtn.setSizePolicy(sizePolicy) self.verticalLayout_10.addWidget(self.SMSCloseBtn, 0, Qt.AlignHCenter) self.verticalLayout_7.addWidget(self.SMSButtonFrame) self.LoginMethodTabs.addTab(self.LoginSMSTab, "") self.LoginPasswordTab = QWidget() self.LoginPasswordTab.setObjectName(u"LoginPasswordTab") self.verticalLayout = QVBoxLayout(self.LoginPasswordTab) self.verticalLayout.setSpacing(2) self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.LoginDataFrame = QFrame(self.LoginPasswordTab) self.LoginDataFrame.setObjectName(u"LoginDataFrame") sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy2.setHorizontalStretch(0) sizePolicy2.setVerticalStretch(0) sizePolicy2.setHeightForWidth( self.LoginDataFrame.sizePolicy().hasHeightForWidth()) self.LoginDataFrame.setSizePolicy(sizePolicy2) self.LoginDataFrame.setFrameShape(QFrame.NoFrame) self.LoginDataFrame.setFrameShadow(QFrame.Plain) self.formLayout = QFormLayout(self.LoginDataFrame) self.formLayout.setObjectName(u"formLayout") self.formLayout.setHorizontalSpacing(6) self.formLayout.setContentsMargins(6, -1, 6, 0) self.InnLbl = QLabel(self.LoginDataFrame) self.InnLbl.setObjectName(u"InnLbl") self.formLayout.setWidget(0, QFormLayout.LabelRole, self.InnLbl) self.InnEdit = QLineEdit(self.LoginDataFrame) self.InnEdit.setObjectName(u"InnEdit") self.formLayout.setWidget(0, QFormLayout.FieldRole, self.InnEdit) self.PasswordLbl = QLabel(self.LoginDataFrame) self.PasswordLbl.setObjectName(u"PasswordLbl") self.formLayout.setWidget(1, QFormLayout.LabelRole, self.PasswordLbl) self.PasswordEdit = QLineEdit(self.LoginDataFrame) self.PasswordEdit.setObjectName(u"PasswordEdit") self.PasswordEdit.setEchoMode(QLineEdit.Password) self.formLayout.setWidget(1, QFormLayout.FieldRole, self.PasswordEdit) self.verticalLayout.addWidget(self.LoginDataFrame) self.FNSButtonFrame = QFrame(self.LoginPasswordTab) self.FNSButtonFrame.setObjectName(u"FNSButtonFrame") self.FNSButtonFrame.setFrameShape(QFrame.NoFrame) self.FNSButtonFrame.setFrameShadow(QFrame.Plain) self.verticalLayout_4 = QVBoxLayout(self.FNSButtonFrame) self.verticalLayout_4.setSpacing(6) self.verticalLayout_4.setObjectName(u"verticalLayout_4") self.verticalLayout_4.setContentsMargins(0, 0, 0, 6) self.FNSLoginFrame = QFrame(self.FNSButtonFrame) self.FNSLoginFrame.setObjectName(u"FNSLoginFrame") sizePolicy1.setHeightForWidth( self.FNSLoginFrame.sizePolicy().hasHeightForWidth()) self.FNSLoginFrame.setSizePolicy(sizePolicy1) self.FNSLoginFrame.setFrameShape(QFrame.NoFrame) self.FNSLoginFrame.setFrameShadow(QFrame.Plain) self.verticalLayout_5 = QVBoxLayout(self.FNSLoginFrame) self.verticalLayout_5.setObjectName(u"verticalLayout_5") self.FNSLoginBtn = QPushButton(self.FNSLoginFrame) self.FNSLoginBtn.setObjectName(u"FNSLoginBtn") sizePolicy.setHeightForWidth( self.FNSLoginBtn.sizePolicy().hasHeightForWidth()) self.FNSLoginBtn.setSizePolicy(sizePolicy) self.verticalLayout_5.addWidget(self.FNSLoginBtn, 0, Qt.AlignHCenter | Qt.AlignTop) self.verticalLayout_4.addWidget(self.FNSLoginFrame) self.FNSSplitLine = QFrame(self.FNSButtonFrame) self.FNSSplitLine.setObjectName(u"FNSSplitLine") self.FNSSplitLine.setFrameShape(QFrame.HLine) self.FNSSplitLine.setFrameShadow(QFrame.Sunken) self.verticalLayout_4.addWidget(self.FNSSplitLine) self.FNSCloseBtn = QPushButton(self.FNSButtonFrame) self.FNSCloseBtn.setObjectName(u"FNSCloseBtn") sizePolicy.setHeightForWidth( self.FNSCloseBtn.sizePolicy().hasHeightForWidth()) self.FNSCloseBtn.setSizePolicy(sizePolicy) self.verticalLayout_4.addWidget(self.FNSCloseBtn, 0, Qt.AlignHCenter) self.verticalLayout.addWidget(self.FNSButtonFrame) self.LoginMethodTabs.addTab(self.LoginPasswordTab, "") self.ESIATab = QWidget() self.ESIATab.setObjectName(u"ESIATab") self.verticalLayout_2 = QVBoxLayout(self.ESIATab) self.verticalLayout_2.setSpacing(2) self.verticalLayout_2.setObjectName(u"verticalLayout_2") self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.ESIAWebView = QWebEngineView(self.ESIATab) self.ESIAWebView.setObjectName(u"ESIAWebView") sizePolicy1.setHeightForWidth( self.ESIAWebView.sizePolicy().hasHeightForWidth()) self.ESIAWebView.setSizePolicy(sizePolicy1) self.ESIAWebView.setUrl(QUrl(u"about:blank")) self.verticalLayout_2.addWidget(self.ESIAWebView) self.ESIAButtonFrame = QFrame(self.ESIATab) self.ESIAButtonFrame.setObjectName(u"ESIAButtonFrame") self.ESIAButtonFrame.setFrameShape(QFrame.NoFrame) self.ESIAButtonFrame.setFrameShadow(QFrame.Plain) self.verticalLayout_6 = QVBoxLayout(self.ESIAButtonFrame) self.verticalLayout_6.setObjectName(u"verticalLayout_6") self.verticalLayout_6.setContentsMargins(0, 0, 0, 6) self.ESIASplitLine = QFrame(self.ESIAButtonFrame) self.ESIASplitLine.setObjectName(u"ESIASplitLine") self.ESIASplitLine.setFrameShape(QFrame.HLine) self.ESIASplitLine.setFrameShadow(QFrame.Sunken) self.verticalLayout_6.addWidget(self.ESIASplitLine) self.ESIACloseBtn = QPushButton(self.ESIAButtonFrame) self.ESIACloseBtn.setObjectName(u"ESIACloseBtn") sizePolicy.setHeightForWidth( self.ESIACloseBtn.sizePolicy().hasHeightForWidth()) self.ESIACloseBtn.setSizePolicy(sizePolicy) self.verticalLayout_6.addWidget(self.ESIACloseBtn, 0, Qt.AlignHCenter) self.verticalLayout_2.addWidget(self.ESIAButtonFrame) self.LoginMethodTabs.addTab(self.ESIATab, "") self.verticalLayout_3.addWidget(self.LoginMethodTabs) self.retranslateUi(LoginFNSDialog) self.FNSCloseBtn.clicked.connect(LoginFNSDialog.close) self.ESIACloseBtn.clicked.connect(LoginFNSDialog.close) self.SMSCloseBtn.clicked.connect(LoginFNSDialog.close) self.LoginMethodTabs.setCurrentIndex(0) QMetaObject.connectSlotsByName(LoginFNSDialog) # setupUi def retranslateUi(self, LoginFNSDialog): LoginFNSDialog.setWindowTitle( QCoreApplication.translate("LoginFNSDialog", u"Authorization FNS", None)) self.PhoneLbl.setText( QCoreApplication.translate("LoginFNSDialog", u"Phone number:", None)) self.GetCodeBtn.setText( QCoreApplication.translate("LoginFNSDialog", u"Send SMS with code", None)) self.CodeLbl.setText( QCoreApplication.translate("LoginFNSDialog", u"Code from SMS:", None)) self.SMSLoginBtn.setText( QCoreApplication.translate("LoginFNSDialog", u"Login", None)) self.SMSCloseBtn.setText( QCoreApplication.translate("LoginFNSDialog", u"Close", None)) self.LoginMethodTabs.setTabText( self.LoginMethodTabs.indexOf(self.LoginSMSTab), QCoreApplication.translate("LoginFNSDialog", u"SMS Login", None)) self.InnLbl.setText( QCoreApplication.translate("LoginFNSDialog", u"INN:", None)) self.PasswordLbl.setText( QCoreApplication.translate("LoginFNSDialog", u"Password:"******"LoginFNSDialog", u"Login", None)) self.FNSCloseBtn.setText( QCoreApplication.translate("LoginFNSDialog", u"Close", None)) self.LoginMethodTabs.setTabText( self.LoginMethodTabs.indexOf(self.LoginPasswordTab), QCoreApplication.translate("LoginFNSDialog", u"FNS Login", None)) self.ESIACloseBtn.setText( QCoreApplication.translate("LoginFNSDialog", u"Close", None)) self.LoginMethodTabs.setTabText( self.LoginMethodTabs.indexOf(self.ESIATab), QCoreApplication.translate("LoginFNSDialog", u"ESIA Login", None))
class MainWindow(QMainWindow): """Main application window""" def __init__(self) -> None: QMainWindow.__init__(self) self.setSizePolicy( QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)) self.setMaximumSize(QSize(1920, 1080)) self.setStyleSheet("padding: 0px; margin: 0px;") self.setIconSize(QSize(32, 32)) self.setWindowTitle("BossyBot 2000 - Image Tagger") self.setWindowIcon(self.load_icon(icon)) self.menubar = QMenuBar(self) self.menubar.setSizePolicy(EXP_MAX) self.menubar.setMaximumSize(QSize(INFINITE, 30)) self.menu_file = QMenu('File', self.menubar) self.menu_options = QMenu('Options', self.menubar) self.menu_help = QMenu('Help', self.menubar) self.menubar.addAction(self.menu_file.menuAction()) self.menubar.addAction(self.menu_options.menuAction()) self.menubar.addAction(self.menu_help.menuAction()) self.open = QAction('Open', self) self.menu_file.addAction(self.open) self.open.triggered.connect(self.open_file) self.exit_button = QAction('Exit', self) self.exit_button.triggered.connect(lambda: sys.exit(0), Qt.QueuedConnection) self.menu_file.addAction(self.exit_button) self.setMenuBar(self.menubar) self.previous_button = QAction(self.load_icon(previous), '<<', self) self.next_button = QAction(self.load_icon(next_icon), '>>', self) self.rotate_left_button = QAction(self.load_icon(left), '', self) self.rotate_right_button = QAction(self.load_icon(right), '', self) self.play_button = QAction(self.load_icon(play), '', self) self.play_button.setCheckable(True) self.delete_button = QAction(self.load_icon(delete), '', self) self.reload_button = QAction(self.load_icon(reload), '', self) self.mirror_button = QAction('Mirror', self) self.actual_size_button = QAction('Actual Size', self) self.browser_button = QAction('Browser', self) self.browser_button.setCheckable(True) self.browser_button.setChecked(True) self.crop_button = QAction('Crop', self) self.crop_button.setCheckable(True) self.toolbuttons = { self.rotate_left_button: { 'shortcut': ',', 'connect': lambda: self.pixmap.setRotation(self.pixmap.rotation() - 90) }, self.rotate_right_button: { 'shortcut': '.', 'connect': lambda: self.pixmap.setRotation(self.pixmap.rotation() + 90) }, self.delete_button: { 'shortcut': 'Del', 'connect': self.delete }, self.previous_button: { 'shortcut': 'Left', 'connect': self.previous }, self.play_button: { 'shortcut': 'Space', 'connect': self.play }, self.next_button: { 'shortcut': 'Right', 'connect': self.next }, self.reload_button: { 'shortcut': 'F5', 'connect': self.reload } } self.toolbar = QToolBar(self) self.toolbar.setSizePolicy(EXP_MAX) self.toolbar.setMaximumSize(QSize(INFINITE, 27)) for _ in (self.browser_button, self.crop_button, self.mirror_button, self.actual_size_button): self.toolbar.addAction(_) self.addToolBar(Qt.TopToolBarArea, self.toolbar) for button in self.toolbuttons: button.setShortcut(self.toolbuttons[button]['shortcut']) button.triggered.connect(self.toolbuttons[button]['connect']) self.toolbar.addAction(button) self.centralwidget = QWidget(self) self.centralwidget.setSizePolicy(EXP_EXP) self.setCentralWidget(self.centralwidget) self.grid = QGridLayout(self.centralwidget) self.media = QGraphicsScene(self) self.media.setItemIndexMethod(QGraphicsScene.NoIndex) self.media.setBackgroundBrush(QBrush(Qt.black)) self.view = MyView(self.media, self) self.view.setSizePolicy(EXP_EXP) self.media.setSceneRect(0, 0, self.view.width(), self.view.height()) self.grid.addWidget(self.view, 0, 0, 1, 1) self.frame = QFrame(self.centralwidget) self.frame.setSizePolicy( QSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding)) self.frame.setMinimumSize(QSize(325, 500)) self.frame.setStyleSheet( "QFrame { border: 4px inset #222; border-radius: 10; }") self.layout_widget = QWidget(self.frame) self.layout_widget.setGeometry(QRect(0, 400, 321, 91)) self.layout_widget.setContentsMargins(15, 15, 15, 15) self.grid2 = QGridLayout(self.layout_widget) self.grid2.setContentsMargins(0, 0, 0, 0) self.save_button = QPushButton('Yes (Save)', self.layout_widget) self.save_button.setSizePolicy(FIX_FIX) self.save_button.setMaximumSize(QSize(120, 26)) self.save_button.setVisible(False) self.grid2.addWidget(self.save_button, 1, 0, 1, 1) self.no_save_button = QPushButton('No (Reload)', self.layout_widget) self.no_save_button.setSizePolicy(FIX_FIX) self.no_save_button.setMaximumSize(QSize(120, 26)) self.no_save_button.setVisible(False) self.grid2.addWidget(self.no_save_button, 1, 1, 1, 1) self.label = QLabel("Current image modified, save it?", self.layout_widget) self.label.setSizePolicy(FIX_FIX) self.label.setMaximumSize(QSize(325, 60)) self.label.setVisible(False) self.label.setAlignment(Qt.AlignCenter) self.grid2.addWidget(self.label, 0, 0, 1, 2) self.layout_widget = QWidget(self.frame) self.layout_widget.setGeometry(QRect(0, 0, 321, 213)) self.ass = QRadioButton('Ass', self.layout_widget) self.ass_exposed = QRadioButton('Ass (exposed)', self.layout_widget) self.ass_reset = QRadioButton(self.frame) self.ass_group = QButtonGroup(self) self.breasts = QRadioButton('Breasts', self.layout_widget) self.breasts_exposed = QRadioButton('Breasts (exposed)', self.layout_widget) self.breasts_reset = QRadioButton(self.frame) self.breasts_group = QButtonGroup(self) self.pussy = QRadioButton('Pussy', self.layout_widget) self.pussy_exposed = QRadioButton('Pussy (exposed)', self.layout_widget) self.pussy_reset = QRadioButton(self.frame) self.pussy_group = QButtonGroup(self) self.fully_clothed = QRadioButton('Fully Clothed', self.layout_widget) self.fully_nude = QRadioButton('Fully Nude', self.layout_widget) self.nudity_reset = QRadioButton(self.frame) self.nudity = QButtonGroup(self) self.smiling = QRadioButton('Smiling', self.layout_widget) self.glaring = QRadioButton('Glaring', self.layout_widget) self.expression_reset = QRadioButton(self.frame) self.expression = QButtonGroup(self) self.grid3 = QGridLayout(self.layout_widget) self.grid3.setVerticalSpacing(15) self.grid3.setContentsMargins(0, 15, 0, 0) self.radios = { self.ass: { 'this': 'ass', 'that': 'ass_exposed', 'group': self.ass_group, 'reset': self.ass_reset, 'grid': (0, 0, 1, 1) }, self.ass_exposed: { 'this': 'ass_exposed', 'that': 'ass', 'group': self.ass_group, 'reset': self.ass_reset, 'grid': (0, 1, 1, 1) }, self.breasts: { 'this': 'breasts', 'that': 'breasts_exposed', 'group': self.breasts_group, 'reset': self.breasts_reset, 'grid': (1, 0, 1, 1) }, self.breasts_exposed: { 'this': 'breasts_exposed', 'that': 'breasts', 'group': self.breasts_group, 'reset': self.breasts_reset, 'grid': (1, 1, 1, 1) }, self.pussy: { 'this': 'pussy', 'that': 'pussy_exposed', 'group': self.pussy_group, 'reset': self.pussy_reset, 'grid': (2, 0, 1, 1) }, self.pussy_exposed: { 'this': 'pussy_exposed', 'that': 'pussy', 'group': self.pussy_group, 'reset': self.pussy_reset, 'grid': (2, 1, 1, 1) }, self.fully_clothed: { 'this': 'fully_clothed', 'that': 'fully_nude', 'group': self.nudity, 'reset': self.nudity_reset, 'grid': (3, 0, 1, 1) }, self.fully_nude: { 'this': 'fully_nude', 'that': 'fully_clothed', 'group': self.nudity, 'reset': self.nudity_reset, 'grid': (3, 1, 1, 1) }, self.smiling: { 'this': 'smiling', 'that': 'glaring', 'group': self.expression, 'reset': self.expression_reset, 'grid': (4, 0, 1, 1) }, self.glaring: { 'this': 'glaring', 'that': 'smiling', 'group': self.expression, 'reset': self.expression_reset, 'grid': (4, 1, 1, 1) }, } for radio in self.radios: radio.setSizePolicy(FIX_FIX) radio.setMaximumSize(QSize(150, 22)) self.radios[radio]['reset'].setGeometry(QRect(0, 0, 0, 0)) self.grid3.addWidget(radio, *self.radios[radio]['grid']) if self.radios[radio]['group'] != self.nudity: radio.toggled.connect( lambda x=_, y=radio: self.annotate(self.radios[y]['this'])) self.radios[radio]['group'].addButton(radio) self.radios[radio]['group'].addButton(self.radios[radio]['reset']) self.save_tags_button = QPushButton('Save Tags', self.layout_widget) self.save_tags_button.setSizePolicy(FIX_FIX) self.save_tags_button.setMaximumSize(QSize(120, 26)) self.grid3.addWidget(self.save_tags_button, 5, 1, 1, 1) self.grid.addWidget(self.frame, 0, 1, 1, 1) self.browse_bar = QLabel(self.centralwidget) self.browse_bar.setSizePolicy(EXP_FIX) self.browse_bar.setMinimumSize(QSize(0, 100)) self.browse_bar.setMaximumSize(QSize(INFINITE, 100)) self.browse_bar.setStyleSheet("background: #000;") self.browse_bar.setAlignment(Qt.AlignCenter) self.h_box2 = QHBoxLayout(self.browse_bar) self.h_box2.setContentsMargins(4, 0, 0, 0) self.grid.addWidget(self.browse_bar, 1, 0, 1, 2) hiders = [ self.no_save_button.clicked, self.save_button.clicked, self.reload_button.triggered ] for hider in hiders: hider.connect(self.save_button.hide) hider.connect(self.no_save_button.hide) hider.connect(self.label.hide) showers = [ self.mirror_button.triggered, self.rotate_right_button.triggered, self.rotate_left_button.triggered ] for shower in showers: shower.connect(self.save_button.show) shower.connect(self.no_save_button.show) shower.connect(self.label.show) self.no_save_button.clicked.connect(self.reload) self.browser_button.toggled.connect(self.browse_bar.setVisible) self.play_button.toggled.connect(lambda: self.frame.setVisible( (True, False)[self.frame.isVisible()])) self.reload_button.triggered.connect(self.reload) self.mirror_button.triggered.connect(lambda: self.pixmap.setScale(-1)) self.save_button.clicked.connect(self.save_image) self.play_button.toggled.connect( lambda: self.browser_button.setChecked( (True, False)[self.browse_bar.isVisible()])) self.crop_button.toggled.connect(self.view.reset) self.actual_size_button.triggered.connect(self.actual_size) self.browser_button.triggered.connect(self.browser) self.save_tags_button.clicked.connect(self.save_tags) self.view.got_rect.connect(self.set_rect) self.crop_rect = QRect(QPoint(0, 0), QSize(0, 0)) self.dir_now = os.getcwd() self.files = [] self.index = 0 self.refresh_files() self.pixmap_is_scaled = False self.pixmap = QGraphicsPixmapItem() self.active_tag = '' self.reset_browser = False self.txt = PngInfo() def set_rect(self, rect: tuple[QPointF, QPointF]): """Converts the crop rectangle to a QRect after a crop action""" self.crop_rect = QRect(rect[0].toPoint(), rect[1].toPoint()) def keyPressEvent(self, event: QKeyEvent): # pylint: disable=invalid-name; """Keyboard event handler.""" if event.key() == Qt.Key_Escape and self.play_button.isChecked(): self.play_button.toggle() self.browser_button.setChecked((True, False)[self.reset_browser]) elif (event.key() in [16777220, 16777221] and self.view.g_rect.rect().width() > 0): self.view.got_rect.emit((self.view.g_rect.rect().topLeft(), self.view.g_rect.rect().bottomRight())) if self.view.g_rect.pen().color() == Qt.red: new_pix = self.pixmap.pixmap().copy(self.crop_rect) if self.pixmap_is_scaled: new_pix = new_pix.transformed( self.view.transform().inverted()[0], Qt.SmoothTransformation) self.update_pixmap(new_pix) elif self.view.g_rect.pen().color() == Qt.magenta: self.annotate_rect() self.view.annotation = False for _ in (self.label, self.save_button, self.no_save_button): _.show() self.view.reset() def play(self): """Starts a slideshow.""" if self.play_button.isChecked(): if self.browser_button.isChecked(): self.reset_browser = True else: self.reset_browser = False QTimer.singleShot(3000, self.play) self.next() def _yield_radio(self): """Saves code connecting signals from all the radio buttons.""" yield from self.radios.keys().__str__() def load_icon(self, icon_file): """Loads an icon from Base64 encoded strings in icons.py.""" pix = QPixmap() pix.loadFromData(icon_file) return QIcon(pix) def open_file(self, file: str) -> None: """ Open an image file and display it. :param file: The filename of the image to open """ if not os.path.isfile(file): file = QFileDialog(self, self.dir_now, self.dir_now).getOpenFileName()[0] self.dir_now = os.path.dirname(file) self.refresh_files() for i, index_file in enumerate(self.files): if file.split('/')[-1] == index_file: self.index = i self.view.setTransform(QTransform()) self.update_pixmap(QPixmap(file)) self.browser() self.load_tags() def refresh_files(self) -> list[str]: """Updates the file list when the directory is changed. Returns a list of image files available in the current directory.""" files = os.listdir(self.dir_now) self.files = [ file for file in sorted(files, key=lambda x: x.lower()) if file.endswith((".png", ".jpg", ".gif", ".bmp", ".jpeg")) ] def next(self) -> None: """Opens the next image in the file list.""" self.index = (self.index + 1) % len(self.files) self.reload() def previous(self) -> None: """Opens the previous image in the file list.""" self.index = (self.index + (len(self.files) - 1)) % len(self.files) self.reload() def save_image(self) -> None: """ Save the modified image file. If the current pixmap has been scaled, we need to load a non-scaled pixmap from the original file and re-apply the transformations that have been performed to prevent it from being saved as the scaled-down image. """ if self.pixmap_is_scaled: rotation = self.pixmap.rotation() mirror = self.pixmap.scale() < 0 pix = QPixmap(self.files[self.index]) pix = pix.transformed(QTransform().rotate(rotation)) if mirror: pix = pix.transformed(QTransform().scale(-1, 1)) pix.save(self.files[self.index], quality=-1) else: self.pixmap.pixmap().save(self.files[self.index], quality=-1) self.save_tags() def delete(self) -> None: """Deletes the current image from the file system.""" with suppress(OSError): os.remove(f"{self.dir_now}/{self.files.pop(self.index)}") self.refresh_files() def reload(self) -> None: """Reloads the current pixmap; used to update the screen when the current file is changed.""" self.open_file(f"{self.dir_now}/{self.files[self.index]}") def annotate(self, tag): """Starts an annotate action""" self.txt = PngInfo() self.view.annotation = True self.active_tag = tag self.view.reset() def wheelEvent(self, event: QWheelEvent) -> None: # pylint: disable=invalid-name """With Ctrl depressed, zoom the current image, otherwise fire the next/previous functions.""" modifiers = QApplication.keyboardModifiers() if event.angleDelta().y() == 120 and modifiers == Qt.ControlModifier: self.view.scale(0.75, 0.75) elif event.angleDelta().y() == 120: self.previous() elif event.angleDelta().y( ) == -120 and modifiers == Qt.ControlModifier: self.view.scale(1.25, 1.25) elif event.angleDelta().y() == -120: self.next() def actual_size(self) -> None: """Display the current image at its actual size, rather than scaled to fit the viewport.""" self.update_pixmap(QPixmap(self.files[self.index]), False) self.view.setDragMode(QGraphicsView.ScrollHandDrag) def mousePressEvent(self, event: QMouseEvent) -> None: # pylint: disable=invalid-name """Event handler for mouse button presses.""" if event.button() == Qt.MouseButton.ForwardButton: self.next() elif event.button() == Qt.MouseButton.BackButton: self.previous() def update_pixmap(self, new: QPixmap, scaled: bool = True) -> None: """ Updates the currently displayed image. :param new: The new `QPixmap` to be displayed. :param scaled: If False, don't scale the image to fit the viewport. """ self.pixmap_is_scaled = scaled self.media.clear() self.pixmap = self.media.addPixmap(new) self.pixmap.setTransformOriginPoint( self.pixmap.boundingRect().width() / 2, self.pixmap.boundingRect().height() / 2) if scaled and (new.size().width() > self.view.width() or new.size().height() > self.view.height()): self.view.fitInView(self.pixmap, Qt.KeepAspectRatio) self.media.setSceneRect(self.pixmap.boundingRect()) def annotate_rect(self): """Creates image coordinate annotation data.""" self.txt.add_itxt( f'{str(self.active_tag)}-rect', f'{str(self.crop_rect.x())}, {str(self.crop_rect.y())}, {str(self.crop_rect.width())}, {str(self.crop_rect.height())}' ) def browser(self): """Slot function to initialize image thumbnails for the 'browse mode.'""" while self.h_box2.itemAt(0): self.h_box2.takeAt(0).widget().deleteLater() index = (self.index + (len(self.files) - 2)) % len(self.files) for i, file in enumerate(self.files): file = self.dir_now + '/' + self.files[index] label = ClickableLabel(self, file) self.h_box2.addWidget(label) pix = QPixmap(file) if (pix.size().width() > self.browse_bar.width() / 5 or pix.size().height() > 100): pix = pix.scaled(self.browse_bar.width() / 5, 100, Qt.KeepAspectRatio) label.setPixmap(pix) index = (index + 1) % len(self.files) if i == 4: break def save_tags(self): """Save tags for currently loaded image into its iTxt data.""" file = self.files[self.index] img = Image.open(file) img.load() for key, value, in img.text.items(): self.txt.add_itxt(key, value) for key in self.radios: if key.isChecked(): self.txt.add_itxt(self.radios[key]['this'], 'True') self.txt.add_itxt(self.radios[key]['that'], 'False') img.save(file, pnginfo=self.txt) def load_tags(self): """Load tags from iTxt data.""" for radio in self.radios: if radio.isChecked(): self.radios[radio]['reset'].setChecked(True) filename = self.files[self.index] fqp = filename img = Image.open(fqp) img.load() with suppress(AttributeError): for key, value in img.text.items(): if value == 'True': for radio in self.radios: if key == self.radios[radio]['this']: radio.setChecked(True) self.view.annotation = False self.active_tag = '' self.view.reset() for key, value in img.text.items(): if key.endswith('-rect'): btn = [ radio for radio in self.radios if self.radios[radio]['this'] == key.split('-')[0] ] print(key, value) if btn[0].isChecked(): coords = [int(coord) for coord in value.split(', ')] rect = QGraphicsRectItem(*coords) rect.setPen(QPen(Qt.magenta, 1, Qt.SolidLine)) rect.setBrush(QBrush(Qt.magenta, Qt.Dense4Pattern)) self.view.scene().addItem(rect) text = self.view.scene().addText( key.split('-')[0], QFont('monospace', 20, 400, False)) text.font().setPointSize(text.font().pointSize() * 2) text.update() text.setX(rect.rect().x() + 10) text.setY(rect.rect().y() + 10) print(f'set {key}')
class Ui_ImportSlipDlg(object): def setupUi(self, ImportSlipDlg): if not ImportSlipDlg.objectName(): ImportSlipDlg.setObjectName(u"ImportSlipDlg") ImportSlipDlg.resize(850, 587) self.verticalLayout = QVBoxLayout(ImportSlipDlg) self.verticalLayout.setSpacing(6) self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.InputFrame = QFrame(ImportSlipDlg) self.InputFrame.setObjectName(u"InputFrame") sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.InputFrame.sizePolicy().hasHeightForWidth()) self.InputFrame.setSizePolicy(sizePolicy) self.InputFrame.setFrameShape(QFrame.NoFrame) self.InputFrame.setFrameShadow(QFrame.Plain) self.horizontalLayout_3 = QHBoxLayout(self.InputFrame) self.horizontalLayout_3.setSpacing(2) self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.QRGroup = QGroupBox(self.InputFrame) self.QRGroup.setObjectName(u"QRGroup") sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy1.setHorizontalStretch(0) sizePolicy1.setVerticalStretch(0) sizePolicy1.setHeightForWidth( self.QRGroup.sizePolicy().hasHeightForWidth()) self.QRGroup.setSizePolicy(sizePolicy1) self.QRGroup.setAlignment(Qt.AlignLeading | Qt.AlignLeft | Qt.AlignVCenter) self.verticalLayout_3 = QVBoxLayout(self.QRGroup) self.verticalLayout_3.setSpacing(6) self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setContentsMargins(2, 2, 2, 2) self.GetQRfromCameraBtn = QPushButton(self.QRGroup) self.GetQRfromCameraBtn.setObjectName(u"GetQRfromCameraBtn") self.verticalLayout_3.addWidget(self.GetQRfromCameraBtn) self.LoadQRfromFileBtn = QPushButton(self.QRGroup) self.LoadQRfromFileBtn.setObjectName(u"LoadQRfromFileBtn") self.verticalLayout_3.addWidget(self.LoadQRfromFileBtn) self.GetQRfromClipboardBtn = QPushButton(self.QRGroup) self.GetQRfromClipboardBtn.setObjectName(u"GetQRfromClipboardBtn") self.verticalLayout_3.addWidget(self.GetQRfromClipboardBtn) self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.verticalLayout_3.addItem(self.verticalSpacer) self.horizontalLayout_3.addWidget(self.QRGroup) self.SlipDataGroup = QGroupBox(self.InputFrame) self.SlipDataGroup.setObjectName(u"SlipDataGroup") sizePolicy1.setHeightForWidth( self.SlipDataGroup.sizePolicy().hasHeightForWidth()) self.SlipDataGroup.setSizePolicy(sizePolicy1) self.gridLayout_2 = QGridLayout(self.SlipDataGroup) self.gridLayout_2.setObjectName(u"gridLayout_2") self.gridLayout_2.setContentsMargins(2, 2, 2, 2) self.GetSlipBtn = QPushButton(self.SlipDataGroup) self.GetSlipBtn.setObjectName(u"GetSlipBtn") self.gridLayout_2.addWidget(self.GetSlipBtn, 7, 1, 1, 1) self.AmountLbl = QLabel(self.SlipDataGroup) self.AmountLbl.setObjectName(u"AmountLbl") self.gridLayout_2.addWidget(self.AmountLbl, 0, 2, 1, 1) self.SlipTimstamp = QDateTimeEdit(self.SlipDataGroup) self.SlipTimstamp.setObjectName(u"SlipTimstamp") self.SlipTimstamp.setTimeSpec(Qt.UTC) self.gridLayout_2.addWidget(self.SlipTimstamp, 0, 1, 1, 1) self.TimestampLbl = QLabel(self.SlipDataGroup) self.TimestampLbl.setObjectName(u"TimestampLbl") self.gridLayout_2.addWidget(self.TimestampLbl, 0, 0, 1, 1) self.FDlbl = QLabel(self.SlipDataGroup) self.FDlbl.setObjectName(u"FDlbl") self.gridLayout_2.addWidget(self.FDlbl, 2, 0, 1, 1) self.SlipAmount = QLineEdit(self.SlipDataGroup) self.SlipAmount.setObjectName(u"SlipAmount") self.gridLayout_2.addWidget(self.SlipAmount, 0, 3, 1, 1) self.FP = QLineEdit(self.SlipDataGroup) self.FP.setObjectName(u"FP") self.gridLayout_2.addWidget(self.FP, 2, 3, 1, 1) self.FD = QLineEdit(self.SlipDataGroup) self.FD.setObjectName(u"FD") self.gridLayout_2.addWidget(self.FD, 2, 1, 1, 1) self.FNlbl = QLabel(self.SlipDataGroup) self.FNlbl.setObjectName(u"FNlbl") self.gridLayout_2.addWidget(self.FNlbl, 4, 0, 1, 1) self.DummyLbl = QLabel(self.SlipDataGroup) self.DummyLbl.setObjectName(u"DummyLbl") self.gridLayout_2.addWidget(self.DummyLbl, 7, 0, 1, 1) self.SlipTypeLbl = QLabel(self.SlipDataGroup) self.SlipTypeLbl.setObjectName(u"SlipTypeLbl") self.gridLayout_2.addWidget(self.SlipTypeLbl, 4, 2, 1, 1) self.FN = QLineEdit(self.SlipDataGroup) self.FN.setObjectName(u"FN") self.gridLayout_2.addWidget(self.FN, 4, 1, 1, 1) self.LoadJSONfromFileBtn = QPushButton(self.SlipDataGroup) self.LoadJSONfromFileBtn.setObjectName(u"LoadJSONfromFileBtn") self.gridLayout_2.addWidget(self.LoadJSONfromFileBtn, 7, 3, 1, 1) self.FPlbl = QLabel(self.SlipDataGroup) self.FPlbl.setObjectName(u"FPlbl") self.gridLayout_2.addWidget(self.FPlbl, 2, 2, 1, 1) self.line = QFrame(self.SlipDataGroup) self.line.setObjectName(u"line") self.line.setFrameShape(QFrame.HLine) self.line.setFrameShadow(QFrame.Sunken) self.gridLayout_2.addWidget(self.line, 5, 0, 1, 4) self.SlipType = QComboBox(self.SlipDataGroup) self.SlipType.addItem("") self.SlipType.addItem("") self.SlipType.setObjectName(u"SlipType") self.gridLayout_2.addWidget(self.SlipType, 4, 3, 1, 1) self.horizontalLayout_3.addWidget(self.SlipDataGroup) self.CameraGroup = QGroupBox(self.InputFrame) self.CameraGroup.setObjectName(u"CameraGroup") self.verticalLayout_2 = QVBoxLayout(self.CameraGroup) self.verticalLayout_2.setSpacing(2) self.verticalLayout_2.setObjectName(u"verticalLayout_2") self.verticalLayout_2.setContentsMargins(2, 2, 2, 2) self.ScannerQR = QRScanner(self.CameraGroup) self.ScannerQR.setObjectName(u"ScannerQR") sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) sizePolicy2.setHorizontalStretch(0) sizePolicy2.setVerticalStretch(0) sizePolicy2.setHeightForWidth( self.ScannerQR.sizePolicy().hasHeightForWidth()) self.ScannerQR.setSizePolicy(sizePolicy2) self.verticalLayout_2.addWidget(self.ScannerQR) self.CameraBtnFrame = QFrame(self.CameraGroup) self.CameraBtnFrame.setObjectName(u"CameraBtnFrame") self.CameraBtnFrame.setFrameShape(QFrame.NoFrame) self.CameraBtnFrame.setFrameShadow(QFrame.Plain) self.horizontalLayout_5 = QHBoxLayout(self.CameraBtnFrame) self.horizontalLayout_5.setSpacing(2) self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0) self.StopCameraBtn = QPushButton(self.CameraBtnFrame) self.StopCameraBtn.setObjectName(u"StopCameraBtn") self.horizontalLayout_5.addWidget(self.StopCameraBtn) self.verticalLayout_2.addWidget(self.CameraBtnFrame) self.horizontalLayout_3.addWidget(self.CameraGroup) self.verticalLayout.addWidget(self.InputFrame) self.SlipGroup = QGroupBox(ImportSlipDlg) self.SlipGroup.setObjectName(u"SlipGroup") sizePolicy2.setHeightForWidth( self.SlipGroup.sizePolicy().hasHeightForWidth()) self.SlipGroup.setSizePolicy(sizePolicy2) self.gridLayout = QGridLayout(self.SlipGroup) self.gridLayout.setObjectName(u"gridLayout") self.gridLayout.setContentsMargins(2, 2, 2, 2) self.SlipDateTime = QDateTimeEdit(self.SlipGroup) self.SlipDateTime.setObjectName(u"SlipDateTime") self.SlipDateTime.setTimeSpec(Qt.UTC) self.gridLayout.addWidget(self.SlipDateTime, 2, 1, 1, 1) self.DateTimeLbl = QLabel(self.SlipGroup) self.DateTimeLbl.setObjectName(u"DateTimeLbl") self.gridLayout.addWidget(self.DateTimeLbl, 1, 1, 1, 1) self.CorrespondenceLbl = QLabel(self.SlipGroup) self.CorrespondenceLbl.setObjectName(u"CorrespondenceLbl") self.gridLayout.addWidget(self.CorrespondenceLbl, 3, 2, 1, 1) self.PeerEdit = PeerSelector(self.SlipGroup) self.PeerEdit.setObjectName(u"PeerEdit") self.gridLayout.addWidget(self.PeerEdit, 3, 3, 1, 1) self.PeerLbl = QLabel(self.SlipGroup) self.PeerLbl.setObjectName(u"PeerLbl") self.gridLayout.addWidget(self.PeerLbl, 3, 0, 1, 1) self.SlipShopName = QLineEdit(self.SlipGroup) self.SlipShopName.setObjectName(u"SlipShopName") self.SlipShopName.setEnabled(False) self.gridLayout.addWidget(self.SlipShopName, 3, 1, 1, 1) self.LinesLbl = QLabel(self.SlipGroup) self.LinesLbl.setObjectName(u"LinesLbl") self.LinesLbl.setAlignment(Qt.AlignLeading | Qt.AlignLeft | Qt.AlignTop) self.gridLayout.addWidget(self.LinesLbl, 4, 0, 1, 1) self.AccountLbl = QLabel(self.SlipGroup) self.AccountLbl.setObjectName(u"AccountLbl") self.gridLayout.addWidget(self.AccountLbl, 1, 3, 1, 1) self.AccountEdit = AccountSelector(self.SlipGroup) self.AccountEdit.setObjectName(u"AccountEdit") self.gridLayout.addWidget(self.AccountEdit, 2, 3, 1, 1) self.LinesTableView = QTableView(self.SlipGroup) self.LinesTableView.setObjectName(u"LinesTableView") self.LinesTableView.verticalHeader().setVisible(False) self.LinesTableView.verticalHeader().setMinimumSectionSize(20) self.LinesTableView.verticalHeader().setDefaultSectionSize(20) self.gridLayout.addWidget(self.LinesTableView, 4, 1, 1, 4) self.AssignCategoryBtn = QPushButton(self.SlipGroup) self.AssignCategoryBtn.setObjectName(u"AssignCategoryBtn") self.gridLayout.addWidget(self.AssignCategoryBtn, 2, 4, 1, 1) self.AssignTagBtn = QPushButton(self.SlipGroup) self.AssignTagBtn.setObjectName(u"AssignTagBtn") self.gridLayout.addWidget(self.AssignTagBtn, 3, 4, 1, 1) self.verticalLayout.addWidget(self.SlipGroup) self.DialogButtonsFrame = QFrame(ImportSlipDlg) self.DialogButtonsFrame.setObjectName(u"DialogButtonsFrame") self.DialogButtonsFrame.setFrameShape(QFrame.NoFrame) self.DialogButtonsFrame.setFrameShadow(QFrame.Plain) self.horizontalLayout_4 = QHBoxLayout(self.DialogButtonsFrame) self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") self.horizontalLayout_4.setContentsMargins(2, 2, 2, 2) self.ClearBtn = QPushButton(self.DialogButtonsFrame) self.ClearBtn.setObjectName(u"ClearBtn") self.ClearBtn.setEnabled(True) self.horizontalLayout_4.addWidget(self.ClearBtn) self.AddOperationBtn = QPushButton(self.DialogButtonsFrame) self.AddOperationBtn.setObjectName(u"AddOperationBtn") self.AddOperationBtn.setEnabled(True) self.horizontalLayout_4.addWidget(self.AddOperationBtn) self.CloseBtn = QPushButton(self.DialogButtonsFrame) self.CloseBtn.setObjectName(u"CloseBtn") self.horizontalLayout_4.addWidget(self.CloseBtn) self.verticalLayout.addWidget(self.DialogButtonsFrame) self.retranslateUi(ImportSlipDlg) self.CloseBtn.clicked.connect(ImportSlipDlg.close) QMetaObject.connectSlotsByName(ImportSlipDlg) # setupUi def retranslateUi(self, ImportSlipDlg): ImportSlipDlg.setWindowTitle( QCoreApplication.translate("ImportSlipDlg", u"Import Slip", None)) self.QRGroup.setTitle( QCoreApplication.translate("ImportSlipDlg", u"QR-code", None)) self.GetQRfromCameraBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Get from camera", None)) self.LoadQRfromFileBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Load from file", None)) self.GetQRfromClipboardBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Get from clipboard", None)) self.SlipDataGroup.setTitle( QCoreApplication.translate("ImportSlipDlg", u"Slip data", None)) self.GetSlipBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Get slip from internet", None)) self.AmountLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"Amount:", None)) self.SlipTimstamp.setDisplayFormat( QCoreApplication.translate("ImportSlipDlg", u"dd/MM/yyyy hh:mm:ss", None)) self.TimestampLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"Date/Time:", None)) self.FDlbl.setText( QCoreApplication.translate("ImportSlipDlg", u"FD:", None)) self.FNlbl.setText( QCoreApplication.translate("ImportSlipDlg", u"FN:", None)) self.DummyLbl.setText("") self.SlipTypeLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"Type:", None)) self.LoadJSONfromFileBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Load slip from JSON file", None)) self.FPlbl.setText( QCoreApplication.translate("ImportSlipDlg", u"FP:", None)) self.SlipType.setItemText( 0, QCoreApplication.translate("ImportSlipDlg", u"Purchase", None)) self.SlipType.setItemText( 1, QCoreApplication.translate("ImportSlipDlg", u"Return", None)) self.CameraGroup.setTitle( QCoreApplication.translate("ImportSlipDlg", u"Camera", None)) self.StopCameraBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Stop camera", None)) self.SlipGroup.setTitle( QCoreApplication.translate("ImportSlipDlg", u"Slip", None)) self.SlipDateTime.setDisplayFormat( QCoreApplication.translate("ImportSlipDlg", u"dd/MM/yyyy hh:mm:ss", None)) self.DateTimeLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"Date / Time:", None)) self.CorrespondenceLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"-->", None)) self.PeerLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"Peer:", None)) self.LinesLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"Lines:", None)) self.AccountLbl.setText( QCoreApplication.translate("ImportSlipDlg", u"Account:", None)) self.AssignCategoryBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Auto-assign categories", None)) self.AssignTagBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Set Tag for all lines", None)) self.ClearBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Clear", None)) self.AddOperationBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Add", None)) self.CloseBtn.setText( QCoreApplication.translate("ImportSlipDlg", u"Close", None))
class Ui_AssetDialog(object): def setupUi(self, AssetDialog): if not AssetDialog.objectName(): AssetDialog.setObjectName(u"AssetDialog") AssetDialog.setWindowModality(Qt.ApplicationModal) AssetDialog.resize(927, 323) AssetDialog.setModal(False) self.gridLayout = QGridLayout(AssetDialog) self.gridLayout.setSpacing(2) self.gridLayout.setObjectName(u"gridLayout") self.gridLayout.setContentsMargins(2, 2, 2, 2) self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout.addItem(self.horizontalSpacer_4, 1, 2, 1, 1) self.frame = QFrame(AssetDialog) self.frame.setObjectName(u"frame") sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth()) self.frame.setSizePolicy(sizePolicy) self.frame.setFrameShape(QFrame.NoFrame) self.frame.setFrameShadow(QFrame.Raised) self.horizontalLayout_3 = QHBoxLayout(self.frame) self.horizontalLayout_3.setSpacing(2) self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.splitter = QSplitter(self.frame) self.splitter.setObjectName(u"splitter") sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy1.setHorizontalStretch(0) sizePolicy1.setVerticalStretch(0) sizePolicy1.setHeightForWidth(self.splitter.sizePolicy().hasHeightForWidth()) self.splitter.setSizePolicy(sizePolicy1) self.splitter.setOrientation(Qt.Horizontal) self.SymbolsFrame = QFrame(self.splitter) self.SymbolsFrame.setObjectName(u"SymbolsFrame") sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy2.setHorizontalStretch(5) sizePolicy2.setVerticalStretch(0) sizePolicy2.setHeightForWidth(self.SymbolsFrame.sizePolicy().hasHeightForWidth()) self.SymbolsFrame.setSizePolicy(sizePolicy2) self.SymbolsFrame.setFrameShape(QFrame.NoFrame) self.SymbolsFrame.setFrameShadow(QFrame.Raised) self.verticalLayout = QVBoxLayout(self.SymbolsFrame) self.verticalLayout.setSpacing(2) self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.SymbolsCaptionFrame = QFrame(self.SymbolsFrame) self.SymbolsCaptionFrame.setObjectName(u"SymbolsCaptionFrame") self.SymbolsCaptionFrame.setFrameShape(QFrame.NoFrame) self.SymbolsCaptionFrame.setFrameShadow(QFrame.Raised) self.horizontalLayout_5 = QHBoxLayout(self.SymbolsCaptionFrame) self.horizontalLayout_5.setSpacing(2) self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0) self.SymbolsLabel = QLabel(self.SymbolsCaptionFrame) self.SymbolsLabel.setObjectName(u"SymbolsLabel") self.horizontalLayout_5.addWidget(self.SymbolsLabel) self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_5.addItem(self.horizontalSpacer_2) self.AddSymbolButton = QPushButton(self.SymbolsCaptionFrame) self.AddSymbolButton.setObjectName(u"AddSymbolButton") self.horizontalLayout_5.addWidget(self.AddSymbolButton) self.RemoveSymbolButton = QPushButton(self.SymbolsCaptionFrame) self.RemoveSymbolButton.setObjectName(u"RemoveSymbolButton") self.horizontalLayout_5.addWidget(self.RemoveSymbolButton) self.verticalLayout.addWidget(self.SymbolsCaptionFrame) self.SymbolsTable = QTableView(self.SymbolsFrame) self.SymbolsTable.setObjectName(u"SymbolsTable") self.SymbolsTable.setEditTriggers(QAbstractItemView.AnyKeyPressed|QAbstractItemView.EditKeyPressed|QAbstractItemView.SelectedClicked) self.SymbolsTable.setAlternatingRowColors(True) self.SymbolsTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.SymbolsTable.verticalHeader().setVisible(False) self.SymbolsTable.verticalHeader().setMinimumSectionSize(20) self.SymbolsTable.verticalHeader().setDefaultSectionSize(20) self.verticalLayout.addWidget(self.SymbolsTable) self.splitter.addWidget(self.SymbolsFrame) self.DataFrame = QFrame(self.splitter) self.DataFrame.setObjectName(u"DataFrame") sizePolicy3 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy3.setHorizontalStretch(2) sizePolicy3.setVerticalStretch(0) sizePolicy3.setHeightForWidth(self.DataFrame.sizePolicy().hasHeightForWidth()) self.DataFrame.setSizePolicy(sizePolicy3) self.DataFrame.setFrameShape(QFrame.NoFrame) self.DataFrame.setFrameShadow(QFrame.Raised) self.verticalLayout_2 = QVBoxLayout(self.DataFrame) self.verticalLayout_2.setSpacing(2) self.verticalLayout_2.setObjectName(u"verticalLayout_2") self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.DataCaptionFrame = QFrame(self.DataFrame) self.DataCaptionFrame.setObjectName(u"DataCaptionFrame") self.DataCaptionFrame.setFrameShape(QFrame.NoFrame) self.DataCaptionFrame.setFrameShadow(QFrame.Raised) self.horizontalLayout_2 = QHBoxLayout(self.DataCaptionFrame) self.horizontalLayout_2.setSpacing(2) self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.DataLbl = QLabel(self.DataCaptionFrame) self.DataLbl.setObjectName(u"DataLbl") self.horizontalLayout_2.addWidget(self.DataLbl) self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_2.addItem(self.horizontalSpacer_3) self.AddDataButton = QPushButton(self.DataCaptionFrame) self.AddDataButton.setObjectName(u"AddDataButton") self.horizontalLayout_2.addWidget(self.AddDataButton) self.RemoveDataButton = QPushButton(self.DataCaptionFrame) self.RemoveDataButton.setObjectName(u"RemoveDataButton") self.horizontalLayout_2.addWidget(self.RemoveDataButton) self.verticalLayout_2.addWidget(self.DataCaptionFrame) self.DataTable = QTableView(self.DataFrame) self.DataTable.setObjectName(u"DataTable") self.DataTable.setEditTriggers(QAbstractItemView.AnyKeyPressed|QAbstractItemView.EditKeyPressed|QAbstractItemView.SelectedClicked) self.DataTable.setAlternatingRowColors(True) self.DataTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.DataTable.verticalHeader().setVisible(False) self.DataTable.verticalHeader().setMinimumSectionSize(20) self.DataTable.verticalHeader().setDefaultSectionSize(20) self.verticalLayout_2.addWidget(self.DataTable) self.splitter.addWidget(self.DataFrame) self.horizontalLayout_3.addWidget(self.splitter) self.gridLayout.addWidget(self.frame, 3, 0, 1, 5) self.NameLbl = QLabel(AssetDialog) self.NameLbl.setObjectName(u"NameLbl") self.gridLayout.addWidget(self.NameLbl, 0, 0, 1, 1) self.isinLbl = QLabel(AssetDialog) self.isinLbl.setObjectName(u"isinLbl") self.gridLayout.addWidget(self.isinLbl, 1, 0, 1, 1) self.BaseAssetSelector = AssetSelector(AssetDialog) self.BaseAssetSelector.setObjectName(u"BaseAssetSelector") self.gridLayout.addWidget(self.BaseAssetSelector, 2, 1, 1, 1) self.ButtonsFrame = QFrame(AssetDialog) self.ButtonsFrame.setObjectName(u"ButtonsFrame") self.ButtonsFrame.setFrameShape(QFrame.NoFrame) self.ButtonsFrame.setFrameShadow(QFrame.Raised) self.horizontalLayout = QHBoxLayout(self.ButtonsFrame) self.horizontalLayout.setSpacing(2) self.horizontalLayout.setObjectName(u"horizontalLayout") self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout.addItem(self.horizontalSpacer) self.CancelButton = QPushButton(self.ButtonsFrame) self.CancelButton.setObjectName(u"CancelButton") self.horizontalLayout.addWidget(self.CancelButton) self.OkButton = QPushButton(self.ButtonsFrame) self.OkButton.setObjectName(u"OkButton") self.horizontalLayout.addWidget(self.OkButton) self.gridLayout.addWidget(self.ButtonsFrame, 10, 0, 1, 5) self.BaseLbl = QLabel(AssetDialog) self.BaseLbl.setObjectName(u"BaseLbl") self.gridLayout.addWidget(self.BaseLbl, 2, 0, 1, 1) self.TypeLbl = QLabel(AssetDialog) self.TypeLbl.setObjectName(u"TypeLbl") self.gridLayout.addWidget(self.TypeLbl, 1, 3, 1, 1) self.isinEdit = QLineEdit(AssetDialog) self.isinEdit.setObjectName(u"isinEdit") self.gridLayout.addWidget(self.isinEdit, 1, 1, 1, 1) self.CountryLbl = QLabel(AssetDialog) self.CountryLbl.setObjectName(u"CountryLbl") self.gridLayout.addWidget(self.CountryLbl, 2, 3, 1, 1) self.CountryCombo = CountryCombo(AssetDialog) self.CountryCombo.setObjectName(u"CountryCombo") self.gridLayout.addWidget(self.CountryCombo, 2, 4, 1, 1) self.TypeCombo = AssetTypeCombo(AssetDialog) self.TypeCombo.setObjectName(u"TypeCombo") self.gridLayout.addWidget(self.TypeCombo, 1, 4, 1, 1) self.NameEdit = QLineEdit(AssetDialog) self.NameEdit.setObjectName(u"NameEdit") self.gridLayout.addWidget(self.NameEdit, 0, 1, 1, 4) self.retranslateUi(AssetDialog) self.OkButton.clicked.connect(AssetDialog.accept) self.CancelButton.clicked.connect(AssetDialog.reject) QMetaObject.connectSlotsByName(AssetDialog) # setupUi def retranslateUi(self, AssetDialog): AssetDialog.setWindowTitle(QCoreApplication.translate("AssetDialog", u"Asset", None)) self.SymbolsLabel.setText(QCoreApplication.translate("AssetDialog", u"Symbols", None)) self.AddSymbolButton.setText("") self.RemoveSymbolButton.setText("") self.DataLbl.setText(QCoreApplication.translate("AssetDialog", u"Extra data", None)) self.AddDataButton.setText("") self.RemoveDataButton.setText("") self.NameLbl.setText(QCoreApplication.translate("AssetDialog", u"Name:", None)) self.isinLbl.setText(QCoreApplication.translate("AssetDialog", u"ISIN:", None)) self.CancelButton.setText(QCoreApplication.translate("AssetDialog", u"Cancel", None)) self.OkButton.setText(QCoreApplication.translate("AssetDialog", u"OK", None)) self.BaseLbl.setText(QCoreApplication.translate("AssetDialog", u"Base asset:", None)) self.TypeLbl.setText(QCoreApplication.translate("AssetDialog", u"Type: ", None)) self.CountryLbl.setText(QCoreApplication.translate("AssetDialog", u"Country: ", None))
class Ui_OperationsWidget(object): def setupUi(self, OperationsWidget): if not OperationsWidget.objectName(): OperationsWidget.setObjectName(u"OperationsWidget") OperationsWidget.resize(1232, 552) self.verticalLayout_4 = QVBoxLayout(OperationsWidget) self.verticalLayout_4.setSpacing(0) self.verticalLayout_4.setObjectName(u"verticalLayout_4") self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) self.BalanceOperationsSplitter = QSplitter(OperationsWidget) self.BalanceOperationsSplitter.setObjectName( u"BalanceOperationsSplitter") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.BalanceOperationsSplitter.sizePolicy().hasHeightForWidth()) self.BalanceOperationsSplitter.setSizePolicy(sizePolicy) self.BalanceOperationsSplitter.setOrientation(Qt.Horizontal) self.BalanceBox = QGroupBox(self.BalanceOperationsSplitter) self.BalanceBox.setObjectName(u"BalanceBox") sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy1.setHorizontalStretch(1) sizePolicy1.setVerticalStretch(0) sizePolicy1.setHeightForWidth( self.BalanceBox.sizePolicy().hasHeightForWidth()) self.BalanceBox.setSizePolicy(sizePolicy1) self.BalanceBox.setMaximumSize(QSize(16777215, 16777215)) self.verticalLayout = QVBoxLayout(self.BalanceBox) self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.BalanceConfigFrame = QFrame(self.BalanceBox) self.BalanceConfigFrame.setObjectName(u"BalanceConfigFrame") self.BalanceConfigFrame.setMinimumSize(QSize(408, 0)) self.BalanceConfigFrame.setMaximumSize(QSize(16777215, 44)) self.BalanceConfigFrame.setFrameShape(QFrame.Panel) self.BalanceConfigFrame.setFrameShadow(QFrame.Plain) self.BalanceConfigFrame.setLineWidth(0) self.horizontalLayout_2 = QHBoxLayout(self.BalanceConfigFrame) self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.horizontalLayout_2.setContentsMargins(2, 2, 2, 2) self.BalanceDate = QDateEdit(self.BalanceConfigFrame) self.BalanceDate.setObjectName(u"BalanceDate") self.BalanceDate.setDateTime( QDateTime(QDate(2020, 11, 25), QTime(21, 0, 0))) self.BalanceDate.setCalendarPopup(True) self.BalanceDate.setTimeSpec(Qt.UTC) self.horizontalLayout_2.addWidget(self.BalanceDate) self.CurrencyLbl = QLabel(self.BalanceConfigFrame) self.CurrencyLbl.setObjectName(u"CurrencyLbl") self.CurrencyLbl.setLayoutDirection(Qt.LeftToRight) self.CurrencyLbl.setAlignment(Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) self.horizontalLayout_2.addWidget(self.CurrencyLbl) self.BalancesCurrencyCombo = CurrencyComboBox(self.BalanceConfigFrame) self.BalancesCurrencyCombo.setObjectName(u"BalancesCurrencyCombo") self.horizontalLayout_2.addWidget(self.BalancesCurrencyCombo) self.ShowInactiveCheckBox = QCheckBox(self.BalanceConfigFrame) self.ShowInactiveCheckBox.setObjectName(u"ShowInactiveCheckBox") self.horizontalLayout_2.addWidget(self.ShowInactiveCheckBox) self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_2.addItem(self.horizontalSpacer_2) self.verticalLayout.addWidget(self.BalanceConfigFrame) self.BalancesTableView = QTableView(self.BalanceBox) self.BalancesTableView.setObjectName(u"BalancesTableView") self.BalancesTableView.setFrameShape(QFrame.Panel) self.BalancesTableView.setEditTriggers( QAbstractItemView.EditKeyPressed | QAbstractItemView.SelectedClicked) self.BalancesTableView.setAlternatingRowColors(True) self.BalancesTableView.setSelectionMode(QAbstractItemView.NoSelection) self.BalancesTableView.setGridStyle(Qt.DotLine) self.BalancesTableView.setWordWrap(False) self.BalancesTableView.verticalHeader().setVisible(False) self.BalancesTableView.verticalHeader().setMinimumSectionSize(20) self.BalancesTableView.verticalHeader().setDefaultSectionSize(20) self.verticalLayout.addWidget(self.BalancesTableView) self.BalanceOperationsSplitter.addWidget(self.BalanceBox) self.OperationsBox = QGroupBox(self.BalanceOperationsSplitter) self.OperationsBox.setObjectName(u"OperationsBox") sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy2.setHorizontalStretch(4) sizePolicy2.setVerticalStretch(0) sizePolicy2.setHeightForWidth( self.OperationsBox.sizePolicy().hasHeightForWidth()) self.OperationsBox.setSizePolicy(sizePolicy2) self.OperationsBox.setContextMenuPolicy(Qt.DefaultContextMenu) self.verticalLayout_2 = QVBoxLayout(self.OperationsBox) self.verticalLayout_2.setObjectName(u"verticalLayout_2") self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.OperationConfigFrame = QFrame(self.OperationsBox) self.OperationConfigFrame.setObjectName(u"OperationConfigFrame") self.OperationConfigFrame.setEnabled(True) self.OperationConfigFrame.setMinimumSize(QSize(0, 0)) self.OperationConfigFrame.setFrameShape(QFrame.Panel) self.OperationConfigFrame.setFrameShadow(QFrame.Plain) self.OperationConfigFrame.setLineWidth(0) self.horizontalLayout_3 = QHBoxLayout(self.OperationConfigFrame) self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") self.horizontalLayout_3.setContentsMargins(2, 2, 2, 2) self.DateRange = DateRangeSelector(self.OperationConfigFrame) self.DateRange.setObjectName(u"DateRange") self.DateRange.setProperty("ItemsList", u"week;month;quarter;year;all") self.horizontalLayout_3.addWidget(self.DateRange) self.AccountLbl = QLabel(self.OperationConfigFrame) self.AccountLbl.setObjectName(u"AccountLbl") self.horizontalLayout_3.addWidget(self.AccountLbl) self.ChooseAccountBtn = AccountButton(self.OperationConfigFrame) self.ChooseAccountBtn.setObjectName(u"ChooseAccountBtn") self.horizontalLayout_3.addWidget(self.ChooseAccountBtn) self.SearchLbl = QLabel(self.OperationConfigFrame) self.SearchLbl.setObjectName(u"SearchLbl") self.horizontalLayout_3.addWidget(self.SearchLbl) self.SearchString = QLineEdit(self.OperationConfigFrame) self.SearchString.setObjectName(u"SearchString") self.horizontalLayout_3.addWidget(self.SearchString) self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_3.addItem(self.horizontalSpacer) self.verticalLayout_2.addWidget(self.OperationConfigFrame) self.OperationsDetailsSplitter = QSplitter(self.OperationsBox) self.OperationsDetailsSplitter.setObjectName( u"OperationsDetailsSplitter") self.OperationsDetailsSplitter.setOrientation(Qt.Vertical) self.OperationsTableView = QTableView(self.OperationsDetailsSplitter) self.OperationsTableView.setObjectName(u"OperationsTableView") sizePolicy3 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy3.setHorizontalStretch(0) sizePolicy3.setVerticalStretch(4) sizePolicy3.setHeightForWidth( self.OperationsTableView.sizePolicy().hasHeightForWidth()) self.OperationsTableView.setSizePolicy(sizePolicy3) self.OperationsTableView.setAlternatingRowColors(True) self.OperationsTableView.setSelectionMode( QAbstractItemView.ExtendedSelection) self.OperationsTableView.setSelectionBehavior( QAbstractItemView.SelectRows) self.OperationsTableView.setWordWrap(False) self.OperationsDetailsSplitter.addWidget(self.OperationsTableView) self.OperationsTableView.verticalHeader().setVisible(False) self.OperationsTableView.verticalHeader().setMinimumSectionSize(20) self.OperationsTableView.verticalHeader().setDefaultSectionSize(20) self.OperationDetails = QFrame(self.OperationsDetailsSplitter) self.OperationDetails.setObjectName(u"OperationDetails") sizePolicy4 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy4.setHorizontalStretch(0) sizePolicy4.setVerticalStretch(1) sizePolicy4.setHeightForWidth( self.OperationDetails.sizePolicy().hasHeightForWidth()) self.OperationDetails.setSizePolicy(sizePolicy4) self.OperationDetails.setMinimumSize(QSize(0, 100)) self.OperationDetails.setMaximumSize(QSize(16777215, 300)) self.OperationDetails.setFrameShape(QFrame.Panel) self.OperationDetails.setFrameShadow(QFrame.Sunken) self.OperationDetails.setLineWidth(1) self.horizontalLayout_4 = QHBoxLayout(self.OperationDetails) self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0) self.OperationsTabs = QStackedWidget(self.OperationDetails) self.OperationsTabs.setObjectName(u"OperationsTabs") self.NoOperation = QWidget() self.NoOperation.setObjectName(u"NoOperation") self.OperationsTabs.addWidget(self.NoOperation) self.IncomeSpending = IncomeSpendingWidget() self.IncomeSpending.setObjectName(u"IncomeSpending") self.OperationsTabs.addWidget(self.IncomeSpending) self.Dividend = DividendWidget() self.Dividend.setObjectName(u"Dividend") self.OperationsTabs.addWidget(self.Dividend) self.Trade = TradeWidget() self.Trade.setObjectName(u"Trade") self.OperationsTabs.addWidget(self.Trade) self.Transfer = TransferWidget() self.Transfer.setObjectName(u"Transfer") self.OperationsTabs.addWidget(self.Transfer) self.CorporateAction = CorporateActionWidget() self.CorporateAction.setObjectName(u"CorporateAction") self.OperationsTabs.addWidget(self.CorporateAction) self.horizontalLayout_4.addWidget(self.OperationsTabs) self.OperationsButtons = QFrame(self.OperationDetails) self.OperationsButtons.setObjectName(u"OperationsButtons") self.verticalLayout_3 = QVBoxLayout(self.OperationsButtons) self.verticalLayout_3.setSpacing(2) self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setContentsMargins(2, 2, 2, 2) self.NewOperationBtn = QPushButton(self.OperationsButtons) self.NewOperationBtn.setObjectName(u"NewOperationBtn") self.verticalLayout_3.addWidget(self.NewOperationBtn) self.CopyOperationBtn = QPushButton(self.OperationsButtons) self.CopyOperationBtn.setObjectName(u"CopyOperationBtn") self.verticalLayout_3.addWidget(self.CopyOperationBtn) self.DeleteOperationBtn = QPushButton(self.OperationsButtons) self.DeleteOperationBtn.setObjectName(u"DeleteOperationBtn") self.verticalLayout_3.addWidget(self.DeleteOperationBtn) self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.verticalLayout_3.addItem(self.verticalSpacer_4) self.horizontalLayout_4.addWidget(self.OperationsButtons) self.OperationsDetailsSplitter.addWidget(self.OperationDetails) self.verticalLayout_2.addWidget(self.OperationsDetailsSplitter) self.BalanceOperationsSplitter.addWidget(self.OperationsBox) self.verticalLayout_4.addWidget(self.BalanceOperationsSplitter) self.retranslateUi(OperationsWidget) self.OperationsTabs.setCurrentIndex(5) QMetaObject.connectSlotsByName(OperationsWidget) # setupUi def retranslateUi(self, OperationsWidget): OperationsWidget.setWindowTitle( QCoreApplication.translate("OperationsWidget", u"Operations & Balances", None)) self.BalanceBox.setTitle( QCoreApplication.translate("OperationsWidget", u"Balances", None)) self.BalanceDate.setDisplayFormat( QCoreApplication.translate("OperationsWidget", u"dd/MM/yyyy", None)) self.CurrencyLbl.setText( QCoreApplication.translate("OperationsWidget", u"Sum Currency:", None)) self.ShowInactiveCheckBox.setText( QCoreApplication.translate("OperationsWidget", u"Show &Inactive", None)) self.OperationsBox.setTitle( QCoreApplication.translate("OperationsWidget", u"Operations", None)) self.AccountLbl.setText( QCoreApplication.translate("OperationsWidget", u"Account:", None)) self.SearchLbl.setText( QCoreApplication.translate("OperationsWidget", u"Search:", None)) #if QT_CONFIG(tooltip) self.NewOperationBtn.setToolTip( QCoreApplication.translate("OperationsWidget", u"New operation", None)) #endif // QT_CONFIG(tooltip) self.NewOperationBtn.setText("") #if QT_CONFIG(tooltip) self.CopyOperationBtn.setToolTip( QCoreApplication.translate("OperationsWidget", u"Copy operation", None)) #endif // QT_CONFIG(tooltip) self.CopyOperationBtn.setText("") #if QT_CONFIG(tooltip) self.DeleteOperationBtn.setToolTip( QCoreApplication.translate("OperationsWidget", u"Delete operation", None)) #endif // QT_CONFIG(tooltip) self.DeleteOperationBtn.setText("")